Lines Matching refs:asc_dvc
2082 #define AdvAbortQueue(asc_dvc, scsiq) \ argument
2083 AdvSendIdleCmd((asc_dvc), (ushort) IDLE_CMD_ABORT, \
2097 #define AdvResetDevice(asc_dvc, target_id) \ argument
2098 AdvSendIdleCmd((asc_dvc), (ushort) IDLE_CMD_DEVICE_RESET, \
2391 #define asc_dvc_to_board(asc_dvc) container_of(asc_dvc, struct asc_board, \ argument
2735 static u32 advansys_ptr_to_srb(struct asc_dvc_var *asc_dvc, void *ptr) in advansys_ptr_to_srb() argument
2740 for (i = 0; i < asc_dvc->ptr_map_count; i++) { in advansys_ptr_to_srb()
2741 if (!asc_dvc->ptr_map[i]) in advansys_ptr_to_srb()
2745 if (asc_dvc->ptr_map_count == 0) in advansys_ptr_to_srb()
2746 asc_dvc->ptr_map_count = 1; in advansys_ptr_to_srb()
2748 asc_dvc->ptr_map_count *= 2; in advansys_ptr_to_srb()
2750 new_ptr = krealloc(asc_dvc->ptr_map, in advansys_ptr_to_srb()
2751 asc_dvc->ptr_map_count * sizeof(void *), GFP_ATOMIC); in advansys_ptr_to_srb()
2754 asc_dvc->ptr_map = new_ptr; in advansys_ptr_to_srb()
2757 asc_dvc->ptr_map[i] = ptr; in advansys_ptr_to_srb()
2761 static void * advansys_srb_to_ptr(struct asc_dvc_var *asc_dvc, u32 srb) in advansys_srb_to_ptr() argument
2766 if (srb >= asc_dvc->ptr_map_count) { in advansys_srb_to_ptr()
2768 asc_dvc->ptr_map_count); in advansys_srb_to_ptr()
2771 ptr = asc_dvc->ptr_map[srb]; in advansys_srb_to_ptr()
2772 asc_dvc->ptr_map[srb] = NULL; in advansys_srb_to_ptr()
3873 static int AscResetChipAndScsiBus(ASC_DVC_VAR *asc_dvc) in AscResetChipAndScsiBus() argument
3878 iop_base = asc_dvc->iop_base; in AscResetChipAndScsiBus()
4083 static ushort AscInitLram(ASC_DVC_VAR *asc_dvc) in AscInitLram() argument
4090 iop_base = asc_dvc->iop_base; in AscInitLram()
4093 (ushort)(((int)(asc_dvc->max_total_qng + 2 + 1) * in AscInitLram()
4100 (uchar)(asc_dvc->max_total_qng)); in AscInitLram()
4105 for (; i < asc_dvc->max_total_qng; i++, s_addr += ASC_QBLK_SIZE) { in AscInitLram()
4116 (uchar)(asc_dvc->max_total_qng - 1)); in AscInitLram()
4118 (uchar)asc_dvc->max_total_qng); in AscInitLram()
4121 for (; i <= (uchar)(asc_dvc->max_total_qng + 3); in AscInitLram()
4160 static void AscInitQLinkVar(ASC_DVC_VAR *asc_dvc) in AscInitQLinkVar() argument
4166 iop_base = asc_dvc->iop_base; in AscInitQLinkVar()
4168 AscPutRiscVarDoneQTail(iop_base, asc_dvc->max_total_qng); in AscInitQLinkVar()
4170 AscPutVarDoneQTail(iop_base, asc_dvc->max_total_qng); in AscInitQLinkVar()
4172 (uchar)((int)asc_dvc->max_total_qng + 1)); in AscInitQLinkVar()
4174 (uchar)((int)asc_dvc->max_total_qng + 2)); in AscInitQLinkVar()
4176 asc_dvc->max_total_qng); in AscInitQLinkVar()
4189 static ushort AscInitMicroCodeVar(ASC_DVC_VAR *asc_dvc) in AscInitMicroCodeVar() argument
4196 struct asc_board *board = asc_dvc_to_board(asc_dvc); in AscInitMicroCodeVar()
4198 iop_base = asc_dvc->iop_base; in AscInitMicroCodeVar()
4202 asc_dvc->cfg->sdtr_period_offset[i]); in AscInitMicroCodeVar()
4205 AscInitQLinkVar(asc_dvc); in AscInitMicroCodeVar()
4207 asc_dvc->cfg->disc_enable); in AscInitMicroCodeVar()
4209 ASC_TID_TO_TARGET_ID(asc_dvc->cfg->chip_scsi_id)); in AscInitMicroCodeVar()
4212 BUG_ON((unsigned long)asc_dvc->overrun_buf & 7); in AscInitMicroCodeVar()
4213 asc_dvc->overrun_dma = dma_map_single(board->dev, asc_dvc->overrun_buf, in AscInitMicroCodeVar()
4215 if (dma_mapping_error(board->dev, asc_dvc->overrun_dma)) { in AscInitMicroCodeVar()
4219 phy_addr = cpu_to_le32(asc_dvc->overrun_dma); in AscInitMicroCodeVar()
4226 asc_dvc->cfg->mcode_date = in AscInitMicroCodeVar()
4228 asc_dvc->cfg->mcode_version = in AscInitMicroCodeVar()
4233 asc_dvc->err_code |= ASC_IERR_SET_PC_ADDR; in AscInitMicroCodeVar()
4238 asc_dvc->err_code |= ASC_IERR_START_STOP_CHIP; in AscInitMicroCodeVar()
4246 dma_unmap_single(board->dev, asc_dvc->overrun_dma, in AscInitMicroCodeVar()
4249 asc_dvc->overrun_dma = 0; in AscInitMicroCodeVar()
4253 static ushort AscInitAsc1000Driver(ASC_DVC_VAR *asc_dvc) in AscInitAsc1000Driver() argument
4262 iop_base = asc_dvc->iop_base; in AscInitAsc1000Driver()
4264 if ((asc_dvc->dvc_cntl & ASC_CNTL_RESET_SCSI) && in AscInitAsc1000Driver()
4265 !(asc_dvc->init_state & ASC_INIT_RESET_SCSI_DONE)) { in AscInitAsc1000Driver()
4266 AscResetChipAndScsiBus(asc_dvc); in AscInitAsc1000Driver()
4267 mdelay(asc_dvc->scsi_reset_wait * 1000); /* XXX: msleep? */ in AscInitAsc1000Driver()
4269 asc_dvc->init_state |= ASC_INIT_STATE_BEG_LOAD_MC; in AscInitAsc1000Driver()
4270 if (asc_dvc->err_code != 0) in AscInitAsc1000Driver()
4272 if (!AscFindSignature(asc_dvc->iop_base)) { in AscInitAsc1000Driver()
4273 asc_dvc->err_code = ASC_IERR_BAD_SIGNATURE; in AscInitAsc1000Driver()
4277 warn_code |= AscInitLram(asc_dvc); in AscInitAsc1000Driver()
4278 if (asc_dvc->err_code != 0) in AscInitAsc1000Driver()
4281 err = request_firmware(&fw, fwname, asc_dvc->drv_ptr->dev); in AscInitAsc1000Driver()
4285 asc_dvc->err_code |= ASC_IERR_MCODE_CHKSUM; in AscInitAsc1000Driver()
4292 asc_dvc->err_code |= ASC_IERR_MCODE_CHKSUM; in AscInitAsc1000Driver()
4300 asc_dvc->err_code |= ASC_IERR_MCODE_CHKSUM; in AscInitAsc1000Driver()
4305 warn_code |= AscInitMicroCodeVar(asc_dvc); in AscInitAsc1000Driver()
4306 if (!asc_dvc->overrun_dma) in AscInitAsc1000Driver()
4308 asc_dvc->init_state |= ASC_INIT_STATE_END_LOAD_MC; in AscInitAsc1000Driver()
4385 static void AdvBuildCarrierFreelist(struct adv_dvc_var *asc_dvc) in AdvBuildCarrierFreelist() argument
4391 carrp = (ADV_CARR_T *) ADV_16BALIGN(asc_dvc->carrier_buf); in AdvBuildCarrierFreelist()
4392 asc_dvc->carr_freelist = NULL; in AdvBuildCarrierFreelist()
4393 if (carrp == asc_dvc->carrier_buf) { in AdvBuildCarrierFreelist()
4412 cpu_to_le32(ADV_VADDR_TO_U32(asc_dvc->carr_freelist)); in AdvBuildCarrierFreelist()
4413 asc_dvc->carr_freelist = carrp; in AdvBuildCarrierFreelist()
4434 AdvSendIdleCmd(ADV_DVC_VAR *asc_dvc, in AdvSendIdleCmd() argument
4441 iop_base = asc_dvc->iop_base; in AdvSendIdleCmd()
4464 if (asc_dvc->chip_type == ADV_CHIP_ASC3550) { in AdvSendIdleCmd()
4498 static int AdvResetSB(ADV_DVC_VAR *asc_dvc) in AdvResetSB() argument
4506 status = AdvSendIdleCmd(asc_dvc, (ushort)IDLE_CMD_SCSI_RESET_START, 0L); in AdvResetSB()
4523 status = AdvSendIdleCmd(asc_dvc, (ushort)IDLE_CMD_SCSI_RESET_END, 0L); in AdvResetSB()
4528 mdelay(asc_dvc->scsi_reset_wait * 1000); /* XXX: msleep? */ in AdvResetSB()
4543 static int AdvInitAsc3550Driver(ADV_DVC_VAR *asc_dvc) in AdvInitAsc3550Driver() argument
4563 if (asc_dvc->err_code != 0) in AdvInitAsc3550Driver()
4569 if (asc_dvc->chip_type != ADV_CHIP_ASC3550) { in AdvInitAsc3550Driver()
4570 asc_dvc->err_code = ASC_IERR_BAD_CHIPTYPE; in AdvInitAsc3550Driver()
4575 iop_base = asc_dvc->iop_base; in AdvInitAsc3550Driver()
4614 err = request_firmware(&fw, fwname, asc_dvc->drv_ptr->dev); in AdvInitAsc3550Driver()
4618 asc_dvc->err_code = ASC_IERR_MCODE_CHKSUM; in AdvInitAsc3550Driver()
4625 asc_dvc->err_code = ASC_IERR_MCODE_CHKSUM; in AdvInitAsc3550Driver()
4630 asc_dvc->err_code = AdvLoadMicrocode(iop_base, &fw->data[4], in AdvInitAsc3550Driver()
4634 if (asc_dvc->err_code) in AdvInitAsc3550Driver()
4662 asc_dvc->cfg->mcode_date); in AdvInitAsc3550Driver()
4664 asc_dvc->cfg->mcode_version); in AdvInitAsc3550Driver()
4677 if (asc_dvc->cfg->control_flag & CONTROL_FLAG_IGNORE_PERR) { in AdvInitAsc3550Driver()
4702 if ((asc_dvc->bios_ctrl & BIOS_CTRL_RESET_SCSI_BUS) == 0) { in AdvInitAsc3550Driver()
4704 asc_dvc->wdtr_able); in AdvInitAsc3550Driver()
4706 asc_dvc->sdtr_able); in AdvInitAsc3550Driver()
4733 if (ADV_TID_TO_TIDMASK(tid) & asc_dvc->ultra_able) { in AdvInitAsc3550Driver()
4759 asc_dvc->cfg->disc_enable); in AdvInitAsc3550Driver()
4769 asc_dvc->chip_scsi_id); in AdvInitAsc3550Driver()
4786 asc_dvc->err_code |= ASC_IERR_ILLEGAL_CONNECTION; in AdvInitAsc3550Driver()
4796 asc_dvc->err_code |= ASC_IERR_REVERSED_CABLE; in AdvInitAsc3550Driver()
4805 asc_dvc->err_code |= ASC_IERR_SINGLE_END_DEVICE; in AdvInitAsc3550Driver()
4817 if (asc_dvc->cfg->termination == 0) { in AdvInitAsc3550Driver()
4822 asc_dvc->cfg->termination |= TERM_CTL_SEL; in AdvInitAsc3550Driver()
4832 asc_dvc->cfg->termination |= (TERM_CTL_H | TERM_CTL_L); in AdvInitAsc3550Driver()
4841 asc_dvc->cfg->termination |= TERM_CTL_H; in AdvInitAsc3550Driver()
4862 scsi_cfg1 |= (TERM_CTL_SEL | (~asc_dvc->cfg->termination & TERM_CTL)); in AdvInitAsc3550Driver()
4897 ADV_TID_TO_TIDMASK(asc_dvc->chip_scsi_id)); in AdvInitAsc3550Driver()
4899 AdvBuildCarrierFreelist(asc_dvc); in AdvInitAsc3550Driver()
4905 if ((asc_dvc->icq_sp = asc_dvc->carr_freelist) == NULL) { in AdvInitAsc3550Driver()
4906 asc_dvc->err_code |= ASC_IERR_NO_CARRIER; in AdvInitAsc3550Driver()
4909 asc_dvc->carr_freelist = (ADV_CARR_T *) in AdvInitAsc3550Driver()
4910 ADV_U32_TO_VADDR(le32_to_cpu(asc_dvc->icq_sp->next_vpa)); in AdvInitAsc3550Driver()
4915 asc_dvc->icq_sp->next_vpa = cpu_to_le32(ASC_CQ_STOPPER); in AdvInitAsc3550Driver()
4920 AdvWriteDWordLramNoSwap(iop_base, ASC_MC_ICQ, asc_dvc->icq_sp->carr_pa); in AdvInitAsc3550Driver()
4925 if ((asc_dvc->irq_sp = asc_dvc->carr_freelist) == NULL) { in AdvInitAsc3550Driver()
4926 asc_dvc->err_code |= ASC_IERR_NO_CARRIER; in AdvInitAsc3550Driver()
4929 asc_dvc->carr_freelist = (ADV_CARR_T *) in AdvInitAsc3550Driver()
4930 ADV_U32_TO_VADDR(le32_to_cpu(asc_dvc->irq_sp->next_vpa)); in AdvInitAsc3550Driver()
4939 asc_dvc->irq_sp->next_vpa = cpu_to_le32(ASC_CQ_STOPPER); in AdvInitAsc3550Driver()
4944 AdvWriteDWordLramNoSwap(iop_base, ASC_MC_IRQ, asc_dvc->irq_sp->carr_pa); in AdvInitAsc3550Driver()
4945 asc_dvc->carr_pending_cnt = 0; in AdvInitAsc3550Driver()
4962 if (asc_dvc->bios_ctrl & BIOS_CTRL_RESET_SCSI_BUS) { in AdvInitAsc3550Driver()
4983 if (AdvResetSB(asc_dvc) != ADV_TRUE) { in AdvInitAsc3550Driver()
5002 static int AdvInitAsc38C0800Driver(ADV_DVC_VAR *asc_dvc) in AdvInitAsc38C0800Driver() argument
5023 if (asc_dvc->err_code != 0) in AdvInitAsc38C0800Driver()
5029 if (asc_dvc->chip_type != ADV_CHIP_ASC38C0800) { in AdvInitAsc38C0800Driver()
5030 asc_dvc->err_code = ASC_IERR_BAD_CHIPTYPE; in AdvInitAsc38C0800Driver()
5035 iop_base = asc_dvc->iop_base; in AdvInitAsc38C0800Driver()
5096 asc_dvc->err_code = ASC_IERR_BIST_PRE_TEST; in AdvInitAsc38C0800Driver()
5104 asc_dvc->err_code = ASC_IERR_BIST_PRE_TEST; in AdvInitAsc38C0800Driver()
5122 asc_dvc->bist_err_code = byte; /* for BIOS display message */ in AdvInitAsc38C0800Driver()
5123 asc_dvc->err_code = ASC_IERR_BIST_RAM_TEST; in AdvInitAsc38C0800Driver()
5130 err = request_firmware(&fw, fwname, asc_dvc->drv_ptr->dev); in AdvInitAsc38C0800Driver()
5134 asc_dvc->err_code = ASC_IERR_MCODE_CHKSUM; in AdvInitAsc38C0800Driver()
5141 asc_dvc->err_code = ASC_IERR_MCODE_CHKSUM; in AdvInitAsc38C0800Driver()
5146 asc_dvc->err_code = AdvLoadMicrocode(iop_base, &fw->data[4], in AdvInitAsc38C0800Driver()
5150 if (asc_dvc->err_code) in AdvInitAsc38C0800Driver()
5178 asc_dvc->cfg->mcode_date); in AdvInitAsc38C0800Driver()
5180 asc_dvc->cfg->mcode_version); in AdvInitAsc38C0800Driver()
5205 if (asc_dvc->cfg->control_flag & CONTROL_FLAG_IGNORE_PERR) { in AdvInitAsc38C0800Driver()
5235 if ((asc_dvc->bios_ctrl & BIOS_CTRL_RESET_SCSI_BUS) == 0) { in AdvInitAsc38C0800Driver()
5237 asc_dvc->wdtr_able); in AdvInitAsc38C0800Driver()
5239 asc_dvc->sdtr_able); in AdvInitAsc38C0800Driver()
5252 asc_dvc->cfg->disc_enable); in AdvInitAsc38C0800Driver()
5253 AdvWriteWordLram(iop_base, ASC_MC_SDTR_SPEED1, asc_dvc->sdtr_speed1); in AdvInitAsc38C0800Driver()
5254 AdvWriteWordLram(iop_base, ASC_MC_SDTR_SPEED2, asc_dvc->sdtr_speed2); in AdvInitAsc38C0800Driver()
5255 AdvWriteWordLram(iop_base, ASC_MC_SDTR_SPEED3, asc_dvc->sdtr_speed3); in AdvInitAsc38C0800Driver()
5256 AdvWriteWordLram(iop_base, ASC_MC_SDTR_SPEED4, asc_dvc->sdtr_speed4); in AdvInitAsc38C0800Driver()
5266 asc_dvc->chip_scsi_id); in AdvInitAsc38C0800Driver()
5284 asc_dvc->err_code |= ASC_IERR_REVERSED_CABLE; in AdvInitAsc38C0800Driver()
5300 asc_dvc->err_code = ASC_IERR_HVD_DEVICE; in AdvInitAsc38C0800Driver()
5312 if ((asc_dvc->cfg->termination & TERM_SE) == 0) { in AdvInitAsc38C0800Driver()
5319 asc_dvc->cfg->termination |= TERM_SE; in AdvInitAsc38C0800Driver()
5324 asc_dvc->cfg->termination |= TERM_SE_HI; in AdvInitAsc38C0800Driver()
5329 if ((asc_dvc->cfg->termination & TERM_LVD) == 0) { in AdvInitAsc38C0800Driver()
5336 asc_dvc->cfg->termination |= TERM_LVD; in AdvInitAsc38C0800Driver()
5353 scsi_cfg1 |= (~asc_dvc->cfg->termination & 0xF0); in AdvInitAsc38C0800Driver()
5394 ADV_TID_TO_TIDMASK(asc_dvc->chip_scsi_id)); in AdvInitAsc38C0800Driver()
5396 AdvBuildCarrierFreelist(asc_dvc); in AdvInitAsc38C0800Driver()
5402 if ((asc_dvc->icq_sp = asc_dvc->carr_freelist) == NULL) { in AdvInitAsc38C0800Driver()
5403 asc_dvc->err_code |= ASC_IERR_NO_CARRIER; in AdvInitAsc38C0800Driver()
5406 asc_dvc->carr_freelist = (ADV_CARR_T *) in AdvInitAsc38C0800Driver()
5407 ADV_U32_TO_VADDR(le32_to_cpu(asc_dvc->icq_sp->next_vpa)); in AdvInitAsc38C0800Driver()
5412 asc_dvc->icq_sp->next_vpa = cpu_to_le32(ASC_CQ_STOPPER); in AdvInitAsc38C0800Driver()
5418 AdvWriteDWordLramNoSwap(iop_base, ASC_MC_ICQ, asc_dvc->icq_sp->carr_pa); in AdvInitAsc38C0800Driver()
5423 if ((asc_dvc->irq_sp = asc_dvc->carr_freelist) == NULL) { in AdvInitAsc38C0800Driver()
5424 asc_dvc->err_code |= ASC_IERR_NO_CARRIER; in AdvInitAsc38C0800Driver()
5427 asc_dvc->carr_freelist = (ADV_CARR_T *) in AdvInitAsc38C0800Driver()
5428 ADV_U32_TO_VADDR(le32_to_cpu(asc_dvc->irq_sp->next_vpa)); in AdvInitAsc38C0800Driver()
5437 asc_dvc->irq_sp->next_vpa = cpu_to_le32(ASC_CQ_STOPPER); in AdvInitAsc38C0800Driver()
5444 AdvWriteDWordLramNoSwap(iop_base, ASC_MC_IRQ, asc_dvc->irq_sp->carr_pa); in AdvInitAsc38C0800Driver()
5445 asc_dvc->carr_pending_cnt = 0; in AdvInitAsc38C0800Driver()
5462 if (asc_dvc->bios_ctrl & BIOS_CTRL_RESET_SCSI_BUS) { in AdvInitAsc38C0800Driver()
5483 if (AdvResetSB(asc_dvc) != ADV_TRUE) { in AdvInitAsc38C0800Driver()
5502 static int AdvInitAsc38C1600Driver(ADV_DVC_VAR *asc_dvc) in AdvInitAsc38C1600Driver() argument
5523 if (asc_dvc->err_code != 0) { in AdvInitAsc38C1600Driver()
5530 if (asc_dvc->chip_type != ADV_CHIP_ASC38C1600) { in AdvInitAsc38C1600Driver()
5531 asc_dvc->err_code = ASC_IERR_BAD_CHIPTYPE; in AdvInitAsc38C1600Driver()
5536 iop_base = asc_dvc->iop_base; in AdvInitAsc38C1600Driver()
5598 asc_dvc->err_code = ASC_IERR_BIST_PRE_TEST; in AdvInitAsc38C1600Driver()
5606 asc_dvc->err_code = ASC_IERR_BIST_PRE_TEST; in AdvInitAsc38C1600Driver()
5624 asc_dvc->bist_err_code = byte; /* for BIOS display message */ in AdvInitAsc38C1600Driver()
5625 asc_dvc->err_code = ASC_IERR_BIST_RAM_TEST; in AdvInitAsc38C1600Driver()
5632 err = request_firmware(&fw, fwname, asc_dvc->drv_ptr->dev); in AdvInitAsc38C1600Driver()
5636 asc_dvc->err_code = ASC_IERR_MCODE_CHKSUM; in AdvInitAsc38C1600Driver()
5643 asc_dvc->err_code = ASC_IERR_MCODE_CHKSUM; in AdvInitAsc38C1600Driver()
5648 asc_dvc->err_code = AdvLoadMicrocode(iop_base, &fw->data[4], in AdvInitAsc38C1600Driver()
5652 if (asc_dvc->err_code) in AdvInitAsc38C1600Driver()
5680 asc_dvc->cfg->mcode_date); in AdvInitAsc38C1600Driver()
5682 asc_dvc->cfg->mcode_version); in AdvInitAsc38C1600Driver()
5707 if (asc_dvc->cfg->control_flag & CONTROL_FLAG_IGNORE_PERR) { in AdvInitAsc38C1600Driver()
5719 if ((asc_dvc->bios_ctrl & BIOS_CTRL_AIPP_DIS) == 0) { in AdvInitAsc38C1600Driver()
5744 if ((asc_dvc->bios_ctrl & BIOS_CTRL_RESET_SCSI_BUS) == 0) { in AdvInitAsc38C1600Driver()
5746 asc_dvc->wdtr_able); in AdvInitAsc38C1600Driver()
5748 asc_dvc->sdtr_able); in AdvInitAsc38C1600Driver()
5761 asc_dvc->cfg->disc_enable); in AdvInitAsc38C1600Driver()
5762 AdvWriteWordLram(iop_base, ASC_MC_SDTR_SPEED1, asc_dvc->sdtr_speed1); in AdvInitAsc38C1600Driver()
5763 AdvWriteWordLram(iop_base, ASC_MC_SDTR_SPEED2, asc_dvc->sdtr_speed2); in AdvInitAsc38C1600Driver()
5764 AdvWriteWordLram(iop_base, ASC_MC_SDTR_SPEED3, asc_dvc->sdtr_speed3); in AdvInitAsc38C1600Driver()
5765 AdvWriteWordLram(iop_base, ASC_MC_SDTR_SPEED4, asc_dvc->sdtr_speed4); in AdvInitAsc38C1600Driver()
5775 asc_dvc->chip_scsi_id); in AdvInitAsc38C1600Driver()
5794 asc_dvc->err_code |= ASC_IERR_REVERSED_CABLE; in AdvInitAsc38C1600Driver()
5807 asc_dvc->err_code |= ASC_IERR_HVD_DEVICE; in AdvInitAsc38C1600Driver()
5824 if ((asc_dvc->cfg->termination & TERM_SE) == 0) { in AdvInitAsc38C1600Driver()
5825 struct pci_dev *pdev = adv_dvc_to_pdev(asc_dvc); in AdvInitAsc38C1600Driver()
5832 asc_dvc->cfg->termination |= TERM_SE; in AdvInitAsc38C1600Driver()
5840 asc_dvc->cfg->termination |= TERM_SE_HI; in AdvInitAsc38C1600Driver()
5854 scsi_cfg1 |= (~asc_dvc->cfg->termination & TERM_SE); in AdvInitAsc38C1600Driver()
5905 ADV_TID_TO_TIDMASK(asc_dvc->chip_scsi_id)); in AdvInitAsc38C1600Driver()
5907 AdvBuildCarrierFreelist(asc_dvc); in AdvInitAsc38C1600Driver()
5912 if ((asc_dvc->icq_sp = asc_dvc->carr_freelist) == NULL) { in AdvInitAsc38C1600Driver()
5913 asc_dvc->err_code |= ASC_IERR_NO_CARRIER; in AdvInitAsc38C1600Driver()
5916 asc_dvc->carr_freelist = (ADV_CARR_T *) in AdvInitAsc38C1600Driver()
5917 ADV_U32_TO_VADDR(le32_to_cpu(asc_dvc->icq_sp->next_vpa)); in AdvInitAsc38C1600Driver()
5922 asc_dvc->icq_sp->next_vpa = cpu_to_le32(ASC_CQ_STOPPER); in AdvInitAsc38C1600Driver()
5929 AdvWriteDWordLramNoSwap(iop_base, ASC_MC_ICQ, asc_dvc->icq_sp->carr_pa); in AdvInitAsc38C1600Driver()
5931 le32_to_cpu(asc_dvc->icq_sp->carr_pa)); in AdvInitAsc38C1600Driver()
5936 if ((asc_dvc->irq_sp = asc_dvc->carr_freelist) == NULL) { in AdvInitAsc38C1600Driver()
5937 asc_dvc->err_code |= ASC_IERR_NO_CARRIER; in AdvInitAsc38C1600Driver()
5940 asc_dvc->carr_freelist = (ADV_CARR_T *) in AdvInitAsc38C1600Driver()
5941 ADV_U32_TO_VADDR(le32_to_cpu(asc_dvc->irq_sp->next_vpa)); in AdvInitAsc38C1600Driver()
5950 asc_dvc->irq_sp->next_vpa = cpu_to_le32(ASC_CQ_STOPPER); in AdvInitAsc38C1600Driver()
5955 AdvWriteDWordLramNoSwap(iop_base, ASC_MC_IRQ, asc_dvc->irq_sp->carr_pa); in AdvInitAsc38C1600Driver()
5956 asc_dvc->carr_pending_cnt = 0; in AdvInitAsc38C1600Driver()
5972 if (asc_dvc->bios_ctrl & BIOS_CTRL_RESET_SCSI_BUS) { in AdvInitAsc38C1600Driver()
5993 if (AdvResetSB(asc_dvc) != ADV_TRUE) { in AdvInitAsc38C1600Driver()
6009 static int AdvResetChipAndSB(ADV_DVC_VAR *asc_dvc) in AdvResetChipAndSB() argument
6018 iop_base = asc_dvc->iop_base; in AdvResetChipAndSB()
6025 if (asc_dvc->chip_type == ADV_CHIP_ASC38C1600) { in AdvResetChipAndSB()
6056 asc_dvc->err_code = 0; in AdvResetChipAndSB()
6057 if (asc_dvc->chip_type == ADV_CHIP_ASC38C1600) { in AdvResetChipAndSB()
6058 status = AdvInitAsc38C1600Driver(asc_dvc); in AdvResetChipAndSB()
6059 } else if (asc_dvc->chip_type == ADV_CHIP_ASC38C0800) { in AdvResetChipAndSB()
6060 status = AdvInitAsc38C0800Driver(asc_dvc); in AdvResetChipAndSB()
6062 status = AdvInitAsc3550Driver(asc_dvc); in AdvResetChipAndSB()
6082 if (asc_dvc->chip_type == ADV_CHIP_ASC38C1600) { in AdvResetChipAndSB()
6309 static int AdvISR(ADV_DVC_VAR *asc_dvc) in AdvISR() argument
6318 iop_base = asc_dvc->iop_base; in AdvISR()
6338 if (asc_dvc->chip_type == ADV_CHIP_ASC3550 || in AdvISR()
6339 asc_dvc->chip_type == ADV_CHIP_ASC38C0800) { in AdvISR()
6341 asc_dvc->carr_pending_cnt != 0) { in AdvISR()
6344 if (asc_dvc->chip_type == ADV_CHIP_ASC3550) { in AdvISR()
6352 adv_async_callback(asc_dvc, intrb_code); in AdvISR()
6359 le32_to_cpu(asc_dvc->irq_sp->next_vpa)) & ASC_RQ_DONE) != 0) { in AdvISR()
6370 ADV_U32_TO_VADDR(le32_to_cpu(asc_dvc->irq_sp->areq_vpa)); in AdvISR()
6388 free_carrp = asc_dvc->irq_sp; in AdvISR()
6389 asc_dvc->irq_sp = (ADV_CARR_T *) in AdvISR()
6393 cpu_to_le32(ADV_VADDR_TO_U32(asc_dvc->carr_freelist)); in AdvISR()
6394 asc_dvc->carr_freelist = free_carrp; in AdvISR()
6395 asc_dvc->carr_pending_cnt--; in AdvISR()
6409 adv_isr_callback(asc_dvc, scsiq); in AdvISR()
6421 static int AscSetLibErrorCode(ASC_DVC_VAR *asc_dvc, ushort err_code) in AscSetLibErrorCode() argument
6423 if (asc_dvc->err_code == 0) { in AscSetLibErrorCode()
6424 asc_dvc->err_code = err_code; in AscSetLibErrorCode()
6425 AscWriteLramWord(asc_dvc->iop_base, ASCV_ASCDVC_ERR_CODE_W, in AscSetLibErrorCode()
6460 static uchar AscGetSynPeriodIndex(ASC_DVC_VAR *asc_dvc, uchar syn_time) in AscGetSynPeriodIndex() argument
6467 period_table = asc_dvc->sdtr_period_tbl; in AscGetSynPeriodIndex()
6468 max_index = (int)asc_dvc->max_sdtr_index; in AscGetSynPeriodIndex()
6469 min_index = (int)asc_dvc->min_sdtr_index; in AscGetSynPeriodIndex()
6483 AscMsgOutSDTR(ASC_DVC_VAR *asc_dvc, uchar sdtr_period, uchar sdtr_offset) in AscMsgOutSDTR() argument
6489 iop_base = asc_dvc->iop_base; in AscMsgOutSDTR()
6496 sdtr_period_index = AscGetSynPeriodIndex(asc_dvc, sdtr_period); in AscMsgOutSDTR()
6497 if (sdtr_period_index <= asc_dvc->max_sdtr_index) { in AscMsgOutSDTR()
6512 AscCalSDTRData(ASC_DVC_VAR *asc_dvc, uchar sdtr_period, uchar syn_offset) in AscCalSDTRData() argument
6517 sdtr_period_ix = AscGetSynPeriodIndex(asc_dvc, sdtr_period); in AscCalSDTRData()
6518 if (sdtr_period_ix > asc_dvc->max_sdtr_index) in AscCalSDTRData()
6559 static int AscIsrChipHalted(ASC_DVC_VAR *asc_dvc) in AscIsrChipHalted() argument
6580 BUG_ON(!asc_dvc->drv_ptr); in AscIsrChipHalted()
6581 boardp = asc_dvc->drv_ptr; in AscIsrChipHalted()
6583 iop_base = asc_dvc->iop_base; in AscIsrChipHalted()
6595 if (asc_dvc->pci_fix_asyn_xfer & target_id) { in AscIsrChipHalted()
6601 if (asc_dvc->pci_fix_asyn_xfer & target_id) { in AscIsrChipHalted()
6608 if (asc_dvc->pci_fix_asyn_xfer & target_id) { in AscIsrChipHalted()
6630 asc_dvc->sdtr_period_tbl[asc_dvc->min_sdtr_index]) in AscIsrChipHalted()
6632 asc_dvc->sdtr_period_tbl[asc_dvc-> in AscIsrChipHalted()
6636 asc_dvc->sdtr_period_tbl[asc_dvc-> in AscIsrChipHalted()
6641 AscCalSDTRData(asc_dvc, ext_msg.xfer_period, in AscIsrChipHalted()
6646 asc_dvc->init_sdtr &= ~target_id; in AscIsrChipHalted()
6647 asc_dvc->sdtr_done &= ~target_id; in AscIsrChipHalted()
6656 asc_dvc->init_sdtr &= ~target_id; in AscIsrChipHalted()
6657 asc_dvc->sdtr_done &= ~target_id; in AscIsrChipHalted()
6662 asc_dvc->sdtr_done |= target_id; in AscIsrChipHalted()
6663 asc_dvc->init_sdtr |= target_id; in AscIsrChipHalted()
6664 asc_dvc->pci_fix_asyn_xfer &= in AscIsrChipHalted()
6667 AscCalSDTRData(asc_dvc, in AscIsrChipHalted()
6676 AscMsgOutSDTR(asc_dvc, in AscIsrChipHalted()
6679 asc_dvc->pci_fix_asyn_xfer &= in AscIsrChipHalted()
6682 AscCalSDTRData(asc_dvc, in AscIsrChipHalted()
6689 asc_dvc->sdtr_done |= target_id; in AscIsrChipHalted()
6690 asc_dvc->init_sdtr |= target_id; in AscIsrChipHalted()
6735 if ((asc_dvc->init_sdtr & target_id) != 0) { in AscIsrChipHalted()
6737 asc_dvc->sdtr_done &= ~target_id; in AscIsrChipHalted()
6741 AscMsgOutSDTR(asc_dvc, in AscIsrChipHalted()
6742 asc_dvc-> in AscIsrChipHalted()
6744 (uchar)(asc_dvc-> in AscIsrChipHalted()
6759 if ((asc_dvc->pci_fix_asyn_xfer & target_id) in AscIsrChipHalted()
6760 && !(asc_dvc->pci_fix_asyn_xfer_always & target_id) in AscIsrChipHalted()
6798 asc_dvc->init_sdtr &= ~target_id; in AscIsrChipHalted()
6799 asc_dvc->sdtr_done &= ~target_id; in AscIsrChipHalted()
6819 if ((cur_dvc_qng > 0) && (asc_dvc->cur_dvc_qng[tid_no] > 0)) { in AscIsrChipHalted()
6826 asc_dvc->queue_full_or_busy |= target_id; in AscIsrChipHalted()
6831 asc_dvc->max_dvc_qng[tid_no] = in AscIsrChipHalted()
7206 static int AscIsrQDone(ASC_DVC_VAR *asc_dvc) in AscIsrQDone() argument
7225 iop_base = asc_dvc->iop_base; in AscIsrQDone()
7236 asc_dvc->max_dma_count); in AscIsrQDone()
7255 AscSetLibErrorCode(asc_dvc, in AscIsrQDone()
7270 if (asc_dvc->queue_full_or_busy & target_id) { in AscIsrQDone()
7277 if (cur_target_qng < asc_dvc->max_dvc_qng[tid_no]) { in AscIsrQDone()
7284 asc_dvc->queue_full_or_busy &= ~target_id; in AscIsrQDone()
7287 if (asc_dvc->cur_total_qng >= n_q_used) { in AscIsrQDone()
7288 asc_dvc->cur_total_qng -= n_q_used; in AscIsrQDone()
7289 if (asc_dvc->cur_dvc_qng[tid_no] != 0) { in AscIsrQDone()
7290 asc_dvc->cur_dvc_qng[tid_no]--; in AscIsrQDone()
7293 AscSetLibErrorCode(asc_dvc, ASCQ_ERR_CUR_QNG); in AscIsrQDone()
7337 asc_isr_callback(asc_dvc, scsiq); in AscIsrQDone()
7343 asc_dvc->unit_not_ready &= ~target_id; in AscIsrQDone()
7345 asc_dvc->start_motor &= in AscIsrQDone()
7352 AscSetLibErrorCode(asc_dvc, ASCQ_ERR_Q_STATUS); in AscIsrQDone()
7355 asc_isr_callback(asc_dvc, scsiq); in AscIsrQDone()
7363 static int AscISR(ASC_DVC_VAR *asc_dvc) in AscISR() argument
7374 iop_base = asc_dvc->iop_base; in AscISR()
7380 if ((asc_dvc->init_state & ASC_INIT_STATE_END_LOAD_MC) == 0) { in AscISR()
7383 if (asc_dvc->in_critical_cnt != 0) { in AscISR()
7384 AscSetLibErrorCode(asc_dvc, ASCQ_ERR_ISR_ON_CRITICAL); in AscISR()
7387 if (asc_dvc->is_in_int) { in AscISR()
7388 AscSetLibErrorCode(asc_dvc, ASCQ_ERR_ISR_RE_ENTRY); in AscISR()
7391 asc_dvc->is_in_int = TRUE; in AscISR()
7397 if (!(asc_dvc->bus_type & (ASC_IS_VL | ASC_IS_EISA))) { in AscISR()
7400 asc_dvc->sdtr_done = 0; in AscISR()
7423 if (AscIsrChipHalted(asc_dvc) == ERR) { in AscISR()
7430 if ((asc_dvc->dvc_cntl & ASC_CNTL_INT_MULTI_Q) != 0) { in AscISR()
7432 AscIsrQDone(asc_dvc)) & 0x01) != 0) { in AscISR()
7437 AscIsrQDone(asc_dvc)) == 1) { in AscISR()
7449 asc_dvc->is_in_int = FALSE; in AscISR()
7477 ASC_DVC_VAR *asc_dvc = &boardp->dvc_var.asc_dvc_var; in advansys_reset() local
7481 status = AscInitAsc1000Driver(asc_dvc); in advansys_reset()
7484 if (asc_dvc->err_code || !asc_dvc->overrun_dma) { in advansys_reset()
7486 "0x%x, status: 0x%x\n", asc_dvc->err_code, in advansys_reset()
7644 static void AscAsyncFix(ASC_DVC_VAR *asc_dvc, struct scsi_device *sdev) in AscAsyncFix() argument
7649 if (!(asc_dvc->bug_fix_cntl & ASC_BUG_FIX_ASYN_USE_SYN)) in AscAsyncFix()
7651 if (asc_dvc->init_sdtr & tid_bits) in AscAsyncFix()
7655 asc_dvc->pci_fix_asyn_xfer_always |= tid_bits; in AscAsyncFix()
7657 asc_dvc->pci_fix_asyn_xfer |= tid_bits; in AscAsyncFix()
7660 asc_dvc->pci_fix_asyn_xfer &= ~tid_bits; in AscAsyncFix()
7662 if (asc_dvc->pci_fix_asyn_xfer & tid_bits) in AscAsyncFix()
7663 AscSetRunChipSynRegAtID(asc_dvc->iop_base, sdev->id, in AscAsyncFix()
7668 advansys_narrow_slave_configure(struct scsi_device *sdev, ASC_DVC_VAR *asc_dvc) in advansys_narrow_slave_configure() argument
7671 ASC_SCSI_BIT_ID_TYPE orig_use_tagged_qng = asc_dvc->use_tagged_qng; in advansys_narrow_slave_configure()
7674 ASC_SCSI_BIT_ID_TYPE orig_init_sdtr = asc_dvc->init_sdtr; in advansys_narrow_slave_configure()
7675 if ((asc_dvc->cfg->sdtr_enable & tid_bit) && sdev->sdtr) { in advansys_narrow_slave_configure()
7676 asc_dvc->init_sdtr |= tid_bit; in advansys_narrow_slave_configure()
7678 asc_dvc->init_sdtr &= ~tid_bit; in advansys_narrow_slave_configure()
7681 if (orig_init_sdtr != asc_dvc->init_sdtr) in advansys_narrow_slave_configure()
7682 AscAsyncFix(asc_dvc, sdev); in advansys_narrow_slave_configure()
7686 if (asc_dvc->cfg->cmd_qng_enabled & tid_bit) { in advansys_narrow_slave_configure()
7688 asc_dvc->cfg->can_tagged_qng |= tid_bit; in advansys_narrow_slave_configure()
7689 asc_dvc->use_tagged_qng |= tid_bit; in advansys_narrow_slave_configure()
7692 asc_dvc->max_dvc_qng[sdev->id]); in advansys_narrow_slave_configure()
7696 asc_dvc->cfg->can_tagged_qng &= ~tid_bit; in advansys_narrow_slave_configure()
7697 asc_dvc->use_tagged_qng &= ~tid_bit; in advansys_narrow_slave_configure()
7702 (orig_use_tagged_qng != asc_dvc->use_tagged_qng)) { in advansys_narrow_slave_configure()
7703 AscWriteLramByte(asc_dvc->iop_base, ASCV_DISC_ENABLE_B, in advansys_narrow_slave_configure()
7704 asc_dvc->cfg->disc_enable); in advansys_narrow_slave_configure()
7705 AscWriteLramByte(asc_dvc->iop_base, ASCV_USE_TAGGED_QNG_B, in advansys_narrow_slave_configure()
7706 asc_dvc->use_tagged_qng); in advansys_narrow_slave_configure()
7707 AscWriteLramByte(asc_dvc->iop_base, ASCV_CAN_TAGGED_QNG_B, in advansys_narrow_slave_configure()
7708 asc_dvc->cfg->can_tagged_qng); in advansys_narrow_slave_configure()
7710 asc_dvc->max_dvc_qng[sdev->id] = in advansys_narrow_slave_configure()
7711 asc_dvc->cfg->max_tag_qng[sdev->id]; in advansys_narrow_slave_configure()
7712 AscWriteLramByte(asc_dvc->iop_base, in advansys_narrow_slave_configure()
7714 asc_dvc->max_dvc_qng[sdev->id]); in advansys_narrow_slave_configure()
7867 struct asc_dvc_var *asc_dvc = &boardp->dvc_var.asc_dvc_var; in asc_build_req() local
7875 asc_scsi_q->q2.srb_ptr = advansys_ptr_to_srb(asc_dvc, scp); in asc_build_req()
7904 if ((asc_dvc->cur_dvc_qng[scp->device->id] > 0) && in asc_build_req()
8220 AscGetNumOfFreeQueue(ASC_DVC_VAR *asc_dvc, uchar target_ix, uchar n_qs) in AscGetNumOfFreeQueue() argument
8229 if ((asc_dvc->unit_not_ready & target_id) || in AscGetNumOfFreeQueue()
8230 (asc_dvc->queue_full_or_busy & target_id)) { in AscGetNumOfFreeQueue()
8234 cur_used_qs = (uint) asc_dvc->cur_total_qng + in AscGetNumOfFreeQueue()
8235 (uint) asc_dvc->last_q_shortage + (uint) ASC_MIN_FREE_Q; in AscGetNumOfFreeQueue()
8237 cur_used_qs = (uint) asc_dvc->cur_total_qng + in AscGetNumOfFreeQueue()
8240 if ((uint) (cur_used_qs + n_qs) <= (uint) asc_dvc->max_total_qng) { in AscGetNumOfFreeQueue()
8241 cur_free_qs = (uint) asc_dvc->max_total_qng - cur_used_qs; in AscGetNumOfFreeQueue()
8242 if (asc_dvc->cur_dvc_qng[tid_no] >= in AscGetNumOfFreeQueue()
8243 asc_dvc->max_dvc_qng[tid_no]) { in AscGetNumOfFreeQueue()
8249 if ((n_qs > asc_dvc->last_q_shortage) in AscGetNumOfFreeQueue()
8250 && (n_qs <= (asc_dvc->max_total_qng - ASC_MIN_FREE_Q))) { in AscGetNumOfFreeQueue()
8251 asc_dvc->last_q_shortage = n_qs; in AscGetNumOfFreeQueue()
8312 static int AscPutReadyQueue(ASC_DVC_VAR *asc_dvc, ASC_SCSI_Q *scsiq, uchar q_no) in AscPutReadyQueue() argument
8321 iop_base = asc_dvc->iop_base; in AscPutReadyQueue()
8322 if (((asc_dvc->init_sdtr & scsiq->q1.target_id) != 0) && in AscPutReadyQueue()
8323 ((asc_dvc->sdtr_done & scsiq->q1.target_id) == 0)) { in AscPutReadyQueue()
8327 (sdtr_data >> 4) & (asc_dvc->max_sdtr_index - 1); in AscPutReadyQueue()
8329 AscMsgOutSDTR(asc_dvc, in AscPutReadyQueue()
8330 asc_dvc->sdtr_period_tbl[syn_period_ix], in AscPutReadyQueue()
8335 if ((scsiq->q1.target_id & asc_dvc->use_tagged_qng) == 0) { in AscPutReadyQueue()
8355 AscPutReadySgListQueue(ASC_DVC_VAR *asc_dvc, ASC_SCSI_Q *scsiq, uchar q_no) in AscPutReadySgListQueue() argument
8370 iop_base = asc_dvc->iop_base; in AscPutReadySgListQueue()
8482 sta = AscPutReadyQueue(asc_dvc, scsiq, q_no); in AscPutReadySgListQueue()
8489 AscSendScsiQueue(ASC_DVC_VAR *asc_dvc, ASC_SCSI_Q *scsiq, uchar n_q_required) in AscSendScsiQueue() argument
8498 iop_base = asc_dvc->iop_base; in AscSendScsiQueue()
8507 asc_dvc->last_q_shortage = 0; in AscSendScsiQueue()
8510 sta = AscPutReadySgListQueue(asc_dvc, scsiq, in AscSendScsiQueue()
8517 sta = AscPutReadyQueue(asc_dvc, scsiq, free_q_head); in AscSendScsiQueue()
8522 asc_dvc->cur_total_qng += n_q_required; in AscSendScsiQueue()
8523 asc_dvc->cur_dvc_qng[tid_no]++; in AscSendScsiQueue()
8548 static int AscExeScsiQueue(ASC_DVC_VAR *asc_dvc, ASC_SCSI_Q *scsiq) in AscExeScsiQueue() argument
8567 iop_base = asc_dvc->iop_base; in AscExeScsiQueue()
8569 if (asc_dvc->err_code != 0) in AscExeScsiQueue()
8580 if ((asc_dvc->init_sdtr & scsiq->q1.target_id) != 0) { in AscExeScsiQueue()
8581 asc_dvc->sdtr_done &= ~scsiq->q1.target_id; in AscExeScsiQueue()
8583 AscMsgOutSDTR(asc_dvc, in AscExeScsiQueue()
8584 asc_dvc-> in AscExeScsiQueue()
8586 (uchar)(asc_dvc-> in AscExeScsiQueue()
8594 if (asc_dvc->in_critical_cnt != 0) { in AscExeScsiQueue()
8595 AscSetLibErrorCode(asc_dvc, ASCQ_ERR_CRITICAL_RE_ENTRY); in AscExeScsiQueue()
8598 asc_dvc->in_critical_cnt++; in AscExeScsiQueue()
8601 asc_dvc->in_critical_cnt--; in AscExeScsiQueue()
8606 asc_dvc->in_critical_cnt--; in AscExeScsiQueue()
8621 if ((asc_dvc->pci_fix_asyn_xfer & scsiq->q1.target_id) && in AscExeScsiQueue()
8622 !(asc_dvc->pci_fix_asyn_xfer_always & scsiq->q1.target_id)) { in AscExeScsiQueue()
8661 if (asc_dvc->bug_fix_cntl) { in AscExeScsiQueue()
8662 if (asc_dvc->bug_fix_cntl & ASC_BUG_FIX_IF_NOT_DWB) { in AscExeScsiQueue()
8714 if ((AscGetNumOfFreeQueue(asc_dvc, target_ix, n_q_required) >= in AscExeScsiQueue()
8718 AscSendScsiQueue(asc_dvc, scsiq, in AscExeScsiQueue()
8720 asc_dvc->in_critical_cnt--; in AscExeScsiQueue()
8725 if (asc_dvc->bug_fix_cntl) { in AscExeScsiQueue()
8726 if (asc_dvc->bug_fix_cntl & ASC_BUG_FIX_IF_NOT_DWB) { in AscExeScsiQueue()
8760 if ((AscGetNumOfFreeQueue(asc_dvc, target_ix, 1) >= 1) || in AscExeScsiQueue()
8762 if ((sta = AscSendScsiQueue(asc_dvc, scsiq, in AscExeScsiQueue()
8764 asc_dvc->in_critical_cnt--; in AscExeScsiQueue()
8769 asc_dvc->in_critical_cnt--; in AscExeScsiQueue()
8794 static int AdvExeScsiQueue(ADV_DVC_VAR *asc_dvc, ADV_SCSI_REQ_Q *scsiq) in AdvExeScsiQueue() argument
8809 iop_base = asc_dvc->iop_base; in AdvExeScsiQueue()
8815 if ((new_carrp = asc_dvc->carr_freelist) == NULL) { in AdvExeScsiQueue()
8818 asc_dvc->carr_freelist = (ADV_CARR_T *) in AdvExeScsiQueue()
8820 asc_dvc->carr_pending_cnt++; in AdvExeScsiQueue()
8843 scsiq->carr_va = cpu_to_le32(ADV_VADDR_TO_U32(asc_dvc->icq_sp)); in AdvExeScsiQueue()
8848 scsiq->carr_pa = asc_dvc->icq_sp->carr_pa; in AdvExeScsiQueue()
8855 asc_dvc->icq_sp->areq_vpa = req_paddr; in AdvExeScsiQueue()
8862 asc_dvc->icq_sp->next_vpa = new_carrp->carr_pa; in AdvExeScsiQueue()
8867 asc_dvc->icq_sp = new_carrp; in AdvExeScsiQueue()
8869 if (asc_dvc->chip_type == ADV_CHIP_ASC3550 || in AdvExeScsiQueue()
8870 asc_dvc->chip_type == ADV_CHIP_ASC38C0800) { in AdvExeScsiQueue()
8875 if (asc_dvc->chip_type == ADV_CHIP_ASC3550) { in AdvExeScsiQueue()
8884 } else if (asc_dvc->chip_type == ADV_CHIP_ASC38C1600) { in AdvExeScsiQueue()
8907 ASC_DVC_VAR *asc_dvc = &boardp->dvc_var.asc_dvc_var; in asc_execute_scsi_cmnd() local
8917 ret = AscExeScsiQueue(asc_dvc, &asc_scsi_q); in asc_execute_scsi_cmnd()
8919 err_code = asc_dvc->err_code; in asc_execute_scsi_cmnd()
9186 static ushort AscInitAscDvcVar(ASC_DVC_VAR *asc_dvc) in AscInitAscDvcVar() argument
9193 iop_base = asc_dvc->iop_base; in AscInitAscDvcVar()
9195 asc_dvc->err_code = 0; in AscInitAscDvcVar()
9196 if ((asc_dvc->bus_type & in AscInitAscDvcVar()
9198 asc_dvc->err_code |= ASC_IERR_NO_BUS_TYPE; in AscInitAscDvcVar()
9202 asc_dvc->bug_fix_cntl = 0; in AscInitAscDvcVar()
9203 asc_dvc->pci_fix_asyn_xfer = 0; in AscInitAscDvcVar()
9204 asc_dvc->pci_fix_asyn_xfer_always = 0; in AscInitAscDvcVar()
9206 asc_dvc->sdtr_done = 0; in AscInitAscDvcVar()
9207 asc_dvc->cur_total_qng = 0; in AscInitAscDvcVar()
9208 asc_dvc->is_in_int = 0; in AscInitAscDvcVar()
9209 asc_dvc->in_critical_cnt = 0; in AscInitAscDvcVar()
9210 asc_dvc->last_q_shortage = 0; in AscInitAscDvcVar()
9211 asc_dvc->use_tagged_qng = 0; in AscInitAscDvcVar()
9212 asc_dvc->no_scam = 0; in AscInitAscDvcVar()
9213 asc_dvc->unit_not_ready = 0; in AscInitAscDvcVar()
9214 asc_dvc->queue_full_or_busy = 0; in AscInitAscDvcVar()
9215 asc_dvc->redo_scam = 0; in AscInitAscDvcVar()
9216 asc_dvc->res2 = 0; in AscInitAscDvcVar()
9217 asc_dvc->min_sdtr_index = 0; in AscInitAscDvcVar()
9218 asc_dvc->cfg->can_tagged_qng = 0; in AscInitAscDvcVar()
9219 asc_dvc->cfg->cmd_qng_enabled = 0; in AscInitAscDvcVar()
9220 asc_dvc->dvc_cntl = ASC_DEF_DVC_CNTL; in AscInitAscDvcVar()
9221 asc_dvc->init_sdtr = 0; in AscInitAscDvcVar()
9222 asc_dvc->max_total_qng = ASC_DEF_MAX_TOTAL_QNG; in AscInitAscDvcVar()
9223 asc_dvc->scsi_reset_wait = 3; in AscInitAscDvcVar()
9224 asc_dvc->start_motor = ASC_SCSI_WIDTH_BIT_SET; in AscInitAscDvcVar()
9225 asc_dvc->max_dma_count = AscGetMaxDmaCount(asc_dvc->bus_type); in AscInitAscDvcVar()
9226 asc_dvc->cfg->sdtr_enable = ASC_SCSI_WIDTH_BIT_SET; in AscInitAscDvcVar()
9227 asc_dvc->cfg->disc_enable = ASC_SCSI_WIDTH_BIT_SET; in AscInitAscDvcVar()
9228 asc_dvc->cfg->chip_scsi_id = ASC_DEF_CHIP_SCSI_ID; in AscInitAscDvcVar()
9229 chip_version = AscGetChipVersion(iop_base, asc_dvc->bus_type); in AscInitAscDvcVar()
9230 asc_dvc->cfg->chip_version = chip_version; in AscInitAscDvcVar()
9231 asc_dvc->sdtr_period_tbl = asc_syn_xfer_period; in AscInitAscDvcVar()
9232 asc_dvc->max_sdtr_index = 7; in AscInitAscDvcVar()
9233 if ((asc_dvc->bus_type & ASC_IS_PCI) && in AscInitAscDvcVar()
9235 asc_dvc->bus_type = ASC_IS_PCI_ULTRA; in AscInitAscDvcVar()
9236 asc_dvc->sdtr_period_tbl = asc_syn_ultra_xfer_period; in AscInitAscDvcVar()
9237 asc_dvc->max_sdtr_index = 15; in AscInitAscDvcVar()
9247 if (asc_dvc->bus_type == ASC_IS_PCI) { in AscInitAscDvcVar()
9252 asc_dvc->cfg->isa_dma_speed = ASC_DEF_ISA_DMA_SPEED; in AscInitAscDvcVar()
9254 if ((asc_dvc->bus_type & ASC_IS_ISA) != 0) { in AscInitAscDvcVar()
9257 asc_dvc->bus_type = ASC_IS_ISAPNP; in AscInitAscDvcVar()
9259 asc_dvc->cfg->isa_dma_channel = in AscInitAscDvcVar()
9264 asc_dvc->cur_dvc_qng[i] = 0; in AscInitAscDvcVar()
9265 asc_dvc->max_dvc_qng[i] = ASC_MAX_SCSI1_QNG; in AscInitAscDvcVar()
9266 asc_dvc->scsiq_busy_head[i] = (ASC_SCSI_Q *)0L; in AscInitAscDvcVar()
9267 asc_dvc->scsiq_busy_tail[i] = (ASC_SCSI_Q *)0L; in AscInitAscDvcVar()
9268 asc_dvc->cfg->max_tag_qng[i] = ASC_MAX_INRAM_TAG_QNG; in AscInitAscDvcVar()
9355 static int AscTestExternalLram(ASC_DVC_VAR *asc_dvc) in AscTestExternalLram() argument
9362 iop_base = asc_dvc->iop_base; in AscTestExternalLram()
9536 static ushort AscInitFromEEP(ASC_DVC_VAR *asc_dvc) in AscInitFromEEP() argument
9547 iop_base = asc_dvc->iop_base; in AscInitFromEEP()
9553 asc_dvc->init_state |= ASC_INIT_RESET_SCSI_DONE; in AscInitFromEEP()
9554 AscResetChipAndScsiBus(asc_dvc); in AscInitFromEEP()
9555 mdelay(asc_dvc->scsi_reset_wait * 1000); /* XXX: msleep? */ in AscInitFromEEP()
9558 asc_dvc->err_code |= ASC_IERR_START_STOP_CHIP; in AscInitFromEEP()
9563 asc_dvc->err_code |= ASC_IERR_SET_PC_ADDR; in AscInitFromEEP()
9574 chksum = AscGetEEPConfig(iop_base, eep_config, asc_dvc->bus_type); in AscInitFromEEP()
9581 if (asc_dvc->cfg->chip_version == 3) { in AscInitFromEEP()
9598 if (AscGetChipVersion(iop_base, asc_dvc->bus_type) == in AscInitFromEEP()
9624 asc_dvc->cfg->sdtr_enable = eep_config->init_sdtr; in AscInitFromEEP()
9625 asc_dvc->cfg->disc_enable = eep_config->disc_enable; in AscInitFromEEP()
9626 asc_dvc->cfg->cmd_qng_enabled = eep_config->use_cmd_qng; in AscInitFromEEP()
9627 asc_dvc->cfg->isa_dma_speed = ASC_EEP_GET_DMA_SPD(eep_config); in AscInitFromEEP()
9628 asc_dvc->start_motor = eep_config->start_motor; in AscInitFromEEP()
9629 asc_dvc->dvc_cntl = eep_config->cntl; in AscInitFromEEP()
9630 asc_dvc->no_scam = eep_config->no_scam; in AscInitFromEEP()
9631 asc_dvc->cfg->adapter_info[0] = eep_config->adapter_info[0]; in AscInitFromEEP()
9632 asc_dvc->cfg->adapter_info[1] = eep_config->adapter_info[1]; in AscInitFromEEP()
9633 asc_dvc->cfg->adapter_info[2] = eep_config->adapter_info[2]; in AscInitFromEEP()
9634 asc_dvc->cfg->adapter_info[3] = eep_config->adapter_info[3]; in AscInitFromEEP()
9635 asc_dvc->cfg->adapter_info[4] = eep_config->adapter_info[4]; in AscInitFromEEP()
9636 asc_dvc->cfg->adapter_info[5] = eep_config->adapter_info[5]; in AscInitFromEEP()
9637 if (!AscTestExternalLram(asc_dvc)) { in AscInitFromEEP()
9638 if (((asc_dvc->bus_type & ASC_IS_PCI_ULTRA) == in AscInitFromEEP()
9665 asc_dvc->max_total_qng = eep_config->max_total_qng; in AscInitFromEEP()
9673 asc_dvc->cfg->chip_scsi_id = ASC_EEP_GET_CHIP_ID(eep_config); in AscInitFromEEP()
9674 if (((asc_dvc->bus_type & ASC_IS_PCI_ULTRA) == ASC_IS_PCI_ULTRA) && in AscInitFromEEP()
9675 !(asc_dvc->dvc_cntl & ASC_CNTL_SDTR_ENABLE_ULTRA)) { in AscInitFromEEP()
9676 asc_dvc->min_sdtr_index = ASC_SDTR_ULTRA_PCI_10MB_INDEX; in AscInitFromEEP()
9680 asc_dvc->dos_int13_table[i] = eep_config->dos_int13_table[i]; in AscInitFromEEP()
9681 asc_dvc->cfg->max_tag_qng[i] = eep_config->max_tag_qng; in AscInitFromEEP()
9682 asc_dvc->cfg->sdtr_period_offset[i] = in AscInitFromEEP()
9684 (asc_dvc->min_sdtr_index << 4)); in AscInitFromEEP()
9689 asc_dvc->bus_type)) != 0) { in AscInitFromEEP()
9704 ASC_DVC_VAR *asc_dvc = &board->dvc_var.asc_dvc_var; in AscInitGetConfig() local
9707 asc_dvc->init_state = ASC_INIT_STATE_BEG_GET_CFG; in AscInitGetConfig()
9708 if (asc_dvc->err_code != 0) in AscInitGetConfig()
9709 return asc_dvc->err_code; in AscInitGetConfig()
9711 if (AscFindSignature(asc_dvc->iop_base)) { in AscInitGetConfig()
9712 warn_code |= AscInitAscDvcVar(asc_dvc); in AscInitGetConfig()
9713 warn_code |= AscInitFromEEP(asc_dvc); in AscInitGetConfig()
9714 asc_dvc->init_state |= ASC_INIT_STATE_END_GET_CFG; in AscInitGetConfig()
9715 if (asc_dvc->scsi_reset_wait > ASC_MAX_SCSI_RESET_WAIT) in AscInitGetConfig()
9716 asc_dvc->scsi_reset_wait = ASC_MAX_SCSI_RESET_WAIT; in AscInitGetConfig()
9718 asc_dvc->err_code = ASC_IERR_BAD_SIGNATURE; in AscInitGetConfig()
9748 if (asc_dvc->err_code != 0) in AscInitGetConfig()
9750 "0x%x\n", asc_dvc->err_code, asc_dvc->init_state); in AscInitGetConfig()
9752 return asc_dvc->err_code; in AscInitGetConfig()
9758 ASC_DVC_VAR *asc_dvc = &board->dvc_var.asc_dvc_var; in AscInitSetConfig() local
9759 PortAddr iop_base = asc_dvc->iop_base; in AscInitSetConfig()
9763 asc_dvc->init_state |= ASC_INIT_STATE_BEG_SET_CFG; in AscInitSetConfig()
9764 if (asc_dvc->err_code != 0) in AscInitSetConfig()
9765 return asc_dvc->err_code; in AscInitSetConfig()
9766 if (!AscFindSignature(asc_dvc->iop_base)) { in AscInitSetConfig()
9767 asc_dvc->err_code = ASC_IERR_BAD_SIGNATURE; in AscInitSetConfig()
9768 return asc_dvc->err_code; in AscInitSetConfig()
9777 if ((asc_dvc->cfg->cmd_qng_enabled & asc_dvc->cfg->disc_enable) != in AscInitSetConfig()
9778 asc_dvc->cfg->cmd_qng_enabled) { in AscInitSetConfig()
9779 asc_dvc->cfg->disc_enable = asc_dvc->cfg->cmd_qng_enabled; in AscInitSetConfig()
9786 if (asc_dvc->bus_type & ASC_IS_PCI) { in AscInitSetConfig()
9789 if ((asc_dvc->bus_type & ASC_IS_PCI_ULTRA) == ASC_IS_PCI_ULTRA) { in AscInitSetConfig()
9793 asc_dvc->bug_fix_cntl |= ASC_BUG_FIX_IF_NOT_DWB; in AscInitSetConfig()
9794 asc_dvc->bug_fix_cntl |= in AscInitSetConfig()
9800 if (asc_dvc->bus_type == ASC_IS_ISAPNP) { in AscInitSetConfig()
9801 if (AscGetChipVersion(iop_base, asc_dvc->bus_type) in AscInitSetConfig()
9803 asc_dvc->bug_fix_cntl |= ASC_BUG_FIX_ASYN_USE_SYN; in AscInitSetConfig()
9806 if (AscSetChipScsiID(iop_base, asc_dvc->cfg->chip_scsi_id) != in AscInitSetConfig()
9807 asc_dvc->cfg->chip_scsi_id) { in AscInitSetConfig()
9808 asc_dvc->err_code |= ASC_IERR_SET_SCSI_ID; in AscInitSetConfig()
9811 if (asc_dvc->bus_type & ASC_IS_ISA) { in AscInitSetConfig()
9812 AscSetIsaDmaChannel(iop_base, asc_dvc->cfg->isa_dma_channel); in AscInitSetConfig()
9813 AscSetIsaDmaSpeed(iop_base, asc_dvc->cfg->isa_dma_speed); in AscInitSetConfig()
9817 asc_dvc->init_state |= ASC_INIT_STATE_END_SET_CFG; in AscInitSetConfig()
9846 if (asc_dvc->err_code != 0) in AscInitSetConfig()
9848 "0x%x\n", asc_dvc->err_code, asc_dvc->init_state); in AscInitSetConfig()
9850 return asc_dvc->err_code; in AscInitSetConfig()
10578 static int AdvInitFrom3550EEP(ADV_DVC_VAR *asc_dvc) in AdvInitFrom3550EEP() argument
10584 iop_base = asc_dvc->iop_base; in AdvInitFrom3550EEP()
10623 asc_dvc->wdtr_able = eep_config.wdtr_able; in AdvInitFrom3550EEP()
10624 asc_dvc->sdtr_able = eep_config.sdtr_able; in AdvInitFrom3550EEP()
10625 asc_dvc->ultra_able = eep_config.ultra_able; in AdvInitFrom3550EEP()
10626 asc_dvc->tagqng_able = eep_config.tagqng_able; in AdvInitFrom3550EEP()
10627 asc_dvc->cfg->disc_enable = eep_config.disc_enable; in AdvInitFrom3550EEP()
10628 asc_dvc->max_host_qng = eep_config.max_host_qng; in AdvInitFrom3550EEP()
10629 asc_dvc->max_dvc_qng = eep_config.max_dvc_qng; in AdvInitFrom3550EEP()
10630 asc_dvc->chip_scsi_id = (eep_config.adapter_scsi_id & ADV_MAX_TID); in AdvInitFrom3550EEP()
10631 asc_dvc->start_motor = eep_config.start_motor; in AdvInitFrom3550EEP()
10632 asc_dvc->scsi_reset_wait = eep_config.scsi_reset_delay; in AdvInitFrom3550EEP()
10633 asc_dvc->bios_ctrl = eep_config.bios_ctrl; in AdvInitFrom3550EEP()
10634 asc_dvc->no_scam = eep_config.scam_tolerant; in AdvInitFrom3550EEP()
10635 asc_dvc->cfg->serial1 = eep_config.serial_number_word1; in AdvInitFrom3550EEP()
10636 asc_dvc->cfg->serial2 = eep_config.serial_number_word2; in AdvInitFrom3550EEP()
10637 asc_dvc->cfg->serial3 = eep_config.serial_number_word3; in AdvInitFrom3550EEP()
10677 asc_dvc->max_host_qng = eep_config.max_host_qng; in AdvInitFrom3550EEP()
10678 asc_dvc->max_dvc_qng = eep_config.max_dvc_qng; in AdvInitFrom3550EEP()
10689 asc_dvc->cfg->termination = 0; /* auto termination */ in AdvInitFrom3550EEP()
10693 asc_dvc->cfg->termination = TERM_CTL_SEL; in AdvInitFrom3550EEP()
10697 asc_dvc->cfg->termination = TERM_CTL_SEL | TERM_CTL_H; in AdvInitFrom3550EEP()
10701 asc_dvc->cfg->termination = in AdvInitFrom3550EEP()
10708 asc_dvc->cfg->termination = 0; in AdvInitFrom3550EEP()
10728 static int AdvInitFrom38C0800EEP(ADV_DVC_VAR *asc_dvc) in AdvInitFrom38C0800EEP() argument
10736 iop_base = asc_dvc->iop_base; in AdvInitFrom38C0800EEP()
10776 asc_dvc->wdtr_able = eep_config.wdtr_able; in AdvInitFrom38C0800EEP()
10777 asc_dvc->sdtr_speed1 = eep_config.sdtr_speed1; in AdvInitFrom38C0800EEP()
10778 asc_dvc->sdtr_speed2 = eep_config.sdtr_speed2; in AdvInitFrom38C0800EEP()
10779 asc_dvc->sdtr_speed3 = eep_config.sdtr_speed3; in AdvInitFrom38C0800EEP()
10780 asc_dvc->sdtr_speed4 = eep_config.sdtr_speed4; in AdvInitFrom38C0800EEP()
10781 asc_dvc->tagqng_able = eep_config.tagqng_able; in AdvInitFrom38C0800EEP()
10782 asc_dvc->cfg->disc_enable = eep_config.disc_enable; in AdvInitFrom38C0800EEP()
10783 asc_dvc->max_host_qng = eep_config.max_host_qng; in AdvInitFrom38C0800EEP()
10784 asc_dvc->max_dvc_qng = eep_config.max_dvc_qng; in AdvInitFrom38C0800EEP()
10785 asc_dvc->chip_scsi_id = (eep_config.adapter_scsi_id & ADV_MAX_TID); in AdvInitFrom38C0800EEP()
10786 asc_dvc->start_motor = eep_config.start_motor; in AdvInitFrom38C0800EEP()
10787 asc_dvc->scsi_reset_wait = eep_config.scsi_reset_delay; in AdvInitFrom38C0800EEP()
10788 asc_dvc->bios_ctrl = eep_config.bios_ctrl; in AdvInitFrom38C0800EEP()
10789 asc_dvc->no_scam = eep_config.scam_tolerant; in AdvInitFrom38C0800EEP()
10790 asc_dvc->cfg->serial1 = eep_config.serial_number_word1; in AdvInitFrom38C0800EEP()
10791 asc_dvc->cfg->serial2 = eep_config.serial_number_word2; in AdvInitFrom38C0800EEP()
10792 asc_dvc->cfg->serial3 = eep_config.serial_number_word3; in AdvInitFrom38C0800EEP()
10798 asc_dvc->sdtr_able = 0; in AdvInitFrom38C0800EEP()
10801 sdtr_speed = asc_dvc->sdtr_speed1; in AdvInitFrom38C0800EEP()
10803 sdtr_speed = asc_dvc->sdtr_speed2; in AdvInitFrom38C0800EEP()
10805 sdtr_speed = asc_dvc->sdtr_speed3; in AdvInitFrom38C0800EEP()
10807 sdtr_speed = asc_dvc->sdtr_speed4; in AdvInitFrom38C0800EEP()
10810 asc_dvc->sdtr_able |= (1 << tid); in AdvInitFrom38C0800EEP()
10853 asc_dvc->max_host_qng = eep_config.max_host_qng; in AdvInitFrom38C0800EEP()
10854 asc_dvc->max_dvc_qng = eep_config.max_dvc_qng; in AdvInitFrom38C0800EEP()
10889 asc_dvc->cfg->termination = termination; /* auto termination for LVD */ in AdvInitFrom38C0800EEP()
10893 asc_dvc->cfg->termination = termination; in AdvInitFrom38C0800EEP()
10897 asc_dvc->cfg->termination = termination | TERM_LVD_HI; in AdvInitFrom38C0800EEP()
10901 asc_dvc->cfg->termination = termination | TERM_LVD; in AdvInitFrom38C0800EEP()
10907 asc_dvc->cfg->termination = termination; in AdvInitFrom38C0800EEP()
10927 static int AdvInitFrom38C1600EEP(ADV_DVC_VAR *asc_dvc) in AdvInitFrom38C1600EEP() argument
10935 iop_base = asc_dvc->iop_base; in AdvInitFrom38C1600EEP()
10946 struct pci_dev *pdev = adv_dvc_to_pdev(asc_dvc); in AdvInitFrom38C1600EEP()
11002 asc_dvc->wdtr_able = eep_config.wdtr_able; in AdvInitFrom38C1600EEP()
11003 asc_dvc->sdtr_speed1 = eep_config.sdtr_speed1; in AdvInitFrom38C1600EEP()
11004 asc_dvc->sdtr_speed2 = eep_config.sdtr_speed2; in AdvInitFrom38C1600EEP()
11005 asc_dvc->sdtr_speed3 = eep_config.sdtr_speed3; in AdvInitFrom38C1600EEP()
11006 asc_dvc->sdtr_speed4 = eep_config.sdtr_speed4; in AdvInitFrom38C1600EEP()
11007 asc_dvc->ppr_able = 0; in AdvInitFrom38C1600EEP()
11008 asc_dvc->tagqng_able = eep_config.tagqng_able; in AdvInitFrom38C1600EEP()
11009 asc_dvc->cfg->disc_enable = eep_config.disc_enable; in AdvInitFrom38C1600EEP()
11010 asc_dvc->max_host_qng = eep_config.max_host_qng; in AdvInitFrom38C1600EEP()
11011 asc_dvc->max_dvc_qng = eep_config.max_dvc_qng; in AdvInitFrom38C1600EEP()
11012 asc_dvc->chip_scsi_id = (eep_config.adapter_scsi_id & ASC_MAX_TID); in AdvInitFrom38C1600EEP()
11013 asc_dvc->start_motor = eep_config.start_motor; in AdvInitFrom38C1600EEP()
11014 asc_dvc->scsi_reset_wait = eep_config.scsi_reset_delay; in AdvInitFrom38C1600EEP()
11015 asc_dvc->bios_ctrl = eep_config.bios_ctrl; in AdvInitFrom38C1600EEP()
11016 asc_dvc->no_scam = eep_config.scam_tolerant; in AdvInitFrom38C1600EEP()
11022 asc_dvc->sdtr_able = 0; in AdvInitFrom38C1600EEP()
11025 sdtr_speed = asc_dvc->sdtr_speed1; in AdvInitFrom38C1600EEP()
11027 sdtr_speed = asc_dvc->sdtr_speed2; in AdvInitFrom38C1600EEP()
11029 sdtr_speed = asc_dvc->sdtr_speed3; in AdvInitFrom38C1600EEP()
11031 sdtr_speed = asc_dvc->sdtr_speed4; in AdvInitFrom38C1600EEP()
11034 asc_dvc->sdtr_able |= (1 << tid); in AdvInitFrom38C1600EEP()
11077 asc_dvc->max_host_qng = eep_config.max_host_qng; in AdvInitFrom38C1600EEP()
11078 asc_dvc->max_dvc_qng = eep_config.max_dvc_qng; in AdvInitFrom38C1600EEP()
11113 asc_dvc->cfg->termination = termination; /* auto termination for LVD */ in AdvInitFrom38C1600EEP()
11117 asc_dvc->cfg->termination = termination; in AdvInitFrom38C1600EEP()
11121 asc_dvc->cfg->termination = termination | TERM_LVD_HI; in AdvInitFrom38C1600EEP()
11125 asc_dvc->cfg->termination = termination | TERM_LVD; in AdvInitFrom38C1600EEP()
11131 asc_dvc->cfg->termination = termination; in AdvInitFrom38C1600EEP()
11150 ADV_DVC_VAR *asc_dvc = &board->dvc_var.adv_dvc_var; in AdvInitGetConfig() local
11152 AdvPortAddr iop_base = asc_dvc->iop_base; in AdvInitGetConfig()
11156 asc_dvc->err_code = 0; in AdvInitGetConfig()
11164 asc_dvc->cfg->control_flag = 0; in AdvInitGetConfig()
11167 asc_dvc->cfg->control_flag |= CONTROL_FLAG_IGNORE_PERR; in AdvInitGetConfig()
11169 asc_dvc->cfg->chip_version = in AdvInitGetConfig()
11170 AdvGetChipVersion(iop_base, asc_dvc->bus_type); in AdvInitGetConfig()
11184 asc_dvc->err_code = ASC_IERR_BAD_SIGNATURE; in AdvInitGetConfig()
11190 if (asc_dvc->chip_type != ADV_CHIP_ASC3550 && in AdvInitGetConfig()
11191 asc_dvc->chip_type != ADV_CHIP_ASC38C0800 && in AdvInitGetConfig()
11192 asc_dvc->chip_type != ADV_CHIP_ASC38C1600) { in AdvInitGetConfig()
11193 asc_dvc->err_code |= ASC_IERR_BAD_CHIPTYPE; in AdvInitGetConfig()
11206 if (asc_dvc->chip_type == ADV_CHIP_ASC38C1600) { in AdvInitGetConfig()
11207 status = AdvInitFrom38C1600EEP(asc_dvc); in AdvInitGetConfig()
11208 } else if (asc_dvc->chip_type == ADV_CHIP_ASC38C0800) { in AdvInitGetConfig()
11209 status = AdvInitFrom38C0800EEP(asc_dvc); in AdvInitGetConfig()
11211 status = AdvInitFrom3550EEP(asc_dvc); in AdvInitGetConfig()
11219 if (asc_dvc->err_code) in AdvInitGetConfig()
11221 asc_dvc->err_code); in AdvInitGetConfig()
11223 return asc_dvc->err_code; in AdvInitGetConfig()