Lines Matching refs:acb

156 #define DC395x_read8(acb,address)		(u8)(inb(acb->io_port_base + (address)))
157 #define DC395x_read16(acb,address) (u16)(inw(acb->io_port_base + (address)))
158 #define DC395x_read32(acb,address) (u32)(inl(acb->io_port_base + (address)))
159 #define DC395x_write8(acb,address,value) outb((value), acb->io_port_base + (address))
160 #define DC395x_write16(acb,address,value) outw((value), acb->io_port_base + (address))
161 #define DC395x_write32(acb,address,value) outl((value), acb->io_port_base + (address))
255 struct AdapterCtlBlk *acb;
328 static void data_out_phase0(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb,
330 static void data_in_phase0(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb,
332 static void command_phase0(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb,
334 static void status_phase0(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb,
336 static void msgout_phase0(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb,
338 static void msgin_phase0(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb,
340 static void data_out_phase1(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb,
342 static void data_in_phase1(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb,
344 static void command_phase1(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb,
346 static void status_phase1(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb,
348 static void msgout_phase1(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb,
350 static void msgin_phase1(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb,
352 static void nop0(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb,
354 static void nop1(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb,
356 static void set_basic_config(struct AdapterCtlBlk *acb);
357 static void cleanup_after_transfer(struct AdapterCtlBlk *acb,
359 static void reset_scsi_bus(struct AdapterCtlBlk *acb);
360 static void data_io_transfer(struct AdapterCtlBlk *acb,
362 static void disconnect(struct AdapterCtlBlk *acb);
363 static void reselect(struct AdapterCtlBlk *acb);
364 static u8 start_scsi(struct AdapterCtlBlk *acb, struct DeviceCtlBlk *dcb,
366 static inline void enable_msgout_abort(struct AdapterCtlBlk *acb,
370 static void doing_srb_done(struct AdapterCtlBlk *acb, u8 did_code,
372 static void scsi_reset_detect(struct AdapterCtlBlk *acb);
373 static void pci_unmap_srb(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb);
374 static void pci_unmap_srb_sense(struct AdapterCtlBlk *acb,
376 static void srb_done(struct AdapterCtlBlk *acb, struct DeviceCtlBlk *dcb,
378 static void request_sense(struct AdapterCtlBlk *acb, struct DeviceCtlBlk *dcb,
380 static void set_xfer_rate(struct AdapterCtlBlk *acb,
741 static void waiting_set_timer(struct AdapterCtlBlk *acb, unsigned long to)
743 if (timer_pending(&acb->waiting_timer))
745 if (time_before(jiffies + to, acb->last_reset - HZ / 2))
746 acb->waiting_timer.expires =
747 acb->last_reset - HZ / 2 + 1;
749 acb->waiting_timer.expires = jiffies + to + 1;
750 add_timer(&acb->waiting_timer);
755 static void waiting_process_next(struct AdapterCtlBlk *acb)
761 struct list_head *dcb_list_head = &acb->dcb_list;
763 if (acb->active_dcb
764 || (acb->acb_flag & (RESET_DETECT + RESET_DONE + RESET_DEV)))
767 if (timer_pending(&acb->waiting_timer))
768 del_timer(&acb->waiting_timer);
778 if (dcb == acb->dcb_run_robin) {
785 acb->dcb_run_robin = start;
798 acb->dcb_run_robin = dcb_get_next(dcb_list_head,
799 acb->dcb_run_robin);
810 if (!start_scsi(acb, pos, srb))
813 waiting_set_timer(acb, HZ/50);
824 struct AdapterCtlBlk *acb = from_timer(acb, t, waiting_timer);
826 "waiting_timeout: Queue woken up by timer. acb=%p\n", acb);
827 DC395x_LOCK_IO(acb->scsi_host, flags);
828 waiting_process_next(acb);
829 DC395x_UNLOCK_IO(acb->scsi_host, flags);
834 static struct DeviceCtlBlk *find_dcb(struct AdapterCtlBlk *acb, u8 id, u8 lun)
836 return acb->children[id][lun];
840 /* Send SCSI Request Block (srb) to adapter (acb) */
841 static void send_srb(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb)
846 acb->active_dcb ||
847 (acb->acb_flag & (RESET_DETECT + RESET_DONE + RESET_DEV))) {
849 waiting_process_next(acb);
853 if (!start_scsi(acb, dcb, srb)) {
857 waiting_set_timer(acb, HZ / 50);
933 srb->sg_bus_addr = dma_map_single(&dcb->acb->dev->dev,
967 struct AdapterCtlBlk *acb =
976 if (cmd->device->id >= acb->scsi_host->max_id ||
977 cmd->device->lun >= acb->scsi_host->max_lun ||
983 if (!(acb->dcb_map[cmd->device->id] & (1 << cmd->device->lun))) {
990 dcb = find_dcb(acb, cmd->device->id, cmd->device->lun);
1001 srb = list_first_entry_or_null(&acb->srb_free_list,
1018 waiting_process_next(acb);
1021 send_srb(acb, srb);
1039 static void dump_register_info(struct AdapterCtlBlk *acb,
1043 struct pci_dev *dev = acb->dev;
1046 dcb = acb->active_dcb;
1064 (acb->active_dcb) ? "" : "not");
1070 DC395x_read16(acb, TRM_S1040_SCSI_STATUS),
1071 DC395x_read8(acb, TRM_S1040_SCSI_FIFOCNT),
1072 DC395x_read8(acb, TRM_S1040_SCSI_SIGNAL),
1073 DC395x_read8(acb, TRM_S1040_SCSI_INTSTATUS),
1074 DC395x_read8(acb, TRM_S1040_SCSI_SYNC),
1075 DC395x_read8(acb, TRM_S1040_SCSI_TARGETID),
1076 DC395x_read8(acb, TRM_S1040_SCSI_IDMSG),
1077 DC395x_read32(acb, TRM_S1040_SCSI_COUNTER),
1078 DC395x_read8(acb, TRM_S1040_SCSI_INTEN),
1079 DC395x_read16(acb, TRM_S1040_SCSI_CONFIG0),
1080 DC395x_read8(acb, TRM_S1040_SCSI_CONFIG2),
1081 DC395x_read8(acb, TRM_S1040_SCSI_COMMAND),
1082 DC395x_read8(acb, TRM_S1040_SCSI_TIMEOUT));
1086 DC395x_read16(acb, TRM_S1040_DMA_COMMAND),
1087 DC395x_read8(acb, TRM_S1040_DMA_FIFOCNT),
1088 DC395x_read8(acb, TRM_S1040_DMA_FIFOSTAT),
1089 DC395x_read8(acb, TRM_S1040_DMA_STATUS),
1090 DC395x_read8(acb, TRM_S1040_DMA_INTEN),
1091 DC395x_read16(acb, TRM_S1040_DMA_CONFIG),
1092 DC395x_read32(acb, TRM_S1040_DMA_XCNT),
1093 DC395x_read32(acb, TRM_S1040_DMA_CXCNT),
1094 DC395x_read32(acb, TRM_S1040_DMA_XHIGHADDR),
1095 DC395x_read32(acb, TRM_S1040_DMA_XLOWADDR));
1098 DC395x_read8(acb, TRM_S1040_GEN_CONTROL),
1099 DC395x_read8(acb, TRM_S1040_GEN_STATUS),
1100 DC395x_read8(acb, TRM_S1040_GEN_TIMER),
1105 static inline void clear_fifo(struct AdapterCtlBlk *acb, char *txt)
1108 u8 lines = DC395x_read8(acb, TRM_S1040_SCSI_SIGNAL);
1109 u8 fifocnt = DC395x_read8(acb, TRM_S1040_SCSI_FIFOCNT);
1115 DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, DO_CLRFIFO);
1119 static void reset_dev_param(struct AdapterCtlBlk *acb)
1122 struct NvRamType *eeprom = &acb->eeprom;
1123 dprintkdbg(DBG_0, "reset_dev_param: acb=%p\n", acb);
1125 list_for_each_entry(dcb, &acb->dcb_list, list) {
1136 || !(acb->config & HCC_WIDE_CARD))
1149 struct AdapterCtlBlk *acb =
1155 if (timer_pending(&acb->waiting_timer))
1156 del_timer(&acb->waiting_timer);
1161 DC395x_write8(acb, TRM_S1040_DMA_INTEN, 0x00);
1162 DC395x_write8(acb, TRM_S1040_SCSI_INTEN, 0x00);
1163 DC395x_write8(acb, TRM_S1040_SCSI_CONTROL, DO_RSTMODULE);
1164 DC395x_write8(acb, TRM_S1040_DMA_CONTROL, DMARESETMODULE);
1166 reset_scsi_bus(acb);
1170 acb->last_reset =
1172 HZ * acb->eeprom.delay_time;
1178 DC395x_write8(acb, TRM_S1040_DMA_CONTROL, CLRXFIFO);
1179 clear_fifo(acb, "eh_bus_reset");
1181 DC395x_read8(acb, TRM_S1040_SCSI_INTSTATUS);
1182 set_basic_config(acb);
1184 reset_dev_param(acb);
1185 doing_srb_done(acb, DID_RESET, cmd, 0);
1186 acb->active_dcb = NULL;
1187 acb->acb_flag = 0; /* RESET_DETECT, RESET_DONE ,RESET_DEV */
1188 waiting_process_next(acb);
1215 struct AdapterCtlBlk *acb =
1222 dcb = find_dcb(acb, cmd->device->id, cmd->device->lun);
1231 pci_unmap_srb_sense(acb, srb);
1232 pci_unmap_srb(acb, srb);
1234 list_add_tail(&srb->list, &acb->srb_free_list);
1251 static void build_sdtr(struct AdapterCtlBlk *acb, struct DeviceCtlBlk *dcb,
1275 static void build_wdtr(struct AdapterCtlBlk *acb, struct DeviceCtlBlk *dcb,
1279 (acb->config & HCC_WIDE_CARD)) ? 1 : 0;
1298 static void selto_timer(struct AdapterCtlBlk *acb)
1300 if (timer_pending(&acb->selto_timer))
1302 acb->selto_timer.function = selection_timeout_missed;
1303 acb->selto_timer.data = (unsigned long) acb;
1305 (jiffies + HZ, acb->last_reset + HZ / 2))
1306 acb->selto_timer.expires =
1307 acb->last_reset + HZ / 2 + 1;
1309 acb->selto_timer.expires = jiffies + HZ + 1;
1310 add_timer(&acb->selto_timer);
1317 struct AdapterCtlBlk *acb = (struct AdapterCtlBlk *)ptr;
1320 if (!acb->active_dcb || !acb->active_dcb->active_srb) {
1324 DC395x_LOCK_IO(acb->scsi_host, flags);
1325 srb = acb->active_dcb->active_srb;
1326 disconnect(acb);
1327 DC395x_UNLOCK_IO(acb->scsi_host, flags);
1332 static u8 start_scsi(struct AdapterCtlBlk* acb, struct DeviceCtlBlk* dcb,
1341 srb->tag_number = TAG_NONE; /* acb->tag_max_num: had error read in eeprom */
1343 s_stat = DC395x_read8(acb, TRM_S1040_SCSI_SIGNAL);
1345 s_stat2 = DC395x_read16(acb, TRM_S1040_SCSI_STATUS);
1360 /*selto_timer (acb); */
1364 if (acb->active_dcb) {
1368 acb->active_dcb->active_srb ?
1369 acb->active_dcb->active_srb->cmd : NULL);
1372 if (DC395x_read16(acb, TRM_S1040_SCSI_STATUS) & SCSIINTERRUPT) {
1378 if (time_before(jiffies, acb->last_reset - HZ / 2)) {
1384 clear_fifo(acb, "start_scsi");
1385 DC395x_write8(acb, TRM_S1040_SCSI_HOSTID, acb->scsi_host->this_id);
1386 DC395x_write8(acb, TRM_S1040_SCSI_TARGETID, dcb->target_id);
1387 DC395x_write8(acb, TRM_S1040_SCSI_SYNC, dcb->sync_period);
1388 DC395x_write8(acb, TRM_S1040_SCSI_OFFSET, dcb->sync_offset);
1412 build_wdtr(acb, dcb, srb);
1418 build_sdtr(acb, dcb, srb);
1423 build_wdtr(acb, dcb, srb);
1429 DC395x_write8(acb, TRM_S1040_SCSI_FIFO, identify_message);
1450 DC395x_write16(acb, TRM_S1040_SCSI_CONTROL,
1455 DC395x_write8(acb, TRM_S1040_SCSI_FIFO, SIMPLE_QUEUE_TAG);
1456 DC395x_write8(acb, TRM_S1040_SCSI_FIFO, tag_number);
1469 DC395x_write8(acb, TRM_S1040_SCSI_FIFO, REQUEST_SENSE);
1470 DC395x_write8(acb, TRM_S1040_SCSI_FIFO, (dcb->target_lun << 5));
1471 DC395x_write8(acb, TRM_S1040_SCSI_FIFO, 0);
1472 DC395x_write8(acb, TRM_S1040_SCSI_FIFO, 0);
1473 DC395x_write8(acb, TRM_S1040_SCSI_FIFO, SCSI_SENSE_BUFFERSIZE);
1474 DC395x_write8(acb, TRM_S1040_SCSI_FIFO, 0);
1478 DC395x_write8(acb, TRM_S1040_SCSI_FIFO, *ptr++);
1481 DC395x_write16(acb, TRM_S1040_SCSI_CONTROL,
1483 if (DC395x_read16(acb, TRM_S1040_SCSI_STATUS) & SCSIINTERRUPT) {
1503 acb->active_dcb = dcb;
1506 DC395x_write16(acb, TRM_S1040_SCSI_CONTROL,
1509 DC395x_write8(acb, TRM_S1040_SCSI_COMMAND, scsicommand);
1516 DC395x_write16 (acb, TRM_S1040_SCSI_CONTROL, DO_SETATN); \
1521 static inline void enable_msgout_abort(struct AdapterCtlBlk *acb,
1536 * @acb: a pointer to the adpter control block
1539 static void dc395x_handle_interrupt(struct AdapterCtlBlk *acb,
1550 DC395x_LOCK_IO(acb->scsi_host, flags);
1553 scsi_intstatus = DC395x_read8(acb, TRM_S1040_SCSI_INTSTATUS);
1563 if (timer_pending(&acb->selto_timer))
1564 del_timer(&acb->selto_timer);
1567 disconnect(acb); /* bus free interrupt */
1571 reselect(acb);
1579 scsi_reset_detect(acb);
1583 dcb = acb->active_dcb;
1593 enable_msgout_abort(acb, srb);
1613 dc395x_statev(acb, srb, &scsi_status);
1636 dc395x_statev(acb, srb, &scsi_status);
1639 DC395x_UNLOCK_IO(acb->scsi_host, flags);
1645 struct AdapterCtlBlk *acb = dev_id;
1653 scsi_status = DC395x_read16(acb, TRM_S1040_SCSI_STATUS);
1654 dma_status = DC395x_read8(acb, TRM_S1040_DMA_STATUS);
1657 dc395x_handle_interrupt(acb, scsi_status);
1665 if (acb->active_dcb) {
1666 acb->active_dcb-> flag |= ABORT_DEV_;
1667 if (acb->active_dcb->active_srb)
1668 enable_msgout_abort(acb, acb->active_dcb->active_srb);
1670 DC395x_write8(acb, TRM_S1040_DMA_CONTROL, ABORTXFER | CLRXFIFO);
1673 acb = NULL;
1682 static void msgout_phase0(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb,
1689 DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, DO_DATALATCH); /* it's important for atn stop */
1694 static void msgout_phase1(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb,
1701 clear_fifo(acb, "msgout_phase1");
1711 DC395x_write8(acb, TRM_S1040_SCSI_FIFO, NOP);
1712 DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, DO_DATALATCH);
1714 DC395x_write8(acb, TRM_S1040_SCSI_COMMAND, SCMD_FIFO_OUT);
1719 DC395x_write8(acb, TRM_S1040_SCSI_FIFO, *ptr++);
1724 DC395x_write8(acb, TRM_S1040_SCSI_COMMAND, SCMD_FIFO_OUT);
1728 static void command_phase0(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb,
1732 DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, DO_DATALATCH);
1736 static void command_phase1(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb,
1744 clear_fifo(acb, "command_phase1");
1745 DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, DO_CLRATN);
1749 DC395x_write8(acb, TRM_S1040_SCSI_FIFO, *ptr);
1753 DC395x_write8(acb, TRM_S1040_SCSI_FIFO, REQUEST_SENSE);
1754 dcb = acb->active_dcb;
1756 DC395x_write8(acb, TRM_S1040_SCSI_FIFO, (dcb->target_lun << 5));
1757 DC395x_write8(acb, TRM_S1040_SCSI_FIFO, 0);
1758 DC395x_write8(acb, TRM_S1040_SCSI_FIFO, 0);
1759 DC395x_write8(acb, TRM_S1040_SCSI_FIFO, SCSI_SENSE_BUFFERSIZE);
1760 DC395x_write8(acb, TRM_S1040_SCSI_FIFO, 0);
1764 DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, DO_DATALATCH);
1766 DC395x_write8(acb, TRM_S1040_SCSI_COMMAND, SCMD_FIFO_OUT);
1816 dma_sync_single_for_cpu(&srb->dcb->acb->dev->dev,
1822 dma_sync_single_for_device(&srb->dcb->acb->dev->dev,
1853 static void cleanup_after_transfer(struct AdapterCtlBlk *acb,
1857 if (DC395x_read16(acb, TRM_S1040_DMA_COMMAND) & 0x0001) { /* read */
1858 if (!(DC395x_read8(acb, TRM_S1040_SCSI_FIFOCNT) & 0x40))
1859 clear_fifo(acb, "cleanup/in");
1860 if (!(DC395x_read8(acb, TRM_S1040_DMA_FIFOSTAT) & 0x80))
1861 DC395x_write8(acb, TRM_S1040_DMA_CONTROL, CLRXFIFO);
1863 if (!(DC395x_read8(acb, TRM_S1040_DMA_FIFOSTAT) & 0x80))
1864 DC395x_write8(acb, TRM_S1040_DMA_CONTROL, CLRXFIFO);
1865 if (!(DC395x_read8(acb, TRM_S1040_SCSI_FIFOCNT) & 0x40))
1866 clear_fifo(acb, "cleanup/out");
1868 DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, DO_DATALATCH);
1879 static void data_out_phase0(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb,
1903 DC395x_read8(acb, TRM_S1040_DMA_FIFOCNT),
1904 DC395x_read8(acb, TRM_S1040_DMA_FIFOSTAT),
1905 DC395x_read8(acb, TRM_S1040_SCSI_FIFOCNT),
1906 DC395x_read32(acb, TRM_S1040_SCSI_COUNTER), scsi_status,
1908 DC395x_write8(acb, TRM_S1040_DMA_CONTROL, STOPDMAXFER | CLRXFIFO);
1926 (u32)(DC395x_read8(acb, TRM_S1040_SCSI_FIFOCNT) &
1934 DC395x_read8(acb, TRM_S1040_SCSI_FIFOCNT),
1936 DC395x_read8(acb, TRM_S1040_SCSI_FIFOCNT),
1937 DC395x_read32(acb, TRM_S1040_SCSI_COUNTER),
1938 DC395x_read8(acb, TRM_S1040_DMA_FIFOCNT),
1939 DC395x_read8(acb, TRM_S1040_DMA_FIFOSTAT),
1940 DC395x_read32(acb, TRM_S1040_DMA_CXCNT));
1953 DC395x_read32(acb, TRM_S1040_SCSI_COUNTER);
1956 /*clear_fifo(acb, "DOP1"); */
2007 cleanup_after_transfer(acb, srb);
2012 static void data_out_phase1(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb,
2017 clear_fifo(acb, "data_out_phase1");
2019 data_io_transfer(acb, srb, XFERDATAOUT);
2022 static void data_in_phase0(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb,
2058 if (!(DC395x_read8(acb, TRM_S1040_DMA_FIFOSTAT) & 0x80)) {
2067 (DC395x_read16(acb, TRM_S1040_DMA_FIFOSTAT) &
2079 DC395x_read8(acb, TRM_S1040_DMA_FIFOCNT),
2080 DC395x_read8(acb, TRM_S1040_DMA_FIFOSTAT));
2083 sc = DC395x_read32(acb, TRM_S1040_SCSI_COUNTER);
2084 fc = DC395x_read8(acb, TRM_S1040_SCSI_FIFOCNT);
2096 DC395x_read8(acb, TRM_S1040_DMA_FIFOSTAT),
2097 DC395x_read32(acb, TRM_S1040_DMA_CXCNT),
2114 DC395x_write8(acb, TRM_S1040_SCSI_CONFIG2,
2133 byte = DC395x_read8(acb, TRM_S1040_SCSI_FIFO);
2144 fc = DC395x_read8(acb, TRM_S1040_SCSI_FIFOCNT);
2157 u8 byte = DC395x_read8(acb, TRM_S1040_SCSI_FIFO);
2165 DC395x_write8(acb, TRM_S1040_SCSI_CONFIG2, 0);
2189 (u32)(DC395x_read8(acb, TRM_S1040_SCSI_FIFOCNT) &
2208 DC395x_read8(acb, TRM_S1040_DMA_STATUS);
2230 cleanup_after_transfer(acb, srb);
2235 static void data_in_phase1(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb,
2240 data_io_transfer(acb, srb, XFERDATAIN);
2244 static void data_io_transfer(struct AdapterCtlBlk *acb,
2254 if (srb == acb->tmp_srb)
2262 u8 dma_status = DC395x_read8(acb, TRM_S1040_DMA_STATUS);
2270 dump_register_info(acb, dcb, srb);
2271 DC395x_write8(acb, TRM_S1040_DMA_CONTROL, CLRXFIFO);
2273 /* clear_fifo(acb, "IO"); */
2279 DC395x_write32(acb, TRM_S1040_DMA_XHIGHADDR, 0);
2282 DC395x_write32(acb, TRM_S1040_DMA_XLOWADDR,
2287 DC395x_write32(acb, TRM_S1040_DMA_XCNT,
2292 DC395x_write32(acb, TRM_S1040_DMA_XLOWADDR,
2294 DC395x_write32(acb, TRM_S1040_DMA_XCNT,
2298 DC395x_write32(acb, TRM_S1040_SCSI_COUNTER,
2300 DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, DO_DATALATCH); /* it's important for atn stop */
2302 DC395x_write8(acb, TRM_S1040_SCSI_COMMAND,
2304 DC395x_write16(acb, TRM_S1040_DMA_COMMAND, io_dir);
2306 DC395x_write16(acb, TRM_S1040_DMA_COMMAND, io_dir);
2307 DC395x_write8(acb, TRM_S1040_SCSI_COMMAND,
2320 DC395x_write32(acb, TRM_S1040_SCSI_COUNTER,
2322 DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, DO_DATALATCH); /* it's important for atn stop */
2324 DC395x_write8(acb, TRM_S1040_SCSI_COMMAND,
2331 DC395x_write8(acb, TRM_S1040_SCSI_CONFIG2,
2352 DC395x_write8(acb, TRM_S1040_SCSI_FIFO, *virt++);
2362 DC395x_write8(acb, TRM_S1040_SCSI_FIFO, 0);
2366 DC395x_write8(acb, TRM_S1040_SCSI_CONFIG2, 0);
2368 /*DC395x_write32(acb, TRM_S1040_SCSI_COUNTER, ln); */
2371 DC395x_write8(acb, TRM_S1040_SCSI_COMMAND,
2387 DC395x_write32(acb, TRM_S1040_SCSI_COUNTER, 2);
2388 DC395x_write8(acb, TRM_S1040_SCSI_CONFIG2,
2391 DC395x_read8(acb, TRM_S1040_SCSI_FIFO);
2392 DC395x_read8(acb, TRM_S1040_SCSI_FIFO);
2397 DC395x_write8(acb, TRM_S1040_SCSI_FIFO, 'K');
2398 DC395x_write8(acb, TRM_S1040_SCSI_FIFO, 'G');
2400 DC395x_write8(acb, TRM_S1040_SCSI_CONFIG2, 0);
2402 DC395x_write32(acb, TRM_S1040_SCSI_COUNTER, 1);
2406 DC395x_read8(acb, TRM_S1040_SCSI_FIFO);
2408 DC395x_write8(acb, TRM_S1040_SCSI_FIFO, 'K');
2411 DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, DO_DATALATCH); /* it's important for atn stop */
2414 DC395x_write8(acb, TRM_S1040_SCSI_COMMAND, bval);
2419 static void status_phase0(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb,
2424 srb->target_status = DC395x_read8(acb, TRM_S1040_SCSI_FIFO);
2425 srb->end_message = DC395x_read8(acb, TRM_S1040_SCSI_FIFO); /* get message */
2428 DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, DO_DATALATCH); /* it's important for atn stop */
2429 DC395x_write8(acb, TRM_S1040_SCSI_COMMAND, SCMD_MSGACCEPT);
2433 static void status_phase1(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb,
2439 DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, DO_DATALATCH); /* it's important for atn stop */
2440 DC395x_write8(acb, TRM_S1040_SCSI_COMMAND, SCMD_COMP);
2459 static inline void msgin_reject(struct AdapterCtlBlk *acb,
2473 static struct ScsiReqBlk *msgin_qtag(struct AdapterCtlBlk *acb,
2501 enable_msgout_abort(acb, srb);
2507 memcpy(srb->msgin_buf, dcb->active_srb->msgin_buf, acb->msg_len);
2515 srb = acb->tmp_srb;
2526 static inline void reprogram_regs(struct AdapterCtlBlk *acb,
2529 DC395x_write8(acb, TRM_S1040_SCSI_TARGETID, dcb->target_id);
2530 DC395x_write8(acb, TRM_S1040_SCSI_SYNC, dcb->sync_period);
2531 DC395x_write8(acb, TRM_S1040_SCSI_OFFSET, dcb->sync_offset);
2532 set_xfer_rate(acb, dcb);
2537 static void msgin_set_async(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb)
2549 reprogram_regs(acb, dcb);
2552 build_wdtr(acb, dcb, srb);
2560 static void msgin_set_sync(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb)
2621 build_wdtr(acb, dcb, srb);
2629 reprogram_regs(acb, dcb);
2633 static inline void msgin_set_nowide(struct AdapterCtlBlk *acb,
2643 reprogram_regs(acb, dcb);
2646 build_sdtr(acb, dcb, srb);
2652 static void msgin_set_wide(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb)
2656 && acb->config & HCC_WIDE_CARD) ? 1 : 0;
2682 reprogram_regs(acb, dcb);
2685 build_sdtr(acb, dcb, srb);
2704 static void msgin_phase0(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb,
2707 struct DeviceCtlBlk *dcb = acb->active_dcb;
2710 srb->msgin_buf[acb->msg_len++] = DC395x_read8(acb, TRM_S1040_SCSI_FIFO);
2711 if (msgin_completed(srb->msgin_buf, acb->msg_len)) {
2722 msgin_qtag(acb, dcb,
2727 DC395x_write16(acb, TRM_S1040_SCSI_CONTROL,
2731 msgin_set_async(acb, srb);
2736 msgin_set_nowide(acb, srb);
2739 enable_msgout_abort(acb, srb);
2747 msgin_set_sync(acb, srb);
2754 msgin_set_wide(acb, srb);
2757 msgin_reject(acb, srb);
2789 enable_msgout_abort(acb, srb);
2802 msgin_reject(acb, srb);
2807 acb->msg_len = 0;
2810 DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, DO_DATALATCH); /* it's important ... you know! */
2811 DC395x_write8(acb, TRM_S1040_SCSI_COMMAND, SCMD_MSGACCEPT);
2815 static void msgin_phase1(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb,
2819 clear_fifo(acb, "msgin_phase1");
2820 DC395x_write32(acb, TRM_S1040_SCSI_COUNTER, 1);
2825 DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, DO_DATALATCH); /* it's important for atn stop */
2827 DC395x_write8(acb, TRM_S1040_SCSI_COMMAND, SCMD_FIFO_IN);
2831 static void nop0(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb,
2837 static void nop1(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb,
2843 static void set_xfer_rate(struct AdapterCtlBlk *acb, struct DeviceCtlBlk *dcb)
2851 if (acb->scan_devices) {
2856 list_for_each_entry(i, &acb->dcb_list, list)
2866 static void disconnect(struct AdapterCtlBlk *acb)
2868 struct DeviceCtlBlk *dcb = acb->active_dcb;
2875 acb->last_reset =
2877 HZ * acb->eeprom.delay_time;
2878 clear_fifo(acb, "disconnectEx");
2879 DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, DO_HWRESELECT);
2883 acb->active_dcb = NULL;
2887 clear_fifo(acb, "disconnect");
2888 DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, DO_HWRESELECT);
2894 waiting_process_next(acb);
2897 acb->last_reset = jiffies + HZ / 2 + 1;
2899 doing_srb_done(acb, DID_ABORT, srb->cmd, 1);
2900 waiting_process_next(acb);
2924 || acb->scan_devices) {
2934 waiting_set_timer(acb, HZ / 20);
2937 u8 bval = DC395x_read8(acb, TRM_S1040_SCSI_SIGNAL);
2947 waiting_process_next(acb);
2956 srb_done(acb, dcb, srb);
2962 static void reselect(struct AdapterCtlBlk *acb)
2964 struct DeviceCtlBlk *dcb = acb->active_dcb;
2968 dprintkdbg(DBG_0, "reselect: acb=%p\n", acb);
2970 clear_fifo(acb, "reselect");
2971 /*DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, DO_HWRESELECT | DO_DATALATCH); */
2973 rsel_tar_lun_id = DC395x_read16(acb, TRM_S1040_SCSI_TARGETID);
2979 DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, DO_DATALATCH); /* it's important for atn stop */
2983 if (!acb->scan_devices) {
2988 DC395x_read16(acb, TRM_S1040_SCSI_STATUS));
2994 waiting_set_timer(acb, HZ / 20);
3005 dcb = find_dcb(acb, id, lun);
3009 DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, DO_DATALATCH); /* it's important for atn stop */
3012 acb->active_dcb = dcb;
3020 srb = acb->tmp_srb;
3032 srb = acb->tmp_srb;
3035 enable_msgout_abort(acb, srb);
3039 enable_msgout_abort(acb, srb);
3049 DC395x_write8(acb, TRM_S1040_SCSI_HOSTID, acb->scsi_host->this_id); /* host ID */
3050 DC395x_write8(acb, TRM_S1040_SCSI_TARGETID, dcb->target_id); /* target ID */
3051 DC395x_write8(acb, TRM_S1040_SCSI_OFFSET, dcb->sync_offset); /* offset */
3052 DC395x_write8(acb, TRM_S1040_SCSI_SYNC, dcb->sync_period); /* sync period, wide */
3053 DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, DO_DATALATCH); /* it's important for atn stop */
3055 DC395x_write8(acb, TRM_S1040_SCSI_COMMAND, SCMD_MSGACCEPT);
3087 dcb->acb->tag_max_num;
3096 static void add_dev(struct AdapterCtlBlk *acb, struct DeviceCtlBlk *dcb,
3107 static void pci_unmap_srb(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb)
3116 dma_unmap_single(&acb->dev->dev, srb->sg_bus_addr, SEGMENTX_LEN,
3127 static void pci_unmap_srb_sense(struct AdapterCtlBlk *acb,
3135 dma_unmap_single(&acb->dev->dev, srb->segment_x[0].address,
3150 static void srb_done(struct AdapterCtlBlk *acb, struct DeviceCtlBlk *dcb,
3168 pci_unmap_srb_sense(acb, srb);
3181 dcb->target_lun, status, acb->scan_devices);
3187 dcb->target_lun, status, acb->scan_devices);
3193 dcb->target_lun, status, acb->scan_devices);
3199 dcb->target_lun, status, acb->scan_devices);
3205 dcb->target_lun, status, acb->scan_devices);
3238 request_sense(acb, dcb, srb);
3249 waiting_set_timer(acb, HZ / 20);
3283 pci_unmap_srb(acb, srb);
3306 add_dev(acb, dcb, ptr);
3325 if (srb != acb->tmp_srb) {
3329 list_move_tail(&srb->list, &acb->srb_free_list);
3335 waiting_process_next(acb);
3340 static void doing_srb_done(struct AdapterCtlBlk *acb, u8 did_flag,
3346 list_for_each_entry(dcb, &acb->dcb_list, list) {
3357 list_add_tail(&srb->list, &acb->srb_free_list);
3360 pci_unmap_srb_sense(acb, srb);
3361 pci_unmap_srb(acb, srb);
3384 list_move_tail(&srb->list, &acb->srb_free_list);
3387 pci_unmap_srb_sense(acb, srb);
3388 pci_unmap_srb(acb, srb);
3405 static void reset_scsi_bus(struct AdapterCtlBlk *acb)
3407 dprintkdbg(DBG_0, "reset_scsi_bus: acb=%p\n", acb);
3408 acb->acb_flag |= RESET_DEV; /* RESET_DETECT, RESET_DONE, RESET_DEV */
3409 DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, DO_RSTSCSI);
3411 while (!(DC395x_read8(acb, TRM_S1040_SCSI_INTSTATUS) & INT_SCSIRESET))
3416 static void set_basic_config(struct AdapterCtlBlk *acb)
3420 DC395x_write8(acb, TRM_S1040_SCSI_TIMEOUT, acb->sel_timeout);
3421 if (acb->config & HCC_PARITY)
3426 DC395x_write8(acb, TRM_S1040_SCSI_CONFIG0, bval);
3429 DC395x_write8(acb, TRM_S1040_SCSI_CONFIG1, 0x03); /* was 0x13: default */
3431 DC395x_write8(acb, TRM_S1040_SCSI_HOSTID, acb->scsi_host->this_id);
3433 DC395x_write8(acb, TRM_S1040_SCSI_OFFSET, 0x00);
3435 wval = DC395x_read16(acb, TRM_S1040_GEN_CONTROL) & 0x7F;
3436 DC395x_write16(acb, TRM_S1040_GEN_CONTROL, wval);
3438 wval = DC395x_read16(acb, TRM_S1040_DMA_CONFIG) & ~DMA_FIFO_CTRL;
3441 DC395x_write16(acb, TRM_S1040_DMA_CONFIG, wval);
3443 DC395x_read8(acb, TRM_S1040_SCSI_INTSTATUS);
3445 DC395x_write8(acb, TRM_S1040_SCSI_INTEN, 0x7F);
3446 DC395x_write8(acb, TRM_S1040_DMA_INTEN, EN_SCSIINTR | EN_DMAXFERERROR
3452 static void scsi_reset_detect(struct AdapterCtlBlk *acb)
3454 dprintkl(KERN_INFO, "scsi_reset_detect: acb=%p\n", acb);
3456 if (timer_pending(&acb->waiting_timer))
3457 del_timer(&acb->waiting_timer);
3459 DC395x_write8(acb, TRM_S1040_SCSI_CONTROL, DO_RSTMODULE);
3460 DC395x_write8(acb, TRM_S1040_DMA_CONTROL, DMARESETMODULE);
3461 /*DC395x_write8(acb, TRM_S1040_DMA_CONTROL,STOPDMAXFER); */
3464 acb->last_reset =
3466 HZ * acb->eeprom.delay_time;
3468 clear_fifo(acb, "scsi_reset_detect");
3469 set_basic_config(acb);
3471 /*DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, DO_HWRESELECT); */
3473 if (acb->acb_flag & RESET_DEV) { /* RESET_DETECT, RESET_DONE, RESET_DEV */
3474 acb->acb_flag |= RESET_DONE;
3476 acb->acb_flag |= RESET_DETECT;
3477 reset_dev_param(acb);
3478 doing_srb_done(acb, DID_RESET, NULL, 1);
3479 /*DC395x_RecoverSRB( acb ); */
3480 acb->active_dcb = NULL;
3481 acb->acb_flag = 0;
3482 waiting_process_next(acb);
3487 static void request_sense(struct AdapterCtlBlk *acb, struct DeviceCtlBlk *dcb,
3511 srb->segment_x[0].address = dma_map_single(&acb->dev->dev,
3520 if (start_scsi(acb, dcb, srb)) { /* Should only happen, if sb. else grabs the bus */
3525 waiting_set_timer(acb, HZ / 100);
3537 * @acb: The adapter to obtain configuration information from.
3543 static struct DeviceCtlBlk *device_alloc(struct AdapterCtlBlk *acb,
3546 struct NvRamType *eeprom = &acb->eeprom;
3554 dcb->acb = NULL;
3578 && (acb->config & HCC_WIDE_CARD))
3590 list_for_each_entry(iter, &acb->dcb_list, list)
3618 * @acb: The adapter device to be updated
3621 static void adapter_add_device(struct AdapterCtlBlk *acb,
3625 dcb->acb = acb;
3628 if (list_empty(&acb->dcb_list))
3629 acb->dcb_run_robin = dcb;
3632 list_add_tail(&dcb->list, &acb->dcb_list);
3635 acb->dcb_map[dcb->target_id] |= (1 << dcb->target_lun);
3636 acb->children[dcb->target_id][dcb->target_lun] = dcb;
3646 * @acb: The adapter device to be updated
3649 static void adapter_remove_device(struct AdapterCtlBlk *acb,
3658 if (acb->active_dcb == dcb)
3659 acb->active_dcb = NULL;
3660 if (acb->dcb_run_robin == dcb)
3661 acb->dcb_run_robin = dcb_get_next(&acb->dcb_list, dcb);
3664 list_for_each_entry_safe(i, tmp, &acb->dcb_list, list)
3671 acb->dcb_map[dcb->target_id] &= ~(1 << dcb->target_lun);
3672 acb->children[dcb->target_id][dcb->target_lun] = NULL;
3673 dcb->acb = NULL;
3681 * @acb: The adapter device to be updated
3684 static void adapter_remove_and_free_device(struct AdapterCtlBlk *acb,
3694 adapter_remove_device(acb, dcb);
3703 * @acb: The adapter from which all devices should be removed.
3705 static void adapter_remove_and_free_all_devices(struct AdapterCtlBlk* acb)
3710 list_size(&acb->dcb_list));
3712 list_for_each_entry_safe(dcb, tmp, &acb->dcb_list, list)
3713 adapter_remove_and_free_device(acb, dcb);
3726 struct AdapterCtlBlk *acb = (struct AdapterCtlBlk *)scsi_device->host->hostdata;
3729 dcb = device_alloc(acb, scsi_device->id, scsi_device->lun);
3732 adapter_add_device(acb, dcb);
3746 struct AdapterCtlBlk *acb = (struct AdapterCtlBlk *)scsi_device->host->hostdata;
3747 struct DeviceCtlBlk *dcb = find_dcb(acb, scsi_device->id, scsi_device->lun);
3749 adapter_remove_and_free_device(acb, dcb);
4071 static void adapter_sg_tables_free(struct AdapterCtlBlk *acb)
4077 kfree(acb->srb_array[i].segment_x);
4084 static int adapter_sg_tables_alloc(struct AdapterCtlBlk *acb)
4095 acb->srb_array[i].segment_x = NULL;
4101 adapter_sg_tables_free(acb);
4108 acb->srb_array[srb_idx++].segment_x =
4112 acb->srb.segment_x =
4128 * @acb: The adapter to print the information for.
4130 static void adapter_print_config(struct AdapterCtlBlk *acb)
4134 bval = DC395x_read8(acb, TRM_S1040_GEN_STATUS);
4146 bval = DC395x_read8(acb, TRM_S1040_GEN_CONTROL);
4172 * @acb: The adapter to initialize.
4174 static void adapter_init_params(struct AdapterCtlBlk *acb)
4176 struct NvRamType *eeprom = &acb->eeprom;
4179 /* NOTE: acb->scsi_host is set at scsi_host/acb creation time */
4180 /* NOTE: acb->io_port_base is set at port registration time */
4181 /* NOTE: acb->io_port_len is set at port registration time */
4183 INIT_LIST_HEAD(&acb->dcb_list);
4184 acb->dcb_run_robin = NULL;
4185 acb->active_dcb = NULL;
4187 INIT_LIST_HEAD(&acb->srb_free_list);
4189 acb->tmp_srb = &acb->srb;
4190 timer_setup(&acb->waiting_timer, waiting_timeout, 0);
4191 timer_setup(&acb->selto_timer, NULL, 0);
4193 acb->srb_count = DC395x_MAX_SRB_CNT;
4195 acb->sel_timeout = DC395x_SEL_TIMEOUT; /* timeout=250ms */
4196 /* NOTE: acb->irq_level is set at IRQ registration time */
4198 acb->tag_max_num = 1 << eeprom->max_tag;
4199 if (acb->tag_max_num > 30)
4200 acb->tag_max_num = 30;
4202 acb->acb_flag = 0; /* RESET_DETECT, RESET_DONE, RESET_DEV */
4203 acb->gmode2 = eeprom->channel_cfg;
4204 acb->config = 0; /* NOTE: actually set in adapter_init_chip */
4207 acb->lun_chk = 1;
4208 acb->scan_devices = 1;
4210 acb->scsi_host->this_id = eeprom->scsi_id;
4211 acb->hostid_bit = (1 << acb->scsi_host->this_id);
4214 acb->dcb_map[i] = 0;
4216 acb->msg_len = 0;
4219 for (i = 0; i < acb->srb_count - 1; i++)
4220 list_add_tail(&acb->srb_array[i].list, &acb->srb_free_list);
4238 struct AdapterCtlBlk *acb = (struct AdapterCtlBlk *)host->hostdata;
4239 struct NvRamType *eeprom = &acb->eeprom;
4245 host->io_port = acb->io_port_base;
4246 host->n_io_port = acb->io_port_len;
4248 host->unique_id = acb->io_port_base;
4249 host->irq = acb->irq_level;
4250 acb->last_reset = jiffies;
4270 * @acb: The adapter which we are to init.
4272 static void adapter_init_chip(struct AdapterCtlBlk *acb)
4274 struct NvRamType *eeprom = &acb->eeprom;
4277 DC395x_write8(acb, TRM_S1040_DMA_INTEN, 0x00);
4278 DC395x_write8(acb, TRM_S1040_SCSI_INTEN, 0x00);
4281 DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, DO_RSTMODULE);
4284 DC395x_write8(acb, TRM_S1040_DMA_CONTROL, DMARESETMODULE);
4288 acb->config = HCC_AUTOTERM | HCC_PARITY;
4289 if (DC395x_read8(acb, TRM_S1040_GEN_STATUS) & WIDESCSI)
4290 acb->config |= HCC_WIDE_CARD;
4293 acb->config |= HCC_SCSI_RESET;
4295 if (acb->config & HCC_SCSI_RESET) {
4297 DC395x_write8(acb, TRM_S1040_SCSI_CONTROL, DO_RSTSCSI);
4299 /*while (!( DC395x_read8(acb, TRM_S1040_SCSI_INTSTATUS) & INT_SCSIRESET )); */
4303 acb->last_reset =
4305 HZ * acb->eeprom.delay_time;
4318 * @acb: The adapter which we are to init.
4326 static int adapter_init(struct AdapterCtlBlk *acb, unsigned long io_port,
4334 acb->io_port_base = io_port;
4335 acb->io_port_len = io_port_len;
4337 if (request_irq(irq, dc395x_interrupt, IRQF_SHARED, DC395X_NAME, acb)) {
4343 acb->irq_level = irq;
4346 check_eeprom(&acb->eeprom, io_port);
4347 print_eeprom_settings(&acb->eeprom);
4350 adapter_init_params(acb);
4353 adapter_print_config(acb);
4355 if (adapter_sg_tables_alloc(acb)) {
4359 adapter_init_scsi_host(acb->scsi_host);
4360 adapter_init_chip(acb);
4361 set_basic_config(acb);
4364 "adapter_init: acb=%p, pdcb_map=%p psrb_array=%p "
4365 "size{acb=0x%04x dcb=0x%04x srb=0x%04x}\n",
4366 acb, acb->dcb_map, acb->srb_array, sizeof(struct AdapterCtlBlk),
4371 if (acb->irq_level)
4372 free_irq(acb->irq_level, acb);
4373 if (acb->io_port_base)
4374 release_region(acb->io_port_base, acb->io_port_len);
4375 adapter_sg_tables_free(acb);
4386 * @acb: The adapter which we are to shutdown.
4388 static void adapter_uninit_chip(struct AdapterCtlBlk *acb)
4391 DC395x_write8(acb, TRM_S1040_DMA_INTEN, 0);
4392 DC395x_write8(acb, TRM_S1040_SCSI_INTEN, 0);
4395 if (acb->config & HCC_SCSI_RESET)
4396 reset_scsi_bus(acb);
4399 DC395x_read8(acb, TRM_S1040_SCSI_INTSTATUS);
4409 * @acb: The adapter which we are to un-initialize.
4411 static void adapter_uninit(struct AdapterCtlBlk *acb)
4414 DC395x_LOCK_IO(acb->scsi_host, flags);
4417 if (timer_pending(&acb->waiting_timer))
4418 del_timer(&acb->waiting_timer);
4419 if (timer_pending(&acb->selto_timer))
4420 del_timer(&acb->selto_timer);
4422 adapter_uninit_chip(acb);
4423 adapter_remove_and_free_all_devices(acb);
4424 DC395x_UNLOCK_IO(acb->scsi_host, flags);
4426 if (acb->irq_level)
4427 free_irq(acb->irq_level, acb);
4428 if (acb->io_port_base)
4429 release_region(acb->io_port_base, acb->io_port_len);
4431 adapter_sg_tables_free(acb);
4442 struct AdapterCtlBlk *acb = (struct AdapterCtlBlk *)host->hostdata;
4451 DC395x_LOCK_IO(acb->scsi_host, flags);
4455 (acb->config & HCC_WIDE_CARD) ? "Wide" : "");
4456 seq_printf(m, "io_port_base 0x%04lx, ", acb->io_port_base);
4457 seq_printf(m, "irq_level 0x%04x, ", acb->irq_level);
4458 seq_printf(m, " SelTimeout %ims\n", (1638 * acb->sel_timeout) / 1000);
4463 seq_printf(m, "tag_max_num %i", acb->tag_max_num);
4464 /*seq_printf(m, ", DMA_Status %i\n", DC395x_read8(acb, TRM_S1040_DMA_STATUS)); */
4466 DC395x_read8(acb, TRM_S1040_SCSI_CONFIG1));
4467 seq_printf(m, ", DelayReset %is\n", acb->eeprom.delay_time);
4470 seq_printf(m, "Nr of DCBs: %i\n", list_size(&acb->dcb_list));
4471 seq_printf(m, "Map of attached LUNs: %8ph\n", &acb->dcb_map[0]);
4472 seq_printf(m, " %8ph\n", &acb->dcb_map[8]);
4478 list_for_each_entry(dcb, &acb->dcb_list, list) {
4508 if (timer_pending(&acb->waiting_timer))
4513 list_for_each_entry(dcb, &acb->dcb_list, list) {
4532 seq_printf(m, "DCB list for ACB %p:\n", acb);
4533 list_for_each_entry(dcb, &acb->dcb_list, list) {
4539 DC395x_UNLOCK_IO(acb->scsi_host, flags);
4593 struct AdapterCtlBlk *acb = NULL;
4618 acb = (struct AdapterCtlBlk*)scsi_host->hostdata;
4619 acb->scsi_host = scsi_host;
4620 acb->dev = dev;
4623 if (adapter_init(acb, io_port_base, io_port_len, irq)) {
4625 acb = NULL;
4642 if (acb != NULL)
4643 adapter_uninit(acb);
4660 struct AdapterCtlBlk *acb = (struct AdapterCtlBlk *)(scsi_host->hostdata);
4662 dprintkdbg(DBG_0, "dc395x_remove_one: acb=%p\n", acb);
4665 adapter_uninit(acb);