Lines Matching refs:softsp

245 sysio_err_uninit(struct sbus_soft_state *softsp);
248 iommu_uninit(struct sbus_soft_state *softsp);
251 stream_buf_uninit(struct sbus_soft_state *softsp);
268 sbus_ctlops_poke(struct sbus_soft_state *softsp, peekpoke_ctlops_t *in_args);
271 sbus_ctlops_peek(struct sbus_soft_state *softsp, peekpoke_ctlops_t *in_args,
275 sbus_init(struct sbus_soft_state *softsp, caddr_t address);
278 sbus_resume_init(struct sbus_soft_state *softsp, int resume);
431 struct sbus_soft_state *softsp; in sbus_attach() local
449 softsp = ddi_get_soft_state(sbusp, instance); in sbus_attach()
451 if ((error = iommu_resume_init(softsp)) != DDI_SUCCESS) in sbus_attach()
454 if ((error = sbus_resume_init(softsp, 1)) != DDI_SUCCESS) in sbus_attach()
457 if ((error = stream_buf_resume_init(softsp)) != DDI_SUCCESS) in sbus_attach()
467 softsp->intr_mapping_reg, 0); in sbus_attach()
480 softsp = ddi_get_soft_state(sbusp, instance); in sbus_attach()
483 softsp->dip = devi; in sbus_attach()
485 if ((softsp->upa_id = (int)ddi_getprop(DDI_DEV_T_ANY, softsp->dip, in sbus_attach()
515 if (ddi_regs_map_setup(softsp->dip, 0, &softsp->address, 0, 0, in sbus_attach()
516 &attr, &softsp->ac) != DDI_SUCCESS) { in sbus_attach()
518 ddi_get_name(softsp->dip), in sbus_attach()
519 ddi_get_instance(softsp->dip)); in sbus_attach()
522 if (softsp->address == (caddr_t)-1) { in sbus_attach()
524 ddi_get_instance(softsp->dip)); in sbus_attach()
529 (void *)devi, (void *)softsp)); in sbus_attach()
545 if ((rv = ddi_map_regs(softsp->dip, 0, &addr, in sbus_attach()
556 if ((error = iommu_init(softsp, softsp->address)) != DDI_SUCCESS) in sbus_attach()
559 if ((error = sbus_init(softsp, softsp->address)) != DDI_SUCCESS) in sbus_attach()
562 if ((error = sysio_err_init(softsp, softsp->address)) != DDI_SUCCESS) in sbus_attach()
565 if ((error = stream_buf_init(softsp, softsp->address)) != DDI_SUCCESS) in sbus_attach()
569 mutex_init(&softsp->pokefault_mutex, NULL, MUTEX_SPIN, in sbus_attach()
572 sbus_add_kstats(softsp); in sbus_attach()
592 struct sbus_soft_state *softsp; in sbus_detach() local
611 softsp = ddi_get_soft_state(sbusp, instance); in sbus_detach()
614 softsp->intr_mapping_reg, 1); in sbus_detach()
628 struct sbus_soft_state *softsp; in sbus_do_detach() local
631 softsp = ddi_get_soft_state(sbusp, instance); in sbus_do_detach()
632 ASSERT(softsp != NULL); in sbus_do_detach()
639 if (stream_buf_uninit(softsp) == DDI_FAILURE) { in sbus_do_detach()
644 if (sysio_err_uninit(softsp) == DDI_FAILURE) { in sbus_do_detach()
649 if (iommu_uninit(softsp)) { in sbus_do_detach()
654 if (softsp->ac) { in sbus_do_detach()
655 ddi_regs_map_free(&softsp->ac); in sbus_do_detach()
656 softsp->address = NULL; in sbus_do_detach()
662 if (softsp->sbus_counters_ksp != (kstat_t *)NULL) in sbus_do_detach()
663 kstat_delete(softsp->sbus_counters_ksp); in sbus_do_detach()
692 sbus_init(struct sbus_soft_state *softsp, caddr_t address) in sbus_init() argument
709 softsp->sysio_ctrl_reg = REG_ADDR(address, OFF_SYSIO_CTRL_REG); in sbus_init()
710 softsp->sbus_ctrl_reg = REG_ADDR(address, OFF_SBUS_CTRL_REG); in sbus_init()
711 softsp->sbus_slot_config_reg = REG_ADDR(address, OFF_SBUS_SLOT_CONFIG); in sbus_init()
712 softsp->intr_mapping_reg = REG_ADDR(address, OFF_INTR_MAPPING_REG); in sbus_init()
713 softsp->clr_intr_reg = REG_ADDR(address, OFF_CLR_INTR_REG); in sbus_init()
714 softsp->intr_retry_reg = REG_ADDR(address, OFF_INTR_RETRY_REG); in sbus_init()
715 softsp->sbus_intr_state = REG_ADDR(address, OFF_SBUS_INTR_STATE_REG); in sbus_init()
716 softsp->sbus_pcr = REG_ADDR(address, OFF_SBUS_PCR); in sbus_init()
717 softsp->sbus_pic = REG_ADDR(address, OFF_SBUS_PIC); in sbus_init()
722 "SBUS Control reg: 0x%p", (void *)softsp->sysio_ctrl_reg, in sbus_init()
723 (void *)softsp->sbus_ctrl_reg)); in sbus_init()
725 softsp->intr_mapping_ign = in sbus_init()
726 UPAID_TO_IGN(softsp->upa_id) << IMR_IGN_SHIFT; in sbus_init()
729 softsp->obio_intr_state = softsp->sbus_intr_state + 1; in sbus_init()
731 (void) sbus_resume_init(softsp, 0); in sbus_init()
738 softsp->sbus_slave_burstsizes[i] = 0xffffffffu; in sbus_init()
754 numproxy = ddi_prop_get_int(DDI_DEV_T_ANY, softsp->dip, in sbus_init()
758 set_intr_mapping_reg(softsp->upa_id, in sbus_init()
759 (uint64_t *)(softsp->intr_mapping_reg + in sbus_init()
763 set_intr_mapping_reg(softsp->upa_id, in sbus_init()
764 (uint64_t *)(softsp->intr_mapping_reg + in sbus_init()
785 sbus_resume_init(struct sbus_soft_state *softsp, int resume) in sbus_resume_init() argument
796 *softsp->sysio_ctrl_reg |= in sbus_resume_init()
797 (uint64_t)softsp->upa_id << 51; in sbus_resume_init()
800 *softsp->sysio_ctrl_reg |= in sbus_resume_init()
801 (uint64_t)softsp->upa_id << SYSIO_IGN; in sbus_resume_init()
807 *softsp->sbus_ctrl_reg |= SBUS_ARBIT_ALL; in sbus_resume_init()
813 sbus_burst_sizes = ddi_getprop(DDI_DEV_T_ANY, softsp->dip, in sbus_resume_init()
816 softsp->sbus_burst_sizes = sbus_burst_sizes & SYSIO_BURST_MASK; in sbus_resume_init()
817 softsp->sbus64_burst_sizes = sbus_burst_sizes & SYSIO64_BURST_MASK; in sbus_resume_init()
825 config = softsp->sbus_slot_config_reg + i; in sbus_resume_init()
832 tmpreg = *softsp->sbus_ctrl_reg; in sbus_resume_init()
848 if (softsp->sbus_slave_burstsizes[i] != 0xffffffffu) { in sbus_resume_init()
849 config = softsp->sbus_slot_config_reg + i; in sbus_resume_init()
851 if (softsp->sbus_slave_burstsizes[i] & in sbus_resume_init()
855 softsp->sbus_slave_burstsizes[i] >> in sbus_resume_init()
862 softsp->sbus_slave_burstsizes[i] & in sbus_resume_init()
874 tmpreg = *softsp->sbus_ctrl_reg; in sbus_resume_init()
1112 struct sbus_soft_state *softsp = (struct sbus_soft_state *) in sbus_initchild() local
1168 slot_reg = softsp->sbus_slot_config_reg + slot; in sbus_initchild()
1191 if (((softsp->sbus_slave_burstsizes[slot] & in sbus_initchild()
1193 ((softsp->sbus_slave_burstsizes[slot] & 0xffff) != 0)) { in sbus_initchild()
1211 softsp->sbus_slave_burstsizes[slot] &= in sbus_initchild()
1218 if (softsp->sbus_slave_burstsizes[slot] & in sbus_initchild()
1221 burstsizes = softsp->sbus_slave_burstsizes[slot] >> in sbus_initchild()
1231 if (softsp->sbus_slave_burstsizes[slot] & in sbus_initchild()
1234 softsp->sbus_slave_burstsizes[slot] & in sbus_initchild()
1290 sbus_ctlops_poke(struct sbus_soft_state *softsp, peekpoke_ctlops_t *in_args) in sbus_ctlops_poke() argument
1300 mutex_enter(&softsp->pokefault_mutex); in sbus_ctlops_poke()
1301 softsp->ontrap_data = &otd; in sbus_ctlops_poke()
1315 tmpreg = *softsp->sbus_ctrl_reg; in sbus_ctlops_poke()
1323 tmpreg = *softsp->sbus_err_reg; in sbus_ctlops_poke()
1325 tmpreg = *softsp->sbus_err_reg; in sbus_ctlops_poke()
1330 softsp->ontrap_data = NULL; in sbus_ctlops_poke()
1331 mutex_exit(&softsp->pokefault_mutex); in sbus_ctlops_poke()
1342 sbus_ctlops_peek(struct sbus_soft_state *softsp, peekpoke_ctlops_t *in_args, in sbus_ctlops_peek() argument
1375 struct sbus_soft_state *softsp = (struct sbus_soft_state *) in sbus_ctlops() local
1397 (1 << (ddi_fls(softsp->sbus_burst_sizes) - 1))); in sbus_ctlops()
1400 (1 << (ddi_ffs(softsp->sbus_burst_sizes) - 1))); in sbus_ctlops()
1463 &pri, softsp->intr_mapping_ign); in sbus_ctlops()
1514 return (sbus_ctlops_poke(softsp, (peekpoke_ctlops_t *)arg)); in sbus_ctlops()
1517 return (sbus_ctlops_peek(softsp, (peekpoke_ctlops_t *)arg, in sbus_ctlops()
1573 spurious_cntr = &intr_info->softsp->spurious_cntrs[intr_info->pil]; in sbus_intr_wrapper()
1601 tmpreg = *intr_info->softsp->sbus_ctrl_reg; in sbus_intr_wrapper()
1604 tmpreg = *intr_info->softsp->sbus_ctrl_reg; in sbus_intr_wrapper()
1640 struct sbus_soft_state *softsp = (struct sbus_soft_state *) in sbus_add_intr_impl() local
1670 &hdlp->ih_pri, softsp->intr_mapping_ign) == DDI_FAILURE) { in sbus_add_intr_impl()
1678 mondo_vec_reg = (softsp->intr_mapping_reg + in sbus_add_intr_impl()
1688 intr_state_reg = softsp->obio_intr_state; in sbus_add_intr_impl()
1691 intr_state_reg = softsp->sbus_intr_state; in sbus_add_intr_impl()
1709 mutex_enter(&softsp->intr_poll_list_lock); in sbus_add_intr_impl()
1711 sbus_arg = softsp->intr_list[ino]; in sbus_add_intr_impl()
1718 tmpreg = *softsp->sbus_ctrl_reg; in sbus_add_intr_impl()
1742 softsp->intr_list[ino] = sbus_arg; in sbus_add_intr_impl()
1743 sbus_arg->clear_reg = (softsp->clr_intr_reg + in sbus_add_intr_impl()
1747 sbus_arg->softsp = softsp; in sbus_add_intr_impl()
1771 mutex_exit(&softsp->intr_poll_list_lock); in sbus_add_intr_impl()
1776 (softsp->intr_hndlr_cnt[slot] == 0)) { in sbus_add_intr_impl()
1803 softsp->intr_hndlr_cnt[slot]++; in sbus_add_intr_impl()
1805 mutex_exit(&softsp->intr_poll_list_lock); in sbus_add_intr_impl()
1818 softsp->intr_hndlr_cnt[slot])); in sbus_add_intr_impl()
1830 tmpreg = *softsp->sbus_ctrl_reg; in sbus_add_intr_impl()
1878 struct sbus_soft_state *softsp = (struct sbus_soft_state *) in sbus_remove_intr_impl() local
1884 mutex_enter(&softsp->intr_poll_list_lock); in sbus_remove_intr_impl()
1888 &hdlp->ih_pri, softsp->intr_mapping_ign) == DDI_FAILURE) { in sbus_remove_intr_impl()
1896 mondo_vec_reg = (softsp->intr_mapping_reg + in sbus_remove_intr_impl()
1902 tmpreg = *softsp->sbus_ctrl_reg; in sbus_remove_intr_impl()
1908 intr_state_reg = softsp->obio_intr_state; in sbus_remove_intr_impl()
1911 intr_state_reg = softsp->sbus_intr_state; in sbus_remove_intr_impl()
1925 sbus_arg = softsp->intr_list[ino]; in sbus_remove_intr_impl()
1928 softsp->intr_hndlr_cnt[slot]--; in sbus_remove_intr_impl()
1931 "ino 0x%x, sbus_arg 0x%p intr cntr %d\n", (void *)softsp, in sbus_remove_intr_impl()
1933 softsp->intr_hndlr_cnt[slot])); in sbus_remove_intr_impl()
1947 if (softsp->intr_hndlr_cnt[slot] > 0) { in sbus_remove_intr_impl()
1950 tmpreg = *softsp->sbus_ctrl_reg; in sbus_remove_intr_impl()
1954 if ((softsp->intr_hndlr_cnt[slot] == 0) || (slot >= EXT_SBUS_SLOTS)) { in sbus_remove_intr_impl()
1964 softsp->intr_list[ino] = NULL; in sbus_remove_intr_impl()
1968 mutex_exit(&softsp->intr_poll_list_lock); in sbus_remove_intr_impl()
2057 struct sbus_soft_state *softsp = (struct sbus_soft_state *) in sbus_intr_ops() local
2076 softsp->intr_mapping_ign); in sbus_intr_ops()
2161 struct sbus_soft_state *softsp; in sbus_intrdist() local
2173 softsp = ddi_get_soft_state(sbusp, ddi_get_instance(dip)); in sbus_intrdist()
2180 mondo_vec_reg = (softsp->intr_mapping_reg + in sbus_intrdist()
2203 tmpreg = *softsp->sbus_ctrl_reg; in sbus_intrdist()
2211 intr_state_reg = softsp->obio_intr_state; in sbus_intrdist()
2228 intr_state_reg = softsp->sbus_intr_state; in sbus_intrdist()
2279 struct sbus_soft_state *softsp; in sbus_intr_reset() local
2283 softsp = ddi_get_soft_state(sbusp, ddi_get_instance(dip)); in sbus_intr_reset()
2291 mondo_clear_reg = (softsp->clr_intr_reg + in sbus_intr_reset()
2421 sbus_add_kstats(struct sbus_soft_state *softsp) in sbus_add_kstats() argument
2434 sbus_add_picN_kstats(softsp->dip); in sbus_add_kstats()
2447 ddi_get_instance(softsp->dip), "counters", in sbus_add_kstats()
2451 " failed", ddi_get_instance(softsp->dip)); in sbus_add_kstats()
2469 sbus_counters_ksp->ks_private = (void *)softsp; in sbus_add_kstats()
2474 softsp->sbus_counters_ksp = sbus_counters_ksp; in sbus_add_kstats()
2481 struct sbus_soft_state *softsp; in sbus_counters_kstat_update() local
2485 softsp = (struct sbus_soft_state *)ksp->ks_private; in sbus_counters_kstat_update()
2495 *softsp->sbus_pcr = in sbus_counters_kstat_update()
2508 sbus_counters_data[0].value.ui64 = *softsp->sbus_pcr >> 4; in sbus_counters_kstat_update()
2510 pic_register = *softsp->sbus_pic; in sbus_counters_kstat_update()
2531 struct sbus_soft_state *softsp = (struct sbus_soft_state *) in sbus_update_intr_state() local
2539 &hdlp->ih_pri, softsp->intr_mapping_ign) == DDI_FAILURE) { in sbus_update_intr_state()
2546 sbus_arg = softsp->intr_list[ino]; in sbus_update_intr_state()