Lines Matching refs:hostdata
190 static inline uchar read_3393(struct IN2000_hostdata *hostdata, uchar reg_num) in read_3393() argument
200 static inline void write_3393(struct IN2000_hostdata *hostdata, uchar reg_num, uchar value) in write_3393() argument
207 static inline void write_3393_cmd(struct IN2000_hostdata *hostdata, uchar cmd) in write_3393_cmd() argument
216 static uchar read_1_byte(struct IN2000_hostdata *hostdata) in read_1_byte() argument
220 write_3393(hostdata, WD_CONTROL, CTRL_IDI | CTRL_EDI | CTRL_POLLED); in read_1_byte()
221 write_3393_cmd(hostdata, WD_CMD_TRANS_INFO | 0x80); in read_1_byte()
225 x = read_3393(hostdata, WD_DATA); in read_1_byte()
231 static void write_3393_count(struct IN2000_hostdata *hostdata, unsigned long value) in write_3393_count() argument
240 static unsigned long read_3393_count(struct IN2000_hostdata *hostdata) in read_3393_count() argument
339 struct IN2000_hostdata *hostdata; in in2000_queuecommand_lck() local
343 hostdata = (struct IN2000_hostdata *) instance->hostdata; in in2000_queuecommand_lck()
415 if (!(hostdata->input_Q) || (cmd->cmnd[0] == REQUEST_SENSE)) { in in2000_queuecommand_lck()
416 cmd->host_scribble = (uchar *) hostdata->input_Q; in in2000_queuecommand_lck()
417 hostdata->input_Q = cmd; in in2000_queuecommand_lck()
419 …for (tmp = (Scsi_Cmnd *) hostdata->input_Q; tmp->host_scribble; tmp = (Scsi_Cmnd *) tmp->host_scri… in in2000_queuecommand_lck()
447 struct IN2000_hostdata *hostdata; in DEF_SCSI_QCMD() local
455 hostdata = (struct IN2000_hostdata *) instance->hostdata; in DEF_SCSI_QCMD()
459 if (hostdata->selecting || hostdata->connected) { in DEF_SCSI_QCMD()
471 cmd = (Scsi_Cmnd *) hostdata->input_Q; in DEF_SCSI_QCMD()
474 if (!(hostdata->busy[cmd->device->id] & (1 << cmd->device->lun))) in DEF_SCSI_QCMD()
494 hostdata->input_Q = (Scsi_Cmnd *) cmd->host_scribble; in DEF_SCSI_QCMD()
497 hostdata->cmd_cnt[cmd->device->id]++; in DEF_SCSI_QCMD()
505 write_3393(hostdata, WD_DESTINATION_ID, cmd->device->id); in DEF_SCSI_QCMD()
507 write_3393(hostdata, WD_DESTINATION_ID, cmd->device->id | DSTID_DPD); in DEF_SCSI_QCMD()
533 if (hostdata->disconnect == DIS_NEVER) in DEF_SCSI_QCMD()
535 if (hostdata->disconnect == DIS_ALWAYS) in DEF_SCSI_QCMD()
539 if (hostdata->disconnected_Q) /* other commands disconnected? */ in DEF_SCSI_QCMD()
541 if (!(hostdata->input_Q)) /* input_Q empty? */ in DEF_SCSI_QCMD()
543 for (prev = (Scsi_Cmnd *) hostdata->input_Q; prev; prev = (Scsi_Cmnd *) prev->host_scribble) { in DEF_SCSI_QCMD()
545 for (prev = (Scsi_Cmnd *) hostdata->input_Q; prev; prev = (Scsi_Cmnd *) prev->host_scribble) in DEF_SCSI_QCMD()
556 hostdata->disc_allowed_cnt[cmd->device->id]++; in DEF_SCSI_QCMD()
560 write_3393(hostdata, WD_SOURCE_ID, ((cmd->SCp.phase) ? SRCID_ER : 0)); in DEF_SCSI_QCMD()
562 write_3393(hostdata, WD_TARGET_LUN, cmd->device->lun); in DEF_SCSI_QCMD()
563 write_3393(hostdata, WD_SYNCHRONOUS_TRANSFER, hostdata->sync_xfer[cmd->device->id]); in DEF_SCSI_QCMD()
564 hostdata->busy[cmd->device->id] |= (1 << cmd->device->lun); in DEF_SCSI_QCMD()
566 if ((hostdata->level2 <= L2_NONE) || (hostdata->sync_stat[cmd->device->id] == SS_UNSET)) { in DEF_SCSI_QCMD()
576 hostdata->selecting = cmd; in DEF_SCSI_QCMD()
588 if (hostdata->sync_stat[cmd->device->id] == SS_UNSET) { in DEF_SCSI_QCMD()
589 if (hostdata->sync_off & (1 << cmd->device->id)) in DEF_SCSI_QCMD()
590 hostdata->sync_stat[cmd->device->id] = SS_SET; in DEF_SCSI_QCMD()
592 hostdata->sync_stat[cmd->device->id] = SS_FIRST; in DEF_SCSI_QCMD()
594 hostdata->state = S_SELECTING; in DEF_SCSI_QCMD()
595 write_3393_count(hostdata, 0); /* this guarantees a DATA_PHASE interrupt */ in DEF_SCSI_QCMD()
596 write_3393_cmd(hostdata, WD_CMD_SEL_ATN); in DEF_SCSI_QCMD()
609 hostdata->connected = cmd; in DEF_SCSI_QCMD()
610 write_3393(hostdata, WD_COMMAND_PHASE, 0); in DEF_SCSI_QCMD()
626 write_3393(hostdata, WD_OWN_ID, cmd->cmd_len); in DEF_SCSI_QCMD()
647 write_3393_count(hostdata, cmd->SCp.this_residual); in DEF_SCSI_QCMD()
648 write_3393(hostdata, WD_CONTROL, CTRL_IDI | CTRL_EDI | CTRL_BUS); in DEF_SCSI_QCMD()
652 hostdata->fifo = FI_FIFO_WRITING; in DEF_SCSI_QCMD()
658 f = hostdata->io_base + IO_FIFO; in DEF_SCSI_QCMD()
689 hostdata->fifo = FI_FIFO_READING; in DEF_SCSI_QCMD()
694 write_3393_count(hostdata, 0); /* this guarantees a DATA_PHASE interrupt */ in DEF_SCSI_QCMD()
696 hostdata->state = S_RUNNING_LEVEL2; in DEF_SCSI_QCMD()
697 write_3393_cmd(hostdata, WD_CMD_SEL_ATN_XFER); in DEF_SCSI_QCMD()
713 static void transfer_pio(uchar * buf, int cnt, int data_in_dir, struct IN2000_hostdata *hostdata) in transfer_pio() argument
719 write_3393(hostdata, WD_CONTROL, CTRL_IDI | CTRL_EDI | CTRL_POLLED); in transfer_pio()
720 write_3393_count(hostdata, cnt); in transfer_pio()
721 write_3393_cmd(hostdata, WD_CMD_TRANS_INFO); in transfer_pio()
726 *buf++ = read_3393(hostdata, WD_DATA); in transfer_pio()
732 write_3393(hostdata, WD_DATA, *buf++); in transfer_pio()
749 struct IN2000_hostdata *hostdata; in transfer_bytes() local
754 hostdata = (struct IN2000_hostdata *) cmd->device->host->hostdata; in transfer_bytes()
773 write_3393(hostdata, WD_SYNCHRONOUS_TRANSFER, hostdata->sync_xfer[cmd->device->id]); in transfer_bytes()
774 write_3393_count(hostdata, cmd->SCp.this_residual); in transfer_bytes()
775 write_3393(hostdata, WD_CONTROL, CTRL_IDI | CTRL_EDI | CTRL_BUS); in transfer_bytes()
784 if ((hostdata->level2 >= L2_DATA) || (hostdata->level2 == L2_BASIC && cmd->SCp.phase == 0)) { in transfer_bytes()
785 write_3393(hostdata, WD_COMMAND_PHASE, 0x45); in transfer_bytes()
786 write_3393_cmd(hostdata, WD_CMD_SEL_ATN_XFER); in transfer_bytes()
787 hostdata->state = S_RUNNING_LEVEL2; in transfer_bytes()
789 write_3393_cmd(hostdata, WD_CMD_TRANS_INFO); in transfer_bytes()
790 hostdata->fifo = FI_FIFO_READING; in transfer_bytes()
800 if ((hostdata->level2 >= L2_DATA) || (hostdata->level2 == L2_BASIC && cmd->SCp.phase == 0)) { in transfer_bytes()
801 write_3393(hostdata, WD_COMMAND_PHASE, 0x45); in transfer_bytes()
802 write_3393_cmd(hostdata, WD_CMD_SEL_ATN_XFER); in transfer_bytes()
803 hostdata->state = S_RUNNING_LEVEL2; in transfer_bytes()
805 write_3393_cmd(hostdata, WD_CMD_TRANS_INFO); in transfer_bytes()
806 hostdata->fifo = FI_FIFO_WRITING; in transfer_bytes()
813 f = hostdata->io_base + IO_FIFO; in transfer_bytes()
836 struct IN2000_hostdata *hostdata; in in2000_intr() local
845 hostdata = (struct IN2000_hostdata *) instance->hostdata; in in2000_intr()
852 hostdata->int_cnt++; in in2000_intr()
913 cmd = (Scsi_Cmnd *) hostdata->connected; /* assume we're connected */ in in2000_intr()
916 if (hostdata->fifo == FI_FIFO_READING) { in in2000_intr()
923 f = hostdata->io_base + IO_FIFO; in in2000_intr()
939 else if (hostdata->fifo == FI_FIFO_WRITING) { in in2000_intr()
995 cmd = (Scsi_Cmnd *) hostdata->connected; /* assume we're connected */ in in2000_intr()
996 sr = read_3393(hostdata, WD_SCSI_STATUS); /* clear the interrupt */ in in2000_intr()
997 phs = read_3393(hostdata, WD_COMMAND_PHASE); in in2000_intr()
1022 if (hostdata->fifo == FI_FIFO_READING) { in in2000_intr()
1030 i = (cmd->SCp.this_residual - read_3393_count(hostdata)) - cmd->SCp.have_data_in; in in2000_intr()
1032 f = hostdata->io_base + IO_FIFO; in in2000_intr()
1043 hostdata->fifo = FI_FIFO_UNUSED; in in2000_intr()
1045 cmd->SCp.this_residual = read_3393_count(hostdata); in in2000_intr()
1052 else if (hostdata->fifo == FI_FIFO_WRITING) { in in2000_intr()
1053 hostdata->fifo = FI_FIFO_UNUSED; in in2000_intr()
1055 cmd->SCp.this_residual = read_3393_count(hostdata); in in2000_intr()
1069 if (hostdata->state == S_RUNNING_LEVEL2) in in2000_intr()
1070 hostdata->connected = NULL; in in2000_intr()
1072 cmd = (Scsi_Cmnd *) hostdata->selecting; /* get a valid cmd */ in in2000_intr()
1074 hostdata->selecting = NULL; in in2000_intr()
1078 hostdata->busy[cmd->device->id] &= ~(1 << cmd->device->lun); in in2000_intr()
1079 hostdata->state = S_UNCONNECTED; in in2000_intr()
1094 hostdata->connected = cmd = (Scsi_Cmnd *) hostdata->selecting; in in2000_intr()
1096 hostdata->selecting = NULL; in in2000_intr()
1100 hostdata->outgoing_msg[0] = (0x80 | 0x00 | cmd->device->lun); in in2000_intr()
1102 hostdata->outgoing_msg[0] |= 0x40; in in2000_intr()
1104 if (hostdata->sync_stat[cmd->device->id] == SS_FIRST) { in in2000_intr()
1109 hostdata->sync_stat[cmd->device->id] = SS_WAITING; in in2000_intr()
1113 hostdata->outgoing_msg[1] = EXTENDED_MESSAGE; in in2000_intr()
1114 hostdata->outgoing_msg[2] = 3; in in2000_intr()
1115 hostdata->outgoing_msg[3] = EXTENDED_SDTR; in in2000_intr()
1116 hostdata->outgoing_msg[4] = OPTIMUM_SX_PER / 4; in in2000_intr()
1117 hostdata->outgoing_msg[5] = OPTIMUM_SX_OFF; in in2000_intr()
1118 hostdata->outgoing_len = 6; in in2000_intr()
1120 hostdata->outgoing_len = 1; in in2000_intr()
1122 hostdata->state = S_CONNECTED; in in2000_intr()
1131 if (hostdata->state != S_RUNNING_LEVEL2) in in2000_intr()
1132 hostdata->state = S_CONNECTED; in in2000_intr()
1141 if (hostdata->state != S_RUNNING_LEVEL2) in in2000_intr()
1142 hostdata->state = S_CONNECTED; in in2000_intr()
1152 transfer_pio(cmd->cmnd, cmd->cmd_len, DATA_OUT_DIR, hostdata); in in2000_intr()
1153 hostdata->state = S_CONNECTED; in in2000_intr()
1162 cmd->SCp.Status = read_1_byte(hostdata); in in2000_intr()
1164 if (hostdata->level2 >= L2_BASIC) { in in2000_intr()
1165 sr = read_3393(hostdata, WD_SCSI_STATUS); /* clear interrupt */ in in2000_intr()
1166 hostdata->state = S_RUNNING_LEVEL2; in in2000_intr()
1167 write_3393(hostdata, WD_COMMAND_PHASE, 0x50); in in2000_intr()
1168 write_3393_cmd(hostdata, WD_CMD_SEL_ATN_XFER); in in2000_intr()
1170 hostdata->state = S_CONNECTED; in in2000_intr()
1180 msg = read_1_byte(hostdata); in in2000_intr()
1181 sr = read_3393(hostdata, WD_SCSI_STATUS); /* clear interrupt */ in in2000_intr()
1183 hostdata->incoming_msg[hostdata->incoming_ptr] = msg; in in2000_intr()
1184 if (hostdata->incoming_msg[0] == EXTENDED_MESSAGE) in in2000_intr()
1187 hostdata->incoming_ptr = 0; in in2000_intr()
1194 write_3393_cmd(hostdata, WD_CMD_NEGATE_ACK); in in2000_intr()
1195 hostdata->state = S_PRE_CMP_DISC; in in2000_intr()
1200 write_3393_cmd(hostdata, WD_CMD_NEGATE_ACK); in in2000_intr()
1201 hostdata->state = S_CONNECTED; in in2000_intr()
1206 if (hostdata->level2 >= L2_BASIC) { in in2000_intr()
1207 write_3393(hostdata, WD_COMMAND_PHASE, 0x45); in in2000_intr()
1208 write_3393_cmd(hostdata, WD_CMD_SEL_ATN_XFER); in in2000_intr()
1209 hostdata->state = S_RUNNING_LEVEL2; in in2000_intr()
1211 write_3393_cmd(hostdata, WD_CMD_NEGATE_ACK); in in2000_intr()
1212 hostdata->state = S_CONNECTED; in in2000_intr()
1219 write_3393_cmd(hostdata, WD_CMD_NEGATE_ACK); in in2000_intr()
1220 hostdata->state = S_PRE_TMP_DISC; in in2000_intr()
1228 if (hostdata->sync_stat[cmd->device->id] == SS_WAITING) in in2000_intr()
1229 hostdata->sync_stat[cmd->device->id] = SS_SET; in in2000_intr()
1230 write_3393_cmd(hostdata, WD_CMD_NEGATE_ACK); in in2000_intr()
1231 hostdata->state = S_CONNECTED; in in2000_intr()
1237 ucp = hostdata->incoming_msg; in in2000_intr()
1240 printk("%02x", ucp[hostdata->incoming_ptr]); in in2000_intr()
1244 if ((hostdata->incoming_ptr >= 2) && (hostdata->incoming_ptr == (ucp[1] + 1))) { in in2000_intr()
1249 if (hostdata->sync_stat[cmd->device->id] != SS_WAITING) { in in2000_intr()
1260 write_3393_cmd(hostdata, WD_CMD_ASSERT_ATN); /* want MESS_OUT */ in in2000_intr()
1261 hostdata->outgoing_msg[0] = EXTENDED_MESSAGE; in in2000_intr()
1262 hostdata->outgoing_msg[1] = 3; in in2000_intr()
1263 hostdata->outgoing_msg[2] = EXTENDED_SDTR; in in2000_intr()
1264 hostdata->outgoing_msg[3] = hostdata->default_sx_per / 4; in in2000_intr()
1265 hostdata->outgoing_msg[4] = 0; in in2000_intr()
1266 hostdata->outgoing_len = 5; in in2000_intr()
1267 hostdata->sync_xfer[cmd->device->id] = calc_sync_xfer(hostdata->default_sx_per / 4, 0); in in2000_intr()
1269 hostdata->sync_xfer[cmd->device->id] = id; in in2000_intr()
1272 printk("sync_xfer=%02x", hostdata->sync_xfer[cmd->device->id]); in in2000_intr()
1274 hostdata->sync_stat[cmd->device->id] = SS_SET; in in2000_intr()
1275 write_3393_cmd(hostdata, WD_CMD_NEGATE_ACK); in in2000_intr()
1276 hostdata->state = S_CONNECTED; in in2000_intr()
1279 write_3393_cmd(hostdata, WD_CMD_ASSERT_ATN); /* want MESS_OUT */ in in2000_intr()
1281 hostdata->outgoing_msg[0] = EXTENDED_MESSAGE; in in2000_intr()
1282 hostdata->outgoing_msg[1] = 2; in in2000_intr()
1283 hostdata->outgoing_msg[2] = EXTENDED_WDTR; in in2000_intr()
1284 hostdata->outgoing_msg[3] = 0; /* 8 bit transfer width */ in in2000_intr()
1285 hostdata->outgoing_len = 4; in in2000_intr()
1286 write_3393_cmd(hostdata, WD_CMD_NEGATE_ACK); in in2000_intr()
1287 hostdata->state = S_CONNECTED; in in2000_intr()
1290 write_3393_cmd(hostdata, WD_CMD_ASSERT_ATN); /* want MESS_OUT */ in in2000_intr()
1292 hostdata->outgoing_msg[0] = MESSAGE_REJECT; in in2000_intr()
1293 hostdata->outgoing_len = 1; in in2000_intr()
1294 write_3393_cmd(hostdata, WD_CMD_NEGATE_ACK); in in2000_intr()
1295 hostdata->state = S_CONNECTED; in in2000_intr()
1298 hostdata->incoming_ptr = 0; in in2000_intr()
1304 hostdata->incoming_ptr++; in in2000_intr()
1305 write_3393_cmd(hostdata, WD_CMD_NEGATE_ACK); in in2000_intr()
1306 hostdata->state = S_CONNECTED; in in2000_intr()
1312 write_3393_cmd(hostdata, WD_CMD_ASSERT_ATN); /* want MESS_OUT */ in in2000_intr()
1313 hostdata->outgoing_msg[0] = MESSAGE_REJECT; in in2000_intr()
1314 hostdata->outgoing_len = 1; in in2000_intr()
1315 write_3393_cmd(hostdata, WD_CMD_NEGATE_ACK); in in2000_intr()
1316 hostdata->state = S_CONNECTED; in in2000_intr()
1329 write_3393(hostdata, WD_SOURCE_ID, SRCID_ER); in in2000_intr()
1333 lun = read_3393(hostdata, WD_TARGET_LUN); in in2000_intr()
1335 hostdata->connected = NULL; in in2000_intr()
1336 hostdata->busy[cmd->device->id] &= ~(1 << cmd->device->lun); in in2000_intr()
1337 hostdata->state = S_UNCONNECTED; in in2000_intr()
1361 hostdata->state = S_RUNNING_LEVEL2; in in2000_intr()
1362 write_3393(hostdata, WD_COMMAND_PHASE, 0x41); in in2000_intr()
1363 write_3393_cmd(hostdata, WD_CMD_SEL_ATN_XFER); in in2000_intr()
1384 if (hostdata->outgoing_len == 0) { in in2000_intr()
1385 hostdata->outgoing_len = 1; in in2000_intr()
1386 hostdata->outgoing_msg[0] = NOP; in in2000_intr()
1388 transfer_pio(hostdata->outgoing_msg, hostdata->outgoing_len, DATA_OUT_DIR, hostdata); in in2000_intr()
1389 DB(DB_INTR, printk("%02x", hostdata->outgoing_msg[0])) in in2000_intr()
1390 hostdata->outgoing_len = 0; in in2000_intr()
1391 hostdata->state = S_CONNECTED; in in2000_intr()
1410 write_3393(hostdata, WD_SOURCE_ID, SRCID_ER); in in2000_intr()
1413 hostdata->state = S_UNCONNECTED; in in2000_intr()
1420 hostdata->connected = NULL; in in2000_intr()
1421 hostdata->busy[cmd->device->id] &= ~(1 << cmd->device->lun); in in2000_intr()
1422 hostdata->state = S_UNCONNECTED; in in2000_intr()
1443 write_3393(hostdata, WD_SOURCE_ID, SRCID_ER); in in2000_intr()
1447 hostdata->state = S_UNCONNECTED; in in2000_intr()
1449 switch (hostdata->state) { in in2000_intr()
1451 hostdata->connected = NULL; in in2000_intr()
1452 hostdata->busy[cmd->device->id] &= ~(1 << cmd->device->lun); in in2000_intr()
1453 hostdata->state = S_UNCONNECTED; in in2000_intr()
1463 cmd->host_scribble = (uchar *) hostdata->disconnected_Q; in in2000_intr()
1464 hostdata->disconnected_Q = cmd; in in2000_intr()
1465 hostdata->connected = NULL; in in2000_intr()
1466 hostdata->state = S_UNCONNECTED; in in2000_intr()
1469 hostdata->disc_done_cnt[cmd->device->id]++; in in2000_intr()
1475 hostdata->state = S_UNCONNECTED; in in2000_intr()
1492 if (hostdata->level2 <= L2_NONE) { in in2000_intr()
1494 if (hostdata->selecting) { in in2000_intr()
1495 cmd = (Scsi_Cmnd *) hostdata->selecting; in in2000_intr()
1496 hostdata->selecting = NULL; in in2000_intr()
1497 hostdata->busy[cmd->device->id] &= ~(1 << cmd->device->lun); in in2000_intr()
1498 cmd->host_scribble = (uchar *) hostdata->input_Q; in in2000_intr()
1499 hostdata->input_Q = cmd; in in2000_intr()
1507 hostdata->busy[cmd->device->id] &= ~(1 << cmd->device->lun); in in2000_intr()
1508 cmd->host_scribble = (uchar *) hostdata->input_Q; in in2000_intr()
1509 hostdata->input_Q = cmd; in in2000_intr()
1521 id = read_3393(hostdata, WD_SOURCE_ID); in in2000_intr()
1529 lun = read_3393(hostdata, WD_DATA); in in2000_intr()
1530 if (hostdata->level2 < L2_RESELECT) in in2000_intr()
1531 write_3393_cmd(hostdata, WD_CMD_NEGATE_ACK); in in2000_intr()
1536 cmd = (Scsi_Cmnd *) hostdata->disconnected_Q; in in2000_intr()
1557 hostdata->disconnected_Q = (Scsi_Cmnd *) cmd->host_scribble; in in2000_intr()
1558 hostdata->connected = cmd; in in2000_intr()
1566 write_3393(hostdata, WD_DESTINATION_ID, cmd->device->id); in in2000_intr()
1568 write_3393(hostdata, WD_DESTINATION_ID, cmd->device->id | DSTID_DPD); in in2000_intr()
1569 if (hostdata->level2 >= L2_RESELECT) { in in2000_intr()
1570 write_3393_count(hostdata, 0); /* we want a DATA_PHASE interrupt */ in in2000_intr()
1571 write_3393(hostdata, WD_COMMAND_PHASE, 0x45); in in2000_intr()
1572 write_3393_cmd(hostdata, WD_CMD_SEL_ATN_XFER); in in2000_intr()
1573 hostdata->state = S_RUNNING_LEVEL2; in in2000_intr()
1575 hostdata->state = S_CONNECTED; in in2000_intr()
1604 struct IN2000_hostdata *hostdata; in reset_hardware() local
1607 hostdata = (struct IN2000_hostdata *) instance->hostdata; in reset_hardware()
1614 x = read_3393(hostdata, WD_SCSI_STATUS); /* clear any WD intrpt */ in reset_hardware()
1615 write_3393(hostdata, WD_OWN_ID, instance->this_id | OWNID_EAF | OWNID_RAF | OWNID_FS_8); in reset_hardware()
1616 write_3393(hostdata, WD_CONTROL, CTRL_IDI | CTRL_EDI | CTRL_POLLED); in reset_hardware()
1617 …write_3393(hostdata, WD_SYNCHRONOUS_TRANSFER, calc_sync_xfer(hostdata->default_sx_per / 4, DEFAULT… in reset_hardware()
1621 write_3393(hostdata, WD_COMMAND, WD_CMD_RESET); in reset_hardware()
1626 x = read_3393(hostdata, WD_SCSI_STATUS); /* clear interrupt */ in reset_hardware()
1628 write_3393(hostdata, WD_QUEUE_TAG, 0xa5); /* any random number */ in reset_hardware()
1629 qt = read_3393(hostdata, WD_QUEUE_TAG); in reset_hardware()
1632 write_3393(hostdata, WD_QUEUE_TAG, 0); in reset_hardware()
1634 write_3393(hostdata, WD_TIMEOUT_PERIOD, TIMEOUT_PERIOD_VALUE); in reset_hardware()
1635 write_3393(hostdata, WD_CONTROL, CTRL_IDI | CTRL_EDI | CTRL_POLLED); in reset_hardware()
1645 struct IN2000_hostdata *hostdata; in in2000_bus_reset() local
1650 hostdata = (struct IN2000_hostdata *) instance->hostdata; in in2000_bus_reset()
1659 hostdata->busy[x] = 0; in in2000_bus_reset()
1660 hostdata->sync_xfer[x] = calc_sync_xfer(DEFAULT_SX_PER / 4, DEFAULT_SX_OFF); in in2000_bus_reset()
1661 hostdata->sync_stat[x] = SS_UNSET; /* using default sync values */ in in2000_bus_reset()
1663 hostdata->input_Q = NULL; in in2000_bus_reset()
1664 hostdata->selecting = NULL; in in2000_bus_reset()
1665 hostdata->connected = NULL; in in2000_bus_reset()
1666 hostdata->disconnected_Q = NULL; in in2000_bus_reset()
1667 hostdata->state = S_UNCONNECTED; in in2000_bus_reset()
1668 hostdata->fifo = FI_FIFO_UNUSED; in in2000_bus_reset()
1669 hostdata->incoming_ptr = 0; in in2000_bus_reset()
1670 hostdata->outgoing_len = 0; in in2000_bus_reset()
1681 struct IN2000_hostdata *hostdata; in __in2000_abort() local
1687 hostdata = (struct IN2000_hostdata *) instance->hostdata; in __in2000_abort()
1690 …buf_resid=%d,have_data=%d,FC=%02x)- ", READ_AUX_STAT(), read_3393_count(hostdata), cmd->SCp.this_r… in __in2000_abort()
1697 tmp = (Scsi_Cmnd *) hostdata->input_Q; in __in2000_abort()
1724 if (hostdata->connected == cmd) { in __in2000_abort()
1729 write_3393(hostdata, WD_CONTROL, CTRL_IDI | CTRL_EDI | CTRL_POLLED); in __in2000_abort()
1730 write_3393_cmd(hostdata, WD_CMD_ABORT); in __in2000_abort()
1739 read_3393(hostdata, WD_DATA); in __in2000_abort()
1741 sr = read_3393(hostdata, WD_SCSI_STATUS); in __in2000_abort()
1742 … sr=%02x, %ld bytes un-transferred (timeout=%ld) - ", asr, sr, read_3393_count(hostdata), timeout); in __in2000_abort()
1751 write_3393_cmd(hostdata, WD_CMD_DISCONNECT); in __in2000_abort()
1757 sr = read_3393(hostdata, WD_SCSI_STATUS); in __in2000_abort()
1760 hostdata->busy[cmd->device->id] &= ~(1 << cmd->device->lun); in __in2000_abort()
1761 hostdata->connected = NULL; in __in2000_abort()
1762 hostdata->state = S_UNCONNECTED; in __in2000_abort()
1777 for (tmp = (Scsi_Cmnd *) hostdata->disconnected_Q; tmp; tmp = (Scsi_Cmnd *) tmp->host_scribble) in __in2000_abort()
1920 struct IN2000_hostdata *hostdata; in in2000_detect() local
2009 hostdata = (struct IN2000_hostdata *) instance->hostdata; in in2000_detect()
2010 instance->io_port = hostdata->io_base = base; in in2000_detect()
2011 hostdata->dip_switch = switches; in in2000_detect()
2012 hostdata->hrev = hrev; in in2000_detect()
2028 hostdata->busy[x] = 0; in in2000_detect()
2029 hostdata->sync_xfer[x] = calc_sync_xfer(DEFAULT_SX_PER / 4, DEFAULT_SX_OFF); in in2000_detect()
2030 hostdata->sync_stat[x] = SS_UNSET; /* using default sync values */ in in2000_detect()
2032 hostdata->cmd_cnt[x] = 0; in in2000_detect()
2033 hostdata->disc_allowed_cnt[x] = 0; in in2000_detect()
2034 hostdata->disc_done_cnt[x] = 0; in in2000_detect()
2037 hostdata->input_Q = NULL; in in2000_detect()
2038 hostdata->selecting = NULL; in in2000_detect()
2039 hostdata->connected = NULL; in in2000_detect()
2040 hostdata->disconnected_Q = NULL; in in2000_detect()
2041 hostdata->state = S_UNCONNECTED; in in2000_detect()
2042 hostdata->fifo = FI_FIFO_UNUSED; in in2000_detect()
2043 hostdata->level2 = L2_BASIC; in in2000_detect()
2044 hostdata->disconnect = DIS_ADAPTIVE; in in2000_detect()
2045 hostdata->args = DEBUG_DEFAULTS; in in2000_detect()
2046 hostdata->incoming_ptr = 0; in in2000_detect()
2047 hostdata->outgoing_len = 0; in in2000_detect()
2048 hostdata->default_sx_per = DEFAULT_SX_PER; in in2000_detect()
2053 hostdata->sync_off = 0x00; /* sync defaults to on */ in in2000_detect()
2055 hostdata->sync_off = 0xff; /* sync defaults to off */ in in2000_detect()
2058 …hostdata->proc = PR_VERSION | PR_INFO | PR_STATISTICS | PR_CONNECTED | PR_INPUTQ | PR_DISCQ | PR_S… in in2000_detect()
2060 hostdata->int_cnt = 0; in in2000_detect()
2065 hostdata->sync_off = val; in in2000_detect()
2068 hostdata->default_sx_per = sx_table[round_period((unsigned int) val)].period_ns; in in2000_detect()
2072 hostdata->disconnect = val; in in2000_detect()
2074 hostdata->disconnect = DIS_ADAPTIVE; in in2000_detect()
2078 hostdata->args ^= A_NO_SCSI_RESET; in in2000_detect()
2081 hostdata->level2 = val; in in2000_detect()
2084 hostdata->args = (val & DB_MASK); in in2000_detect()
2088 hostdata->proc = val; in in2000_detect()
2095 …x = reset_hardware(instance, (hostdata->args & A_NO_SCSI_RESET) ? RESET_CARD : RESET_CARD_AND_BUS); in in2000_detect()
2098 hostdata->microcode = read_3393(hostdata, WD_CDB_1); in in2000_detect()
2101 hostdata->chip = C_WD33C93B; in in2000_detect()
2103 hostdata->chip = C_WD33C93A; in in2000_detect()
2105 hostdata->chip = C_WD33C93; in in2000_detect()
2107 …ioport=%02x floppy=%s sync/DOS5=%s ", (switches & 0x7f), instance->irq, hostdata->io_base, (switch… in in2000_detect()
2108 …hostdata->chip == C_WD33C93) ? "WD33c93" : (hostdata->chip == C_WD33C93A) ? "WD33c93A" : (hostdata… in in2000_detect()
2115 if (hostdata->sync_off == 0xff) in in2000_detect()
2178 hd = (struct IN2000_hostdata *) instance->hostdata; in in2000_write_info()
2221 hd = (struct IN2000_hostdata *) instance->hostdata; in in2000_show_info()