Lines Matching refs:pcmu_p

123 static int pcmu_ctlops_poke(pcmu_t *pcmu_p, peekpoke_ctlops_t *in_args);
124 static int pcmu_ctlops_peek(pcmu_t *pcmu_p, peekpoke_ctlops_t *in_args,
138 static uint32_t pcmu_identity_init(pcmu_t *pcmu_p);
139 static int pcmu_intr_setup(pcmu_t *pcmu_p);
140 static void pcmu_pbm_errstate_get(pcmu_t *pcmu_p,
142 static int pcmu_obj_setup(pcmu_t *pcmu_p);
143 static void pcmu_obj_destroy(pcmu_t *pcmu_p);
144 static void pcmu_obj_resume(pcmu_t *pcmu_p);
145 static void pcmu_obj_suspend(pcmu_t *pcmu_p);
329 pcmu_t *pcmu_p = get_pcmu_soft_state(instance); in pcmu_info() local
337 if (pcmu_p == NULL) in pcmu_info()
339 *result = (void *)pcmu_p->pcmu_dip; in pcmu_info()
355 pcmu_t *pcmu_p; in pcmu_attach() local
370 pcmu_p = get_pcmu_soft_state(instance); in pcmu_attach()
371 pcmu_p->pcmu_dip = dip; in pcmu_attach()
372 mutex_init(&pcmu_p->pcmu_mutex, NULL, MUTEX_DRIVER, NULL); in pcmu_attach()
373 pcmu_p->pcmu_soft_state = PCMU_SOFT_STATE_CLOSED; in pcmu_attach()
374 pcmu_p->pcmu_open_count = 0; in pcmu_attach()
379 if (get_pcmu_properties(pcmu_p, dip) == DDI_FAILURE) { in pcmu_attach()
386 if (map_pcmu_registers(pcmu_p, dip) == DDI_FAILURE) { in pcmu_attach()
389 if (pcmu_obj_setup(pcmu_p) != DDI_SUCCESS) { in pcmu_attach()
408 pcmu_p->pcmu_state = PCMU_ATTACHED; in pcmu_attach()
415 unmap_pcmu_registers(pcmu_p); in pcmu_attach()
417 free_pcmu_properties(pcmu_p); in pcmu_attach()
419 mutex_destroy(&pcmu_p->pcmu_mutex); in pcmu_attach()
431 pcmu_p = get_pcmu_soft_state(instance); in pcmu_attach()
432 mutex_enter(&pcmu_p->pcmu_mutex); in pcmu_attach()
437 if (pcmu_p->pcmu_state != PCMU_SUSPENDED) { in pcmu_attach()
440 mutex_exit(&pcmu_p->pcmu_mutex); in pcmu_attach()
443 pcmu_obj_resume(pcmu_p); in pcmu_attach()
444 pcmu_p->pcmu_state = PCMU_ATTACHED; in pcmu_attach()
448 mutex_exit(&pcmu_p->pcmu_mutex); in pcmu_attach()
466 pcmu_t *pcmu_p = get_pcmu_soft_state(instance); in pcmu_detach() local
472 if (pcmu_p->pcmu_state != PCMU_ATTACHED) { in pcmu_detach()
478 mutex_enter(&pcmu_p->pcmu_mutex); in pcmu_detach()
483 pcmu_obj_destroy(pcmu_p); in pcmu_detach()
489 free_pcmu_properties(pcmu_p); in pcmu_detach()
490 unmap_pcmu_registers(pcmu_p); in pcmu_detach()
491 mutex_exit(&pcmu_p->pcmu_mutex); in pcmu_detach()
492 mutex_destroy(&pcmu_p->pcmu_mutex); in pcmu_detach()
506 pcmu_obj_suspend(pcmu_p); in pcmu_detach()
507 pcmu_p->pcmu_state = PCMU_SUSPENDED; in pcmu_detach()
509 mutex_exit(&pcmu_p->pcmu_mutex); in pcmu_detach()
514 mutex_exit(&pcmu_p->pcmu_mutex); in pcmu_detach()
523 pcmu_t *pcmu_p; in pcmu_open() local
532 pcmu_p = DEV_TO_SOFTSTATE(*devp); in pcmu_open()
533 if (pcmu_p == NULL) { in pcmu_open()
540 PCMU_DBG2(PCMU_DBG_OPEN, pcmu_p->pcmu_dip, in pcmu_open()
542 mutex_enter(&pcmu_p->pcmu_mutex); in pcmu_open()
544 if (pcmu_p->pcmu_soft_state != PCMU_SOFT_STATE_CLOSED) { in pcmu_open()
545 mutex_exit(&pcmu_p->pcmu_mutex); in pcmu_open()
546 PCMU_DBG0(PCMU_DBG_OPEN, pcmu_p->pcmu_dip, "busy\n"); in pcmu_open()
549 pcmu_p->pcmu_soft_state = PCMU_SOFT_STATE_OPEN_EXCL; in pcmu_open()
551 if (pcmu_p->pcmu_soft_state == PCMU_SOFT_STATE_OPEN_EXCL) { in pcmu_open()
552 mutex_exit(&pcmu_p->pcmu_mutex); in pcmu_open()
553 PCMU_DBG0(PCMU_DBG_OPEN, pcmu_p->pcmu_dip, "busy\n"); in pcmu_open()
556 pcmu_p->pcmu_soft_state = PCMU_SOFT_STATE_OPEN; in pcmu_open()
558 pcmu_p->pcmu_open_count++; in pcmu_open()
559 mutex_exit(&pcmu_p->pcmu_mutex); in pcmu_open()
568 pcmu_t *pcmu_p; in pcmu_close() local
574 pcmu_p = DEV_TO_SOFTSTATE(dev); in pcmu_close()
575 if (pcmu_p == NULL) { in pcmu_close()
579 PCMU_DBG2(PCMU_DBG_CLOSE, pcmu_p->pcmu_dip, in pcmu_close()
581 mutex_enter(&pcmu_p->pcmu_mutex); in pcmu_close()
582 pcmu_p->pcmu_soft_state = PCMU_SOFT_STATE_CLOSED; in pcmu_close()
583 pcmu_p->pcmu_open_count = 0; in pcmu_close()
584 mutex_exit(&pcmu_p->pcmu_mutex); in pcmu_close()
593 pcmu_t *pcmu_p; in pcmu_ioctl() local
599 pcmu_p = DEV_TO_SOFTSTATE(dev); in pcmu_ioctl()
600 if (pcmu_p == NULL) { in pcmu_ioctl()
604 dip = pcmu_p->pcmu_dip; in pcmu_ioctl()
690 pcmu_t *pcmu_p = get_pcmu_soft_state(ddi_get_instance(dip)); in pcmu_map() local
730 if (rval = pcmu_reloc_reg(dip, rdip, pcmu_p, rp)) { in pcmu_map()
741 if (rval = pcmu_xlate_reg(pcmu_p, rp, &p_regspec)) { in pcmu_map()
763 pcmu_do_poke(pcmu_t *pcmu_p, peekpoke_ctlops_t *in_args) in pcmu_do_poke() argument
765 pcmu_pbm_t *pcbm_p = pcmu_p->pcmu_pcbm_p; in pcmu_do_poke()
809 pcmu_ctlops_poke(pcmu_t *pcmu_p, peekpoke_ctlops_t *in_args) in pcmu_ctlops_poke() argument
811 return (pcmu_do_poke(pcmu_p, in_args)); in pcmu_ctlops_poke()
816 pcmu_do_peek(pcmu_t *pcmu_p, peekpoke_ctlops_t *in_args) in pcmu_do_peek() argument
842 pcmu_ctlops_peek(pcmu_t *pcmu_p, peekpoke_ctlops_t *in_args, void *result) in pcmu_ctlops_peek() argument
845 return (pcmu_do_peek(pcmu_p, in_args)); in pcmu_ctlops_peek()
872 pcmu_t *pcmu_p = get_pcmu_soft_state(ddi_get_instance(dip)); in pcmu_ctlops() local
876 return (pcmu_init_child(pcmu_p, (dev_info_t *)arg)); in pcmu_ctlops()
879 return (pcmu_uninit_child(pcmu_p, (dev_info_t *)arg)); in pcmu_ctlops()
905 return (pcmu_ctlops_poke(pcmu_p, (peekpoke_ctlops_t *)arg)); in pcmu_ctlops()
908 return (pcmu_ctlops_peek(pcmu_p, (peekpoke_ctlops_t *)arg, in pcmu_ctlops()
939 pcmu_t *pcmu_p = get_pcmu_soft_state(ddi_get_instance(dip)); in pcmu_intr_ops() local
967 ret = pcmu_ib_update_intr_state(pcmu_p, rdip, hdlp, in pcmu_intr_ops()
971 ret = pcmu_ib_update_intr_state(pcmu_p, rdip, hdlp, in pcmu_intr_ops()
1009 pcmu_obj_setup(pcmu_t *pcmu_p) in pcmu_obj_setup() argument
1014 pcmu_p->pcmu_rev = ddi_prop_get_int(DDI_DEV_T_ANY, pcmu_p->pcmu_dip, in pcmu_obj_setup()
1017 pcmu_ib_create(pcmu_p); in pcmu_obj_setup()
1018 pcmu_cb_create(pcmu_p); in pcmu_obj_setup()
1019 pcmu_ecc_create(pcmu_p); in pcmu_obj_setup()
1020 pcmu_pbm_create(pcmu_p); in pcmu_obj_setup()
1021 pcmu_err_create(pcmu_p); in pcmu_obj_setup()
1022 if ((ret = pcmu_intr_setup(pcmu_p)) != DDI_SUCCESS) in pcmu_obj_setup()
1029 if ((strncmp(ddi_binding_name(pcmu_p->pcmu_dip), in pcmu_obj_setup()
1031 != 0) || (pcmu_p->pcmu_rev > 4)) { in pcmu_obj_setup()
1032 pcmu_kstat_create(pcmu_p); in pcmu_obj_setup()
1045 pcmu_obj_destroy(pcmu_t *pcmu_p) in pcmu_obj_destroy() argument
1049 pcmu_kstat_destroy(pcmu_p); in pcmu_obj_destroy()
1050 pcmu_pbm_destroy(pcmu_p); in pcmu_obj_destroy()
1051 pcmu_err_destroy(pcmu_p); in pcmu_obj_destroy()
1052 pcmu_ecc_destroy(pcmu_p); in pcmu_obj_destroy()
1053 pcmu_cb_destroy(pcmu_p); in pcmu_obj_destroy()
1054 pcmu_ib_destroy(pcmu_p); in pcmu_obj_destroy()
1055 pcmu_intr_teardown(pcmu_p); in pcmu_obj_destroy()
1062 pcmu_obj_resume(pcmu_t *pcmu_p) in pcmu_obj_resume() argument
1066 pcmu_ib_configure(pcmu_p->pcmu_ib_p); in pcmu_obj_resume()
1067 pcmu_ecc_configure(pcmu_p); in pcmu_obj_resume()
1068 pcmu_ib_resume(pcmu_p->pcmu_ib_p); in pcmu_obj_resume()
1070 &(pcmu_p->pcmu_cb_p->pcb_ittrans_cookie)); in pcmu_obj_resume()
1072 pcmu_pbm_configure(pcmu_p->pcmu_pcbm_p); in pcmu_obj_resume()
1074 pcmu_cb_resume(pcmu_p->pcmu_cb_p); in pcmu_obj_resume()
1076 pcmu_pbm_resume(pcmu_p->pcmu_pcbm_p); in pcmu_obj_resume()
1083 pcmu_obj_suspend(pcmu_t *pcmu_p) in pcmu_obj_suspend() argument
1087 pcmu_pbm_suspend(pcmu_p->pcmu_pcbm_p); in pcmu_obj_suspend()
1088 pcmu_ib_suspend(pcmu_p->pcmu_ib_p); in pcmu_obj_suspend()
1089 pcmu_cb_suspend(pcmu_p->pcmu_cb_p); in pcmu_obj_suspend()
1095 pcmu_intr_setup(pcmu_t *pcmu_p) in pcmu_intr_setup() argument
1097 dev_info_t *dip = pcmu_p->pcmu_dip; in pcmu_intr_setup()
1098 pcmu_pbm_t *pcbm_p = pcmu_p->pcmu_pcbm_p; in pcmu_intr_setup()
1099 pcmu_cb_t *pcb_p = pcmu_p->pcmu_cb_p; in pcmu_intr_setup()
1106 "interrupts", (caddr_t)&pcmu_p->pcmu_inos, in pcmu_intr_setup()
1107 &pcmu_p->pcmu_inos_len) != DDI_SUCCESS) { in pcmu_intr_setup()
1118 no_of_intrs = pcmu_p->pcmu_inos_len / i; in pcmu_intr_setup()
1120 pcmu_p->pcmu_inos[i] = in pcmu_intr_setup()
1121 PCMU_IB_MONDO_TO_INO(pcmu_p->pcmu_inos[i]); in pcmu_intr_setup()
1125 if (i = pcmu_ecc_register_intr(pcmu_p)) { in pcmu_intr_setup()
1130 pcmu_ecc_enable_intr(pcmu_p); in pcmu_intr_setup()
1137 pcmu_ib_intr_enable(pcmu_p, pcmu_p->pcmu_inos[CBNINTR_PBM]); in pcmu_intr_setup()
1139 intr_dist_add_weighted(pcmu_ib_intr_dist_all, pcmu_p->pcmu_ib_p); in pcmu_intr_setup()
1142 pcmu_intr_teardown(pcmu_p); in pcmu_intr_setup()
1171 map_pcmu_registers(pcmu_t *pcmu_p, dev_info_t *dip) in map_pcmu_registers() argument
1179 if (ddi_regs_map_setup(dip, 0, &pcmu_p->pcmu_address[0], 0, 0, in map_pcmu_registers()
1180 &attr, &pcmu_p->pcmu_ac[0]) != DDI_SUCCESS) { in map_pcmu_registers()
1189 if (ddi_regs_map_setup(dip, 2, &pcmu_p->pcmu_address[2], 0, 0, in map_pcmu_registers()
1190 &attr, &pcmu_p->pcmu_ac[2]) != DDI_SUCCESS) { in map_pcmu_registers()
1193 ddi_regs_map_free(&pcmu_p->pcmu_ac[0]); in map_pcmu_registers()
1203 if (ddi_regs_map_setup(dip, 1, &pcmu_p->pcmu_address[1], 0, in map_pcmu_registers()
1204 PCI_CONF_HDR_SIZE, &attr, &pcmu_p->pcmu_ac[1]) != DDI_SUCCESS) { in map_pcmu_registers()
1208 ddi_regs_map_free(&pcmu_p->pcmu_ac[0]); in map_pcmu_registers()
1212 pcmu_p->pcmu_address[0], pcmu_p->pcmu_address[1]); in map_pcmu_registers()
1226 unmap_pcmu_registers(pcmu_t *pcmu_p) in unmap_pcmu_registers() argument
1228 ddi_regs_map_free(&pcmu_p->pcmu_ac[0]); in unmap_pcmu_registers()
1229 ddi_regs_map_free(&pcmu_p->pcmu_ac[1]); in unmap_pcmu_registers()
1230 ddi_regs_map_free(&pcmu_p->pcmu_ac[2]); in unmap_pcmu_registers()
1238 get_reg_base(pcmu_t *pcmu_p) in get_reg_base() argument
1240 return ((uintptr_t)pcmu_p->pcmu_address[2]); in get_reg_base()
1245 get_config_reg_base(pcmu_t *pcmu_p) in get_config_reg_base() argument
1247 return ((uintptr_t)(pcmu_p->pcmu_address[1])); in get_config_reg_base()
1290 pcmu_t *pcmu_p = pib_p->pib_pcmu_p; in pcmu_ib_setup() local
1291 uintptr_t a = get_reg_base(pcmu_p); in pcmu_ib_setup()
1293 pib_p->pib_ign = PCMU_ID_TO_IGN(pcmu_p->pcmu_id); in pcmu_ib_setup()
1422 pcmu_cb_teardown(pcmu_t *pcmu_p) in pcmu_cb_teardown() argument
1424 pcmu_cb_t *pcb_p = pcmu_p->pcmu_cb_p; in pcmu_cb_teardown()
1430 pcmu_ecc_add_intr(pcmu_t *pcmu_p, int inum, pcmu_ecc_intr_info_t *eii_p) in pcmu_ecc_add_intr() argument
1434 mondo = ((pcmu_p->pcmu_cb_p->pcb_ign << PCMU_INO_BITS) | in pcmu_ecc_add_intr()
1435 pcmu_p->pcmu_inos[inum]); in pcmu_ecc_add_intr()
1446 pcmu_ecc_rem_intr(pcmu_t *pcmu_p, int inum, pcmu_ecc_intr_info_t *eii_p) in pcmu_ecc_rem_intr() argument
1450 mondo = ((pcmu_p->pcmu_cb_p->pcb_ign << PCMU_INO_BITS) | in pcmu_ecc_rem_intr()
1451 pcmu_p->pcmu_inos[inum]); in pcmu_ecc_rem_intr()
1459 pcmu_t *pcmu_p = pcbm_p->pcbm_pcmu_p; in pcmu_pbm_configure() local
1460 dev_info_t *dip = pcmu_p->pcmu_dip; in pcmu_pbm_configure()
1494 pcmu_t *pcmu_p = pcbm_p->pcbm_pcmu_p; in pcmu_pbm_disable_errors() local
1495 pcmu_ib_t *pib_p = pcmu_p->pcmu_ib_p; in pcmu_pbm_disable_errors()
1507 pcmu_p->pcmu_inos[CBNINTR_PBM], PCMU_IB_INTR_NOWAIT); in pcmu_pbm_disable_errors()
1512 pcmu_cb_setup(pcmu_t *pcmu_p) in pcmu_cb_setup() argument
1515 pcmu_cb_t *pcb_p = pcmu_p->pcmu_cb_p; in pcmu_cb_setup()
1517 pcb_p->pcb_ign = PCMU_ID_TO_IGN(pcmu_p->pcmu_id); in pcmu_cb_setup()
1518 pa = (uint64_t)hat_getpfnum(kas.a_hat, pcmu_p->pcmu_address[0]); in pcmu_cb_setup()
1538 u2u_ittrans_init(pcmu_p, in pcmu_cb_setup()
1552 get_pbm_reg_base(pcmu_t *pcmu_p) in get_pbm_reg_base() argument
1554 return ((uintptr_t)(pcmu_p->pcmu_address[0])); in get_pbm_reg_base()
1560 pcmu_t *pcmu_p = pcbm_p->pcbm_pcmu_p; in pcmu_pbm_setup() local
1565 uintptr_t a = get_pbm_reg_base(pcmu_p); in pcmu_pbm_setup()
1572 (config_header_t *)get_config_reg_base(pcmu_p); in pcmu_pbm_setup()
1655 pcmu_add_upstream_kstat(pcmu_t *pcmu_p) in pcmu_add_upstream_kstat() argument
1657 pcmu_cntr_pa_t *cntr_pa_p = &pcmu_p->pcmu_uks_pa; in pcmu_add_upstream_kstat()
1658 uint64_t regbase = va_to_pa((void *)get_reg_base(pcmu_p)); in pcmu_add_upstream_kstat()
1662 pcmu_p->pcmu_uksp = pcmu_create_cntr_kstat(pcmu_p, "pcmup", in pcmu_add_upstream_kstat()
1672 u2u_ittrans_init(pcmu_t *pcmu_p, u2u_ittrans_data_t **ittrans_cookie) in u2u_ittrans_init() argument
1690 board = ddi_getprop(DDI_DEV_T_ANY, pcmu_p->pcmu_dip, in u2u_ittrans_init()
1713 ret = ddi_regs_map_setup(pcmu_p->pcmu_dip, in u2u_ittrans_init()
1730 if (pcmu_p->pcmu_id != u2u_trans_p->u2u_port_id) { in u2u_ittrans_init()
1796 u2u_translate_tgtid(pcmu_t *pcmu_p, uint_t cpu_id, in u2u_translate_tgtid() argument
1808 (u2u_ittrans_data_t *)(pcmu_p->pcmu_cb_p->pcb_ittrans_cookie); in u2u_translate_tgtid()
1921 pcmu_t *pcmu_p = ecc_err_p->ecc_ii_p.pecc_p->pecc_pcmu_p; in pcmu_ecc_classify() local
1923 ASSERT(MUTEX_HELD(&pcmu_p->pcmu_err_mutex)); in pcmu_ecc_classify()
1988 pcmu_clear_error(pcmu_t *pcmu_p, pcmu_pbm_errstate_t *pbm_err_p) in pcmu_clear_error() argument
1990 pcmu_pbm_t *pcbm_p = pcmu_p->pcmu_pcbm_p; in pcmu_clear_error()
2010 pcmu_t *pcmu_p = (pcmu_t *)impl_data; in pcmu_pbm_err_handler() local
2013 ASSERT(MUTEX_HELD(&pcmu_p->pcmu_err_mutex)); in pcmu_pbm_err_handler()
2014 pcmu_pbm_errstate_get(pcmu_p, &pbm_err); in pcmu_pbm_err_handler()
2074 pcmu_clear_error(pcmu_p, &pbm_err); in pcmu_pbm_err_handler()
2081 pcmu_check_error(pcmu_t *pcmu_p) in pcmu_check_error() argument
2083 pcmu_pbm_t *pcbm_p = pcmu_p->pcmu_pcbm_p; in pcmu_check_error()
2087 ASSERT(MUTEX_HELD(&pcmu_p->pcmu_err_mutex)); in pcmu_check_error()
2108 pcmu_pbm_errstate_get(pcmu_t *pcmu_p, pcmu_pbm_errstate_t *pbm_err_p) in pcmu_pbm_errstate_get() argument
2110 pcmu_pbm_t *pcbm_p = pcmu_p->pcmu_pcbm_p; in pcmu_pbm_errstate_get()
2112 ASSERT(MUTEX_HELD(&pcmu_p->pcmu_err_mutex)); in pcmu_pbm_errstate_get()
2148 pcmu_err_create(pcmu_t *pcmu_p) in pcmu_err_create() argument
2169 mutex_init(&pcmu_p->pcmu_err_mutex, NULL, MUTEX_DRIVER, in pcmu_err_create()
2170 (void *)pcmu_p->pcmu_fm_ibc); in pcmu_err_create()
2174 pcmu_err_destroy(pcmu_t *pcmu_p) in pcmu_err_destroy() argument
2176 mutex_destroy(&pcmu_p->pcmu_err_mutex); in pcmu_err_destroy()
2188 pcmu_t *pcmu_p; in pcmu_pbm_ereport_post() local
2193 pcmu_p = get_pcmu_soft_state(instance); in pcmu_pbm_ereport_post()
2203 (pcmu_p->pcmu_pcbm_p)->pcbm_nameinst_str, in pcmu_pbm_ereport_post()
2204 (pcmu_p->pcmu_pcbm_p)->pcbm_nameaddr_str, in pcmu_pbm_ereport_post()
2209 "portid", pcmu_p->pcmu_id); in pcmu_pbm_ereport_post()