Lines Matching refs:softsp

106 static uint_t ps_fail_handler(struct sysctrl_soft_state *softsp, int fromint);
108 enum power_state compute_power_state(struct sysctrl_soft_state *softsp,
111 static void ps_log_state_change(struct sysctrl_soft_state *softsp,
114 static void ps_log_pres_change(struct sysctrl_soft_state *softsp,
127 static void pps_fan_state_change(struct sysctrl_soft_state *softsp,
138 static void sysctrl_add_kstats(struct sysctrl_soft_state *softsp);
160 static void nvram_update_powerfail(struct sysctrl_soft_state *softsp);
170 static void rcons_reinit(struct sysctrl_soft_state *softsp);
394 struct sysctrl_soft_state *softsp; in sysctrl_attach() local
424 softsp = GETSOFTC(instance); in sysctrl_attach()
427 softsp->dip = devi; in sysctrl_attach()
430 softsp->pdip = ddi_get_parent(softsp->dip); in sysctrl_attach()
433 (void *)devi, (void *)softsp)); in sysctrl_attach()
458 if (ddi_map_regs(softsp->dip, 0, in sysctrl_attach()
459 (caddr_t *)&softsp->clk_freq1, 0, 0)) { in sysctrl_attach()
465 if (ddi_map_regs(softsp->dip, 1, in sysctrl_attach()
466 (caddr_t *)&softsp->csr, 0, 0)) { in sysctrl_attach()
477 (void) ddi_map_regs(softsp->dip, 2, (caddr_t *)&softsp->clk_ver, 0, 0); in sysctrl_attach()
485 softsp->clk_freq2 = (uchar_t *)((caddr_t)softsp->clk_freq1 + in sysctrl_attach()
488 softsp->status1 = (uchar_t *)((caddr_t)softsp->csr + in sysctrl_attach()
491 softsp->status2 = (uchar_t *)((caddr_t)softsp->csr + in sysctrl_attach()
494 softsp->ps_stat = (uchar_t *)((caddr_t)softsp->csr + in sysctrl_attach()
497 softsp->ps_pres = (uchar_t *)((caddr_t)softsp->csr + in sysctrl_attach()
500 softsp->pppsr = (uchar_t *)((caddr_t)softsp->csr + in sysctrl_attach()
503 softsp->temp_reg = (uchar_t *)((caddr_t)softsp->csr + in sysctrl_attach()
514 *(softsp->clk_freq2) |= TOD_RESET_EN; in sysctrl_attach()
516 *(softsp->clk_freq2) &= ~TOD_RESET_EN; in sysctrl_attach()
519 if (*softsp->csr & SYS_LED_MID) { in sysctrl_attach()
526 switch (SYS_TYPE(*softsp->status1)) { in sysctrl_attach()
528 softsp->nslots = 16; in sysctrl_attach()
532 softsp->nslots = 8; in sysctrl_attach()
537 if ((softsp->clk_ver != NULL) && in sysctrl_attach()
538 (SYS_TYPE2(*softsp->clk_ver) == SYS_PLUS_SYSTEM)) { in sysctrl_attach()
539 softsp->nslots = 5; in sysctrl_attach()
541 softsp->nslots = 4; in sysctrl_attach()
547 softsp->nslots = 0; in sysctrl_attach()
560 tmp_reg = *(softsp->temp_reg); in sysctrl_attach()
566 *(softsp->csr) &= ~(SYS_PPS_FAN_FAIL_EN | SYS_PS_FAIL_EN | in sysctrl_attach()
568 tmp_reg = *(softsp->csr); in sysctrl_attach()
576 if (ddi_add_intr(devi, 0, &softsp->iblock, in sysctrl_attach()
577 &softsp->idevice, (uint_t (*)(caddr_t))nulldev, NULL) != in sysctrl_attach()
581 mutex_init(&softsp->csr_mutex, NULL, MUTEX_DRIVER, in sysctrl_attach()
582 (void *)softsp->iblock); in sysctrl_attach()
584 ddi_remove_intr(devi, 0, softsp->iblock); in sysctrl_attach()
586 if (ddi_add_intr(devi, 0, &softsp->iblock, in sysctrl_attach()
587 &softsp->idevice, system_high_handler, (caddr_t)softsp) != in sysctrl_attach()
591 if (ddi_add_softintr(devi, DDI_SOFTINT_LOW, &softsp->spur_id, in sysctrl_attach()
592 &softsp->spur_int_c, NULL, spur_delay, (caddr_t)softsp) != in sysctrl_attach()
596 mutex_init(&softsp->spur_int_lock, NULL, MUTEX_DRIVER, in sysctrl_attach()
597 (void *)softsp->spur_int_c); in sysctrl_attach()
600 if (ddi_add_softintr(devi, DDI_SOFTINT_LOW, &softsp->spur_high_id, in sysctrl_attach()
601 NULL, NULL, spur_reenable, (caddr_t)softsp) != DDI_SUCCESS) in sysctrl_attach()
604 if (ddi_add_softintr(devi, DDI_SOFTINT_LOW, &softsp->spur_long_to_id, in sysctrl_attach()
605 NULL, NULL, spur_clear_count, (caddr_t)softsp) != DDI_SUCCESS) in sysctrl_attach()
611 if (ddi_add_softintr(devi, DDI_SOFTINT_HIGH, &softsp->ac_fail_id, in sysctrl_attach()
612 NULL, NULL, ac_fail_handler, (caddr_t)softsp) != DDI_SUCCESS) in sysctrl_attach()
615 if (ddi_add_softintr(devi, DDI_SOFTINT_LOW, &softsp->ac_fail_high_id, in sysctrl_attach()
616 NULL, NULL, ac_fail_reenable, (caddr_t)softsp) != DDI_SUCCESS) in sysctrl_attach()
623 if (ddi_add_softintr(devi, DDI_SOFTINT_HIGH, &softsp->ps_fail_int_id, in sysctrl_attach()
624 &softsp->ps_fail_c, NULL, ps_fail_int_handler, (caddr_t)softsp) != in sysctrl_attach()
628 mutex_init(&softsp->ps_fail_lock, NULL, MUTEX_DRIVER, in sysctrl_attach()
629 (void *)softsp->ps_fail_c); in sysctrl_attach()
631 if (ddi_add_softintr(devi, DDI_SOFTINT_LOW, &softsp->ps_fail_poll_id, in sysctrl_attach()
632 NULL, NULL, ps_fail_poll_handler, (caddr_t)softsp) != in sysctrl_attach()
639 if (ddi_add_softintr(devi, DDI_SOFTINT_LOW, &softsp->pps_fan_id, in sysctrl_attach()
640 NULL, NULL, pps_fanfail_handler, (caddr_t)softsp) != in sysctrl_attach()
644 if (ddi_add_softintr(devi, DDI_SOFTINT_LOW, &softsp->pps_fan_high_id, in sysctrl_attach()
645 NULL, NULL, pps_fanfail_reenable, (caddr_t)softsp) != in sysctrl_attach()
654 if ((*(softsp->pppsr) & SYS_NOT_CURRENT_S) != 0) { in sysctrl_attach()
666 if (ddi_prop_op(DDI_DEV_T_ANY, softsp->dip, PROP_LEN_AND_VAL_ALLOC, in sysctrl_attach()
678 fhc_bd_sc_register(sysc_policy_update, softsp); in sysctrl_attach()
680 sysc_slot_info(softsp->nslots, &start, &limit, &incr); in sysctrl_attach()
693 bd_remove_poll(softsp); in sysctrl_attach()
699 if (ddi_add_softintr(devi, DDI_SOFTINT_LOW, &softsp->sbrd_pres_id, in sysctrl_attach()
700 NULL, NULL, bd_insert_handler, (caddr_t)softsp) != DDI_SUCCESS) in sysctrl_attach()
703 if (ddi_add_softintr(devi, DDI_SOFTINT_LOW, &softsp->sbrd_gone_id, in sysctrl_attach()
704 NULL, NULL, bd_insert_normal, (caddr_t)softsp) != DDI_SUCCESS) in sysctrl_attach()
710 if (ddi_add_softintr(devi, DDI_SOFTINT_LOW, &softsp->blink_led_id, in sysctrl_attach()
711 &softsp->sys_led_c, NULL, blink_led_handler, (caddr_t)softsp) != in sysctrl_attach()
714 mutex_init(&softsp->sys_led_lock, NULL, MUTEX_DRIVER, in sysctrl_attach()
715 (void *)softsp->sys_led_c); in sysctrl_attach()
718 softsp->pps_fan_saved = softsp->pps_fan_external_state = in sysctrl_attach()
723 ddi_trigger_softintr(softsp->ps_fail_poll_id); in sysctrl_attach()
727 softsp->sys_led = FALSE; in sysctrl_attach()
728 ddi_trigger_softintr(softsp->blink_led_id); in sysctrl_attach()
731 mutex_enter(&softsp->csr_mutex); in sysctrl_attach()
732 *(softsp->csr) |= enable_sys_interrupt & in sysctrl_attach()
735 tmp_reg = *(softsp->csr); in sysctrl_attach()
739 mutex_exit(&softsp->csr_mutex); in sysctrl_attach()
742 init_temp_arrays(&softsp->tempstat); in sysctrl_attach()
747 softsp->key_shadow = KEY_BOOT; in sysctrl_attach()
757 softsp->next = sys_list; in sysctrl_attach()
758 sys_list = softsp; in sysctrl_attach()
762 sysctrl_add_kstats(softsp); in sysctrl_attach()
765 pps_fan_poll(softsp); in sysctrl_attach()
809 softsp->options_nodeid = (pnode_t)NULL; in sysctrl_attach()
811 softsp->options_nodeid = (pnode_t)ddi_get_nodeid(dip); in sysctrl_attach()
838 if ((*(softsp->clk_freq2) & RCONS_UART_EN) == 0) { in sysctrl_attach()
839 softsp->enable_rcons_atboot = FALSE; in sysctrl_attach()
842 softsp->enable_rcons_atboot = TRUE; in sysctrl_attach()
850 mutex_destroy(&softsp->sys_led_lock); in sysctrl_attach()
851 ddi_remove_softintr(softsp->blink_led_id); in sysctrl_attach()
853 ddi_remove_softintr(softsp->sbrd_gone_id); in sysctrl_attach()
855 ddi_remove_softintr(softsp->sbrd_pres_id); in sysctrl_attach()
857 ddi_remove_softintr(softsp->pps_fan_high_id); in sysctrl_attach()
859 ddi_remove_softintr(softsp->pps_fan_id); in sysctrl_attach()
861 ddi_remove_softintr(softsp->ps_fail_poll_id); in sysctrl_attach()
863 mutex_destroy(&softsp->ps_fail_lock); in sysctrl_attach()
864 ddi_remove_softintr(softsp->ps_fail_int_id); in sysctrl_attach()
866 ddi_remove_softintr(softsp->ac_fail_high_id); in sysctrl_attach()
868 ddi_remove_softintr(softsp->ac_fail_id); in sysctrl_attach()
870 ddi_remove_softintr(softsp->spur_long_to_id); in sysctrl_attach()
872 ddi_remove_softintr(softsp->spur_high_id); in sysctrl_attach()
874 mutex_destroy(&softsp->spur_int_lock); in sysctrl_attach()
875 ddi_remove_softintr(softsp->spur_id); in sysctrl_attach()
877 ddi_remove_intr(devi, 0, softsp->iblock); in sysctrl_attach()
879 mutex_destroy(&softsp->csr_mutex); in sysctrl_attach()
881 ddi_unmap_regs(softsp->dip, 1, (caddr_t *)&softsp->csr, 0, 0); in sysctrl_attach()
882 if (softsp->clk_ver != NULL) in sysctrl_attach()
883 ddi_unmap_regs(softsp->dip, 2, (caddr_t *)&softsp->clk_ver, in sysctrl_attach()
886 ddi_unmap_regs(softsp->dip, 0, (caddr_t *)&softsp->clk_freq1, 0, 0); in sysctrl_attach()
968 struct sysctrl_soft_state *softsp; in sysctrl_detach() local
1005 softsp = GETSOFTC(instance); in sysctrl_detach()
1007 if (softsp == NULL) { in sysctrl_detach()
1012 sysc_slot_info(softsp->nslots, &arg.start, &arg.limit, &arg.incr); in sysctrl_detach()
1040 struct sysctrl_soft_state *softsp; in sysctrl_open() local
1056 if ((softsp = GETSOFTC(instance)) == NULL) { in sysctrl_open()
1078 sysc_slot_info(softsp->nslots, &arg.start, &arg.limit, in sysctrl_open()
1223 struct sysctrl_soft_state *softsp; in sysctrl_ioctl() local
1235 softsp = GETSOFTC(instance); in sysctrl_ioctl()
1236 if (softsp == NULL) { in sysctrl_ioctl()
1337 retval = sysc_policy_connect(softsp, &sysc_pkt, sc); in sysctrl_ioctl()
1342 retval = sysc_policy_disconnect(softsp, &sysc_pkt, sc); in sysctrl_ioctl()
1347 retval = sysc_policy_unconfigure(softsp, &sysc_pkt, sc); in sysctrl_ioctl()
1352 retval = sysc_policy_configure(softsp, &sysc_pkt, sc); in sysctrl_ioctl()
1442 struct sysctrl_soft_state *softsp = (struct sysctrl_soft_state *)arg; in system_high_handler() local
1448 ASSERT(softsp); in system_high_handler()
1450 mutex_enter(&softsp->csr_mutex); in system_high_handler()
1453 csr = *(softsp->csr); in system_high_handler()
1454 status2 = *(softsp->status2); in system_high_handler()
1460 nvram_update_powerfail(softsp); in system_high_handler()
1465 ddi_trigger_softintr(softsp->ac_fail_id); in system_high_handler()
1471 if ((*(softsp->ps_stat) != 0xff) || in system_high_handler()
1474 (~(*(softsp->pppsr)) & SYS_PPPSR_BITS)) { in system_high_handler()
1479 ddi_trigger_softintr(softsp->ps_fail_int_id); in system_high_handler()
1493 softsp->pps_fan_saved = status2; in system_high_handler()
1498 ddi_trigger_softintr(softsp->pps_fan_id); in system_high_handler()
1504 if (!(*(softsp->status1) & SYS_NOT_BRD_PRES)) { in system_high_handler()
1509 ddi_trigger_softintr(softsp->sbrd_pres_id); in system_high_handler()
1527 softsp->saved_en_state |= csr & in system_high_handler()
1536 softsp->spur_count++; in system_high_handler()
1539 ddi_trigger_softintr(softsp->spur_id); in system_high_handler()
1543 *(softsp->csr) = csr; in system_high_handler()
1544 tmp_reg = *(softsp->csr); in system_high_handler()
1548 mutex_exit(&softsp->csr_mutex); in system_high_handler()
1560 struct sysctrl_soft_state *softsp = (struct sysctrl_soft_state *)arg; in spur_delay() local
1562 ASSERT(softsp); in spur_delay()
1565 mutex_enter(&softsp->csr_mutex); in spur_delay()
1568 if (softsp->spur_count == MAX_SPUR_COUNT) { in spur_delay()
1574 if (softsp->saved_en_state & SYS_AC_PWR_FAIL_EN) in spur_delay()
1576 if (softsp->saved_en_state & SYS_PPS_FAN_FAIL_EN) in spur_delay()
1578 if (softsp->saved_en_state & SYS_PS_FAIL_EN) in spur_delay()
1580 if (softsp->saved_en_state & SYS_SBRD_PRES_EN) in spur_delay()
1588 mutex_exit(&softsp->csr_mutex); in spur_delay()
1592 ddi_get_instance(softsp->dip), buf); in spur_delay()
1594 mutex_exit(&softsp->csr_mutex); in spur_delay()
1596 mutex_enter(&softsp->spur_int_lock); in spur_delay()
1599 if (softsp->spur_timeout_id == 0) { in spur_delay()
1600 softsp->spur_timeout_id = timeout(spur_retry, softsp, in spur_delay()
1605 if (softsp->spur_long_timeout_id == 0) { in spur_delay()
1606 softsp->spur_long_timeout_id = timeout(spur_long_timeout, in spur_delay()
1607 softsp, spur_long_timeout_hz); in spur_delay()
1610 mutex_exit(&softsp->spur_int_lock); in spur_delay()
1624 struct sysctrl_soft_state *softsp = arg; in spur_retry() local
1626 ASSERT(softsp); in spur_retry()
1628 ddi_trigger_softintr(softsp->spur_high_id); in spur_retry()
1630 mutex_enter(&softsp->spur_int_lock); in spur_retry()
1631 softsp->spur_timeout_id = 0; in spur_retry()
1632 mutex_exit(&softsp->spur_int_lock); in spur_retry()
1644 struct sysctrl_soft_state *softsp = (struct sysctrl_soft_state *)arg; in spur_reenable() local
1647 ASSERT(softsp); in spur_reenable()
1649 mutex_enter(&softsp->csr_mutex); in spur_reenable()
1652 *(softsp->csr) |= softsp->saved_en_state & in spur_reenable()
1655 tmp_reg = *(softsp->csr); in spur_reenable()
1661 softsp->saved_en_state = 0; in spur_reenable()
1663 mutex_exit(&softsp->csr_mutex); in spur_reenable()
1678 struct sysctrl_soft_state *softsp = arg; in spur_long_timeout() local
1680 ASSERT(softsp); in spur_long_timeout()
1682 ddi_trigger_softintr(softsp->spur_long_to_id); in spur_long_timeout()
1684 mutex_enter(&softsp->spur_int_lock); in spur_long_timeout()
1685 softsp->spur_long_timeout_id = 0; in spur_long_timeout()
1686 mutex_exit(&softsp->spur_int_lock); in spur_long_timeout()
1699 struct sysctrl_soft_state *softsp = (struct sysctrl_soft_state *)arg; in spur_clear_count() local
1701 ASSERT(softsp); in spur_clear_count()
1703 mutex_enter(&softsp->csr_mutex); in spur_clear_count()
1704 softsp->spur_count = 0; in spur_clear_count()
1705 mutex_exit(&softsp->csr_mutex); in spur_clear_count()
1722 struct sysctrl_soft_state *softsp = (struct sysctrl_soft_state *)arg; in ac_fail_handler() local
1724 ASSERT(softsp); in ac_fail_handler()
1728 (void) timeout(ac_fail_retry, softsp, ac_timeout_hz); in ac_fail_handler()
1740 struct sysctrl_soft_state *softsp = arg; in ac_fail_retry() local
1742 ASSERT(softsp); in ac_fail_retry()
1744 if (*softsp->status2 & SYS_AC_FAIL) { /* still bad? */ in ac_fail_retry()
1745 (void) timeout(ac_fail_retry, softsp, ac_timeout_hz); in ac_fail_retry()
1750 ddi_trigger_softintr(softsp->ac_fail_high_id); in ac_fail_retry()
1762 struct sysctrl_soft_state *softsp = (struct sysctrl_soft_state *)arg; in ac_fail_reenable() local
1765 ASSERT(softsp); in ac_fail_reenable()
1767 mutex_enter(&softsp->csr_mutex); in ac_fail_reenable()
1768 *(softsp->csr) |= SYS_AC_PWR_FAIL_EN; in ac_fail_reenable()
1769 tmp_reg = *(softsp->csr); in ac_fail_reenable()
1773 mutex_exit(&softsp->csr_mutex); in ac_fail_reenable()
1816 ps_fail_handler(struct sysctrl_soft_state *softsp, int fromint) in ps_fail_handler() argument
1825 ASSERT(softsp); in ps_fail_handler()
1828 ps_stat = *softsp->ps_stat; in ps_fail_handler()
1829 ps_pres = *softsp->ps_pres; in ps_fail_handler()
1830 status1 = *softsp->status1; in ps_fail_handler()
1831 status2 = *softsp->status2; in ps_fail_handler()
1832 pppsr = *softsp->pppsr; in ps_fail_handler()
1836 mutex_enter(&softsp->ps_fail_lock); in ps_fail_handler()
1838 for (i = 0, pstatp = &softsp->ps_stats[0]; i < SYS_PS_COUNT; in ps_fail_handler()
1879 ((IS4SLOT(softsp->nslots) || in ps_fail_handler()
1880 IS5SLOT(softsp->nslots)) && in ps_fail_handler()
1888 ((IS4SLOT(softsp->nslots) || in ps_fail_handler()
1889 IS5SLOT(softsp->nslots)) && in ps_fail_handler()
1930 temp_pres = (IS4SLOT(softsp->nslots) || in ps_fail_handler()
1931 IS5SLOT(softsp->nslots)) && in ps_fail_handler()
1933 temp_psok = softsp->pps_fan_saved & in ps_fail_handler()
1963 ps_log_pres_change(softsp, in ps_fail_handler()
2004 ddi_get_instance(softsp->dip)); in ps_fail_handler()
2014 ps_log_state_change(softsp, in ps_fail_handler()
2027 (softsp->enable_rcons_atboot)) { in ps_fail_handler()
2029 rcons_reinit(softsp); in ps_fail_handler()
2032 *(softsp->clk_freq2) &= in ps_fail_handler()
2034 tmp_reg = *(softsp->csr); in ps_fail_handler()
2045 sysc_policy_update(softsp, NULL, in ps_fail_handler()
2073 current_power_state = compute_power_state(softsp, 0); in ps_fail_handler()
2075 if (softsp->power_state != current_power_state) { in ps_fail_handler()
2085 softsp->power_countdown = PS_POWER_COUNTDOWN_TICKS; in ps_fail_handler()
2090 if (softsp->power_state == REDUNDANT) { in ps_fail_handler()
2093 } else if (softsp->power_state == BELOW_MINIMUM) { in ps_fail_handler()
2102 if (softsp->power_state != BOOT) { in ps_fail_handler()
2112 softsp->power_state = current_power_state; in ps_fail_handler()
2113 sysc_policy_update(softsp, NULL, SYSC_EVT_BD_PS_CHANGE); in ps_fail_handler()
2116 mutex_exit(&softsp->ps_fail_lock); in ps_fail_handler()
2124 if (softsp->power_state == BELOW_MINIMUM && in ps_fail_handler()
2125 softsp->power_countdown > 0 && --(softsp->power_countdown) == 0 && in ps_fail_handler()
2138 mutex_enter(&softsp->csr_mutex); in ps_fail_handler()
2139 *(softsp->csr) |= SYS_PS_FAIL_EN; in ps_fail_handler()
2140 tmp_reg = *(softsp->csr); in ps_fail_handler()
2144 mutex_exit(&softsp->csr_mutex); in ps_fail_handler()
2151 (void) timeout(ps_fail_retry, softsp, ps_fail_timeout_hz); in ps_fail_handler()
2164 compute_power_state(struct sysctrl_soft_state *softsp, int plus_load) in compute_power_state() argument
2173 ASSERT(mutex_owned(&softsp->ps_fail_lock)); in compute_power_state()
2185 (IS4SLOT(softsp->nslots) || IS5SLOT(softsp->nslots))) in compute_power_state()
2188 if (softsp->ps_stats[i].dcshadow == PS_OK) in compute_power_state()
2193 pps_ok = (softsp->ps_stats[SYS_PPS0_INDEX].dcshadow == PS_OK); in compute_power_state()
2211 if (IS8SLOT(softsp->nslots) && load_count >= 7 && pps_ok) in compute_power_state()
2218 if (IS5SLOT(softsp->nslots) && (load_count >= 5)) in compute_power_state()
2243 ps_log_pres_change(struct sysctrl_soft_state *softsp, int index, int present) in ps_log_pres_change() argument
2255 sysc_policy_update(softsp, NULL, SYSC_EVT_BD_PS_CHANGE); in ps_log_pres_change()
2261 if (IS4SLOT(softsp->nslots) || IS5SLOT(softsp->nslots)) { in ps_log_pres_change()
2272 sysc_policy_update(softsp, NULL, SYSC_EVT_BD_PS_CHANGE); in ps_log_pres_change()
2282 sysc_policy_update(softsp, NULL, SYSC_EVT_BD_PS_CHANGE); in ps_log_pres_change()
2302 ps_log_state_change(struct sysctrl_soft_state *softsp, int index, int ps_ok) in ps_log_state_change() argument
2321 if (IS4SLOT(softsp->nslots) || IS5SLOT(softsp->nslots)) { in ps_log_state_change()
2458 struct sysctrl_soft_state *softsp = arg; in ps_fail_retry() local
2460 ASSERT(softsp); in ps_fail_retry()
2462 ddi_trigger_softintr(softsp->ps_fail_poll_id); in ps_fail_retry()
2473 struct sysctrl_soft_state *softsp = (struct sysctrl_soft_state *)arg; in pps_fanfail_handler() local
2475 ASSERT(softsp); in pps_fanfail_handler()
2478 (void) timeout(pps_fanfail_retry, softsp, pps_fan_timeout_hz); in pps_fanfail_handler()
2491 struct sysctrl_soft_state *softsp = arg; in pps_fanfail_retry() local
2493 ASSERT(softsp); in pps_fanfail_retry()
2495 ddi_trigger_softintr(softsp->pps_fan_high_id); in pps_fanfail_retry()
2504 struct sysctrl_soft_state *softsp = (struct sysctrl_soft_state *)arg; in pps_fanfail_reenable() local
2507 ASSERT(softsp); in pps_fanfail_reenable()
2509 mutex_enter(&softsp->csr_mutex); in pps_fanfail_reenable()
2519 softsp->pps_fan_saved = SYS_AC_FAN_OK | SYS_KEYSW_FAN_OK; in pps_fanfail_reenable()
2521 *(softsp->csr) |= SYS_PPS_FAN_FAIL_EN; in pps_fanfail_reenable()
2522 tmp_reg = *(softsp->csr); in pps_fanfail_reenable()
2526 mutex_exit(&softsp->csr_mutex); in pps_fanfail_reenable()
2545 struct sysctrl_soft_state *softsp = arg; in pps_fan_poll() local
2548 ASSERT(softsp); in pps_fan_poll()
2556 fanfail = softsp->pps_fan_saved & SYS_RACK_FANFAIL; in pps_fan_poll()
2565 fanfail = !(IS4SLOT(softsp->nslots) || in pps_fan_poll()
2566 IS5SLOT(softsp->nslots)) && in pps_fan_poll()
2567 !(softsp->pps_fan_saved & SYS_AC_FAN_OK); in pps_fan_poll()
2577 fanfail = (!(IS4SLOT(softsp->nslots) || in pps_fan_poll()
2578 IS5SLOT(softsp->nslots)) && in pps_fan_poll()
2579 (softsp->ps_stats[SYS_V5_AUX_INDEX].dcshadow != in pps_fan_poll()
2581 !(softsp->pps_fan_saved & SYS_KEYSW_FAN_OK); in pps_fan_poll()
2590 if (softsp->pps_fan_state_count[i] == 0) { in pps_fan_poll()
2593 pps_fan_state_change(softsp, i, FALSE); in pps_fan_poll()
2597 softsp->pps_fan_state_count[i] = PPS_FROM_FAIL_TICKS; in pps_fan_poll()
2601 if (softsp->pps_fan_state_count[i]) { in pps_fan_poll()
2604 if (--softsp->pps_fan_state_count[i] == 0) { in pps_fan_poll()
2607 pps_fan_state_change(softsp, i, TRUE); in pps_fan_poll()
2614 (void) timeout(pps_fan_poll, softsp, pps_fan_timeout_hz); in pps_fan_poll()
2623 pps_fan_state_change(struct sysctrl_soft_state *softsp, int index, int fan_ok) in pps_fan_state_change() argument
2631 fan_type = (IS4SLOT(softsp->nslots) || in pps_fan_state_change()
2632 IS5SLOT(softsp->nslots)) ? in pps_fan_state_change()
2635 softsp->pps_fan_external_state &= ~SYS_RACK_FANFAIL; in pps_fan_state_change()
2636 clear_fault(0, (IS4SLOT(softsp->nslots) || in pps_fan_state_change()
2637 IS5SLOT(softsp->nslots)) ? FT_DSK_FAN : in pps_fan_state_change()
2640 softsp->pps_fan_external_state |= SYS_RACK_FANFAIL; in pps_fan_state_change()
2641 reg_fault(0, (IS4SLOT(softsp->nslots) || in pps_fan_state_change()
2642 IS5SLOT(softsp->nslots)) ? FT_DSK_FAN : in pps_fan_state_change()
2650 softsp->pps_fan_external_state |= SYS_AC_FAN_OK; in pps_fan_state_change()
2653 softsp->pps_fan_external_state &= ~SYS_AC_FAN_OK; in pps_fan_state_change()
2661 softsp->pps_fan_external_state |= SYS_KEYSW_FAN_OK; in pps_fan_state_change()
2664 softsp->pps_fan_external_state &= ~SYS_KEYSW_FAN_OK; in pps_fan_state_change()
2680 struct sysctrl_soft_state *softsp = (struct sysctrl_soft_state *)arg; in bd_insert_handler() local
2682 ASSERT(softsp); in bd_insert_handler()
2686 (void) timeout(bd_insert_timeout, softsp, bd_insert_delay_hz); in bd_insert_handler()
2692 bd_remove_poll(struct sysctrl_soft_state *softsp) in bd_remove_poll() argument
2697 bd_remove_to_id = timeout(bd_remove_timeout, softsp, in bd_remove_poll()
2719 struct sysctrl_soft_state *softsp = arg; in bd_insert_timeout() local
2722 ASSERT(softsp); in bd_insert_timeout()
2725 sysc_policy_update(softsp, NULL, SYSC_EVT_BD_HP_DISABLED); in bd_insert_timeout()
2738 bd_remove_poll(softsp); in bd_insert_timeout()
2747 ddi_trigger_softintr(softsp->sbrd_gone_id); in bd_insert_timeout()
2753 struct sysctrl_soft_state *softsp = arg; in bd_remove_timeout() local
2756 ASSERT(softsp); in bd_remove_timeout()
2769 bd_remove_poll(softsp); in bd_remove_timeout()
2780 struct sysctrl_soft_state *softsp = (struct sysctrl_soft_state *)arg; in bd_insert_normal() local
2783 ASSERT(softsp); in bd_insert_normal()
2787 if (!(*(softsp->status1) & SYS_NOT_BRD_PRES)) { in bd_insert_normal()
2789 (void) timeout(bd_insert_timeout, softsp, bd_insert_retry_hz); in bd_insert_normal()
2792 mutex_enter(&softsp->csr_mutex); in bd_insert_normal()
2793 *(softsp->csr) |= SYS_SBRD_PRES_EN; in bd_insert_normal()
2795 tmp_reg = *(softsp->csr); in bd_insert_normal()
2799 mutex_exit(&softsp->csr_mutex); in bd_insert_normal()
2814 struct sysctrl_soft_state *softsp = (struct sysctrl_soft_state *)arg; in blink_led_handler() local
2817 ASSERT(softsp); in blink_led_handler()
2819 mutex_enter(&softsp->csr_mutex); in blink_led_handler()
2828 tmp_reg = *(softsp->csr); in blink_led_handler()
2831 if (softsp->sys_led) { in blink_led_handler()
2838 if (softsp->sys_fault) { in blink_led_handler()
2845 *(softsp->csr) = tmp_reg; in blink_led_handler()
2848 tmp_reg = *(softsp->csr); in blink_led_handler()
2852 mutex_exit(&softsp->csr_mutex); in blink_led_handler()
2854 (void) timeout(blink_led_timeout, softsp, blink_led_timeout_hz); in blink_led_handler()
2865 struct sysctrl_soft_state *softsp = arg; in blink_led_timeout() local
2868 ASSERT(softsp); in blink_led_timeout()
2880 softsp->sys_fault = process_fault_list(); in blink_led_timeout()
2883 mutex_enter(&softsp->sys_led_lock); in blink_led_timeout()
2884 softsp->sys_led = !softsp->sys_led; in blink_led_timeout()
2885 led_state = softsp->sys_led; in blink_led_timeout()
2886 mutex_exit(&softsp->sys_led_lock); in blink_led_timeout()
2890 ddi_trigger_softintr(softsp->blink_led_id); in blink_led_timeout()
2908 ASSERT(list->softsp); in toggle_board_green_leds()
2928 nvram_update_powerfail(struct sysctrl_soft_state *softsp) in nvram_update_powerfail() argument
2935 if (softsp->options_nodeid) { in nvram_update_powerfail()
2936 len = prom_setprop(softsp->options_nodeid, "powerfail-time", in nvram_update_powerfail()
2942 "to %s\n", ddi_get_instance(softsp->dip), buf); in nvram_update_powerfail()
2947 sysctrl_add_kstats(struct sysctrl_soft_state *softsp) in sysctrl_add_kstats() argument
2954 if ((ksp = kstat_create("unix", ddi_get_instance(softsp->dip), in sysctrl_add_kstats()
2959 ddi_get_instance(softsp->dip)); in sysctrl_add_kstats()
2991 ksp->ks_private = (void *)softsp; in sysctrl_add_kstats()
2999 ddi_get_instance(softsp->dip)); in sysctrl_add_kstats()
3002 tksp->ks_private = (void *)&softsp->tempstat; in sysctrl_add_kstats()
3010 ddi_get_instance(softsp->dip)); in sysctrl_add_kstats()
3013 ttsp->ks_private = (void *)&softsp->tempstat.override; in sysctrl_add_kstats()
3017 if ((pksp = kstat_create("unix", ddi_get_instance(softsp->dip), in sysctrl_add_kstats()
3021 ddi_get_instance(softsp->dip)); in sysctrl_add_kstats()
3024 pksp->ks_private = (void *)softsp; in sysctrl_add_kstats()
3033 struct sysctrl_soft_state *softsp; in sysctrl_kstat_update() local
3036 softsp = (struct sysctrl_soft_state *)(ksp->ks_private); in sysctrl_kstat_update()
3047 sysksp->csr.value.c[0] = *(softsp->csr); in sysctrl_kstat_update()
3048 sysksp->status1.value.c[0] = *(softsp->status1); in sysctrl_kstat_update()
3049 sysksp->status2.value.c[0] = *(softsp->status2); in sysctrl_kstat_update()
3050 sysksp->clk_freq2.value.c[0] = *(softsp->clk_freq2); in sysctrl_kstat_update()
3052 sysksp->fan_status.value.c[0] = softsp->pps_fan_external_state; in sysctrl_kstat_update()
3053 sysksp->key_status.value.c[0] = softsp->key_shadow; in sysctrl_kstat_update()
3054 sysksp->power_state.value.i32 = softsp->power_state; in sysctrl_kstat_update()
3060 if (softsp->clk_ver != NULL) in sysctrl_kstat_update()
3061 sysksp->clk_ver.value.c[0] = *(softsp->clk_ver); in sysctrl_kstat_update()
3071 struct sysctrl_soft_state *softsp; in psstat_kstat_update() local
3075 softsp = (struct sysctrl_soft_state *)(ksp->ks_private); in psstat_kstat_update()
3081 *ptr++ = softsp->ps_stats[ps].dcshadow; in psstat_kstat_update()
3302 init_remote_console_uart(struct sysctrl_soft_state *softsp) in init_remote_console_uart() argument
3314 *(softsp->rcons_ctl) = uart_table[i].reg; in init_remote_console_uart()
3315 *(softsp->rcons_ctl) = uart_table[i].data; in init_remote_console_uart()
3363 rcons_reinit(struct sysctrl_soft_state *softsp) in rcons_reinit() argument
3367 if (!(softsp->rcons_ctl)) in rcons_reinit()
3373 if (ddi_map_regs(softsp->dip, 1, (caddr_t *)&softsp->rcons_ctl, in rcons_reinit()
3382 *(softsp->clk_freq2) &= ~RCONS_UART_EN; in rcons_reinit()
3385 tmp_reg = *(softsp->csr); in rcons_reinit()
3390 init_remote_console_uart(softsp); in rcons_reinit()
3393 *(softsp->clk_freq2) |= RCONS_UART_EN; in rcons_reinit()
3396 tmp_reg = *(softsp->csr); in rcons_reinit()