22 #include <linux/wait.h>
32 if (dev->
cmds[i].inuse == 0) {
33 dev->
cmds[
i].inuse = 1;
34 dev->
cmds[
i].signalled = 0;
35 dev->
cmds[
i].timeout = 0;
36 ret = dev->
cmds[
i].seqno;
48 if ((dev->
cmds[seqno].inuse == 1) &&
49 (dev->
cmds[seqno].seqno == seqno)) {
60 if ((dev->
cmds[seqno].inuse == 1) &&
61 (dev->
cmds[seqno].seqno == seqno)) {
72 if ((dev->
cmds[seqno].inuse == 1) &&
73 (dev->
cmds[seqno].seqno == seqno)) {
105 "%s() signalled seqno(%d) (for dequeue)\n",
106 __func__, tRsp.
seqno);
111 "%s() found timed out command on the bus\n",
180 __func__, tRsp.
seqno);
215 for (idx = 0; idx <
cmds; idx++) {
275 if ((dev->
cmds[seqno].inuse == 1) &&
276 (dev->
cmds[seqno].seqno == seqno)) {
283 if (dev->
cmds[seqno].signalled == 0) {
286 "%s(seqno=%d) Waiting (signalled=%d)\n",
287 __func__, seqno, dev->
cmds[seqno].signalled);
305 "(signalled=%d)\n", __func__, seqno, r,
306 dev->
cmds[seqno].signalled);
323 if (dev->
cmds[i].inuse == 1) {
325 "seqno %d inuse, sig = %d, t/out = %d\n",
327 dev->
cmds[i].signalled,
328 dev->
cmds[i].timeout);
333 if ((dev->
cmds[i].inuse == 1) && ((i == 0) ||
334 (dev->
cmds[i].signalled) || (dev->
cmds[i].timeout))) {
337 dev->
cmds[
i].signalled = 1;
358 command, controlselector);
360 if ((size == 0) || (buf ==
NULL)) {
366 memset(&command_t, 0,
sizeof(command_t));
367 memset(&response_t, 0,
sizeof(response_t));
368 pcommand_t = &command_t;
369 presponse_t = &response_t;
390 __func__, pcommand_t->
seqno);
393 __func__, pcommand_t->
size);
434 dprintk(4,
"%s() SAA_ERR_EMPTY\n", __func__);
443 __func__, presponse_t->
seqno);
446 __func__, presponse_t->
flags);
449 __func__, presponse_t->
size);
452 if (presponse_t->
seqno != pcommand_t->
seqno) {
455 "wrong event: seqno = %d, "
456 "expected seqno = %d, "
457 "will dequeue regardless\n",
466 "dequeue exceeded, safety exit\n");
476 memset(&errdata[0], 0,
sizeof(errdata));
487 __func__, errdata[0], errdata[1], errdata[2],
492 __func__, errdata[0]);
494 switch (errdata[0]) {
516 "%s() UNKNOWN OR INVALID CONTROL\n",
531 if ((presponse_t->
id != pcommand_t->
id) ||
535 (((resp_dsize - data_recd) != presponse_t->
size) &&
537 ((resp_dsize - data_recd) < presponse_t->
size)) {
560 data_recd = presponse_t->
size + data_recd;
561 if (resp_dsize == data_recd) {