Lines Matching refs:pcieb
141 static void pcieb_id_props(pcieb_devstate_t *pcieb);
214 static int pcieb_intr_attach(pcieb_devstate_t *pcieb);
252 pcieb_devstate_t *pcieb = ddi_get_soft_state(pcieb_state, instance); in pcieb_info() local
260 if (pcieb == NULL) { in pcieb_info()
265 *result = (void *)pcieb->pcieb_dip; in pcieb_info()
367 pcieb_devstate_t *pcieb; in pcieb_attach() local
403 pcieb = ddi_get_soft_state(pcieb_state, instance); in pcieb_attach()
404 pcieb->pcieb_dip = devi; in pcieb_attach()
406 if ((pcieb_fm_init(pcieb)) != DDI_SUCCESS) { in pcieb_attach()
410 pcieb->pcieb_init_flags |= PCIEB_INIT_FM; in pcieb_attach()
412 mutex_init(&pcieb->pcieb_mutex, NULL, MUTEX_DRIVER, NULL); in pcieb_attach()
413 mutex_init(&pcieb->pcieb_err_mutex, NULL, MUTEX_DRIVER, in pcieb_attach()
414 (void *)pcieb->pcieb_fm_ibc); in pcieb_attach()
415 mutex_init(&pcieb->pcieb_peek_poke_mutex, NULL, MUTEX_DRIVER, in pcieb_attach()
416 (void *)pcieb->pcieb_fm_ibc); in pcieb_attach()
419 pcieb_id_props(pcieb); in pcieb_attach()
460 pcieb_attach_plx_workarounds(pcieb); in pcieb_attach()
474 (void) pcieb_intr_attach(pcieb); in pcieb_attach()
500 pcieb_devstate_t *pcieb; in pcieb_detach() local
515 pcieb = ddi_get_soft_state(pcieb_state, ddi_get_instance(devi)); in pcieb_detach()
521 pcieb_intr_fini(pcieb); in pcieb_detach()
528 (void) ndi_prop_remove(DDI_DEV_T_NONE, pcieb->pcieb_dip, in pcieb_detach()
531 if (pcieb->pcieb_init_flags & PCIEB_INIT_FM) in pcieb_detach()
532 pcieb_fm_fini(pcieb); in pcieb_detach()
537 mutex_destroy(&pcieb->pcieb_peek_poke_mutex); in pcieb_detach()
538 mutex_destroy(&pcieb->pcieb_err_mutex); in pcieb_detach()
539 mutex_destroy(&pcieb->pcieb_mutex); in pcieb_detach()
574 pcieb_devstate_t *pcieb = ddi_get_soft_state(pcieb_state, in pcieb_ctlops() local
646 pf_init(rdip, (void *)pcieb->pcieb_fm_ibc, in pcieb_ctlops()
794 pcieb_devstate_t *pcieb = in pcieb_initchild() local
851 if (pcie_pm_hold(pcieb->pcieb_dip) != DDI_SUCCESS) { in pcieb_initchild()
852 PCIEB_DEBUG(DBG_PWR, pcieb->pcieb_dip, in pcieb_initchild()
889 if (pcieb_init_plx_workarounds(pcieb, child) == DDI_FAILURE) { in pcieb_initchild()
898 pcie_pm_release(pcieb->pcieb_dip); in pcieb_initchild()
933 pcieb_intr_attach(pcieb_devstate_t *pcieb) in pcieb_intr_attach() argument
936 dev_info_t *dip = pcieb->pcieb_dip; in pcieb_intr_attach()
939 pcieb_plat_intr_attach(pcieb); in pcieb_intr_attach()
955 if (pcieb_intr_init(pcieb, DDI_INTR_TYPE_MSI) == DDI_SUCCESS) in pcieb_intr_attach()
970 pcieb->pcieb_no_aer_msi = B_TRUE; in pcieb_intr_attach()
974 if (pcieb_intr_init(pcieb, DDI_INTR_TYPE_FIXED) != in pcieb_intr_attach()
999 pcieb_intr_init(pcieb_devstate_t *pcieb, int intr_type) in pcieb_intr_init() argument
1001 dev_info_t *dip = pcieb->pcieb_dip; in pcieb_intr_init()
1064 pcieb->pcieb_htable_size = sizeof (ddi_intr_handle_t) * request; in pcieb_intr_init()
1065 pcieb->pcieb_htable = kmem_zalloc(pcieb->pcieb_htable_size, in pcieb_intr_init()
1067 pcieb->pcieb_init_flags |= PCIEB_INIT_HTABLE; in pcieb_intr_init()
1069 ret = ddi_intr_alloc(dip, pcieb->pcieb_htable, intr_type, inum, in pcieb_intr_init()
1076 pcieb->pcieb_init_flags |= PCIEB_INIT_ALLOC; in pcieb_intr_init()
1079 pcieb->pcieb_intr_count = count; in pcieb_intr_init()
1097 ret = ddi_intr_get_pri(pcieb->pcieb_htable[0], in pcieb_intr_init()
1098 &pcieb->pcieb_intr_priority); in pcieb_intr_init()
1105 if (pcieb->pcieb_intr_priority >= LOCK_LEVEL) { in pcieb_intr_init()
1106 pcieb->pcieb_intr_priority = LOCK_LEVEL - 1; in pcieb_intr_init()
1107 ret = ddi_intr_set_pri(pcieb->pcieb_htable[0], in pcieb_intr_init()
1108 pcieb->pcieb_intr_priority); in pcieb_intr_init()
1117 mutex_init(&pcieb->pcieb_intr_mutex, NULL, MUTEX_DRIVER, NULL); in pcieb_intr_init()
1119 pcieb->pcieb_init_flags |= PCIEB_INIT_MUTEX; in pcieb_intr_init()
1121 for (count = 0; count < pcieb->pcieb_intr_count; count++) { in pcieb_intr_init()
1122 ret = ddi_intr_add_handler(pcieb->pcieb_htable[count], in pcieb_intr_init()
1123 pcieb_intr_handler, (caddr_t)pcieb, in pcieb_intr_init()
1136 (void) ddi_intr_remove_handler(pcieb->pcieb_htable[x]); in pcieb_intr_init()
1141 pcieb->pcieb_init_flags |= PCIEB_INIT_HANDLER; in pcieb_intr_init()
1143 (void) ddi_intr_get_cap(pcieb->pcieb_htable[0], &intr_cap); in pcieb_intr_init()
1151 mutex_enter(&pcieb->pcieb_intr_mutex); in pcieb_intr_init()
1154 (void) ddi_intr_block_enable(pcieb->pcieb_htable, in pcieb_intr_init()
1155 pcieb->pcieb_intr_count); in pcieb_intr_init()
1156 pcieb->pcieb_init_flags |= PCIEB_INIT_BLOCK; in pcieb_intr_init()
1158 for (count = 0; count < pcieb->pcieb_intr_count; count++) { in pcieb_intr_init()
1159 (void) ddi_intr_enable(pcieb->pcieb_htable[count]); in pcieb_intr_init()
1162 pcieb->pcieb_init_flags |= PCIEB_INIT_ENABLE; in pcieb_intr_init()
1165 pcieb->pcieb_intr_type = intr_type; in pcieb_intr_init()
1176 mutex_exit(&pcieb->pcieb_intr_mutex); in pcieb_intr_init()
1181 pcieb->pcieb_isr_tab[hp_msi_off] |= PCIEB_INTR_SRC_HP; in pcieb_intr_init()
1184 pcieb->pcieb_isr_tab[hp_msi_off] |= PCIEB_INTR_SRC_PME; in pcieb_intr_init()
1188 pcieb->pcieb_isr_tab[0] |= PCIEB_INTR_SRC_HP; in pcieb_intr_init()
1208 mutex_exit(&pcieb->pcieb_intr_mutex); in pcieb_intr_init()
1211 pcieb->pcieb_isr_tab[aer_msi_off] |= PCIEB_INTR_SRC_AER; in pcieb_intr_init()
1217 pcieb->pcieb_no_aer_msi = B_TRUE; in pcieb_intr_init()
1221 mutex_exit(&pcieb->pcieb_intr_mutex); in pcieb_intr_init()
1225 pcieb_intr_fini(pcieb); in pcieb_intr_init()
1230 pcieb_intr_fini(pcieb_devstate_t *pcieb) in pcieb_intr_fini() argument
1233 int count = pcieb->pcieb_intr_count; in pcieb_intr_fini()
1234 int flags = pcieb->pcieb_init_flags; in pcieb_intr_fini()
1238 (void) ddi_intr_block_disable(pcieb->pcieb_htable, count); in pcieb_intr_fini()
1244 mutex_destroy(&pcieb->pcieb_intr_mutex); in pcieb_intr_fini()
1248 (void) ddi_intr_disable(pcieb->pcieb_htable[x]); in pcieb_intr_fini()
1251 (void) ddi_intr_remove_handler(pcieb->pcieb_htable[x]); in pcieb_intr_fini()
1254 (void) ddi_intr_free(pcieb->pcieb_htable[x]); in pcieb_intr_fini()
1261 kmem_free(pcieb->pcieb_htable, pcieb->pcieb_htable_size); in pcieb_intr_fini()
1265 pcieb->pcieb_init_flags &= flags; in pcieb_intr_fini()
1284 pcieb_devstate_t *pcieb = ddi_get_soft_state(pcieb_state, in pcieb_fm_init_child() local
1288 *ibc = pcieb->pcieb_fm_ibc; in pcieb_fm_init_child()
1325 pcieb_devstate_t *pcieb = ddi_get_soft_state(pcieb_state, inst); in pcieb_open() local
1328 if (pcieb == NULL) in pcieb_open()
1331 mutex_enter(&pcieb->pcieb_mutex); in pcieb_open()
1332 rv = pcie_open(pcieb->pcieb_dip, devp, flags, otyp, credp); in pcieb_open()
1333 mutex_exit(&pcieb->pcieb_mutex); in pcieb_open()
1342 pcieb_devstate_t *pcieb = ddi_get_soft_state(pcieb_state, inst); in pcieb_close() local
1345 if (pcieb == NULL) in pcieb_close()
1348 mutex_enter(&pcieb->pcieb_mutex); in pcieb_close()
1349 rv = pcie_close(pcieb->pcieb_dip, dev, flags, otyp, credp); in pcieb_close()
1350 mutex_exit(&pcieb->pcieb_mutex); in pcieb_close()
1360 pcieb_devstate_t *pcieb = ddi_get_soft_state(pcieb_state, inst); in pcieb_ioctl() local
1363 if (pcieb == NULL) in pcieb_ioctl()
1367 rv = pcie_ioctl(pcieb->pcieb_dip, dev, cmd, arg, mode, credp, rvalp); in pcieb_ioctl()
1730 pcieb_id_props(pcieb_devstate_t *pcieb) in pcieb_id_props() argument
1735 pcie_bus_t *bus_p = PCIE_DIP2BUS(pcieb->pcieb_dip); in pcieb_id_props()
1772 (void) ndi_prop_create_boolean(DDI_DEV_T_NONE, pcieb->pcieb_dip, in pcieb_id_props()
1775 (void) ddi_prop_update_int64(DDI_DEV_T_NONE, pcieb->pcieb_dip, in pcieb_id_props()