Lines Matching refs:scsi

3  *  linux/drivers/acorn/scsi/fas216.c
50 #include "../scsi.h"
51 #include <scsi/scsi_dbg.h>
52 #include <scsi/scsi_host.h>
54 #include "scsi.h"
143 unsigned int off = reg << info->scsi.io_shift;
144 return readb(info->scsi.io_base + off);
149 unsigned int off = reg << info->scsi.io_shift;
150 writeb(val, info->scsi.io_base + off);
194 printk(" scsi={ io_shift=%X irq=%X cfg={ %X %X %X %X }\n",
195 info->scsi.io_shift, info->scsi.irq,
196 info->scsi.cfg[0], info->scsi.cfg[1], info->scsi.cfg[2],
197 info->scsi.cfg[3]);
199 info->scsi.type, info->scsi.phase);
200 print_SCp(&info->scsi.SCp, " SCp={ ", " }\n");
202 info->scsi.async_stp,
203 info->scsi.disconnectable, info->scsi.aborting);
239 panic("scsi memory space corrupted in %s", func);
275 if (info->scsi.phase < ARRAY_SIZE(phases) &&
276 phases[info->scsi.phase])
277 return phases[info->scsi.phase];
295 printk("scsi%d.%c: %s", info->host->host_no, target, buf);
418 while ((msg = msgqueue_getmsg(&info->scsi.msgs, msgnr++)) != NULL) {
475 cntl3 = info->scsi.cfg[2];
560 msgqueue_flush(&info->scsi.msgs);
561 msgqueue_addmsg(&info->scsi.msgs, 5,
564 info->scsi.phase = PHASE_MSGOUT_EXPECT;
603 msgqueue_flush(&info->scsi.msgs);
604 msgqueue_addmsg(&info->scsi.msgs, 1, MESSAGE_REJECT);
605 info->scsi.phase = PHASE_MSGOUT_EXPECT;
611 dev->stp = info->scsi.async_stp;
629 struct scsi_pointer *SCp = &info->scsi.SCp;
646 printk(KERN_WARNING "scsi%d.%c: out of buffers\n",
669 struct scsi_pointer *SCp = &info->scsi.SCp;
717 total = info->scsi.SCp.phase;
719 total = info->scsi.SCp.this_residual;
735 if (info->scsi.phase == PHASE_DATAOUT)
754 info->scsi.SCp.ptr, info->scsi.SCp.this_residual,
755 info->scsi.SCp.phase);
757 if (!info->scsi.SCp.ptr) {
760 print_SCp(&info->scsi.SCp, "SCp: ", "\n");
775 if (info->scsi.phase == PHASE_DATAOUT)
781 dmatype = info->dma.setup(info->host, &info->scsi.SCp,
786 fas216_set_stc(info, info->scsi.SCp.phase);
788 fas216_set_stc(info, info->scsi.SCp.this_residual);
794 fas216_writeb(info, REG_STP, info->scsi.async_stp);
802 info->dma.pseudo(info->host, &info->scsi.SCp,
835 info->dma.stop(info->host, &info->scsi.SCp);
839 if (info->scsi.phase == PHASE_DATAIN) {
848 while (fifo && info->scsi.SCp.ptr) {
849 *info->scsi.SCp.ptr = fas216_readb(info, REG_FF);
868 info->dma.stop(info->host, &info->scsi.SCp);
889 info->scsi.phase);
891 msgqueue_flush(&info->scsi.msgs);
893 switch (info->scsi.phase) {
900 info->scsi.disconnectable = 1;
901 info->scsi.phase = PHASE_IDLE;
904 if (info->scsi.phase == PHASE_IDLE)
914 if (fas216_get_last_msg(info, info->scsi.msgin_fifo) == ABORT) {
915 info->scsi.aborting = 0;
922 printk(KERN_ERR "scsi%d.%c: unexpected disconnect in phase %s\n",
946 WARN_ON(info->scsi.phase == PHASE_SELECTION ||
947 info->scsi.phase == PHASE_SELSTEPS);
952 info->scsi.phase, cfis);
957 printk(KERN_ERR "scsi%d.H: incorrect number of bytes after reselect\n",
984 msgqueue_flush(&info->scsi.msgs);
989 if (info->scsi.disconnectable && info->SCpnt) {
990 info->scsi.disconnectable = 0;
1011 info->scsi.SCp = info->SCpnt->SCp;
1014 info->scsi.SCp.ptr, info->scsi.SCp.this_residual);
1015 info->scsi.phase = PHASE_MSGIN;
1027 msgqueue_addmsg(&info->scsi.msgs, 2, ABORT_TAG, tag);
1030 msgqueue_addmsg(&info->scsi.msgs, 1, ABORT);
1031 info->scsi.phase = PHASE_MSGOUT_EXPECT;
1032 info->scsi.aborting = 1;
1039 printk(KERN_ERR "scsi%d.H: error during reselection: bytes",
1046 msgqueue_flush(&info->scsi.msgs);
1047 msgqueue_addmsg(&info->scsi.msgs, 1, INITIATOR_ERROR);
1048 info->scsi.phase = PHASE_MSGOUT_EXPECT;
1061 printk(KERN_ERR "scsi%d.%c: command complete with no "
1078 info->SCpnt->SCp = info->scsi.SCp;
1082 info->scsi.SCp.ptr, info->scsi.SCp.this_residual);
1092 info->scsi.SCp = info->SCpnt->SCp;
1095 info->scsi.SCp.ptr, info->scsi.SCp.this_residual);
1102 info->scsi.phase = PHASE_MSGIN_DISCONNECT;
1109 switch (fas216_get_last_msg(info, info->scsi.msgin_fifo)) {
1116 fas216_get_last_msg(info, info->scsi.msgin_fifo));
1144 printk("scsi%d.%c: message was", info->host->host_no, fas216_target(info));
1157 msgqueue_flush(&info->scsi.msgs);
1158 msgqueue_addmsg(&info->scsi.msgs, 1, MESSAGE_REJECT);
1159 info->scsi.phase = PHASE_MSGOUT_EXPECT;
1228 unsigned char *message = info->scsi.message;
1260 printk("scsi%d.%c: message in: ",
1274 msgqueue_flush(&info->scsi.msgs);
1275 msgqueue_addmsg(&info->scsi.msgs, 1, MSG_PARITY_ERROR);
1276 info->scsi.phase = PHASE_MSGOUT_EXPECT;
1297 for (i = info->scsi.SCp.sent_command; i < info->SCpnt->cmd_len; i++)
1302 info->scsi.phase = PHASE_COMMAND;
1314 unsigned int tot_msglen = msgqueue_msglength(&info->scsi.msgs);
1324 while ((msg = msgqueue_getmsg(&info->scsi.msgs, msgnr++)) != NULL) {
1338 info->scsi.phase = PHASE_MSGOUT;
1355 stat, is, info->scsi.phase);
1357 switch (info->scsi.phase) {
1389 switch (STATE(stat & STAT_BUSMASK, info->scsi.phase)) {
1394 info->scsi.phase = PHASE_DATAIN;
1409 info->scsi.phase = PHASE_DATAOUT;
1423 info->scsi.phase = PHASE_STATUS;
1434 info->scsi.msgin_fifo = fas216_readb(info, REG_CFIS) & CFIS_CF;
1437 info->scsi.phase = PHASE_MSGIN;
1441 info->scsi.msgin_fifo = fas216_readb(info, REG_CFIS) & CFIS_CF;
1448 info->scsi.phase = PHASE_COMMAND;
1477 fas216_writeb(info, REG_CNTL1, info->scsi.cfg[0]);
1480 if (msgqueue_msglength(&info->scsi.msgs) > 1)
1502 printk(KERN_ERR "scsi%d.%c: "
1508 msgqueue_flush(&info->scsi.msgs);
1509 msgqueue_addmsg(&info->scsi.msgs, 1, INITIATOR_ERROR);
1510 info->scsi.phase = PHASE_MSGOUT_EXPECT;
1514 if (info->scsi.phase == PHASE_MSGIN_DISCONNECT) {
1515 printk(KERN_ERR "scsi%d.%c: disconnect message received, but bus service %s?\n",
1518 msgqueue_flush(&info->scsi.msgs);
1520 msgqueue_addmsg(&info->scsi.msgs, 1, INITIATOR_ERROR);
1521 info->scsi.phase = PHASE_MSGOUT_EXPECT;
1522 info->scsi.aborting = 1;
1526 printk(KERN_ERR "scsi%d.%c: bus phase %s after %s?\n",
1557 stat, is, info->scsi.phase);
1559 switch (info->scsi.phase) {
1567 info->scsi.SCp.Status = fas216_readb(info, REG_FF);
1568 info->scsi.SCp.Message = fas216_readb(info, REG_FF);
1569 info->scsi.phase = PHASE_DONE;
1580 info->scsi.msgin_fifo = fifo_len;
1598 msgqueue_flush(&info->scsi.msgs);
1607 info->scsi.phase = PHASE_IDLE;
1609 memset(&info->scsi.SCp, 0, sizeof(info->scsi.SCp));
1615 info->device[i].stp = info->scsi.async_stp;
1641 add_debug_list(stat, is, inst, info->scsi.phase);
1687 tot_msglen = msgqueue_msglength(&info->scsi.msgs);
1694 printk("scsi%d.%c: message out: ",
1696 while ((msg = msgqueue_getmsg(&info->scsi.msgs, msgnr++)) != NULL) {
1713 info->scsi.phase = PHASE_SELSTEPS;
1716 while ((msg = msgqueue_getmsg(&info->scsi.msgs, msgnr++)) != NULL) {
1736 struct message *msg = msgqueue_getmsg(&info->scsi.msgs, 0);
1768 info->scsi.phase = PHASE_SELECTION;
1769 info->scsi.SCp = SCpnt->SCp;
1774 fas216_writeb(info, REG_CNTL1, info->scsi.cfg[0] | CNTL1_PTE);
1776 fas216_writeb(info, REG_CNTL1, info->scsi.cfg[0]);
1787 msgqueue_flush(&info->scsi.msgs);
1788 msgqueue_addmsg(&info->scsi.msgs, 1, IDENTIFY(disconnect_ok, SCpnt->device->lun));
1794 msgqueue_addmsg(&info->scsi.msgs, 2, SIMPLE_QUEUE_TAG, SCpnt->tag);
1803 msgqueue_addmsg(&info->scsi.msgs, 5,
1858 info->scsi.phase = PHASE_SELECTION;
1859 info->scsi.SCp = SCpnt->SCp;
1865 msgqueue_flush(&info->scsi.msgs);
1866 msgqueue_addmsg(&info->scsi.msgs, 1, BUS_DEVICE_RESET);
1882 msg = msgqueue_getmsg(&info->scsi.msgs, 0);
1952 if (info->scsi.disconnectable && info->SCpnt) {
1957 info->scsi.disconnectable = 0;
1977 info->scsi.SCp.ptr, info->scsi.SCp.this_residual);
2020 //printk("scsi%d.%c: sense buffer: ", info->host->host_no, '0' + SCpnt->device->id);
2045 SCpnt->result = result << 16 | info->scsi.SCp.Message << 8 |
2046 info->scsi.SCp.Status;
2080 if (info->scsi.SCp.ptr) {
2090 SCpnt->result, info->scsi.SCp.ptr,
2091 info->scsi.SCp.this_residual);
2104 panic("scsi%d.H: null scsi_done function in fas216_done",
2127 printk(KERN_WARNING "scsi%d.%c: losing request command\n",
2152 info->scsi.phase = PHASE_IDLE;
2154 if (info->scsi.aborting) {
2157 info->scsi.aborting = 0;
2164 if (info->scsi.SCp.ptr && info->scsi.SCp.this_residual == 0) {
2167 info->scsi.SCp.ptr, info->scsi.SCp.this_residual);
2168 info->scsi.SCp.ptr = NULL;
2184 if (info->scsi.irq) {
2186 if (info->scsi.phase == PHASE_IDLE)
2193 panic("scsi%d.H: null command in fas216_done",
2238 if (result == 0 && info->scsi.phase == PHASE_IDLE)
2270 * Returns: scsi result code.
2284 BUG_ON(info->scsi.irq);
2382 switch (info->scsi.phase) {
2388 if (info->scsi.disconnectable) {
2389 info->scsi.disconnectable = 0;
2494 if (info->SCpnt && !info->scsi.disconnectable &&
2522 if (info->scsi.phase == PHASE_IDLE)
2575 fas216_writeb(info, REG_CNTL3, info->scsi.cfg[2]);
2608 info->scsi.phase = PHASE_IDLE;
2641 fas216_writeb(info, REG_CNTL1, info->scsi.cfg[0]);
2642 fas216_writeb(info, REG_CNTL2, info->scsi.cfg[1]);
2643 fas216_writeb(info, REG_CNTL3, info->scsi.cfg[2]);
2646 fas216_writeb(info, REG_STP, info->scsi.async_stp);
2647 fas216_writeb(info, REG_CNTL1, info->scsi.cfg[0]);
2812 info->scsi.disconnectable = 0;
2813 info->scsi.aborting = 0;
2848 info->scsi.cfg[0] = host->this_id | CNTL1_PERE;
2849 info->scsi.cfg[1] = CNTL2_ENF | CNTL2_S2FE;
2850 info->scsi.cfg[2] = info->ifcfg.cntl3 |
2852 info->scsi.async_stp = fas216_syncperiod(info, info->ifcfg.asyncperiod);
2863 msgqueue_initialise(&info->scsi.msgs);
2897 info->scsi.type = chip_types[type];
2911 fas216_writeb(info, REG_CNTL1, info->scsi.cfg[0] | CNTL1_DISR);
2915 * scsi standard says wait 250ms
2921 fas216_writeb(info, REG_CNTL1, info->scsi.cfg[0]);
2968 info->scsi.type, info->scsi.io_base,
2969 info->scsi.irq, info->scsi.dma);