Lines Matching refs:softsp

83 sysio_ue_intr(struct sbus_soft_state *softsp);
86 sysio_ce_intr(struct sbus_soft_state *softsp);
89 sbus_err_intr(struct sbus_soft_state *softsp);
98 sbus_clear_intr(struct sbus_soft_state *softsp, uint64_t *pafsr);
101 sbus_log_error(struct sbus_soft_state *softsp, uint64_t *pafsr, uint64_t *pafar,
106 sbus_check_bto(struct sbus_soft_state *softsp);
112 sbus_ctrl_ecc_err(struct sbus_soft_state *softsp);
115 sysio_dis_err(struct sbus_soft_state *softsp);
118 sysio_init_err(struct sbus_soft_state *softsp);
121 sysio_thermal_warn_intr(struct sbus_soft_state *softsp);
126 sysio_err_init(struct sbus_soft_state *softsp, caddr_t address) in sysio_err_init() argument
144 softsp->sysio_ecc_reg = REG_ADDR(address, OFF_SYSIO_ECC_REGS); in sysio_err_init()
145 softsp->sysio_ue_reg = REG_ADDR(address, OFF_SYSIO_UE_REGS); in sysio_err_init()
146 softsp->sysio_ce_reg = REG_ADDR(address, OFF_SYSIO_CE_REGS); in sysio_err_init()
147 softsp->sbus_err_reg = REG_ADDR(address, OFF_SBUS_ERR_REGS); in sysio_err_init()
159 if (ddi_getproplen(DDI_DEV_T_ANY, softsp->dip, in sysio_err_init()
164 softsp->dip, "interrupt-priorities", in sysio_err_init()
169 (void) ddi_add_intr(softsp->dip, 0, NULL, NULL, in sysio_err_init()
170 (uint_t (*)())sysio_ue_intr, (caddr_t)softsp); in sysio_err_init()
171 (void) ddi_add_intr(softsp->dip, 1, NULL, NULL, in sysio_err_init()
172 (uint_t (*)())sysio_ce_intr, (caddr_t)softsp); in sysio_err_init()
173 (void) ddi_add_intr(softsp->dip, 2, NULL, NULL, in sysio_err_init()
174 (uint_t (*)())sbus_err_intr, (caddr_t)softsp); in sysio_err_init()
180 thermal_interrupt_enabled = ddi_getprop(DDI_DEV_T_ANY, softsp->dip, in sysio_err_init()
184 (void) ddi_add_intr(softsp->dip, 4, NULL, NULL, in sysio_err_init()
185 (uint_t (*)())sysio_thermal_warn_intr, (caddr_t)softsp); in sysio_err_init()
188 bus_func_register(BF_TYPE_UE, (busfunc_t)sbus_ctrl_ecc_err, softsp); in sysio_err_init()
189 bus_func_register(BF_TYPE_ERRDIS, (busfunc_t)sysio_dis_err, softsp); in sysio_err_init()
191 (void) sysio_init_err(softsp); in sysio_err_init()
197 sysio_err_resume_init(struct sbus_soft_state *softsp) in sysio_err_resume_init() argument
199 (void) sysio_init_err(softsp); in sysio_err_resume_init()
204 sysio_err_uninit(struct sbus_soft_state *softsp) in sysio_err_uninit() argument
207 (void) sysio_dis_err(softsp); in sysio_err_uninit()
209 ddi_remove_intr(softsp->dip, 0, NULL); in sysio_err_uninit()
210 ddi_remove_intr(softsp->dip, 1, NULL); in sysio_err_uninit()
211 ddi_remove_intr(softsp->dip, 2, NULL); in sysio_err_uninit()
214 ddi_remove_intr(softsp->dip, 4, NULL); in sysio_err_uninit()
217 bus_func_unregister(BF_TYPE_UE, (busfunc_t)sbus_ctrl_ecc_err, softsp); in sysio_err_uninit()
218 bus_func_unregister(BF_TYPE_ERRDIS, (busfunc_t)sysio_dis_err, softsp); in sysio_err_uninit()
224 sysio_init_err(struct sbus_soft_state *softsp) in sysio_init_err() argument
236 mondo_vec_reg = (uint64_t *)(softsp->intr_mapping_reg + UE_ECC_MAPREG); in sysio_init_err()
239 cpu_id = pc_translate_tgtid(softsp->ittrans_cookie, cpu_id, in sysio_init_err()
245 mondo_vec_reg = (uint64_t *)(softsp->intr_mapping_reg + CE_ECC_MAPREG); in sysio_init_err()
248 cpu_id = pc_translate_tgtid(softsp->ittrans_cookie, cpu_id, in sysio_init_err()
255 (uint64_t *)(softsp->intr_mapping_reg + SBUS_ERR_MAPREG); in sysio_init_err()
258 cpu_id = pc_translate_tgtid(softsp->ittrans_cookie, cpu_id, in sysio_init_err()
266 mondo_vec_reg = (softsp->intr_mapping_reg + THERMAL_MAPREG); in sysio_init_err()
274 tmpreg = *softsp->sbus_ctrl_reg; in sysio_init_err()
280 *softsp->sysio_ctrl_reg |= tmpreg; in sysio_init_err()
282 *softsp->sysio_ecc_reg = tmpreg; in sysio_init_err()
284 *softsp->sbus_err_reg |= tmpreg; in sysio_init_err()
287 softsp->bto_timestamp = 0; in sysio_init_err()
288 softsp->bto_ctr = 0; in sysio_init_err()
294 sysio_dis_err(struct sbus_soft_state *softsp) in sysio_dis_err() argument
299 *softsp->sysio_ctrl_reg &= ~SYSIO_APCKEN; in sysio_dis_err()
300 *softsp->sysio_ecc_reg = 0; in sysio_dis_err()
301 *softsp->sbus_err_reg &= ~SB_CSR_ERRINT_EN; in sysio_dis_err()
304 tmpreg = *softsp->sbus_ctrl_reg; in sysio_dis_err()
310 mondo_vec_reg = (softsp->intr_mapping_reg + UE_ECC_MAPREG); in sysio_dis_err()
311 clear_vec_reg = (softsp->clr_intr_reg + UE_ECC_CLEAR); in sysio_dis_err()
317 pc_ittrans_cleanup(softsp->ittrans_cookie, mondo_vec_reg); in sysio_dis_err()
322 mondo_vec_reg = (softsp->intr_mapping_reg + CE_ECC_MAPREG); in sysio_dis_err()
323 clear_vec_reg = (softsp->clr_intr_reg + CE_ECC_CLEAR); in sysio_dis_err()
329 pc_ittrans_cleanup(softsp->ittrans_cookie, mondo_vec_reg); in sysio_dis_err()
334 mondo_vec_reg = (softsp->intr_mapping_reg + SBUS_ERR_MAPREG); in sysio_dis_err()
335 clear_vec_reg = (softsp->clr_intr_reg + SBUS_ERR_CLEAR); in sysio_dis_err()
341 pc_ittrans_cleanup(softsp->ittrans_cookie, mondo_vec_reg); in sysio_dis_err()
347 tmpreg = *softsp->sbus_ctrl_reg; in sysio_dis_err()
357 sysio_ue_intr(struct sbus_soft_state *softsp) in sysio_ue_intr() argument
369 (void) sysio_dis_err(softsp); /* disabled sysio errors */ in sysio_ue_intr()
374 ue_reg = (uint64_t *)softsp->sysio_ue_reg; in sysio_ue_intr()
380 clear_reg = (softsp->clr_intr_reg + UE_ECC_CLEAR); in sysio_ue_intr()
395 ecc.flt_bus_id = softsp->upa_id; in sysio_ue_intr()
396 ecc.flt_inst = ddi_get_instance(softsp->dip); in sysio_ue_intr()
490 sysio_ce_intr(struct sbus_soft_state *softsp) in sysio_ce_intr() argument
498 ce_reg = (uint64_t *)softsp->sysio_ce_reg; in sysio_ce_intr()
504 clear_reg = (softsp->clr_intr_reg + CE_ECC_CLEAR); in sysio_ce_intr()
519 ecc.flt_bus_id = softsp->upa_id; in sysio_ce_intr()
520 ecc.flt_inst = ddi_get_instance(softsp->dip); in sysio_ce_intr()
634 sbus_err_intr(struct sbus_soft_state *softsp) in sbus_err_intr() argument
641 on_trap_data_t *otp = softsp->ontrap_data; in sbus_err_intr()
643 t_afsr = *softsp->sbus_err_reg; in sbus_err_intr()
644 afar_reg = (uint64_t *)softsp->sbus_err_reg + 1; in sbus_err_intr()
648 sbus_clear_intr(softsp, (uint64_t *)&t_afsr); in sbus_err_intr()
652 id = (ushort_t)softsp->upa_id; in sbus_err_intr()
653 inst = (ushort_t)ddi_get_instance(softsp->dip); in sbus_err_intr()
659 sbus_clear_intr(softsp, (uint64_t *)&t_afsr); in sbus_err_intr()
668 sbus_log_error(softsp, (uint64_t *)&t_afsr, in sbus_err_intr()
672 sbus_clear_intr(softsp, (uint64_t *)&t_afsr); in sbus_err_intr()
679 sbus_clear_intr(struct sbus_soft_state *softsp, uint64_t *pafsr) in sbus_clear_intr() argument
683 *softsp->sbus_err_reg = *pafsr; in sbus_clear_intr()
684 clear_reg = (softsp->clr_intr_reg + SBUS_ERR_CLEAR); in sbus_clear_intr()
689 sbus_log_error(struct sbus_soft_state *softsp, uint64_t *pafsr, uint64_t *pafar, in sbus_log_error() argument
700 sbus_clear_intr(softsp, (uint64_t *)&t_afsr); in sbus_log_error()
711 if (sbus_check_bto(softsp)) { in sbus_log_error()
713 sbus_clear_intr(softsp, (uint64_t *)&t_afsr); in sbus_log_error()
726 if (sbus_check_bto(softsp)) { in sbus_log_error()
728 sbus_clear_intr(softsp, (uint64_t *)&t_afsr); in sbus_log_error()
739 sbus_clear_intr(softsp, (uint64_t *)&t_afsr); in sbus_log_error()
746 if (sbus_check_bto(softsp)) { in sbus_log_error()
748 sbus_clear_intr(softsp, (uint64_t *)&t_afsr); in sbus_log_error()
757 if (sbus_check_bto(softsp)) { in sbus_log_error()
759 sbus_clear_intr(softsp, (uint64_t *)&t_afsr); in sbus_log_error()
771 sbus_check_bto(struct sbus_soft_state *softsp) in sbus_check_bto() argument
774 hrtime_t diff = now - softsp->bto_timestamp; in sbus_check_bto()
781 softsp->bto_timestamp = now; in sbus_check_bto()
782 softsp->bto_ctr = 0; in sbus_check_bto()
784 if (softsp->bto_ctr++ >= bto_cnt) in sbus_check_bto()
790 sbus_ctrl_ecc_err(struct sbus_soft_state *softsp) in sbus_ctrl_ecc_err() argument
795 t_sb_csr = *softsp->sbus_ctrl_reg; in sbus_ctrl_ecc_err()
796 id = (ushort_t)softsp->upa_id; in sbus_ctrl_ecc_err()
797 inst = (ushort_t)ddi_get_instance(softsp->dip); in sbus_ctrl_ecc_err()
808 *softsp->sbus_ctrl_reg = t_sb_csr; /* clear error bits */ in sbus_ctrl_ecc_err()
909 sysio_thermal_warn_intr(struct sbus_soft_state *softsp) in sysio_thermal_warn_intr() argument
921 mondo_vec_reg = (softsp->intr_mapping_reg + THERMAL_MAPREG); in sysio_thermal_warn_intr()
926 ddi_remove_intr(softsp->dip, 4, NULL); in sysio_thermal_warn_intr()
928 clear_reg = (softsp->clr_intr_reg + THERMAL_CLEAR); in sysio_thermal_warn_intr()