Lines Matching refs:softsp

319 static int fhc_init(struct fhc_soft_state *softsp);
320 static void fhc_unmap_regs(struct fhc_soft_state *softsp);
520 fhc_handle_imr(struct fhc_soft_state *softsp) in fhc_handle_imr() argument
527 if (softsp->is_central) { in fhc_handle_imr()
530 want_igr = softsp->list->sc.board << 1; in fhc_handle_imr()
531 act_igr = *softsp->igr & 0x1f; in fhc_handle_imr()
533 *softsp->igr = want_igr; in fhc_handle_imr()
534 tmp_reg = *softsp->igr; in fhc_handle_imr()
540 if (*(softsp->intr_regs[i].clear_reg) == 3) { in fhc_handle_imr()
541 *(softsp->intr_regs[i].clear_reg) = in fhc_handle_imr()
545 *(softsp->intr_regs[i].clear_reg); in fhc_handle_imr()
557 ASSERT(softsp->list->sc.board == FHC_BSR_TO_BD(*(softsp->bsr))); in fhc_handle_imr()
558 cent = check_central(softsp->list->sc.board); in fhc_handle_imr()
564 *(softsp->intr_regs[i].clear_reg) == 3) { in fhc_handle_imr()
568 *(softsp->intr_regs[i].clear_reg) = ISM_IDLE; in fhc_handle_imr()
573 tmp_reg = *(softsp->intr_regs[i].clear_reg); in fhc_handle_imr()
587 *(softsp->intr_regs[i].mapping_reg) = 0; in fhc_handle_imr()
592 tmp_reg = *(softsp->intr_regs[i].mapping_reg); in fhc_handle_imr()
620 struct fhc_soft_state *softsp; in fhc_attach() local
630 softsp = ddi_get_soft_state(fhcp, instance); in fhc_attach()
633 fhc_handle_imr(softsp); in fhc_attach()
645 softsp = ddi_get_soft_state(fhcp, instance); in fhc_attach()
648 softsp->dip = devi; in fhc_attach()
650 if (fhc_init(softsp) != DDI_SUCCESS) in fhc_attach()
667 struct fhc_soft_state *softsp; in fhc_detach() local
674 softsp = ddi_get_soft_state(fhcp, instance); in fhc_detach()
676 board = softsp->list->sc.board; in fhc_detach()
702 list->softsp = NULL; in fhc_detach()
708 kstat_delete(softsp->fhc_ksp); in fhc_detach()
711 mutex_destroy(&softsp->poll_list_lock); in fhc_detach()
712 mutex_destroy(&softsp->ctrl_lock); in fhc_detach()
715 fhc_unmap_regs(softsp); in fhc_detach()
727 fhc_board_type(struct fhc_soft_state *softsp, int board) in fhc_board_type() argument
733 if (softsp->is_central) in fhc_board_type()
735 else if (ddi_getlongprop(DDI_DEV_T_ANY, softsp->dip, in fhc_board_type()
772 else if ((*(softsp->bsr) & FHC_UPADATA64A) || in fhc_board_type()
773 (*(softsp->bsr) & FHC_UPADATA64B)) in fhc_board_type()
783 fhc_unmap_regs(struct fhc_soft_state *softsp) in fhc_unmap_regs() argument
785 dev_info_t *dip = softsp->dip; in fhc_unmap_regs()
787 if (softsp->id) { in fhc_unmap_regs()
788 ddi_unmap_regs(dip, 0, (caddr_t *)&softsp->id, 0, 0); in fhc_unmap_regs()
789 softsp->id = NULL; in fhc_unmap_regs()
791 if (softsp->igr) { in fhc_unmap_regs()
792 ddi_unmap_regs(dip, 1, (caddr_t *)&softsp->igr, 0, 0); in fhc_unmap_regs()
793 softsp->igr = NULL; in fhc_unmap_regs()
795 if (softsp->intr_regs[FHC_FANFAIL_INO].mapping_reg) { in fhc_unmap_regs()
797 (caddr_t *)&softsp->intr_regs[FHC_FANFAIL_INO].mapping_reg, in fhc_unmap_regs()
799 softsp->intr_regs[FHC_FANFAIL_INO].mapping_reg = NULL; in fhc_unmap_regs()
801 if (softsp->intr_regs[FHC_SYS_INO].mapping_reg) { in fhc_unmap_regs()
803 (caddr_t *)&softsp->intr_regs[FHC_SYS_INO].mapping_reg, in fhc_unmap_regs()
805 softsp->intr_regs[FHC_SYS_INO].mapping_reg = NULL; in fhc_unmap_regs()
807 if (softsp->intr_regs[FHC_UART_INO].mapping_reg) { in fhc_unmap_regs()
809 (caddr_t *)&softsp->intr_regs[FHC_UART_INO].mapping_reg, in fhc_unmap_regs()
811 softsp->intr_regs[FHC_UART_INO].mapping_reg = NULL; in fhc_unmap_regs()
813 if (softsp->intr_regs[FHC_TOD_INO].mapping_reg) { in fhc_unmap_regs()
815 (caddr_t *)&softsp->intr_regs[FHC_TOD_INO].mapping_reg, in fhc_unmap_regs()
817 softsp->intr_regs[FHC_TOD_INO].mapping_reg = NULL; in fhc_unmap_regs()
822 fhc_init(struct fhc_soft_state *softsp) in fhc_init() argument
834 if (ddi_map_regs(softsp->dip, 0, in fhc_init()
835 (caddr_t *)&softsp->id, 0, 0)) { in fhc_init()
837 "registers", ddi_get_instance(softsp->dip)); in fhc_init()
845 softsp->rctrl = (uint_t *)((char *)(softsp->id) + in fhc_init()
847 softsp->ctrl = (uint_t *)((char *)(softsp->id) + in fhc_init()
849 softsp->bsr = (uint_t *)((char *)(softsp->id) + in fhc_init()
851 softsp->jtag_ctrl = (uint_t *)((char *)(softsp->id) + in fhc_init()
853 softsp->jt_master.jtag_cmd = (uint_t *)((char *)(softsp->id) + in fhc_init()
857 if (ddi_map_regs(softsp->dip, 1, in fhc_init()
858 (caddr_t *)&softsp->igr, 0, 0)) { in fhc_init()
860 "register", ddi_get_instance(softsp->dip)); in fhc_init()
869 if (ddi_map_regs(softsp->dip, 2, in fhc_init()
870 (caddr_t *)&softsp->intr_regs[FHC_FANFAIL_INO].mapping_reg, in fhc_init()
873 "IMR register", ddi_get_instance(softsp->dip)); in fhc_init()
878 if (ddi_map_regs(softsp->dip, 3, in fhc_init()
879 (caddr_t *)&softsp->intr_regs[FHC_SYS_INO].mapping_reg, in fhc_init()
882 "IMR register\n", ddi_get_instance(softsp->dip)); in fhc_init()
887 if (ddi_map_regs(softsp->dip, 4, in fhc_init()
888 (caddr_t *)&softsp->intr_regs[FHC_UART_INO].mapping_reg, in fhc_init()
891 "IMR register\n", ddi_get_instance(softsp->dip)); in fhc_init()
896 if (ddi_map_regs(softsp->dip, 5, in fhc_init()
897 (caddr_t *)&softsp->intr_regs[FHC_TOD_INO].mapping_reg, in fhc_init()
900 "IMR register", ddi_get_instance(softsp->dip)); in fhc_init()
907 softsp->intr_regs[i].clear_reg = in fhc_init()
908 (uint_t *)((char *)(softsp->intr_regs[i].mapping_reg) + in fhc_init()
912 *(softsp->intr_regs[i].clear_reg) = ISM_IDLE; in fhc_init()
926 if ((board = (int)ddi_getprop(DDI_DEV_T_ANY, softsp->dip, in fhc_init()
932 board = FHC_BSR_TO_BD(*(softsp->bsr)); in fhc_init()
933 softsp->is_central = 1; in fhc_init()
941 if ((*(softsp->jtag_ctrl) & JTAG_MASTER_EN) && !softsp->is_central) { in fhc_init()
942 mutex_init(&(softsp->jt_master.lock), NULL, MUTEX_DEFAULT, in fhc_init()
944 softsp->jt_master.is_master = 1; in fhc_init()
946 softsp->jt_master.is_master = 0; in fhc_init()
949 fhc_bd_init(softsp, board, fhc_board_type(softsp, board)); in fhc_init()
952 mutex_init(&softsp->poll_list_lock, NULL, MUTEX_DRIVER, NULL); in fhc_init()
955 mutex_init(&softsp->ctrl_lock, NULL, MUTEX_DRIVER, NULL); in fhc_init()
959 softsp->poll_list[i].funcp = NULL; in fhc_init()
968 if (!(softsp->is_central)) { in fhc_init()
969 mutex_enter(&softsp->ctrl_lock); in fhc_init()
970 *(softsp->ctrl) |= FHC_NOT_BRD_PRES; in fhc_init()
972 tmp_reg = *(softsp->ctrl); in fhc_init()
977 mutex_exit(&softsp->ctrl_lock); in fhc_init()
980 fhc_add_kstats(softsp); in fhc_init()
992 if (*softsp->ctrl & FHC_LED_MID) { in fhc_init()
993 reg_fault(softsp->list->sc.board, FT_PROM, FT_BOARD); in fhc_init()
1000 *(softsp->igr) = (softsp->list->sc.board) << 1; in fhc_init()
1003 tmp_reg = *(softsp->id); in fhc_init()
1009 intr_dist_add(fhc_intrdist, (void *)softsp->dip); in fhc_init()
1013 fhc_unmap_regs(softsp); in fhc_init()
1062 struct fhc_soft_state *softsp = (struct fhc_soft_state *)arg; in fhc_zs_intr_wrapper() local
1069 uchar_t *spurious_cntr = &softsp->spurious_zs_cntr; in fhc_zs_intr_wrapper()
1071 funcp0 = softsp->poll_list[0].funcp; in fhc_zs_intr_wrapper()
1072 funcp1 = softsp->poll_list[1].funcp; in fhc_zs_intr_wrapper()
1073 funcp0_arg1 = softsp->poll_list[0].arg1; in fhc_zs_intr_wrapper()
1074 funcp0_arg2 = softsp->poll_list[0].arg2; in fhc_zs_intr_wrapper()
1075 funcp1_arg1 = softsp->poll_list[1].arg1; in fhc_zs_intr_wrapper()
1076 funcp1_arg2 = softsp->poll_list[1].arg2; in fhc_zs_intr_wrapper()
1077 clear_reg = softsp->intr_regs[FHC_UART_INO].clear_reg; in fhc_zs_intr_wrapper()
1125 struct fhc_soft_state *softsp = (struct fhc_soft_state *) in fhc_add_intr_impl() local
1135 (softsp->list->sc.board << BD_IVINTR_SHFT)); in fhc_add_intr_impl()
1139 mondo_vec_reg = softsp->intr_regs[ino].mapping_reg; in fhc_add_intr_impl()
1169 mutex_enter(&softsp->poll_list_lock); in fhc_add_intr_impl()
1177 if (softsp->poll_list[zs_inst].funcp == NULL) { in fhc_add_intr_impl()
1178 softsp->poll_list[zs_inst].arg1 = in fhc_add_intr_impl()
1180 softsp->poll_list[zs_inst].arg2 = in fhc_add_intr_impl()
1182 softsp->poll_list[zs_inst].funcp = in fhc_add_intr_impl()
1185 softsp->poll_list[zs_inst].inum = in fhc_add_intr_impl()
1187 softsp->poll_list[zs_inst].child = rdip; in fhc_add_intr_impl()
1197 mutex_exit(&softsp->poll_list_lock); in fhc_add_intr_impl()
1209 (caddr_t)softsp, NULL); in fhc_add_intr_impl()
1214 softsp->poll_list[zs_inst].funcp, in fhc_add_intr_impl()
1215 softsp->poll_list[zs_inst].arg1, in fhc_add_intr_impl()
1216 softsp->poll_list[zs_inst].arg2); in fhc_add_intr_impl()
1229 mutex_exit(&softsp->poll_list_lock); in fhc_add_intr_impl()
1234 mutex_exit(&softsp->poll_list_lock); in fhc_add_intr_impl()
1243 fhc_arg->clear_reg = (softsp->intr_regs[ino].clear_reg); in fhc_add_intr_impl()
1244 fhc_arg->softsp = softsp; in fhc_add_intr_impl()
1252 if (softsp->intr_list[i] == 0) { in fhc_add_intr_impl()
1253 softsp->intr_list[i] = fhc_arg; in fhc_add_intr_impl()
1284 *(softsp->intr_regs[ino].clear_reg) = ISM_IDLE; in fhc_add_intr_impl()
1310 tmpreg = *(softsp->id); in fhc_add_intr_impl()
1329 struct fhc_soft_state *softsp = (struct fhc_soft_state *) in fhc_remove_intr_impl() local
1335 (softsp->list->sc.board << BD_IVINTR_SHFT)); in fhc_remove_intr_impl()
1344 mutex_enter(&softsp->poll_list_lock); in fhc_remove_intr_impl()
1351 if (softsp->poll_list[i].child == rdip && in fhc_remove_intr_impl()
1352 softsp->poll_list[i].inum == hdlp->ih_inum) { in fhc_remove_intr_impl()
1353 softsp->poll_list[i].funcp = NULL; in fhc_remove_intr_impl()
1362 mutex_exit(&softsp->poll_list_lock); in fhc_remove_intr_impl()
1370 if ((softsp->poll_list[0].funcp == NULL) && in fhc_remove_intr_impl()
1371 (softsp->poll_list[1].funcp == NULL)) { in fhc_remove_intr_impl()
1373 softsp->intr_regs[FHC_UART_INO].mapping_reg; in fhc_remove_intr_impl()
1377 tmpreg = *(softsp->ctrl); in fhc_remove_intr_impl()
1383 mutex_exit(&softsp->poll_list_lock); in fhc_remove_intr_impl()
1389 if (softsp->intr_list[i]->child == rdip && in fhc_remove_intr_impl()
1390 softsp->intr_list[i]->inum == hdlp->ih_inum) in fhc_remove_intr_impl()
1396 mondo_vec_reg = softsp->intr_list[i]->mapping_reg; in fhc_remove_intr_impl()
1403 tmpreg = *(softsp->id); in fhc_remove_intr_impl()
1411 kmem_free(softsp->intr_list[i], in fhc_remove_intr_impl()
1413 softsp->intr_list[i] = 0; in fhc_remove_intr_impl()
1438 struct fhc_soft_state *softsp = in fhc_intr_ops() local
1444 (softsp->list->sc.board << BD_IVINTR_SHFT)); in fhc_intr_ops()
1633 struct fhc_soft_state *softsp; in update_temp() local
1644 softsp = ddi_get_soft_state(fhcp, ddi_get_instance(pdip)); in update_temp()
1765 real_temp = calibrate_temp(softsp->list->sc.type, value, in update_temp()
1766 softsp->list->sc.ac_compid); in update_temp()
1772 temp_state = get_temp_state(softsp->list->sc.type, real_temp, in update_temp()
1773 softsp->list->sc.board); in update_temp()
1777 int board = softsp->list->sc.board; in update_temp()
1778 enum board_type type = softsp->list->sc.type; in update_temp()
1914 softsp->list->sc.type, in update_temp()
1915 softsp->list->sc.board); in update_temp()
1942 enum board_type type = softsp->list->sc.type; in update_temp()
1951 int board = softsp->list->sc.board; in update_temp()
2327 fhc_add_kstats(struct fhc_soft_state *softsp) in fhc_add_kstats() argument
2332 if ((fhc_ksp = kstat_create("unix", softsp->list->sc.board, in fhc_add_kstats()
2337 ddi_get_instance(softsp->dip)); in fhc_add_kstats()
2353 fhc_ksp->ks_private = (void *)softsp; in fhc_add_kstats()
2354 softsp->fhc_ksp = fhc_ksp; in fhc_add_kstats()
2362 struct fhc_soft_state *softsp; in fhc_kstat_update() local
2365 softsp = (struct fhc_soft_state *)ksp->ks_private; in fhc_kstat_update()
2375 fhcksp->csr.value.ui32 = *softsp->ctrl; in fhc_kstat_update()
2376 fhcksp->bsr.value.ui32 = *softsp->bsr; in fhc_kstat_update()
2412 mutex_enter(&board->softsp->ctrl_lock); in update_board_leds()
2415 temp = *board->softsp->ctrl; in update_board_leds()
2434 *board->softsp->ctrl = temp; in update_board_leds()
2437 temp = *board->softsp->ctrl; in update_board_leds()
2442 mutex_exit(&board->softsp->ctrl_lock); in update_board_leds()
2551 struct fhc_soft_state *softsp; in fhc_intrdist() local
2561 softsp = ddi_get_soft_state(fhcp, ddi_get_instance(dip)); in fhc_intrdist()
2568 mondo_vec_reg = softsp->intr_regs[i].mapping_reg; in fhc_intrdist()
2569 intr_state_reg = softsp->intr_regs[i].clear_reg; in fhc_intrdist()
2589 tmp_reg = *softsp->id; in fhc_intrdist()
2606 tmp_reg = *(softsp->id); in fhc_intrdist()
3244 temp = *bd_list->softsp->ctrl; in fhc_cpu_poweroff()