Lines Matching refs:softsp

244 sysio_err_uninit(struct sbus_soft_state *softsp);
247 iommu_uninit(struct sbus_soft_state *softsp);
250 stream_buf_uninit(struct sbus_soft_state *softsp);
267 sbus_ctlops_poke(struct sbus_soft_state *softsp, peekpoke_ctlops_t *in_args);
270 sbus_ctlops_peek(struct sbus_soft_state *softsp, peekpoke_ctlops_t *in_args,
274 sbus_init(struct sbus_soft_state *softsp, caddr_t address);
277 sbus_resume_init(struct sbus_soft_state *softsp, int resume);
444 struct sbus_soft_state *softsp; in sbus_attach() local
462 softsp = ddi_get_soft_state(sbusp, instance); in sbus_attach()
464 if ((error = iommu_resume_init(softsp)) != DDI_SUCCESS) in sbus_attach()
467 if ((error = sbus_resume_init(softsp, 1)) != DDI_SUCCESS) in sbus_attach()
470 if ((error = stream_buf_resume_init(softsp)) != DDI_SUCCESS) in sbus_attach()
480 softsp->intr_mapping_reg, 0); in sbus_attach()
493 softsp = ddi_get_soft_state(sbusp, instance); in sbus_attach()
496 softsp->dip = devi; in sbus_attach()
498 if ((softsp->upa_id = (int)ddi_getprop(DDI_DEV_T_ANY, softsp->dip, in sbus_attach()
528 if (ddi_regs_map_setup(softsp->dip, 0, &softsp->address, 0, 0, in sbus_attach()
529 &attr, &softsp->ac) != DDI_SUCCESS) { in sbus_attach()
531 ddi_get_name(softsp->dip), in sbus_attach()
532 ddi_get_instance(softsp->dip)); in sbus_attach()
535 if (softsp->address == (caddr_t)-1) { in sbus_attach()
537 ddi_get_instance(softsp->dip)); in sbus_attach()
542 (void *)devi, (void *)softsp)); in sbus_attach()
558 if ((rv = ddi_map_regs(softsp->dip, 0, &addr, in sbus_attach()
569 if ((error = iommu_init(softsp, softsp->address)) != DDI_SUCCESS) in sbus_attach()
572 if ((error = sbus_init(softsp, softsp->address)) != DDI_SUCCESS) in sbus_attach()
575 if ((error = sysio_err_init(softsp, softsp->address)) != DDI_SUCCESS) in sbus_attach()
578 if ((error = stream_buf_init(softsp, softsp->address)) != DDI_SUCCESS) in sbus_attach()
582 mutex_init(&softsp->pokefault_mutex, NULL, MUTEX_SPIN, in sbus_attach()
585 sbus_add_kstats(softsp); in sbus_attach()
605 struct sbus_soft_state *softsp; in sbus_detach() local
624 softsp = ddi_get_soft_state(sbusp, instance); in sbus_detach()
627 softsp->intr_mapping_reg, 1); in sbus_detach()
641 struct sbus_soft_state *softsp; in sbus_do_detach() local
644 softsp = ddi_get_soft_state(sbusp, instance); in sbus_do_detach()
645 ASSERT(softsp != NULL); in sbus_do_detach()
652 if (stream_buf_uninit(softsp) == DDI_FAILURE) { in sbus_do_detach()
657 if (sysio_err_uninit(softsp) == DDI_FAILURE) { in sbus_do_detach()
662 if (iommu_uninit(softsp)) { in sbus_do_detach()
667 if (softsp->ac) { in sbus_do_detach()
668 ddi_regs_map_free(&softsp->ac); in sbus_do_detach()
669 softsp->address = NULL; in sbus_do_detach()
675 if (softsp->sbus_counters_ksp != (kstat_t *)NULL) in sbus_do_detach()
676 kstat_delete(softsp->sbus_counters_ksp); in sbus_do_detach()
698 pc_ittrans_uninit(softsp->ittrans_cookie); in sbus_do_detach()
710 sbus_init(struct sbus_soft_state *softsp, caddr_t address) in sbus_init() argument
727 softsp->sysio_ctrl_reg = REG_ADDR(address, OFF_SYSIO_CTRL_REG); in sbus_init()
728 softsp->sbus_ctrl_reg = REG_ADDR(address, OFF_SBUS_CTRL_REG); in sbus_init()
729 softsp->sbus_slot_config_reg = REG_ADDR(address, OFF_SBUS_SLOT_CONFIG); in sbus_init()
730 softsp->intr_mapping_reg = REG_ADDR(address, OFF_INTR_MAPPING_REG); in sbus_init()
731 softsp->clr_intr_reg = REG_ADDR(address, OFF_CLR_INTR_REG); in sbus_init()
732 softsp->intr_retry_reg = REG_ADDR(address, OFF_INTR_RETRY_REG); in sbus_init()
733 softsp->sbus_intr_state = REG_ADDR(address, OFF_SBUS_INTR_STATE_REG); in sbus_init()
734 softsp->sbus_pcr = REG_ADDR(address, OFF_SBUS_PCR); in sbus_init()
735 softsp->sbus_pic = REG_ADDR(address, OFF_SBUS_PIC); in sbus_init()
740 "SBUS Control reg: 0x%p", (void *)softsp->sysio_ctrl_reg, in sbus_init()
741 (void *)softsp->sbus_ctrl_reg)); in sbus_init()
745 pc_ittrans_init(softsp->upa_id, &softsp->ittrans_cookie); in sbus_init()
748 softsp->intr_mapping_ign = in sbus_init()
749 UPAID_TO_IGN(softsp->upa_id) << IMR_IGN_SHIFT; in sbus_init()
752 softsp->obio_intr_state = softsp->sbus_intr_state + 1; in sbus_init()
754 (void) sbus_resume_init(softsp, 0); in sbus_init()
761 softsp->sbus_slave_burstsizes[i] = 0xffffffffu; in sbus_init()
777 numproxy = ddi_prop_get_int(DDI_DEV_T_ANY, softsp->dip, in sbus_init()
781 set_intr_mapping_reg(softsp->upa_id, in sbus_init()
782 (uint64_t *)(softsp->intr_mapping_reg + in sbus_init()
786 set_intr_mapping_reg(softsp->upa_id, in sbus_init()
787 (uint64_t *)(softsp->intr_mapping_reg + in sbus_init()
808 sbus_resume_init(struct sbus_soft_state *softsp, int resume) in sbus_resume_init() argument
827 *softsp->sysio_ctrl_reg &= 0xFF0FFFFFFFFFFFFFULL; in sbus_resume_init()
828 *softsp->sysio_ctrl_reg |= tmpconst << 51; in sbus_resume_init()
835 *softsp->sysio_ctrl_reg |= in sbus_resume_init()
836 (uint64_t)STARFIRE_UPAID2HWIGN(softsp->upa_id) in sbus_resume_init()
840 *softsp->sysio_ctrl_reg |= in sbus_resume_init()
841 (uint64_t)softsp->upa_id << 51; in sbus_resume_init()
844 *softsp->sysio_ctrl_reg |= in sbus_resume_init()
845 (uint64_t)softsp->upa_id << SYSIO_IGN; in sbus_resume_init()
852 *softsp->sbus_ctrl_reg |= SBUS_ARBIT_ALL; in sbus_resume_init()
858 sbus_burst_sizes = ddi_getprop(DDI_DEV_T_ANY, softsp->dip, in sbus_resume_init()
861 softsp->sbus_burst_sizes = sbus_burst_sizes & SYSIO_BURST_MASK; in sbus_resume_init()
862 softsp->sbus64_burst_sizes = sbus_burst_sizes & SYSIO64_BURST_MASK; in sbus_resume_init()
870 config = softsp->sbus_slot_config_reg + i; in sbus_resume_init()
877 tmpreg = *softsp->sbus_ctrl_reg; in sbus_resume_init()
893 if (softsp->sbus_slave_burstsizes[i] != 0xffffffffu) { in sbus_resume_init()
894 config = softsp->sbus_slot_config_reg + i; in sbus_resume_init()
896 if (softsp->sbus_slave_burstsizes[i] & in sbus_resume_init()
900 softsp->sbus_slave_burstsizes[i] >> in sbus_resume_init()
907 softsp->sbus_slave_burstsizes[i] & in sbus_resume_init()
919 tmpreg = *softsp->sbus_ctrl_reg; in sbus_resume_init()
1157 struct sbus_soft_state *softsp = (struct sbus_soft_state *) in sbus_initchild() local
1213 slot_reg = softsp->sbus_slot_config_reg + slot; in sbus_initchild()
1236 if (((softsp->sbus_slave_burstsizes[slot] & in sbus_initchild()
1238 ((softsp->sbus_slave_burstsizes[slot] & 0xffff) != 0)) { in sbus_initchild()
1256 softsp->sbus_slave_burstsizes[slot] &= in sbus_initchild()
1263 if (softsp->sbus_slave_burstsizes[slot] & in sbus_initchild()
1266 burstsizes = softsp->sbus_slave_burstsizes[slot] >> in sbus_initchild()
1276 if (softsp->sbus_slave_burstsizes[slot] & in sbus_initchild()
1279 softsp->sbus_slave_burstsizes[slot] & in sbus_initchild()
1335 sbus_ctlops_poke(struct sbus_soft_state *softsp, peekpoke_ctlops_t *in_args) in sbus_ctlops_poke() argument
1345 mutex_enter(&softsp->pokefault_mutex); in sbus_ctlops_poke()
1346 softsp->ontrap_data = &otd; in sbus_ctlops_poke()
1360 tmpreg = *softsp->sbus_ctrl_reg; in sbus_ctlops_poke()
1368 tmpreg = *softsp->sbus_err_reg; in sbus_ctlops_poke()
1370 tmpreg = *softsp->sbus_err_reg; in sbus_ctlops_poke()
1375 softsp->ontrap_data = NULL; in sbus_ctlops_poke()
1376 mutex_exit(&softsp->pokefault_mutex); in sbus_ctlops_poke()
1387 sbus_ctlops_peek(struct sbus_soft_state *softsp, peekpoke_ctlops_t *in_args, in sbus_ctlops_peek() argument
1420 struct sbus_soft_state *softsp = (struct sbus_soft_state *) in sbus_ctlops() local
1442 (1 << (ddi_fls(softsp->sbus_burst_sizes) - 1))); in sbus_ctlops()
1445 (1 << (ddi_ffs(softsp->sbus_burst_sizes) - 1))); in sbus_ctlops()
1508 &pri, softsp->intr_mapping_ign); in sbus_ctlops()
1559 return (sbus_ctlops_poke(softsp, (peekpoke_ctlops_t *)arg)); in sbus_ctlops()
1562 return (sbus_ctlops_peek(softsp, (peekpoke_ctlops_t *)arg, in sbus_ctlops()
1618 spurious_cntr = &intr_info->softsp->spurious_cntrs[intr_info->pil]; in sbus_intr_wrapper()
1646 tmpreg = *intr_info->softsp->sbus_ctrl_reg; in sbus_intr_wrapper()
1649 tmpreg = *intr_info->softsp->sbus_ctrl_reg; in sbus_intr_wrapper()
1685 struct sbus_soft_state *softsp = (struct sbus_soft_state *) in sbus_add_intr_impl() local
1715 &hdlp->ih_pri, softsp->intr_mapping_ign) == DDI_FAILURE) { in sbus_add_intr_impl()
1723 mondo_vec_reg = (softsp->intr_mapping_reg + in sbus_add_intr_impl()
1733 intr_state_reg = softsp->obio_intr_state; in sbus_add_intr_impl()
1736 intr_state_reg = softsp->sbus_intr_state; in sbus_add_intr_impl()
1754 mutex_enter(&softsp->intr_poll_list_lock); in sbus_add_intr_impl()
1756 sbus_arg = softsp->intr_list[ino]; in sbus_add_intr_impl()
1763 tmpreg = *softsp->sbus_ctrl_reg; in sbus_add_intr_impl()
1787 softsp->intr_list[ino] = sbus_arg; in sbus_add_intr_impl()
1788 sbus_arg->clear_reg = (softsp->clr_intr_reg + in sbus_add_intr_impl()
1792 sbus_arg->softsp = softsp; in sbus_add_intr_impl()
1816 mutex_exit(&softsp->intr_poll_list_lock); in sbus_add_intr_impl()
1821 (softsp->intr_hndlr_cnt[slot] == 0)) { in sbus_add_intr_impl()
1826 softsp->ittrans_cookie, cpu_id, in sbus_add_intr_impl()
1854 softsp->intr_hndlr_cnt[slot]++; in sbus_add_intr_impl()
1856 mutex_exit(&softsp->intr_poll_list_lock); in sbus_add_intr_impl()
1869 softsp->intr_hndlr_cnt[slot])); in sbus_add_intr_impl()
1881 tmpreg = *softsp->sbus_ctrl_reg; in sbus_add_intr_impl()
1929 struct sbus_soft_state *softsp = (struct sbus_soft_state *) in sbus_remove_intr_impl() local
1935 mutex_enter(&softsp->intr_poll_list_lock); in sbus_remove_intr_impl()
1939 &hdlp->ih_pri, softsp->intr_mapping_ign) == DDI_FAILURE) { in sbus_remove_intr_impl()
1947 mondo_vec_reg = (softsp->intr_mapping_reg + in sbus_remove_intr_impl()
1953 tmpreg = *softsp->sbus_ctrl_reg; in sbus_remove_intr_impl()
1959 intr_state_reg = softsp->obio_intr_state; in sbus_remove_intr_impl()
1962 intr_state_reg = softsp->sbus_intr_state; in sbus_remove_intr_impl()
1976 sbus_arg = softsp->intr_list[ino]; in sbus_remove_intr_impl()
1979 softsp->intr_hndlr_cnt[slot]--; in sbus_remove_intr_impl()
1982 "ino 0x%x, sbus_arg 0x%p intr cntr %d\n", (void *)softsp, in sbus_remove_intr_impl()
1984 softsp->intr_hndlr_cnt[slot])); in sbus_remove_intr_impl()
1998 if (softsp->intr_hndlr_cnt[slot] > 0) { in sbus_remove_intr_impl()
2001 tmpreg = *softsp->sbus_ctrl_reg; in sbus_remove_intr_impl()
2005 if ((softsp->intr_hndlr_cnt[slot] == 0) || (slot >= EXT_SBUS_SLOTS)) { in sbus_remove_intr_impl()
2009 pc_ittrans_cleanup(softsp->ittrans_cookie, mondo_vec_reg); in sbus_remove_intr_impl()
2019 softsp->intr_list[ino] = NULL; in sbus_remove_intr_impl()
2023 mutex_exit(&softsp->intr_poll_list_lock); in sbus_remove_intr_impl()
2112 struct sbus_soft_state *softsp = (struct sbus_soft_state *) in sbus_intr_ops() local
2131 softsp->intr_mapping_ign); in sbus_intr_ops()
2216 struct sbus_soft_state *softsp; in sbus_intrdist() local
2228 softsp = ddi_get_soft_state(sbusp, ddi_get_instance(dip)); in sbus_intrdist()
2235 mondo_vec_reg = (softsp->intr_mapping_reg + in sbus_intrdist()
2268 tmpreg = *softsp->sbus_ctrl_reg; in sbus_intrdist()
2276 intr_state_reg = softsp->obio_intr_state; in sbus_intrdist()
2293 intr_state_reg = softsp->sbus_intr_state; in sbus_intrdist()
2319 mondo_vec = (pc_translate_tgtid(softsp->ittrans_cookie, in sbus_intrdist()
2351 struct sbus_soft_state *softsp; in sbus_intr_reset() local
2355 softsp = ddi_get_soft_state(sbusp, ddi_get_instance(dip)); in sbus_intr_reset()
2364 mondo_clear_reg = (softsp->clr_intr_reg + in sbus_intr_reset()
2494 sbus_add_kstats(struct sbus_soft_state *softsp) in sbus_add_kstats() argument
2507 sbus_add_picN_kstats(softsp->dip); in sbus_add_kstats()
2520 ddi_get_instance(softsp->dip), "counters", in sbus_add_kstats()
2525 " failed", ddi_get_instance(softsp->dip)); in sbus_add_kstats()
2543 sbus_counters_ksp->ks_private = (void *)softsp; in sbus_add_kstats()
2548 softsp->sbus_counters_ksp = sbus_counters_ksp; in sbus_add_kstats()
2555 struct sbus_soft_state *softsp; in sbus_counters_kstat_update() local
2559 softsp = (struct sbus_soft_state *)ksp->ks_private; in sbus_counters_kstat_update()
2569 *softsp->sbus_pcr = in sbus_counters_kstat_update()
2582 sbus_counters_data[0].value.ui64 = *softsp->sbus_pcr >> 4; in sbus_counters_kstat_update()
2584 pic_register = *softsp->sbus_pic; in sbus_counters_kstat_update()
2605 struct sbus_soft_state *softsp = (struct sbus_soft_state *) in sbus_update_intr_state() local
2613 &hdlp->ih_pri, softsp->intr_mapping_ign) == DDI_FAILURE) { in sbus_update_intr_state()
2620 sbus_arg = softsp->intr_list[ino]; in sbus_update_intr_state()