Lines Matching refs:SCpnt

384     host->SCpnt = NULL;
562 if (host->SCpnt)
563 return '0' + host->SCpnt->device->id;
700 struct scsi_cmnd *SCpnt;
703 SCpnt = host->origSCpnt;
707 if (!SCpnt) {
708 SCpnt = queue_remove_exclude(&host->queues.issue, host->busyluns);
709 if (!SCpnt)
715 if (host->scsi.disconnectable && host->SCpnt) {
716 queue_add_cmd_tail(&host->queues.disconnected, host->SCpnt);
719 DBG(host->SCpnt, printk("scsi%d.%c: moved command to disconnected queue\n",
722 host->SCpnt = NULL;
730 sbic_arm_write(host, SBIC_DESTID, SCpnt->device->id);
739 host->SCpnt = SCpnt;
740 host->scsi.SCp = SCpnt->SCp;
746 DBG(SCpnt,printk("scsi%d.%c: starting cmd %02X\n",
747 host->host->host_no, '0' + SCpnt->device->id,
748 SCpnt->cmnd[0]));
756 if (SCpnt->device->simple_tags) {
757 SCpnt->device->current_tag += 1;
758 if (SCpnt->device->current_tag == 0)
759 SCpnt->device->current_tag = 1;
760 SCpnt->tag = SCpnt->device->current_tag;
763 set_bit(SCpnt->device->id * 8 +
764 (u8)(SCpnt->device->lun & 0x07), host->busyluns);
768 switch (acornscsi_cmdtype(SCpnt->cmnd[0])) {
793 struct scsi_cmnd *SCpnt = *SCpntp;
800 if (SCpnt) {
805 SCpnt->result = result << 16 | host->scsi.SCp.Message << 8 | host->scsi.SCp.Status;
811 * data loss will occur. Should we check SCpnt->underflow here?
818 if (SCpnt->underflow == 0) {
820 acornscsi_cmdtype(SCpnt->cmnd[0]) != CMD_MISC)
823 if (host->scsi.SCp.scsi_xferred < SCpnt->underflow ||
844 switch (status_byte(SCpnt->result)) {
854 host->host->host_no, SCpnt->result);
855 __scsi_print_command(SCpnt->cmnd);
857 acornscsi_dumplog(host, SCpnt->device->id);
858 SCpnt->result &= 0xffff;
859 SCpnt->result |= DID_ERROR << 16;
864 if (!SCpnt->scsi_done)
867 clear_bit(SCpnt->device->id * 8 +
868 (u8)(SCpnt->device->lun & 0x7), host->busyluns);
870 SCpnt->scsi_done(SCpnt);
1002 DBG(host->SCpnt, acornscsi_dumpdma(host, "stop"));
1025 if (NO_WRITE & (1 << host->SCpnt->device->id)) {
1061 DBG(host->SCpnt, acornscsi_dumpdma(host, "strt"));
1100 DBG(host->SCpnt, acornscsi_dumpdma(host, "cupi"));
1118 DBG(host->SCpnt, acornscsi_dumpdma(host, "cupo"));
1139 DBG(host->SCpnt, acornscsi_dumpdma(host, "inti"));
1188 DBG(host->SCpnt, acornscsi_dumpdma(host, "into"));
1200 acornscsi_abortcmd(host, host->SCpnt->tag);
1240 DBG(host->SCpnt, acornscsi_dumpdma(host, "adji"));
1265 DBG(host->SCpnt, acornscsi_dumpdma(host, "adjo"));
1308 struct scsi_cmnd *SCpnt = host->SCpnt;
1312 sbic_arm_writenext(host, SCpnt->cmd_len - host->scsi.SCp.sent_command);
1316 if (acornscsi_write_pio(host, SCpnt->cmnd,
1317 (int *)&host->scsi.SCp.sent_command, SCpnt->cmd_len, 1000000))
1501 acornscsi_dumplog(host, host->SCpnt->device->id);
1515 host->SCpnt->SCp = host->scsi.SCp;
1516 host->SCpnt->SCp.sent_command = 0;
1531 host->scsi.SCp = host->SCpnt->SCp;
1557 if (host->device[host->SCpnt->device->id].sync_state == SYNC_SENT_REQUEST)
1558 host->device[host->SCpnt->device->id].sync_state = SYNC_NEGOCIATE;
1580 host->SCpnt->device->simple_tags = 0;
1581 set_bit(host->SCpnt->device->id * 8 +
1582 (u8)(host->SCpnt->device->lun & 0x7), host->busyluns);
1591 host->device[host->SCpnt->device->id].sync_xfer = SYNCHTRANSFER_2DBA;
1592 host->device[host->SCpnt->device->id].sync_state = SYNC_ASYNCHRONOUS;
1593 sbic_arm_write(host, SBIC_SYNCHTRANSFER, host->device[host->SCpnt->device->id].sync_xfer);
1616 if (host->device[host->SCpnt->device->id].sync_state == SYNC_SENT_REQUEST) {
1623 host->device[host->SCpnt->device->id].sync_state = SYNC_COMPLETED;
1627 host->device[host->SCpnt->device->id].sync_xfer =
1640 host->device[host->SCpnt->device->id].sync_xfer =
1643 sbic_arm_write(host, SBIC_SYNCHTRANSFER, host->device[host->SCpnt->device->id].sync_xfer);
1693 IDENTIFY(host->device[host->SCpnt->device->id].disconnect_ok,
1694 host->SCpnt->device->lun));
1699 acornscsi_abortcmd(host->SCpnt->tag);
1705 if (host->SCpnt->tag) {
1708 if (host->SCpnt->cmnd[0] == REQUEST_SENSE ||
1709 host->SCpnt->cmnd[0] == TEST_UNIT_READY ||
1710 host->SCpnt->cmnd[0] == INQUIRY)
1714 msgqueue_addmsg(&host->scsi.msgs, 2, tag_type, host->SCpnt->tag);
1719 if (host->device[host->SCpnt->device->id].sync_state == SYNC_NEGOCIATE) {
1720 host->device[host->SCpnt->device->id].sync_state = SYNC_SENT_REQUEST;
1745 residual = scsi_bufflen(host->SCpnt) - host->scsi.SCp.scsi_xferred;
1747 sbic_arm_write(host, SBIC_SYNCHTRANSFER, host->device[host->SCpnt->device->id].sync_xfer);
1780 if (host->SCpnt && !host->scsi.disconnectable) {
1783 host->host->host_no, target, host->SCpnt->device->id);
1784 host->SCpnt = NULL;
1793 if (host->scsi.disconnectable && host->SCpnt &&
1794 host->SCpnt->device->id == target && host->SCpnt->device->lun == lun)
1811 if (host->SCpnt) {
1812 queue_add_cmd_tail(&host->queues.disconnected, host->SCpnt);
1813 host->SCpnt = NULL;
1829 if (host->scsi.disconnectable && host->SCpnt) {
1831 if (host->SCpnt->device->id == host->scsi.reconnected.target &&
1832 host->SCpnt->device->lun == host->scsi.reconnected.lun &&
1833 host->SCpnt->tag == host->scsi.reconnected.tag) {
1835 DBG(host->SCpnt, printk("scsi%d.%c: reconnected",
1839 queue_add_cmd_tail(&host->queues.disconnected, host->SCpnt);
1841 DBG(host->SCpnt, printk("scsi%d.%c: had to move command "
1845 host->SCpnt = NULL;
1848 if (!host->SCpnt) {
1849 host->SCpnt = queue_remove_tgtluntag(&host->queues.disconnected,
1854 DBG(host->SCpnt, printk("scsi%d.%c: had to get command",
1859 if (!host->SCpnt)
1865 host->scsi.SCp = host->SCpnt->SCp;
1877 return host->SCpnt != NULL;
1894 acornscsi_done(host, &host->SCpnt, DID_ERROR);
1946 if (host->SCpnt && !host->scsi.disconnectable)
1947 ADD_STATUS(host->SCpnt->device->id, ssr, host->scsi.phase, in_irq);
1985 ADD_STATUS(host->SCpnt->device->id, ssr, host->scsi.phase, 1);
1990 acornscsi_done(host, &host->SCpnt, DID_NO_CONNECT);
1995 host->origSCpnt = host->SCpnt;
1996 host->SCpnt = NULL;
2004 acornscsi_dumplog(host, host->SCpnt ? host->SCpnt->device->id : 8);
2005 acornscsi_abortcmd(host, host->SCpnt->tag);
2034 acornscsi_done(host, &host->SCpnt, DID_ERROR);
2040 acornscsi_dumplog(host, host->SCpnt ? host->SCpnt->device->id : 8);
2041 acornscsi_abortcmd(host, host->SCpnt->tag);
2078 acornscsi_dumplog(host, host->SCpnt ? host->SCpnt->device->id : 8);
2086 if (host->scsi.SCp.sent_command != host->SCpnt->cmd_len)
2087 acornscsi_abortcmd(host, host->SCpnt->tag);
2090 acornscsi_abortcmd(host, host->SCpnt->tag);
2096 if (host->scsi.SCp.sent_command != host->SCpnt->cmd_len)
2097 acornscsi_abortcmd(host, host->SCpnt->tag);
2100 acornscsi_abortcmd(host, host->SCpnt->tag);
2123 acornscsi_dumplog(host, host->SCpnt ? host->SCpnt->device->id : 8);
2136 acornscsi_dumplog(host, host->SCpnt ? host->SCpnt->device->id : 8);
2146 acornscsi_dumplog(host, host->SCpnt ? host->SCpnt->device->id : 8);
2161 ADD_STATUS(host->SCpnt->device->id, ssr, host->scsi.phase, in_irq);
2168 acornscsi_abortcmd(host, host->SCpnt->tag);
2177 acornscsi_abortcmd(host, host->SCpnt->tag);
2206 acornscsi_dumplog(host, host->SCpnt ? host->SCpnt->device->id : 8);
2218 acornscsi_abortcmd(host, host->SCpnt->tag);
2225 host->scsi.SCp.scsi_xferred = scsi_bufflen(host->SCpnt) -
2236 host->scsi.SCp.scsi_xferred = scsi_bufflen(host->SCpnt) -
2246 host->scsi.SCp.scsi_xferred = scsi_bufflen(host->SCpnt) -
2255 acornscsi_dumplog(host, host->SCpnt ? host->SCpnt->device->id : 8);
2267 acornscsi_abortcmd(host, host->SCpnt->tag);
2274 host->scsi.SCp.scsi_xferred = scsi_bufflen(host->SCpnt) -
2286 host->scsi.SCp.scsi_xferred = scsi_bufflen(host->SCpnt) -
2297 host->scsi.SCp.scsi_xferred = scsi_bufflen(host->SCpnt) -
2307 acornscsi_dumplog(host, host->SCpnt ? host->SCpnt->device->id : 8);
2328 acornscsi_dumplog(host, host->SCpnt ? host->SCpnt->device->id : 8);
2351 acornscsi_dumplog(host, host->SCpnt ? host->SCpnt->device->id : 8);
2352 acornscsi_done(host, &host->SCpnt, DID_ERROR);
2358 acornscsi_dumplog(host, host->SCpnt ? host->SCpnt->device->id : 8);
2365 acornscsi_done(host, &host->SCpnt, DID_OK);
2376 acornscsi_dumplog(host, host->SCpnt ? host->SCpnt->device->id : 8);
2383 if (host->SCpnt)
2384 acornscsi_done(host, &host->SCpnt, DID_ABORT);
2402 acornscsi_dumplog(host, host->SCpnt ? host->SCpnt->device->id : 8);
2409 acornscsi_dumplog(host, host->SCpnt ? host->SCpnt->device->id : 8);
2469 static int acornscsi_queuecmd_lck(struct scsi_cmnd *SCpnt,
2472 AS_Host *host = (AS_Host *)SCpnt->device->host->hostdata;
2477 host->host->host_no, SCpnt);
2482 if (acornscsi_cmdtype(SCpnt->cmnd[0]) == CMD_WRITE && (NO_WRITE & (1 << SCpnt->device->id))) {
2484 host->host->host_no, '0' + SCpnt->device->id);
2485 SCpnt->result = DID_NO_CONNECT << 16;
2486 done(SCpnt);
2491 SCpnt->scsi_done = done;
2492 SCpnt->host_scribble = NULL;
2493 SCpnt->result = 0;
2494 SCpnt->tag = 0;
2495 SCpnt->SCp.phase = (int)acornscsi_datadirection(SCpnt->cmnd[0]);
2496 SCpnt->SCp.sent_command = 0;
2497 SCpnt->SCp.scsi_xferred = 0;
2499 init_SCp(SCpnt);
2506 if (!queue_add_cmd_ordered(&host->queues.issue, SCpnt)) {
2507 SCpnt->result = DID_ERROR << 16;
2508 done(SCpnt);
2533 struct scsi_cmnd *SCpnt = *SCpntp1;
2535 if (SCpnt) {
2538 SCpnt->result = result;
2539 SCpnt->scsi_done(SCpnt);
2542 if (SCpnt == *SCpntp2)
2549 * Prototype: enum res acornscsi_do_abort(struct scsi_cmnd *SCpnt)
2551 * Params : SCpnt - command to abort
2554 static enum res_abort acornscsi_do_abort(AS_Host *host, struct scsi_cmnd *SCpnt)
2558 if (queue_remove_cmd(&host->queues.issue, SCpnt)) {
2569 } else if (queue_remove_cmd(&host->queues.disconnected, SCpnt)) {
2581 } else if (host->SCpnt == SCpnt) {
2601 host->SCpnt = NULL;
2613 host->SCpnt = NULL;
2618 acornscsi_abortcmd(host, host->SCpnt->tag);
2622 } else if (host->origSCpnt == SCpnt) {
2641 * Prototype: int acornscsi_abort(struct scsi_cmnd *SCpnt)
2643 * Params : SCpnt - command to abort
2646 int acornscsi_abort(struct scsi_cmnd *SCpnt)
2648 AS_Host *host = (AS_Host *) SCpnt->device->host->hostdata;
2661 acornscsi_dumplog(host, SCpnt->device->id);
2667 switch (acornscsi_do_abort(host, SCpnt)) {
2677 clear_bit(SCpnt->device->id * 8 +
2678 (u8)(SCpnt->device->lun & 0x7), host->busyluns);
2710 acornscsi_dumplog(host, SCpnt->device->id);
2722 * Prototype: int acornscsi_reset(struct scsi_cmnd *SCpnt)
2724 * Params : SCpnt - command causing reset
2727 int acornscsi_bus_reset(struct scsi_cmnd *SCpnt)
2729 AS_Host *host = (AS_Host *)SCpnt->device->host->hostdata;
2743 acornscsi_dumplog(host, SCpnt->device->id);