Lines Matching refs:dca
65 static void dca_free_context_list(dca_t *dca);
427 static int dca_check_acc_handle(dca_t *dca, ddi_acc_handle_t handle,
430 static void dca_fma_init(dca_t *dca);
431 static void dca_fma_fini(dca_t *dca);
563 dca_t *dca; in dca_attach() local
590 if ((dca = (dca_t *)ddi_get_driver_private(dip)) == NULL) { in dca_attach()
595 return (dca_resume(dca)); in dca_attach()
662 dca = ddi_get_soft_state(dca_state, instance); in dca_attach()
663 ASSERT(dca != NULL); in dca_attach()
664 dca->dca_dip = dip; in dca_attach()
665 WORKLIST(dca, MCR1)->dwl_prov = 0; in dca_attach()
666 WORKLIST(dca, MCR2)->dwl_prov = 0; in dca_attach()
668 dca->dca_pagesize = ddi_ptob(dip, 1); in dca_attach()
691 dca->dca_model = dca_devices[i].dd_model; in dca_attach()
692 dca->dca_devid = dca_devices[i].dd_device_id; in dca_attach()
703 dca->dca_model = dca_devices[i].dd_model; in dca_attach()
704 dca->dca_devid = dca_devices[i].dd_device_id; in dca_attach()
708 if (dca->dca_model == NULL) { in dca_attach()
709 dca->dca_model = unknowndev; in dca_attach()
710 dca_error(dca, "device not recognized, not supported"); in dca_attach()
711 DBG(dca, DPCI, "i=%d venid=%x devid=%x rev=%d", in dca_attach()
716 dca->dca_model) != DDI_SUCCESS) { in dca_attach()
717 dca_error(dca, "unable to create description property"); in dca_attach()
721 DBG(dca, DPCI, "PCI command=0x%x status=%x cachelinesz=%x", in dca_attach()
723 DBG(dca, DPCI, "mingnt=0x%x maxlat=0x%x lattmr=0x%x", in dca_attach()
729 (void) mutex_init(&dca->dca_intrlock, NULL, MUTEX_DRIVER, ibc); in dca_attach()
734 dca->dca_flags |= DCA_RNGSHA1; in dca_attach()
738 dca_fma_init(dca); in dca_attach()
741 if (dca_init(dca) != DDI_SUCCESS) { in dca_attach()
746 dca_ksinit(dca); in dca_attach()
749 if (ddi_regs_map_setup(dip, 1, (caddr_t *)&dca->dca_regs, in dca_attach()
750 0, 0, &dca_regsattr, &dca->dca_regs_handle) != DDI_SUCCESS) { in dca_attach()
751 dca_error(dca, "unable to map registers"); in dca_attach()
755 DBG(dca, DCHATTY, "MCR1 = %x", GETCSR(dca, CSR_MCR1)); in dca_attach()
756 DBG(dca, DCHATTY, "CONTROL = %x", GETCSR(dca, CSR_DMACTL)); in dca_attach()
757 DBG(dca, DCHATTY, "STATUS = %x", GETCSR(dca, CSR_DMASTAT)); in dca_attach()
758 DBG(dca, DCHATTY, "DMAEA = %x", GETCSR(dca, CSR_DMAEA)); in dca_attach()
759 DBG(dca, DCHATTY, "MCR2 = %x", GETCSR(dca, CSR_MCR2)); in dca_attach()
762 if (dca_reset(dca, 0) < 0) { in dca_attach()
767 PUTCSR(dca, CSR_DMACTL, DMACTL_BE32 | DMACTL_BE64); in dca_attach()
768 if (dca_check_acc_handle(dca, dca->dca_regs_handle, in dca_attach()
774 if (ddi_add_intr(dip, 0, &dca->dca_icookie, NULL, dca_intr, in dca_attach()
775 (void *)dca) != DDI_SUCCESS) { in dca_attach()
776 DBG(dca, DWARN, "ddi_add_intr failed"); in dca_attach()
789 if (dca->dca_devid == 0x5825) { in dca_attach()
791 SETBIT(dca, CSR_DMACTL, in dca_attach()
794 SETBIT(dca, CSR_DMACTL, in dca_attach()
797 if (dca_check_acc_handle(dca, dca->dca_regs_handle, in dca_attach()
808 dca_prov_info1.pi_provider_handle = dca; in dca_attach()
810 &WORKLIST(dca, MCR1)->dwl_prov)) != CRYPTO_SUCCESS) { in dca_attach()
822 dca_prov_info2.pi_provider_handle = dca; in dca_attach()
824 &WORKLIST(dca, MCR2)->dwl_prov)) != CRYPTO_SUCCESS) { in dca_attach()
830 crypto_prov_notify(WORKLIST(dca, MCR1)->dwl_prov, in dca_attach()
832 crypto_prov_notify(WORKLIST(dca, MCR2)->dwl_prov, in dca_attach()
836 if ((ret = dca_random_init(dca)) != CRYPTO_SUCCESS) { in dca_attach()
840 mutex_enter(&dca->dca_intrlock); in dca_attach()
841 dca->dca_jobtid = timeout(dca_jobtimeout, (void *)dca, in dca_attach()
843 mutex_exit(&dca->dca_intrlock); in dca_attach()
845 ddi_set_driver_private(dip, (caddr_t)dca); in dca_attach()
849 if (ddi_get_devstate(dca->dca_dip) != DDI_DEVSTATE_UP) { in dca_attach()
850 ddi_fm_service_impact(dca->dca_dip, DDI_SERVICE_RESTORED); in dca_attach()
857 if (WORKLIST(dca, MCR1)->dwl_prov != 0) { in dca_attach()
859 WORKLIST(dca, MCR1)->dwl_prov); in dca_attach()
861 if (WORKLIST(dca, MCR2)->dwl_prov != 0) { in dca_attach()
863 WORKLIST(dca, MCR2)->dwl_prov); in dca_attach()
866 CLRBIT(dca, CSR_DMACTL, in dca_attach()
869 ddi_remove_intr(dip, 0, dca->dca_icookie); in dca_attach()
871 if (dca->dca_regs_handle) { in dca_attach()
872 ddi_regs_map_free(&dca->dca_regs_handle); in dca_attach()
874 if (dca->dca_intrstats) { in dca_attach()
875 kstat_delete(dca->dca_intrstats); in dca_attach()
877 if (dca->dca_ksp) { in dca_attach()
878 kstat_delete(dca->dca_ksp); in dca_attach()
880 dca_uninit(dca); in dca_attach()
883 dca_fma_fini(dca); in dca_attach()
885 mutex_destroy(&dca->dca_intrlock); in dca_attach()
895 dca_t *dca; in dca_detach() local
904 if ((dca = (dca_t *)ddi_get_driver_private(dip)) == NULL) { in dca_detach()
909 return (dca_suspend(dca)); in dca_detach()
917 if ((dca = (dca_t *)ddi_get_driver_private(dip)) == NULL) { in dca_detach()
926 if (WORKLIST(dca, MCR1)->dwl_prov != 0) { in dca_detach()
928 WORKLIST(dca, MCR1)->dwl_prov) != CRYPTO_SUCCESS) { in dca_detach()
929 dca_error(dca, "unable to unregister MCR1 from kcf"); in dca_detach()
934 if (WORKLIST(dca, MCR2)->dwl_prov != 0) { in dca_detach()
936 WORKLIST(dca, MCR2)->dwl_prov) != CRYPTO_SUCCESS) { in dca_detach()
937 dca_error(dca, "unable to unregister MCR2 from kcf"); in dca_detach()
946 dca_free_context_list(dca); in dca_detach()
949 dca_random_fini(dca); in dca_detach()
952 dca_rejectjobs(dca); in dca_detach()
955 mutex_enter(&dca->dca_intrlock); in dca_detach()
956 tid = dca->dca_jobtid; in dca_detach()
957 dca->dca_jobtid = 0; in dca_detach()
958 mutex_exit(&dca->dca_intrlock); in dca_detach()
964 CLRBIT(dca, CSR_DMACTL, DMACTL_MCR1IE | DMACTL_MCR2IE | DMACTL_EIE); in dca_detach()
967 ddi_remove_intr(dip, 0, dca->dca_icookie); in dca_detach()
970 ddi_regs_map_free(&dca->dca_regs_handle); in dca_detach()
973 if (dca->dca_intrstats) { in dca_detach()
974 kstat_delete(dca->dca_intrstats); in dca_detach()
976 if (dca->dca_ksp) { in dca_detach()
977 kstat_delete(dca->dca_ksp); in dca_detach()
980 mutex_destroy(&dca->dca_intrlock); in dca_detach()
981 dca_uninit(dca); in dca_detach()
984 dca_fma_fini(dca); in dca_detach()
992 dca_resume(dca_t *dca) in dca_resume() argument
996 if (pci_config_setup(dca->dca_dip, &pci) != DDI_SUCCESS) { in dca_resume()
997 dca_error(dca, "unable to setup PCI config handle"); in dca_resume()
1018 if (dca_reset(dca, 0) < 0) { in dca_resume()
1019 dca_error(dca, "unable to reset device during resume"); in dca_resume()
1028 PUTCSR(dca, CSR_DMACTL, DMACTL_BE32 | DMACTL_BE64); in dca_resume()
1029 if (dca_check_acc_handle(dca, dca->dca_regs_handle, in dca_resume()
1034 if (dca->dca_devid == 0x5825) { in dca_resume()
1036 SETBIT(dca, CSR_DMACTL, in dca_resume()
1039 SETBIT(dca, CSR_DMACTL, in dca_resume()
1042 if (dca_check_acc_handle(dca, dca->dca_regs_handle, in dca_resume()
1047 dca_undrain(dca); in dca_resume()
1053 dca_suspend(dca_t *dca) in dca_suspend() argument
1055 if ((dca_drain(dca)) != 0) { in dca_suspend()
1058 if (dca_reset(dca, 0) < 0) { in dca_suspend()
1059 dca_error(dca, "unable to reset device during suspend"); in dca_suspend()
1069 dca_reset(dca_t *dca, int failreset) in dca_reset() argument
1073 if (dca->dca_regs_handle == NULL) { in dca_reset()
1077 PUTCSR(dca, CSR_DMACTL, DMACTL_RESET); in dca_reset()
1079 if (dca_check_acc_handle(dca, dca->dca_regs_handle, in dca_reset()
1088 dmactl = GETCSR(dca, CSR_DMACTL); in dca_reset()
1090 if (dca_check_acc_handle(dca, dca->dca_regs_handle, in dca_reset()
1095 DBG(dca, DCHATTY, "reset in %d usec", i * 100); in dca_reset()
1100 dca_failure(dca, DDI_DEVICE_FAULT, in dca_reset()
1108 dca_initworklist(dca_t *dca, dca_worklist_t *wlp) in dca_initworklist() argument
1116 mutex_init(&wlp->dwl_lock, NULL, MUTEX_DRIVER, dca->dca_icookie); in dca_initworklist()
1118 dca->dca_icookie); in dca_initworklist()
1119 mutex_init(&wlp->dwl_freelock, NULL, MUTEX_DRIVER, dca->dca_icookie); in dca_initworklist()
1132 if ((workp = dca_newwork(dca)) == NULL) { in dca_initworklist()
1133 dca_error(dca, "unable to allocate work"); in dca_initworklist()
1145 if ((reqp = dca_newreq(dca)) == NULL) { in dca_initworklist()
1146 dca_error(dca, "unable to allocate request"); in dca_initworklist()
1149 reqp->dr_dca = dca; in dca_initworklist()
1157 dca_init(dca_t *dca) in dca_init() argument
1162 mutex_init(&dca->dca_ctx_list_lock, NULL, MUTEX_DRIVER, NULL); in dca_init()
1163 dca_initq(&dca->dca_ctx_list); in dca_init()
1168 wlp = WORKLIST(dca, MCR1); in dca_init()
1170 ddi_get_instance(dca->dca_dip)); in dca_init()
1172 dca->dca_dip, DDI_PROP_CANSLEEP | DDI_PROP_DONTPASS, in dca_init()
1175 dca->dca_dip, DDI_PROP_CANSLEEP | DDI_PROP_DONTPASS, in dca_init()
1178 dca->dca_dip, DDI_PROP_CANSLEEP | DDI_PROP_DONTPASS, in dca_init()
1180 wlp->dwl_dca = dca; in dca_init()
1182 if (dca_initworklist(dca, wlp) != DDI_SUCCESS) { in dca_init()
1189 wlp = WORKLIST(dca, MCR2); in dca_init()
1191 ddi_get_instance(dca->dca_dip)); in dca_init()
1193 dca->dca_dip, DDI_PROP_CANSLEEP | DDI_PROP_DONTPASS, in dca_init()
1196 dca->dca_dip, DDI_PROP_CANSLEEP | DDI_PROP_DONTPASS, in dca_init()
1199 dca->dca_dip, DDI_PROP_CANSLEEP | DDI_PROP_DONTPASS, in dca_init()
1201 wlp->dwl_dca = dca; in dca_init()
1203 if (dca_initworklist(dca, wlp) != DDI_SUCCESS) { in dca_init()
1216 dca_uninit(dca_t *dca) in dca_uninit() argument
1220 mutex_destroy(&dca->dca_ctx_list_lock); in dca_uninit()
1223 dca_worklist_t *wlp = WORKLIST(dca, mcr); in dca_uninit()
1227 if (dca->dca_regs_handle == NULL) { in dca_uninit()
1232 while ((workp = dca_getwork(dca, mcr)) != NULL) { in dca_uninit()
1236 while ((reqp = dca_getreq(dca, mcr, 0)) != NULL) { in dca_uninit()
1378 dca_t *dca = (dca_t *)arg; in dca_intr() local
1381 mutex_enter(&dca->dca_intrlock); in dca_intr()
1382 status = GETCSR(dca, CSR_DMASTAT); in dca_intr()
1383 PUTCSR(dca, CSR_DMASTAT, status & DMASTAT_INTERRUPTS); in dca_intr()
1384 if (dca_check_acc_handle(dca, dca->dca_regs_handle, in dca_intr()
1386 mutex_exit(&dca->dca_intrlock); in dca_intr()
1390 DBG(dca, DINTR, "interrupted, status = 0x%x!", status); in dca_intr()
1394 if (dca->dca_intrstats) { in dca_intr()
1395 KIOIP(dca)->intrs[KSTAT_INTR_SPURIOUS]++; in dca_intr()
1397 mutex_exit(&dca->dca_intrlock); in dca_intr()
1401 if (dca->dca_intrstats) { in dca_intr()
1402 KIOIP(dca)->intrs[KSTAT_INTR_HARD]++; in dca_intr()
1405 DBG(dca, DINTR, "MCR1 interrupted"); in dca_intr()
1406 mutex_enter(&(WORKLIST(dca, MCR1)->dwl_lock)); in dca_intr()
1407 dca_schedule(dca, MCR1); in dca_intr()
1408 dca_reclaim(dca, MCR1); in dca_intr()
1409 mutex_exit(&(WORKLIST(dca, MCR1)->dwl_lock)); in dca_intr()
1413 DBG(dca, DINTR, "MCR2 interrupted"); in dca_intr()
1414 mutex_enter(&(WORKLIST(dca, MCR2)->dwl_lock)); in dca_intr()
1415 dca_schedule(dca, MCR2); in dca_intr()
1416 dca_reclaim(dca, MCR2); in dca_intr()
1417 mutex_exit(&(WORKLIST(dca, MCR2)->dwl_lock)); in dca_intr()
1422 erraddr = GETCSR(dca, CSR_DMAEA); in dca_intr()
1423 mutex_exit(&dca->dca_intrlock); in dca_intr()
1429 dca_failure(dca, DDI_DEVICE_FAULT, in dca_intr()
1436 mutex_exit(&dca->dca_intrlock); in dca_intr()
1524 dca_newwork(dca_t *dca) in dca_newwork() argument
1534 rv = ddi_dma_alloc_handle(dca->dca_dip, &dca_dmaattr, in dca_newwork()
1537 dca_error(dca, "unable to alloc MCR DMA handle"); in dca_newwork()
1543 ROUNDUP(MCR_SIZE, dca->dca_pagesize), in dca_newwork()
1547 dca_error(dca, "unable to alloc MCR DMA memory"); in dca_newwork()
1556 dca_error(dca, "unable to map MCR DMA memory"); in dca_newwork()
1581 dca_newreq(dca_t *dca) in dca_newreq() argument
1594 reqp->dr_dca = dca; in dca_newreq()
1599 rv = ddi_dma_alloc_handle(dca->dca_dip, &dca_dmaattr, DDI_DMA_SLEEP, in dca_newreq()
1602 dca_error(dca, "failure allocating request DMA handle"); in dca_newreq()
1609 ROUNDUP(size, dca->dca_pagesize), &dca_devattr, DDI_DMA_CONSISTENT, in dca_newreq()
1613 dca_error(dca, "unable to alloc request DMA memory"); in dca_newreq()
1622 dca_error(dca, "failed binding request DMA handle"); in dca_newreq()
1633 rv = ddi_dma_alloc_handle(dca->dca_dip, &dca_dmaattr, in dca_newreq()
1636 dca_error(dca, "failure allocating ibuf DMA handle"); in dca_newreq()
1640 rv = ddi_dma_alloc_handle(dca->dca_dip, &dca_dmaattr, in dca_newreq()
1643 dca_error(dca, "failure allocating obuf DMA handle"); in dca_newreq()
1648 rv = ddi_dma_alloc_handle(dca->dca_dip, &dca_dmaattr, in dca_newreq()
1651 dca_error(dca, "failure allocating chain_in DMA handle"); in dca_newreq()
1656 rv = ddi_dma_alloc_handle(dca->dca_dip, &dca_dmaattr, in dca_newreq()
1659 dca_error(dca, "failure allocating chain_out DMA handle"); in dca_newreq()
1667 size = ROUNDUP(MAXPACKET, dca->dca_pagesize); in dca_newreq()
1680 dca_error(dca, "unable to alloc request DMA memory"); in dca_newreq()
1690 dca_error(dca, "unable to alloc request DMA memory"); in dca_newreq()
1719 DBG(dca, DCHATTY, "CTX is 0x%p, phys 0x%x, len %d", in dca_newreq()
1781 dca_getwork(dca_t *dca, int mcr) in dca_getwork() argument
1783 dca_worklist_t *wlp = WORKLIST(dca, mcr); in dca_getwork()
1810 dca_getreq(dca_t *dca, int mcr, int tryhard) in dca_getreq() argument
1812 dca_worklist_t *wlp = WORKLIST(dca, mcr); in dca_getreq()
1826 if ((reqp = dca_newreq(dca)) != NULL) { in dca_getreq()
1828 reqp->dr_dca = dca; in dca_getreq()
2046 dca_start(dca_t *dca, dca_request_t *reqp, int mcr, int dosched) in dca_start() argument
2048 dca_worklist_t *wlp = WORKLIST(dca, mcr); in dca_start()
2052 DBG(dca, DCHATTY, "req=%p, in=%p, out=%p, ctx=%p, ibuf=%p, obuf=%p", in dca_start()
2055 DBG(dca, DCHATTY, "ctx paddr = %x, ibuf paddr = %x, obuf paddr = %x", in dca_start()
2059 if (dca_check_dma_handle(dca, reqp->dr_ctx_dmah, in dca_start()
2084 dca_schedule(dca, mcr); in dca_start()
2091 dca_schedule(dca, mcr); in dca_start()
2100 dca_schedule(dca_t *dca, int mcr) in dca_schedule() argument
2102 dca_worklist_t *wlp = WORKLIST(dca, mcr); in dca_schedule()
2112 if (wlp->dwl_drain || (dca->dca_flags & DCA_FAILED)) { in dca_schedule()
2129 status = GETCSR(dca, CSR_DMASTAT); in dca_schedule()
2130 if (dca_check_acc_handle(dca, dca->dca_regs_handle, in dca_schedule()
2152 workp = dca_getwork(dca, mcr); in dca_schedule()
2160 dca_reclaim(dca, mcr); in dca_schedule()
2252 DBG(dca, DCHATTY, in dca_schedule()
2261 if (dca_check_dma_handle(dca, workp->dw_mcr_dmah, in dca_schedule()
2267 PUTCSR(dca, csr, workp->dw_mcr_paddr); in dca_schedule()
2268 if (dca_check_acc_handle(dca, dca->dca_regs_handle, in dca_schedule()
2276 DBG(dca, DCHATTY, "posted"); in dca_schedule()
2284 dca_reclaim(dca_t *dca, int mcr) in dca_reclaim() argument
2286 dca_worklist_t *wlp = WORKLIST(dca, mcr); in dca_reclaim()
2292 DBG(dca, DRECLAIM, "worklist = 0x%p (MCR%d)", wlp, mcr); in dca_reclaim()
2310 if (dca_check_dma_handle(dca, workp->dw_mcr_dmah, in dca_reclaim()
2320 DBG(dca, DRECLAIM, in dca_reclaim()
2340 dca->dca_stats[reqp->dr_byte_stat] += in dca_reclaim()
2344 dca->dca_stats[reqp->dr_job_stat]++; in dca_reclaim()
2368 DBG(dca, DRECLAIM, "reclaimed %d cmds", nreclaimed); in dca_reclaim()
2413 dca_failure(dca_t *dca, ddi_fault_location_t loc, dca_fma_eclass_t index, in dca_failure() argument
2426 eclass = dca_fma_eclass_string(dca->dca_model, index); in dca_failure()
2428 if (DDI_FM_EREPORT_CAP(dca->fm_capabilities) && in dca_failure()
2430 ddi_fm_ereport_post(dca->dca_dip, eclass, ena, in dca_failure()
2435 ddi_fm_service_impact(dca->dca_dip, DDI_SERVICE_LOST); in dca_failure()
2438 dca_error(dca, buf); in dca_failure()
2444 dca->dca_flags |= DCA_FAILED; in dca_failure()
2450 (void) dca_reset(dca, 1); in dca_failure()
2456 if (WORKLIST(dca, mcr)->dwl_prov) { in dca_failure()
2457 crypto_prov_notify(WORKLIST(dca, mcr)->dwl_prov, in dca_failure()
2465 dca_rejectjobs(dca); in dca_failure()
2480 wlp = WORKLIST(dca, mcr); in dca_failure()
2550 dca_t *dca = (dca_t *)arg; in dca_jobtimeout() local
2554 dca_worklist_t *wlp = WORKLIST(dca, mcr); in dca_jobtimeout()
2575 DBG(dca, DWARN, "stale job (0x%p) found in MCR%d!", workp, in dca_jobtimeout()
2584 dca_failure(dca, DDI_DEVICE_FAULT, in dca_jobtimeout()
2590 mutex_enter(&dca->dca_intrlock); in dca_jobtimeout()
2591 if (dca->dca_jobtid == 0) { in dca_jobtimeout()
2593 mutex_exit(&dca->dca_intrlock); in dca_jobtimeout()
2598 dca->dca_jobtid = timeout(dca_jobtimeout, arg, in dca_jobtimeout()
2600 mutex_exit(&dca->dca_intrlock); in dca_jobtimeout()
2608 dca_rejectjobs(dca_t *dca) in dca_rejectjobs() argument
2613 dca_worklist_t *wlp = WORKLIST(dca, mcr); in dca_rejectjobs()
2645 dca_drain(dca_t *dca) in dca_drain() argument
2652 dca_worklist_t *wlp = WORKLIST(dca, mcr); in dca_drain()
2663 dca_error(dca, "unable to drain device"); in dca_drain()
2665 dca_undrain(dca); in dca_drain()
2690 dca_undrain(dca_t *dca) in dca_undrain() argument
2695 dca_worklist_t *wlp = WORKLIST(dca, mcr); in dca_undrain()
2698 dca_schedule(dca, mcr); in dca_undrain()
2918 dca_sgcheck(dca_t *dca, crypto_data_t *data, dca_sg_param_t val) in dca_sgcheck() argument
3001 if ((data->cd_length % dca->dca_pagesize) || in dca_sgcheck()
3003 dca->dca_pagesize)) { in dca_sgcheck()
3010 if ((uiop->uio_iov[0].iov_len % dca->dca_pagesize) || in dca_sgcheck()
3012 dca->dca_pagesize)) { in dca_sgcheck()
3019 if ((MBLKL(mp) % dca->dca_pagesize) || in dca_sgcheck()
3020 ((uintptr_t)mp->b_rptr % dca->dca_pagesize)) { in dca_sgcheck()
4677 dca_free_context_list(dca_t *dca) in dca_free_context_list() argument
4683 ctx.cc_provider = dca; in dca_free_context_list()
4685 while ((node = dca_delist2(&dca->dca_ctx_list, in dca_free_context_list()
4686 &dca->dca_ctx_list_lock)) != NULL) { in dca_free_context_list()
4717 dca_t *dca = (dca_t *)prov; in ext_info_base() local
4722 ddi_driver_name(dca->dca_dip), ddi_get_instance(dca->dca_dip), id); in ext_info_base()
4735 (void) sprintf((char *)ext_info->ei_model, dca->dca_model); in ext_info_base()
4737 DBG(dca, DWARN, "kCF MODEL: %s", (char *)ext_info->ei_model); in ext_info_base()
4767 dca_fma_init(dca_t *dca) in dca_fma_init() argument
4775 dca->fm_capabilities = ddi_getprop(DDI_DEV_T_ANY, dca->dca_dip, in dca_fma_init()
4779 DBG(dca, DWARN, "dca->fm_capabilities = 0x%x", dca->fm_capabilities); in dca_fma_init()
4782 if (dca->fm_capabilities) { in dca_fma_init()
4787 ddi_fm_init(dca->dca_dip, &dca->fm_capabilities, &fm_ibc); in dca_fma_init()
4788 DBG(dca, DWARN, "fm_capable() = 0x%x", in dca_fma_init()
4789 ddi_fm_capable(dca->dca_dip)); in dca_fma_init()
4794 if (DDI_FM_EREPORT_CAP(dca->fm_capabilities) || in dca_fma_init()
4795 DDI_FM_ERRCB_CAP(dca->fm_capabilities)) in dca_fma_init()
4796 pci_ereport_setup(dca->dca_dip); in dca_fma_init()
4802 if (DDI_FM_ERRCB_CAP(dca->fm_capabilities)) { in dca_fma_init()
4803 ddi_fm_handler_register(dca->dca_dip, dca_fm_error_cb, in dca_fma_init()
4804 (void *)dca); in dca_fma_init()
4818 dca_fma_fini(dca_t *dca) in dca_fma_fini() argument
4821 if (dca->fm_capabilities) { in dca_fma_fini()
4826 if (DDI_FM_EREPORT_CAP(dca->fm_capabilities) || in dca_fma_fini()
4827 DDI_FM_ERRCB_CAP(dca->fm_capabilities)) { in dca_fma_fini()
4828 pci_ereport_teardown(dca->dca_dip); in dca_fma_fini()
4835 if (DDI_FM_ERRCB_CAP(dca->fm_capabilities)) { in dca_fma_fini()
4836 ddi_fm_handler_unregister(dca->dca_dip); in dca_fma_fini()
4840 ddi_fm_fini(dca->dca_dip); in dca_fma_fini()
4841 DBG(dca, DWARN, "fm_capable() = 0x%x", in dca_fma_fini()
4842 ddi_fm_capable(dca->dca_dip)); in dca_fma_fini()
4854 dca_t *dca = (dca_t *)impl_data; in dca_fm_error_cb() local
4858 dca_failure(dca, DDI_DATAPATH_FAULT, in dca_fm_error_cb()
4867 dca_check_acc_handle(dca_t *dca, ddi_acc_handle_t handle, in dca_check_acc_handle() argument
4875 dca_failure(dca, DDI_DATAPATH_FAULT, in dca_check_acc_handle()
4885 dca_check_dma_handle(dca_t *dca, ddi_dma_handle_t handle, in dca_check_dma_handle() argument
4893 dca_failure(dca, DDI_DATAPATH_FAULT, in dca_check_dma_handle()