Lines Matching refs:SCpnt
362 static void nsp32_build_identify(struct scsi_cmnd *SCpnt) in nsp32_build_identify() argument
364 nsp32_hw_data *data = (nsp32_hw_data *)SCpnt->device->host->hostdata; in nsp32_build_identify()
373 data->msgoutbuf[pos] = IDENTIFY(mode, SCpnt->device->lun); pos++; in nsp32_build_identify()
381 static void nsp32_build_sdtr(struct scsi_cmnd *SCpnt, in nsp32_build_sdtr() argument
385 nsp32_hw_data *data = (nsp32_hw_data *)SCpnt->device->host->hostdata; in nsp32_build_sdtr()
400 static void nsp32_build_nop(struct scsi_cmnd *SCpnt) in nsp32_build_nop() argument
402 nsp32_hw_data *data = (nsp32_hw_data *)SCpnt->device->host->hostdata; in nsp32_build_nop()
418 static void nsp32_build_reject(struct scsi_cmnd *SCpnt) in nsp32_build_reject() argument
420 nsp32_hw_data *data = (nsp32_hw_data *)SCpnt->device->host->hostdata; in nsp32_build_reject()
431 static void nsp32_start_timer(struct scsi_cmnd *SCpnt, int time)
433 unsigned int base = SCpnt->host->io_port;
449 static int nsp32_selection_autopara(struct scsi_cmnd *SCpnt) in nsp32_selection_autopara() argument
451 nsp32_hw_data *data = (nsp32_hw_data *)SCpnt->device->host->hostdata; in nsp32_selection_autopara()
452 unsigned int base = SCpnt->device->host->io_port; in nsp32_selection_autopara()
453 unsigned int host_id = SCpnt->device->host->this_id; in nsp32_selection_autopara()
454 unsigned char target = scmd_id(SCpnt); in nsp32_selection_autopara()
470 SCpnt->result = DID_BUS_BUSY << 16; in nsp32_selection_autopara()
482 SCpnt->result = DID_ERROR << 16; in nsp32_selection_autopara()
513 for (i = 0; i < SCpnt->cmd_len; i++) { in nsp32_selection_autopara()
514 param->cdb[4 * i] = SCpnt->cmnd[i]; in nsp32_selection_autopara()
572 ret = nsp32_arbitration(SCpnt, base); in nsp32_selection_autopara()
581 static int nsp32_selection_autoscsi(struct scsi_cmnd *SCpnt) in nsp32_selection_autoscsi() argument
583 nsp32_hw_data *data = (nsp32_hw_data *)SCpnt->device->host->hostdata; in nsp32_selection_autoscsi()
584 unsigned int base = SCpnt->device->host->io_port; in nsp32_selection_autoscsi()
585 unsigned int host_id = SCpnt->device->host->this_id; in nsp32_selection_autoscsi()
586 unsigned char target = scmd_id(SCpnt); in nsp32_selection_autoscsi()
606 SCpnt->result = DID_BUS_BUSY << 16; in nsp32_selection_autoscsi()
624 for (i = 0; i < SCpnt->cmd_len; i++) { in nsp32_selection_autoscsi()
625 nsp32_write1(base, COMMAND_DATA, SCpnt->cmnd[i]); in nsp32_selection_autoscsi()
627 nsp32_dbg(NSP32_DEBUG_CDB_CONTENTS, "CDB[0]=[0x%x]", SCpnt->cmnd[0]); in nsp32_selection_autoscsi()
643 SCpnt->result = DID_ERROR << 16; in nsp32_selection_autoscsi()
714 if (scsi_bufflen(SCpnt) > 0) { in nsp32_selection_autoscsi()
737 status = nsp32_arbitration(SCpnt, base); in nsp32_selection_autoscsi()
757 static int nsp32_arbitration(struct scsi_cmnd *SCpnt, unsigned int base) in nsp32_arbitration() argument
774 SCpnt->result = DID_OK << 16; in nsp32_arbitration()
778 SCpnt->result = DID_BUS_BUSY << 16; in nsp32_arbitration()
786 SCpnt->result = DID_NO_CONNECT << 16; in nsp32_arbitration()
806 static int nsp32_reselection(struct scsi_cmnd *SCpnt, unsigned char newlun) in nsp32_reselection() argument
808 nsp32_hw_data *data = (nsp32_hw_data *)SCpnt->device->host->hostdata; in nsp32_reselection()
809 unsigned int host_id = SCpnt->device->host->this_id; in nsp32_reselection()
810 unsigned int base = SCpnt->device->host->io_port; in nsp32_reselection()
838 } else if(data->lunt[newid][newlun].SCpnt == NULL) { in nsp32_reselection()
861 static int nsp32_setup_sg_table(struct scsi_cmnd *SCpnt) in nsp32_setup_sg_table() argument
863 nsp32_hw_data *data = (nsp32_hw_data *)SCpnt->device->host->hostdata; in nsp32_setup_sg_table()
874 num = scsi_dma_map(SCpnt); in nsp32_setup_sg_table()
880 scsi_for_each_sg(SCpnt, sg, num, i) { in nsp32_setup_sg_table()
908 static int nsp32_queuecommand_lck(struct scsi_cmnd *SCpnt) in nsp32_queuecommand_lck() argument
911 nsp32_hw_data *data = (nsp32_hw_data *)SCpnt->device->host->hostdata; in nsp32_queuecommand_lck()
919 SCpnt->device->id, SCpnt->device->lun, SCpnt->cmnd[0], in nsp32_queuecommand_lck()
920 SCpnt->cmd_len, scsi_sg_count(SCpnt), scsi_sglist(SCpnt), in nsp32_queuecommand_lck()
921 scsi_bufflen(SCpnt)); in nsp32_queuecommand_lck()
926 SCpnt->result = DID_NO_CONNECT << 16; in nsp32_queuecommand_lck()
927 done(SCpnt); in nsp32_queuecommand_lck()
932 if (scmd_id(SCpnt) == SCpnt->device->host->this_id) { in nsp32_queuecommand_lck()
934 SCpnt->result = DID_BAD_TARGET << 16; in nsp32_queuecommand_lck()
935 done(SCpnt); in nsp32_queuecommand_lck()
940 if (SCpnt->device->lun >= MAX_LUN) { in nsp32_queuecommand_lck()
942 SCpnt->result = DID_BAD_TARGET << 16; in nsp32_queuecommand_lck()
943 done(SCpnt); in nsp32_queuecommand_lck()
947 show_command(SCpnt); in nsp32_queuecommand_lck()
949 data->CurrentSC = SCpnt; in nsp32_queuecommand_lck()
950 nsp32_priv(SCpnt)->status = SAM_STAT_CHECK_CONDITION; in nsp32_queuecommand_lck()
951 scsi_set_resid(SCpnt, scsi_bufflen(SCpnt)); in nsp32_queuecommand_lck()
956 cur_lunt = &(data->lunt[SCpnt->device->id][SCpnt->device->lun]); in nsp32_queuecommand_lck()
957 cur_lunt->SCpnt = SCpnt; in nsp32_queuecommand_lck()
961 data->cur_id = SCpnt->device->id; in nsp32_queuecommand_lck()
962 data->cur_lun = SCpnt->device->lun; in nsp32_queuecommand_lck()
964 ret = nsp32_setup_sg_table(SCpnt); in nsp32_queuecommand_lck()
967 SCpnt->result = DID_ERROR << 16; in nsp32_queuecommand_lck()
968 nsp32_scsi_done(SCpnt); in nsp32_queuecommand_lck()
973 nsp32_build_identify(SCpnt); in nsp32_queuecommand_lck()
980 target = &data->target[scmd_id(SCpnt)]; in nsp32_queuecommand_lck()
988 nsp32_build_sdtr(SCpnt, period, offset); in nsp32_queuecommand_lck()
1026 SCpnt->device->id, target->sync_flag, target->syncreg, in nsp32_queuecommand_lck()
1031 ret = nsp32_selection_autopara(SCpnt); in nsp32_queuecommand_lck()
1033 ret = nsp32_selection_autoscsi(SCpnt); in nsp32_queuecommand_lck()
1038 nsp32_scsi_done(SCpnt); in nsp32_queuecommand_lck()
1160 struct scsi_cmnd *SCpnt = data->CurrentSC; in do_nsp32_isr() local
1193 SCpnt->result = DID_BAD_TARGET << 16; in do_nsp32_isr()
1194 nsp32_scsi_done(SCpnt); in do_nsp32_isr()
1210 if (SCpnt != NULL) { in do_nsp32_isr()
1211 SCpnt->result = DID_RESET << 16; in do_nsp32_isr()
1212 nsp32_scsi_done(SCpnt); in do_nsp32_isr()
1217 if (SCpnt == NULL) { in do_nsp32_isr()
1240 SCpnt->result = DID_TIME_OUT << 16; in do_nsp32_isr()
1241 nsp32_scsi_done(SCpnt); in do_nsp32_isr()
1266 (scsi_get_resid(SCpnt) > 0) && in do_nsp32_isr()
1287 scsi_set_resid(SCpnt, 0); /* all data transferred! */ in do_nsp32_isr()
1294 nsp32_msgin_occur(SCpnt, irq_stat, auto_stat); in do_nsp32_isr()
1301 nsp32_msgout_occur(SCpnt); in do_nsp32_isr()
1308 ret = nsp32_busfree_occur(SCpnt, auto_stat); in do_nsp32_isr()
1322 SCpnt->result = (int)nsp32_read1(base, SCSI_CSB_IN); in do_nsp32_isr()
1375 nsp32_priv(SCpnt)->status = nsp32_read1(base, SCSI_CSB_IN); in do_nsp32_isr()
1396 nsp32_msgin_occur(SCpnt, irq_stat, 0); in do_nsp32_isr()
1528 static void nsp32_scsi_done(struct scsi_cmnd *SCpnt) in nsp32_scsi_done() argument
1530 nsp32_hw_data *data = (nsp32_hw_data *)SCpnt->device->host->hostdata; in nsp32_scsi_done()
1531 unsigned int base = SCpnt->device->host->io_port; in nsp32_scsi_done()
1533 scsi_dma_unmap(SCpnt); in nsp32_scsi_done()
1544 scsi_done(SCpnt); in nsp32_scsi_done()
1549 data->cur_lunt->SCpnt = NULL; in nsp32_scsi_done()
1566 static int nsp32_busfree_occur(struct scsi_cmnd *SCpnt, unsigned short execph) in nsp32_busfree_occur() argument
1568 nsp32_hw_data *data = (nsp32_hw_data *)SCpnt->device->host->hostdata; in nsp32_busfree_occur()
1569 unsigned int base = SCpnt->device->host->io_port; in nsp32_busfree_occur()
1627 nsp32_adjust_busfree(SCpnt, s_sacklen); in nsp32_busfree_occur()
1686 nsp32_priv(SCpnt)->status = nsp32_read1(base, SCSI_CSB_IN); in nsp32_busfree_occur()
1689 nsp32_priv(SCpnt)->status, scsi_get_resid(SCpnt)); in nsp32_busfree_occur()
1690 SCpnt->result = (DID_OK << 16) | in nsp32_busfree_occur()
1691 (nsp32_priv(SCpnt)->status << 0); in nsp32_busfree_occur()
1692 nsp32_scsi_done(SCpnt); in nsp32_busfree_occur()
1697 nsp32_priv(SCpnt)->status = nsp32_read1(base, SCSI_CSB_IN); in nsp32_busfree_occur()
1705 SCpnt->result = DID_ERROR << 16; in nsp32_busfree_occur()
1706 nsp32_scsi_done(SCpnt); in nsp32_busfree_occur()
1719 static void nsp32_adjust_busfree(struct scsi_cmnd *SCpnt, unsigned int s_sacklen) in nsp32_adjust_busfree() argument
1721 nsp32_hw_data *data = (nsp32_hw_data *)SCpnt->device->host->hostdata; in nsp32_adjust_busfree()
1729 nsp32_dbg(NSP32_DEBUG_SGLIST, "old resid=0x%x", scsi_get_resid(SCpnt)); in nsp32_adjust_busfree()
1775 if (scsi_get_resid(SCpnt) < sentlen) { in nsp32_adjust_busfree()
1779 scsi_set_resid(SCpnt, scsi_get_resid(SCpnt) - sentlen); in nsp32_adjust_busfree()
1780 nsp32_dbg(NSP32_DEBUG_SGLIST, "new resid=0x%x", scsi_get_resid(SCpnt)); in nsp32_adjust_busfree()
1794 static void nsp32_msgout_occur(struct scsi_cmnd *SCpnt) in nsp32_msgout_occur() argument
1796 nsp32_hw_data *data = (nsp32_hw_data *)SCpnt->device->host->hostdata; in nsp32_msgout_occur()
1797 unsigned int base = SCpnt->device->host->io_port; in nsp32_msgout_occur()
1808 nsp32_build_nop(SCpnt); in nsp32_msgout_occur()
1860 static void nsp32_restart_autoscsi(struct scsi_cmnd *SCpnt, unsigned short command) in nsp32_restart_autoscsi() argument
1862 nsp32_hw_data *data = (nsp32_hw_data *)SCpnt->device->host->hostdata; in nsp32_restart_autoscsi()
1899 if (scsi_bufflen(SCpnt) > 0) { in nsp32_restart_autoscsi()
1926 static void nsp32_msgin_occur(struct scsi_cmnd *SCpnt, in nsp32_msgin_occur() argument
1930 nsp32_hw_data *data = (nsp32_hw_data *)SCpnt->device->host->hostdata; in nsp32_msgin_occur()
1931 unsigned int base = SCpnt->device->host->io_port; in nsp32_msgin_occur()
1971 ret = nsp32_reselection(SCpnt, newlun); in nsp32_msgin_occur()
2008 nsp32_adjust_busfree(SCpnt, s_sacklen); in nsp32_msgin_occur()
2133 nsp32_analyze_sdtr(SCpnt); in nsp32_msgin_occur()
2193 nsp32_restart_autoscsi(SCpnt, command); in nsp32_msgin_occur()
2214 nsp32_build_reject(SCpnt); in nsp32_msgin_occur()
2223 static void nsp32_analyze_sdtr(struct scsi_cmnd *SCpnt) in nsp32_analyze_sdtr() argument
2225 nsp32_hw_data *data = (nsp32_hw_data *)SCpnt->device->host->hostdata; in nsp32_analyze_sdtr()
2322 nsp32_build_sdtr(SCpnt, 0, ASYNC_OFFSET); in nsp32_analyze_sdtr()
2325 nsp32_build_sdtr(SCpnt, get_period, get_offset); in nsp32_analyze_sdtr()
2338 nsp32_build_reject(SCpnt); in nsp32_analyze_sdtr()
2660 .SCpnt = NULL, in nsp32_detect()
2809 static int nsp32_eh_abort(struct scsi_cmnd *SCpnt) in nsp32_eh_abort() argument
2811 nsp32_hw_data *data = (nsp32_hw_data *)SCpnt->device->host->hostdata; in nsp32_eh_abort()
2812 unsigned int base = SCpnt->device->host->io_port; in nsp32_eh_abort()
2816 if (data->cur_lunt->SCpnt == NULL) { in nsp32_eh_abort()
2830 SCpnt->result = DID_ABORT << 16; in nsp32_eh_abort()
2831 nsp32_scsi_done(SCpnt); in nsp32_eh_abort()
2879 static int nsp32_eh_host_reset(struct scsi_cmnd *SCpnt) in nsp32_eh_host_reset() argument
2881 struct Scsi_Host *host = SCpnt->device->host; in nsp32_eh_host_reset()
2882 unsigned int base = SCpnt->device->host->io_port; in nsp32_eh_host_reset()
2886 nsp32_dbg(NSP32_DEBUG_BUSRESET, "SCpnt=0x%x", SCpnt); in nsp32_eh_host_reset()
2888 spin_lock_irq(SCpnt->device->host->host_lock); in nsp32_eh_host_reset()
2895 spin_unlock_irq(SCpnt->device->host->host_lock); in nsp32_eh_host_reset()