Lines Matching refs:isp
486 struct ispsoftc *isp = &pcs->pci_isp; in isp_pci_attach() local
497 isp->isp_osinfo.dev = self; in isp_pci_attach()
524 isp->isp_nchan = 1; in isp_pci_attach()
542 isp->isp_mdvec = &mdvec; in isp_pci_attach()
543 isp->isp_type = ISP_HA_SCSI_UNKNOWN; in isp_pci_attach()
550 isp->isp_mdvec = &mdvec_1080; in isp_pci_attach()
551 isp->isp_type = ISP_HA_SCSI_1080; in isp_pci_attach()
558 isp->isp_mdvec = &mdvec_1080; in isp_pci_attach()
559 isp->isp_type = ISP_HA_SCSI_1240; in isp_pci_attach()
560 isp->isp_nchan++; in isp_pci_attach()
567 isp->isp_mdvec = &mdvec_1080; in isp_pci_attach()
568 isp->isp_type = ISP_HA_SCSI_1280; in isp_pci_attach()
569 isp->isp_nchan++; in isp_pci_attach()
578 isp->isp_mdvec = &mdvec_12160; in isp_pci_attach()
579 isp->isp_type = ISP_HA_SCSI_10160; in isp_pci_attach()
586 isp->isp_mdvec = &mdvec_12160; in isp_pci_attach()
587 isp->isp_type = ISP_HA_SCSI_12160; in isp_pci_attach()
588 isp->isp_nchan++; in isp_pci_attach()
597 isp->isp_mdvec = &mdvec_2100; in isp_pci_attach()
598 isp->isp_type = ISP_HA_FC_2100; in isp_pci_attach()
616 isp->isp_mdvec = &mdvec_2200; in isp_pci_attach()
617 isp->isp_type = ISP_HA_FC_2200; in isp_pci_attach()
628 isp->isp_mdvec = &mdvec_2300; in isp_pci_attach()
632 isp->isp_type = ISP_HA_FC_2300; in isp_pci_attach()
636 isp->isp_port = pa->pa_function; in isp_pci_attach()
638 isp->isp_type = ISP_HA_FC_2312; in isp_pci_attach()
648 isp->isp_mdvec = &mdvec_2322; in isp_pci_attach()
650 isp->isp_type = ISP_HA_FC_2322; in isp_pci_attach()
651 isp->isp_port = pa->pa_function; in isp_pci_attach()
661 isp->isp_mdvec = &mdvec_2400; in isp_pci_attach()
667 isp->isp_type = ISP_HA_FC_2400; in isp_pci_attach()
668 isp->isp_port = pa->pa_function; in isp_pci_attach()
675 isp->isp_mdvec = &mdvec_2500; in isp_pci_attach()
677 isp->isp_type = ISP_HA_FC_2500; in isp_pci_attach()
678 isp->isp_port = pa->pa_function; in isp_pci_attach()
689 isp->isp_param = malloc(mamt, M_DEVBUF, M_WAITOK | M_ZERO); in isp_pci_attach()
690 mamt = sizeof (struct scsipi_channel) * isp->isp_nchan; in isp_pci_attach()
691 isp->isp_osinfo.chan = malloc(mamt, M_DEVBUF, M_WAITOK | M_ZERO); in isp_pci_attach()
692 isp->isp_osinfo.adapter.adapt_nchannels = isp->isp_nchan; in isp_pci_attach()
698 isp->isp_dblev = ISP_LOGDEFAULT; in isp_pci_attach()
700 isp->isp_dblev = ISP_LOGWARN|ISP_LOGERR; in isp_pci_attach()
702 isp->isp_dblev |= ISP_LOGCONFIG|ISP_LOGINFO; in isp_pci_attach()
704 isp->isp_dblev |= ISP_LOGDEBUG0|ISP_LOGDEBUG1|ISP_LOGDEBUG2; in isp_pci_attach()
707 if (isp->isp_dblev & ISP_LOGCONFIG) { in isp_pci_attach()
713 isp->isp_dmatag = pa->pa_dmat; in isp_pci_attach()
714 isp->isp_revision = rev; in isp_pci_attach()
727 if (IS_2300(isp)) { /* per QLogic errata */ in isp_pci_attach()
749 free(isp->isp_param, M_DEVBUF); in isp_pci_attach()
750 free(isp->isp_osinfo.chan, M_DEVBUF); in isp_pci_attach()
757 isp_pci_intr, isp, device_xname(self)); in isp_pci_attach()
761 free(isp->isp_param, M_DEVBUF); in isp_pci_attach()
762 free(isp->isp_osinfo.chan, M_DEVBUF); in isp_pci_attach()
768 isp->isp_confopts = device_cfdata(self)->cf_flags; in isp_pci_attach()
769 ISP_LOCK(isp); in isp_pci_attach()
770 isp_reset(isp, 1); in isp_pci_attach()
771 if (isp->isp_state != ISP_RESETSTATE) { in isp_pci_attach()
772 ISP_UNLOCK(isp); in isp_pci_attach()
773 free(isp->isp_param, M_DEVBUF); in isp_pci_attach()
774 free(isp->isp_osinfo.chan, M_DEVBUF); in isp_pci_attach()
777 isp_init(isp); in isp_pci_attach()
778 if (isp->isp_state != ISP_INITSTATE) { in isp_pci_attach()
779 isp_uninit(isp); in isp_pci_attach()
780 ISP_UNLOCK(isp); in isp_pci_attach()
781 free(isp->isp_param, M_DEVBUF); in isp_pci_attach()
782 free(isp->isp_osinfo.chan, M_DEVBUF); in isp_pci_attach()
788 ISP_UNLOCK(isp); in isp_pci_attach()
789 isp_attach(isp); in isp_pci_attach()
807 isp_pci_rd_debounced(struct ispsoftc *isp, int off, uint16_t *rp) in isp_pci_rd_debounced() argument
809 struct isp_pcisoftc *pcs = (struct isp_pcisoftc *) isp; in isp_pci_rd_debounced()
814 val0 = BXR2(pcs, IspVirt2Off(isp, off)); in isp_pci_rd_debounced()
815 val1 = BXR2(pcs, IspVirt2Off(isp, off)); in isp_pci_rd_debounced()
830 isp_pci_rd_isr(struct ispsoftc *isp, uint32_t *isrp, in isp_pci_rd_isr() argument
833 struct isp_pcisoftc *pcs = (struct isp_pcisoftc *) isp; in isp_pci_rd_isr()
836 if (IS_2100(isp)) { in isp_pci_rd_isr()
837 if (isp_pci_rd_debounced(isp, BIU_ISR, &isr)) { in isp_pci_rd_isr()
840 if (isp_pci_rd_debounced(isp, BIU_SEMA, &sema)) { in isp_pci_rd_isr()
844 isr = BXR2(pcs, IspVirt2Off(isp, BIU_ISR)); in isp_pci_rd_isr()
845 sema = BXR2(pcs, IspVirt2Off(isp, BIU_SEMA)); in isp_pci_rd_isr()
847 isp_prt(isp, ISP_LOGDEBUG3, "ISR 0x%x SEMA 0x%x", isr, sema); in isp_pci_rd_isr()
848 isr &= INT_PENDING_MASK(isp); in isp_pci_rd_isr()
855 if (IS_2100(isp)) { in isp_pci_rd_isr()
856 if (isp_pci_rd_debounced(isp, OUTMAILBOX0, mbp)) { in isp_pci_rd_isr()
860 *mbp = BXR2(pcs, IspVirt2Off(isp, OUTMAILBOX0)); in isp_pci_rd_isr()
869 isp_pci_rd_isr_2300(struct ispsoftc *isp, uint32_t *isrp, in isp_pci_rd_isr_2300() argument
872 struct isp_pcisoftc *pcs = (struct isp_pcisoftc *) isp; in isp_pci_rd_isr_2300()
875 if (!(BXR2(pcs, IspVirt2Off(isp, BIU_ISR)) & BIU2100_ISR_RISC_INT)) { in isp_pci_rd_isr_2300()
881 isp_prt(isp, ISP_LOGDEBUG3, "RISC2HOST ISR 0x%x", r2hisr); in isp_pci_rd_isr_2300()
924 isp_pci_rd_isr_2400(ispsoftc_t *isp, uint32_t *isrp, in isp_pci_rd_isr_2400() argument
927 struct isp_pcisoftc *pcs = (struct isp_pcisoftc *) isp; in isp_pci_rd_isr_2400()
931 isp_prt(isp, ISP_LOGDEBUG3, "RISC2HOST ISR 0x%x", r2hisr); in isp_pci_rd_isr_2400()
954 ISP_WRITE(isp, BIU2400_HCCR, HCCR_2400_CMD_CLEAR_RISC_INT); in isp_pci_rd_isr_2400()
955 isp_prt(isp, ISP_LOGERR, "unknown interrupt 0x%x\n", r2hisr); in isp_pci_rd_isr_2400()
961 isp_pci_rd_reg_2400(ispsoftc_t *isp, int regoff) in isp_pci_rd_reg_2400() argument
963 struct isp_pcisoftc *pcs = (struct isp_pcisoftc *) isp; in isp_pci_rd_reg_2400()
973 isp_prt(isp, ISP_LOGWARN, "SXP_BLOCK read at 0x%x", regoff); in isp_pci_rd_reg_2400()
976 isp_prt(isp, ISP_LOGWARN, "RISC_BLOCK read at 0x%x", regoff); in isp_pci_rd_reg_2400()
979 isp_prt(isp, ISP_LOGWARN, "DMA_BLOCK read at 0x%x", regoff); in isp_pci_rd_reg_2400()
982 isp_prt(isp, ISP_LOGWARN, "unknown block read at 0x%x", regoff); in isp_pci_rd_reg_2400()
1014 isp_prt(isp, ISP_LOGERR, in isp_pci_rd_reg_2400()
1023 isp_pci_wr_reg_2400(ispsoftc_t *isp, int regoff, uint32_t val) in isp_pci_wr_reg_2400() argument
1025 struct isp_pcisoftc *pcs = (struct isp_pcisoftc *) isp; in isp_pci_wr_reg_2400()
1036 isp_prt(isp, ISP_LOGWARN, "SXP_BLOCK write at 0x%x", regoff); in isp_pci_wr_reg_2400()
1039 isp_prt(isp, ISP_LOGWARN, "RISC_BLOCK write at 0x%x", regoff); in isp_pci_wr_reg_2400()
1042 isp_prt(isp, ISP_LOGWARN, "DMA_BLOCK write at 0x%x", regoff); in isp_pci_wr_reg_2400()
1045 isp_prt(isp, ISP_LOGWARN, "unknown block write at 0x%x", in isp_pci_wr_reg_2400()
1072 isp_prt(isp, ISP_LOGERR, in isp_pci_wr_reg_2400()
1080 isp_pci_rd_reg(struct ispsoftc *isp, int regoff) in isp_pci_rd_reg() argument
1083 struct isp_pcisoftc *pcs = (struct isp_pcisoftc *) isp; in isp_pci_rd_reg()
1090 oldconf = BXR2(pcs, IspVirt2Off(isp, BIU_CONF1)); in isp_pci_rd_reg()
1091 BXW2(pcs, IspVirt2Off(isp, BIU_CONF1), in isp_pci_rd_reg()
1094 rv = BXR2(pcs, IspVirt2Off(isp, regoff)); in isp_pci_rd_reg()
1096 BXW2(pcs, IspVirt2Off(isp, BIU_CONF1), oldconf); in isp_pci_rd_reg()
1102 isp_pci_wr_reg(struct ispsoftc *isp, int regoff, uint32_t val) in isp_pci_wr_reg() argument
1104 struct isp_pcisoftc *pcs = (struct isp_pcisoftc *) isp; in isp_pci_wr_reg()
1111 oldconf = BXR2(pcs, IspVirt2Off(isp, BIU_CONF1)); in isp_pci_wr_reg()
1112 BXW2(pcs, IspVirt2Off(isp, BIU_CONF1), in isp_pci_wr_reg()
1115 BXW2(pcs, IspVirt2Off(isp, regoff), val); in isp_pci_wr_reg()
1117 BXW2(pcs, IspVirt2Off(isp, BIU_CONF1), oldconf); in isp_pci_wr_reg()
1123 isp_pci_rd_reg_1080(struct ispsoftc *isp, int regoff) in isp_pci_rd_reg_1080() argument
1126 struct isp_pcisoftc *pcs = (struct isp_pcisoftc *) isp; in isp_pci_rd_reg_1080()
1133 oc = BXR2(pcs, IspVirt2Off(isp, BIU_CONF1)); in isp_pci_rd_reg_1080()
1139 BXW2(pcs, IspVirt2Off(isp, BIU_CONF1), tc); in isp_pci_rd_reg_1080()
1141 oc = BXR2(pcs, IspVirt2Off(isp, BIU_CONF1)); in isp_pci_rd_reg_1080()
1142 BXW2(pcs, IspVirt2Off(isp, BIU_CONF1), in isp_pci_rd_reg_1080()
1145 rv = BXR2(pcs, IspVirt2Off(isp, regoff)); in isp_pci_rd_reg_1080()
1147 BXW2(pcs, IspVirt2Off(isp, BIU_CONF1), oc); in isp_pci_rd_reg_1080()
1153 isp_pci_wr_reg_1080(struct ispsoftc *isp, int regoff, uint32_t val) in isp_pci_wr_reg_1080() argument
1155 struct isp_pcisoftc *pcs = (struct isp_pcisoftc *) isp; in isp_pci_wr_reg_1080()
1163 oc = BXR2(pcs, IspVirt2Off(isp, BIU_CONF1)); in isp_pci_wr_reg_1080()
1169 BXW2(pcs, IspVirt2Off(isp, BIU_CONF1), tc); in isp_pci_wr_reg_1080()
1171 oc = BXR2(pcs, IspVirt2Off(isp, BIU_CONF1)); in isp_pci_wr_reg_1080()
1172 BXW2(pcs, IspVirt2Off(isp, BIU_CONF1), in isp_pci_wr_reg_1080()
1175 BXW2(pcs, IspVirt2Off(isp, regoff), val); in isp_pci_wr_reg_1080()
1177 BXW2(pcs, IspVirt2Off(isp, BIU_CONF1), oc); in isp_pci_wr_reg_1080()
1183 isp_pci_mbxdma(struct ispsoftc *isp) in isp_pci_mbxdma() argument
1185 struct isp_pcisoftc *pcs = (struct isp_pcisoftc *)isp; in isp_pci_mbxdma()
1186 bus_dma_tag_t dmat = isp->isp_dmatag; in isp_pci_mbxdma()
1192 if (isp->isp_rquest_dma) /* been here before? */ in isp_pci_mbxdma()
1195 if (isp->isp_type <= ISP_HA_SCSI_1040B) { in isp_pci_mbxdma()
1203 len = isp->isp_maxcmds * sizeof (isp_hdl_t); in isp_pci_mbxdma()
1204 isp->isp_xflist = (isp_hdl_t *) malloc(len, M_DEVBUF, M_WAITOK); in isp_pci_mbxdma()
1205 if (isp->isp_xflist == NULL) { in isp_pci_mbxdma()
1206 isp_prt(isp, ISP_LOGERR, "cannot malloc xflist array"); in isp_pci_mbxdma()
1209 memset(isp->isp_xflist, 0, len); in isp_pci_mbxdma()
1210 for (len = 0; len < isp->isp_maxcmds - 1; len++) { in isp_pci_mbxdma()
1211 isp->isp_xflist[len].cmd = &isp->isp_xflist[len+1]; in isp_pci_mbxdma()
1213 isp->isp_xffree = isp->isp_xflist; in isp_pci_mbxdma()
1214 len = isp->isp_maxcmds * sizeof (bus_dmamap_t); in isp_pci_mbxdma()
1217 free(isp->isp_xflist, M_DEVBUF); in isp_pci_mbxdma()
1218 isp->isp_xflist = NULL; in isp_pci_mbxdma()
1219 isp_prt(isp, ISP_LOGERR, "cannot malloc DMA map array"); in isp_pci_mbxdma()
1222 for (i = 0; i < isp->isp_maxcmds; i++) { in isp_pci_mbxdma()
1225 isp_prt(isp, ISP_LOGERR, "cannot create DMA maps"); in isp_pci_mbxdma()
1229 if (i < isp->isp_maxcmds) { in isp_pci_mbxdma()
1233 free(isp->isp_xflist, M_DEVBUF); in isp_pci_mbxdma()
1235 isp->isp_xflist = NULL; in isp_pci_mbxdma()
1243 len = ISP_QUEUE_SIZE(RQUEST_QUEUE_LEN(isp)); in isp_pci_mbxdma()
1247 if (bus_dmamem_map(isp->isp_dmatag, &sg, rs, len, in isp_pci_mbxdma()
1248 (void *)&isp->isp_rquest, BUS_DMA_NOWAIT|BUS_DMA_COHERENT)) { in isp_pci_mbxdma()
1252 &isp->isp_rqdmap)) { in isp_pci_mbxdma()
1255 if (bus_dmamap_load(dmat, isp->isp_rqdmap, isp->isp_rquest, len, NULL, in isp_pci_mbxdma()
1259 isp->isp_rquest_dma = isp->isp_rqdmap->dm_segs[0].ds_addr; in isp_pci_mbxdma()
1264 len = ISP_QUEUE_SIZE(RESULT_QUEUE_LEN(isp)); in isp_pci_mbxdma()
1270 (void *)&isp->isp_result, BUS_DMA_NOWAIT|BUS_DMA_COHERENT)) { in isp_pci_mbxdma()
1274 &isp->isp_rsdmap)) { in isp_pci_mbxdma()
1277 if (bus_dmamap_load(dmat, isp->isp_rsdmap, isp->isp_result, len, NULL, in isp_pci_mbxdma()
1281 isp->isp_result_dma = isp->isp_rsdmap->dm_segs[0].ds_addr; in isp_pci_mbxdma()
1283 if (IS_SCSI(isp)) { in isp_pci_mbxdma()
1290 fcp = isp->isp_param; in isp_pci_mbxdma()
1301 &isp->isp_scdmap)) { in isp_pci_mbxdma()
1304 if (bus_dmamap_load(dmat, isp->isp_scdmap, fcp->isp_scratch, len, NULL, in isp_pci_mbxdma()
1308 fcp->isp_scdma = isp->isp_scdmap->dm_segs[0].ds_addr; in isp_pci_mbxdma()
1311 isp_prt(isp, ISP_LOGERR, "mailbox DMA setup failure"); in isp_pci_mbxdma()
1312 for (i = 0; i < isp->isp_maxcmds; i++) { in isp_pci_mbxdma()
1315 free(isp->isp_xflist, M_DEVBUF); in isp_pci_mbxdma()
1317 isp->isp_xflist = NULL; in isp_pci_mbxdma()
1323 isp_pci_dmasetup(struct ispsoftc *isp, struct scsipi_xfer *xs, void *arg) in isp_pci_dmasetup() argument
1325 struct isp_pcisoftc *pcs = (struct isp_pcisoftc *)isp; in isp_pci_dmasetup()
1332 hidx = isp_handle_index(isp, rq->req_handle); in isp_pci_dmasetup()
1363 error = bus_dmamap_load(isp->isp_dmatag, dmap, xs->data, in isp_pci_dmasetup()
1368 isp_prt(isp, ISP_LOGWARN, "unable to load DMA (%d)", in isp_pci_dmasetup()
1379 bus_dmamap_sync(isp->isp_dmatag, dmap, 0, dmap->dm_mapsize, in isp_pci_dmasetup()
1383 if (isp_send_cmd(isp, rq, dm_segs, nsegs, xs->datalen, ddir) in isp_pci_dmasetup()
1396 struct ispsoftc *isp = arg; in isp_pci_intr() local
1398 isp->isp_intcnt++; in isp_pci_intr()
1399 if (ISP_READ_ISR(isp, &isr, &sema, &mbox) == 0) { in isp_pci_intr()
1400 isp->isp_intbogus++; in isp_pci_intr()
1403 isp->isp_osinfo.onintstack = 1; in isp_pci_intr()
1404 isp_intr(isp, isr, sema, mbox); in isp_pci_intr()
1405 isp->isp_osinfo.onintstack = 0; in isp_pci_intr()
1411 isp_pci_dmateardown(struct ispsoftc *isp, XS_T *xs, uint32_t handle) in isp_pci_dmateardown() argument
1413 struct isp_pcisoftc *pcs = (struct isp_pcisoftc *)isp; in isp_pci_dmateardown()
1417 hidx = isp_handle_index(isp, handle); in isp_pci_dmateardown()
1419 isp_xs_prt(isp, xs, ISP_LOGERR, "bad handle on teardown"); in isp_pci_dmateardown()
1423 bus_dmamap_sync(isp->isp_dmatag, dmap, 0, dmap->dm_mapsize, in isp_pci_dmateardown()
1426 bus_dmamap_unload(isp->isp_dmatag, dmap); in isp_pci_dmateardown()
1430 isp_pci_reset0(ispsoftc_t *isp) in isp_pci_reset0() argument
1432 ISP_DISABLE_INTS(isp); in isp_pci_reset0()
1436 isp_pci_reset1(ispsoftc_t *isp) in isp_pci_reset1() argument
1438 if (!IS_24XX(isp)) { in isp_pci_reset1()
1440 isp_pci_wr_reg(isp, HCCR, PCI_HCCR_CMD_BIOS); in isp_pci_reset1()
1443 ISP_ENABLE_INTS(isp); in isp_pci_reset1()
1447 isp_pci_dumpregs(struct ispsoftc *isp, const char *msg) in isp_pci_dumpregs() argument
1449 struct isp_pcisoftc *pcs = (struct isp_pcisoftc *)isp; in isp_pci_dumpregs()
1451 printf("%s: %s\n", device_xname(isp->isp_osinfo.dev), msg); in isp_pci_dumpregs()
1452 if (IS_SCSI(isp)) in isp_pci_dumpregs()
1453 printf(" biu_conf1=%x", ISP_READ(isp, BIU_CONF1)); in isp_pci_dumpregs()
1455 printf(" biu_csr=%x", ISP_READ(isp, BIU2100_CSR)); in isp_pci_dumpregs()
1456 printf(" biu_icr=%x biu_isr=%x biu_sema=%x ", ISP_READ(isp, BIU_ICR), in isp_pci_dumpregs()
1457 ISP_READ(isp, BIU_ISR), ISP_READ(isp, BIU_SEMA)); in isp_pci_dumpregs()
1458 printf("risc_hccr=%x\n", ISP_READ(isp, HCCR)); in isp_pci_dumpregs()
1461 if (IS_SCSI(isp)) { in isp_pci_dumpregs()
1462 ISP_WRITE(isp, HCCR, HCCR_CMD_PAUSE); in isp_pci_dumpregs()
1464 ISP_READ(isp, CDMA_CONF), ISP_READ(isp, CDMA_STATUS), in isp_pci_dumpregs()
1465 ISP_READ(isp, CDMA_FIFO_STS)); in isp_pci_dumpregs()
1467 ISP_READ(isp, DDMA_CONF), ISP_READ(isp, DDMA_STATUS), in isp_pci_dumpregs()
1468 ISP_READ(isp, DDMA_FIFO_STS)); in isp_pci_dumpregs()
1470 ISP_READ(isp, SXP_INTERRUPT), in isp_pci_dumpregs()
1471 ISP_READ(isp, SXP_GROSS_ERR), in isp_pci_dumpregs()
1472 ISP_READ(isp, SXP_PINS_CTRL)); in isp_pci_dumpregs()
1473 ISP_WRITE(isp, HCCR, HCCR_CMD_RELEASE); in isp_pci_dumpregs()
1476 ISP_READ(isp, OUTMAILBOX0), ISP_READ(isp, OUTMAILBOX1), in isp_pci_dumpregs()
1477 ISP_READ(isp, OUTMAILBOX2), ISP_READ(isp, OUTMAILBOX3), in isp_pci_dumpregs()
1478 ISP_READ(isp, OUTMAILBOX4)); in isp_pci_dumpregs()