Lines Matching refs:sbbcsoftp

293 	struct	sbbcsoft *sbbcsoftp;  in sbbc_attach()  local
311 if (!(sbbcsoftp = in sbbc_attach()
318 mutex_enter(&sbbcsoftp->umutex); in sbbc_attach()
319 if (!sbbcsoftp->suspended) { in sbbc_attach()
320 mutex_exit(&sbbcsoftp->umutex); in sbbc_attach()
323 sbbcsoftp->suspended = 0; in sbbc_attach()
324 mutex_exit(&sbbcsoftp->umutex); in sbbc_attach()
337 sbbcsoftp = ddi_get_soft_state(sbbcsoft_statep, instance); in sbbc_attach()
339 if (sbbcsoftp == NULL) { in sbbc_attach()
346 sbbcsoftp->instance = instance; in sbbc_attach()
347 sbbcsoftp->dip = dip; in sbbc_attach()
348 sbbcsoftp->oflag = FALSE; in sbbc_attach()
355 if (sbbc_get_ranges(sbbcsoftp)) { in sbbc_attach()
362 if (sbbc_config4pci(sbbcsoftp)) { in sbbc_attach()
365 kmem_free(sbbcsoftp->rangep, sbbcsoftp->range_len); in sbbc_attach()
370 mutex_init(&sbbcsoftp->umutex, NULL, MUTEX_DRIVER, (void *)NULL); in sbbc_attach()
371 mutex_init(&sbbcsoftp->sbbc_intr_mutex, NULL, in sbbc_attach()
375 if (ddi_regs_map_setup(dip, 1, (caddr_t *)&sbbcsoftp->pci_sbbc_map, in sbbc_attach()
378 &sbbcsoftp->pci_sbbc_map_handle) != DDI_SUCCESS) { in sbbc_attach()
385 sbbcsoftp->pci_sbbc_map); in sbbc_attach()
387 sbbc_dump_devid(dip, sbbcsoftp, instance); in sbbc_attach()
393 sbbc_id_reg = ddi_get32(sbbcsoftp->pci_sbbc_map_handle, in sbbc_attach()
394 &sbbcsoftp->pci_sbbc_map->device_conf); in sbbc_attach()
402 if (!sbbc_init(sbbcsoftp)) { in sbbc_attach()
411 if (!sbbc_init(sbbcsoftp)) { in sbbc_attach()
421 sbbc_remove_reg_maps(sbbcsoftp); in sbbc_attach()
422 sbbcsoftp->pci_sbbc_map = NULL; in sbbc_attach()
440 mutex_destroy(&sbbcsoftp->sbbc_intr_mutex); in sbbc_attach()
441 mutex_destroy(&sbbcsoftp->umutex); in sbbc_attach()
443 sbbc_remove_reg_maps(sbbcsoftp); in sbbc_attach()
444 kmem_free(sbbcsoftp->rangep, sbbcsoftp->range_len); in sbbc_attach()
456 struct sbbcsoft *sbbcsoftp; in sbbc_detach() local
467 if (!(sbbcsoftp = in sbbc_detach()
471 (void *)sbbcsoftp); in sbbc_detach()
474 mutex_enter(&sbbcsoftp->umutex); in sbbc_detach()
475 if (sbbcsoftp->suspended) { in sbbc_detach()
476 mutex_exit(&sbbcsoftp->umutex); in sbbc_detach()
479 sbbcsoftp->suspended = 1; in sbbc_detach()
480 mutex_exit(&sbbcsoftp->umutex); in sbbc_detach()
487 if (!(sbbcsoftp = ddi_get_soft_state(sbbcsoft_statep, instance))) { in sbbc_detach()
489 (void *)sbbcsoftp); in sbbc_detach()
495 mutex_destroy(&sbbcsoftp->sbbc_intr_mutex); in sbbc_detach()
496 mutex_destroy(&sbbcsoftp->umutex); in sbbc_detach()
498 sbbc_remove_reg_maps(sbbcsoftp); in sbbc_detach()
499 kmem_free(sbbcsoftp->rangep, sbbcsoftp->range_len); in sbbc_detach()
515 struct sbbcsoft *sbbcsoftp; in sbbc_busmap() local
533 if (!(sbbcsoftp = ddi_get_soft_state(sbbcsoft_statep, instance))) in sbbc_busmap()
561 ddi_get_name(sbbcsoftp->dip), instance); in sbbc_busmap()
588 rval = sbbc_apply_range(sbbcsoftp, rdip, child_rp, &pci_reg); in sbbc_busmap()
671 sbbcsoft_t *sbbcsoftp; in sbbc_add_intr_impl() local
680 if (!(sbbcsoftp = ddi_get_soft_state(sbbcsoft_statep, instance))) in sbbc_add_intr_impl()
693 if (sbbcsoftp->child_intr[i] == 0) { in sbbc_add_intr_impl()
694 sbbcsoftp->child_intr[i] = childintr; in sbbc_add_intr_impl()
701 (caddr_t)sbbcsoftp, NULL); in sbbc_add_intr_impl()
708 sbbcsoftp->child_intr[i] = NULL; in sbbc_add_intr_impl()
725 sbbcsoft_t *sbbcsoftp; in sbbc_remove_intr_impl() local
733 if (!(sbbcsoftp = ddi_get_soft_state(sbbcsoft_statep, instance))) in sbbc_remove_intr_impl()
738 if (sbbcsoftp->child_intr[i]) { in sbbc_remove_intr_impl()
739 childintr = sbbcsoftp->child_intr[i]; in sbbc_remove_intr_impl()
763 sbbcsoftp->child_intr[i] = NULL; in sbbc_remove_intr_impl()
773 sbbcsoft_t *sbbcsoftp; in sbbc_update_intr_state() local
782 if (!(sbbcsoftp = ddi_get_soft_state(sbbcsoft_statep, instance))) in sbbc_update_intr_state()
786 if (sbbcsoftp->child_intr[i]) { in sbbc_update_intr_state()
787 childintr = sbbcsoftp->child_intr[i]; in sbbc_update_intr_state()
946 sbbc_get_ranges(struct sbbcsoft *sbbcsoftp) in sbbc_get_ranges() argument
951 if (ddi_getlongprop(DDI_DEV_T_ANY, sbbcsoftp->dip, DDI_PROP_DONTPASS, in sbbc_get_ranges()
954 ddi_get_name(sbbcsoftp->dip), sbbcsoftp->instance); in sbbc_get_ranges()
966 sbbcsoftp->rangep = rangep; in sbbc_get_ranges()
967 sbbcsoftp->range_cnt = nrange; in sbbc_get_ranges()
968 sbbcsoftp->range_len = range_len; in sbbc_get_ranges()
978 sbbc_config4pci(struct sbbcsoft *sbbcsoftp) in sbbc_config4pci() argument
987 "sbbc_config4pci: sbbcsoftp %p\n", (void *)sbbcsoftp); in sbbc_config4pci()
990 if (pci_config_setup(sbbcsoftp->dip, &conf_handle) != DDI_SUCCESS) in sbbc_config4pci()
1029 struct sbbcsoft *sbbcsoftp; in sbbc_getinfo() local
1038 sbbcsoftp = (struct sbbcsoft *) in sbbc_getinfo()
1040 if (sbbcsoftp == NULL) { in sbbc_getinfo()
1044 *result = sbbcsoftp->dip; in sbbc_getinfo()
1064 struct sbbcsoft *sbbcsoftp; in sbbc_open() local
1075 sbbcsoftp = (struct sbbcsoft *)ddi_get_soft_state(sbbcsoft_statep, in sbbc_open()
1077 SBBCTRACE(sbbc_open, 'OPEN', sbbcsoftp); in sbbc_open()
1079 if (sbbcsoftp == NULL) in sbbc_open()
1082 mutex_enter(&sbbcsoftp->umutex); in sbbc_open()
1085 if ((sbbcsoftp->oflag == TRUE)) { in sbbc_open()
1086 mutex_exit(&sbbcsoftp->umutex); in sbbc_open()
1089 sbbcsoftp->oflag = TRUE; in sbbc_open()
1091 mutex_exit(&sbbcsoftp->umutex); in sbbc_open()
1100 struct sbbcsoft *sbbcsoftp; in sbbc_close() local
1106 sbbcsoftp = (struct sbbcsoft *)ddi_get_soft_state(sbbcsoft_statep, in sbbc_close()
1110 mutex_enter(&sbbcsoftp->umutex); in sbbc_close()
1112 SBBCTRACE(sbbc_close, 'CLOS', sbbcsoftp); in sbbc_close()
1114 sbbcsoftp->oflag = FALSE; in sbbc_close()
1116 mutex_exit(&sbbcsoftp->umutex); in sbbc_close()
1126 struct sbbcsoft *sbbcsoftp; in sbbc_ioctl() local
1130 sbbcsoftp = ddi_get_soft_state(sbbcsoft_statep, getminor(dev)); in sbbc_ioctl()
1132 if (sbbcsoftp == NULL) { in sbbc_ioctl()
1171 offset = (uint64_t)sbbcsoftp->pci_sbbc_map; in sbbc_ioctl()
1173 ddi_put32(sbbcsoftp->pci_sbbc_map_handle, (uint32_t *)offset, in sbbc_ioctl()
1211 offset = (uint64_t)sbbcsoftp->pci_sbbc_map; in sbbc_ioctl()
1214 sbbcregs.value = ddi_get32(sbbcsoftp->pci_sbbc_map_handle, in sbbc_ioctl()
1235 sbbc_remove_reg_maps(struct sbbcsoft *sbbcsoftp) in sbbc_remove_reg_maps() argument
1237 SBBCTRACE(sbbc_remove_reg_maps, 'RMAP', sbbcsoftp); in sbbc_remove_reg_maps()
1238 if (sbbcsoftp->pci_sbbc_map_handle) in sbbc_remove_reg_maps()
1239 ddi_regs_map_free(&sbbcsoftp->pci_sbbc_map_handle); in sbbc_remove_reg_maps()
1244 sbbc_init(struct sbbcsoft *sbbcsoftp) in sbbc_init() argument
1247 ddi_put32(sbbcsoftp->pci_sbbc_map_handle, in sbbc_init()
1248 &sbbcsoftp->pci_sbbc_map->sys_intr_enable, in sbbc_init()
1328 struct sbbcsoft *sbbcsoftp = (struct sbbcsoft *)arg; in sbbc_intr_wrapper() local
1331 SBBC_DBG1(SBBC_DBG_INTR, sbbcsoftp->dip, "Isr arg 0x%llx\n", arg); in sbbc_intr_wrapper()
1333 mutex_enter(&sbbcsoftp->sbbc_intr_mutex); in sbbc_intr_wrapper()
1342 if (sbbcsoftp->child_intr[i] && in sbbc_intr_wrapper()
1343 sbbcsoftp->child_intr[i]->status == in sbbc_intr_wrapper()
1349 rval = sbbcsoftp->child_intr[i]->intr_handler( in sbbc_intr_wrapper()
1350 sbbcsoftp->child_intr[i]->arg1, in sbbc_intr_wrapper()
1351 sbbcsoftp->child_intr[i]->arg2); in sbbc_intr_wrapper()
1354 mutex_exit(&sbbcsoftp->sbbc_intr_mutex); in sbbc_intr_wrapper()
1360 mutex_exit(&sbbcsoftp->sbbc_intr_mutex); in sbbc_intr_wrapper()
1480 static void sbbc_dump_devid(dev_info_t *dip, struct sbbcsoft *sbbcsoftp, in sbbc_dump_devid() argument
1487 sbbc_id_reg = ddi_get32(sbbcsoftp->pci_sbbc_map_handle, in sbbc_dump_devid()
1488 (uint32_t *)&sbbcsoftp->pci_sbbc_map->devid); in sbbc_dump_devid()