Lines Matching refs:current_SC
398 static struct scsi_cmnd *current_SC; variable
1116 current_SC->result = error; in my_done()
1117 if (current_SC->scsi_done) in my_done()
1118 current_SC->scsi_done( current_SC ); in my_done()
1149 if (!in_command || !current_SC) { /* Spurious interrupt */ in do_fdomain_16x0_intr()
1152 in_command, current_SC ); in do_fdomain_16x0_intr()
1158 if (current_SC->SCp.phase & aborted) { in do_fdomain_16x0_intr()
1170 if (current_SC->SCp.phase & in_arbitration) { in do_fdomain_16x0_intr()
1176 spin_lock_irqsave(current_SC->device->host->host_lock, flags); in do_fdomain_16x0_intr()
1178 spin_unlock_irqrestore(current_SC->device->host->host_lock, flags); in do_fdomain_16x0_intr()
1181 current_SC->SCp.phase = in_selection; in do_fdomain_16x0_intr()
1186 outb(adapter_mask | (1 << scmd_id(current_SC)), port_base + SCSI_Data_NoACK); in do_fdomain_16x0_intr()
1194 } else if (current_SC->SCp.phase & in_selection) { in do_fdomain_16x0_intr()
1198 if (fdomain_select( scmd_id(current_SC) )) { in do_fdomain_16x0_intr()
1202 spin_lock_irqsave(current_SC->device->host->host_lock, flags); in do_fdomain_16x0_intr()
1204 spin_unlock_irqrestore(current_SC->device->host->host_lock, flags); in do_fdomain_16x0_intr()
1214 current_SC->SCp.phase = in_other; in do_fdomain_16x0_intr()
1232 outb(current_SC->cmnd[current_SC->SCp.sent_command++], in do_fdomain_16x0_intr()
1236 current_SC->cmnd[ current_SC->SCp.sent_command - 1] ); in do_fdomain_16x0_intr()
1240 if (chip != tmc1800 && !current_SC->SCp.have_data_in) { in do_fdomain_16x0_intr()
1241 current_SC->SCp.have_data_in = -1; in do_fdomain_16x0_intr()
1246 if (chip != tmc1800 && !current_SC->SCp.have_data_in) { in do_fdomain_16x0_intr()
1247 current_SC->SCp.have_data_in = 1; in do_fdomain_16x0_intr()
1252 current_SC->SCp.Status = inb(port_base + Read_SCSI_Data); in do_fdomain_16x0_intr()
1254 printk( "Status = %x, ", current_SC->SCp.Status ); in do_fdomain_16x0_intr()
1257 if (current_SC->SCp.Status in do_fdomain_16x0_intr()
1258 && current_SC->SCp.Status != 2 in do_fdomain_16x0_intr()
1259 && current_SC->SCp.Status != 8) { in do_fdomain_16x0_intr()
1261 current_SC->device->id, in do_fdomain_16x0_intr()
1262 current_SC->cmnd[0], in do_fdomain_16x0_intr()
1263 current_SC->SCp.Status ); in do_fdomain_16x0_intr()
1271 current_SC->SCp.Message = inb(port_base + Read_SCSI_Data); in do_fdomain_16x0_intr()
1273 printk( "Message = %x, ", current_SC->SCp.Message ); in do_fdomain_16x0_intr()
1275 if (!current_SC->SCp.Message) ++done; in do_fdomain_16x0_intr()
1277 if (current_SC->SCp.Message) { in do_fdomain_16x0_intr()
1279 current_SC->SCp.Message ); in do_fdomain_16x0_intr()
1286 if (chip == tmc1800 && !current_SC->SCp.have_data_in in do_fdomain_16x0_intr()
1287 && (current_SC->SCp.sent_command >= current_SC->cmd_len)) { in do_fdomain_16x0_intr()
1289 if(current_SC->sc_data_direction == DMA_TO_DEVICE) in do_fdomain_16x0_intr()
1291 current_SC->SCp.have_data_in = -1; in do_fdomain_16x0_intr()
1296 current_SC->SCp.have_data_in = 1; in do_fdomain_16x0_intr()
1301 if (current_SC->SCp.have_data_in == -1) { /* DATA OUT */ in do_fdomain_16x0_intr()
1306 if (data_count > current_SC->SCp.this_residual) in do_fdomain_16x0_intr()
1307 data_count = current_SC->SCp.this_residual; in do_fdomain_16x0_intr()
1313 outb(*current_SC->SCp.ptr++, port_base + Write_FIFO); in do_fdomain_16x0_intr()
1314 --current_SC->SCp.this_residual; in do_fdomain_16x0_intr()
1317 outsw(port_base + Write_FIFO, current_SC->SCp.ptr, data_count); in do_fdomain_16x0_intr()
1318 current_SC->SCp.ptr += 2 * data_count; in do_fdomain_16x0_intr()
1319 current_SC->SCp.this_residual -= 2 * data_count; in do_fdomain_16x0_intr()
1322 if (!current_SC->SCp.this_residual) { in do_fdomain_16x0_intr()
1323 if (current_SC->SCp.buffers_residual) { in do_fdomain_16x0_intr()
1324 --current_SC->SCp.buffers_residual; in do_fdomain_16x0_intr()
1325 ++current_SC->SCp.buffer; in do_fdomain_16x0_intr()
1326 current_SC->SCp.ptr = sg_virt(current_SC->SCp.buffer); in do_fdomain_16x0_intr()
1327 current_SC->SCp.this_residual = current_SC->SCp.buffer->length; in do_fdomain_16x0_intr()
1334 if (current_SC->SCp.have_data_in == 1) { /* DATA IN */ in do_fdomain_16x0_intr()
1339 if (data_count > current_SC->SCp.this_residual) in do_fdomain_16x0_intr()
1340 data_count = current_SC->SCp.this_residual; in do_fdomain_16x0_intr()
1346 *current_SC->SCp.ptr++ = inb(port_base + Read_FIFO); in do_fdomain_16x0_intr()
1347 --current_SC->SCp.this_residual; in do_fdomain_16x0_intr()
1350 insw(port_base + Read_FIFO, current_SC->SCp.ptr, data_count); in do_fdomain_16x0_intr()
1351 current_SC->SCp.ptr += 2 * data_count; in do_fdomain_16x0_intr()
1352 current_SC->SCp.this_residual -= 2 * data_count; in do_fdomain_16x0_intr()
1355 if (!current_SC->SCp.this_residual in do_fdomain_16x0_intr()
1356 && current_SC->SCp.buffers_residual) { in do_fdomain_16x0_intr()
1357 --current_SC->SCp.buffers_residual; in do_fdomain_16x0_intr()
1358 ++current_SC->SCp.buffer; in do_fdomain_16x0_intr()
1359 current_SC->SCp.ptr = sg_virt(current_SC->SCp.buffer); in do_fdomain_16x0_intr()
1360 current_SC->SCp.this_residual = current_SC->SCp.buffer->length; in do_fdomain_16x0_intr()
1367 printk( " ** IN DONE %d ** ", current_SC->SCp.have_data_in ); in do_fdomain_16x0_intr()
1371 if (current_SC->cmnd[0] == REQUEST_SENSE && !current_SC->SCp.Status) { in do_fdomain_16x0_intr()
1372 char *buf = scsi_sglist(current_SC); in do_fdomain_16x0_intr()
1399 spin_lock_irqsave(current_SC->device->host->host_lock, flags); in do_fdomain_16x0_intr()
1400 my_done( (current_SC->SCp.Status & 0xff) in do_fdomain_16x0_intr()
1401 | ((current_SC->SCp.Message & 0xff) << 8) | (DID_OK << 16) ); in do_fdomain_16x0_intr()
1402 spin_unlock_irqrestore(current_SC->device->host->host_lock, flags); in do_fdomain_16x0_intr()
1408 if (current_SC->SCp.phase & disconnect) { in do_fdomain_16x0_intr()
1437 current_SC = SCpnt; /* Save this for the done function */ in fdomain_16x0_queue_lck()
1438 current_SC->scsi_done = done; in fdomain_16x0_queue_lck()
1442 if (scsi_sg_count(current_SC)) { in fdomain_16x0_queue_lck()
1443 current_SC->SCp.buffer = scsi_sglist(current_SC); in fdomain_16x0_queue_lck()
1444 current_SC->SCp.ptr = sg_virt(current_SC->SCp.buffer); in fdomain_16x0_queue_lck()
1445 current_SC->SCp.this_residual = current_SC->SCp.buffer->length; in fdomain_16x0_queue_lck()
1446 current_SC->SCp.buffers_residual = scsi_sg_count(current_SC) - 1; in fdomain_16x0_queue_lck()
1448 current_SC->SCp.ptr = NULL; in fdomain_16x0_queue_lck()
1449 current_SC->SCp.this_residual = 0; in fdomain_16x0_queue_lck()
1450 current_SC->SCp.buffer = NULL; in fdomain_16x0_queue_lck()
1451 current_SC->SCp.buffers_residual = 0; in fdomain_16x0_queue_lck()
1454 current_SC->SCp.Status = 0; in fdomain_16x0_queue_lck()
1455 current_SC->SCp.Message = 0; in fdomain_16x0_queue_lck()
1456 current_SC->SCp.have_data_in = 0; in fdomain_16x0_queue_lck()
1457 current_SC->SCp.sent_command = 0; in fdomain_16x0_queue_lck()
1458 current_SC->SCp.phase = in_arbitration; in fdomain_16x0_queue_lck()
1563 current_SC->SCp.phase |= aborted; in fdomain_16x0_abort()
1564 current_SC->result = DID_ABORT << 16; in fdomain_16x0_abort()