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