Lines Matching +full:thermal +full:- +full:sensors
140 static int controller_present[] = {-1, -1, -1};
145 static int power_supply_previous_state[] = {-1, -1, -1};
215 &mod_driverops, /* type of module - driver */
233 #define EHC_FAILURE (-1)
257 * PCF8591 Chip Used for temperature sensors
260 * A0-A2 valid range is 0-7
263 * ------------------------------------------------
265 * ------------------------------------------------
286 * ---------------------------------------------
288 * ---------------------------------------------
320 * -------------------------------------------
322 * -------------------------------------------
440 mutex_enter(&unitp->umutex); in envctrl_attach()
441 if (!unitp->suspended) { in envctrl_attach()
442 mutex_exit(&unitp->umutex); in envctrl_attach()
445 unitp->suspended = 0; in envctrl_attach()
446 mutex_exit(&unitp->umutex); in envctrl_attach()
447 unitp->initting = B_TRUE; in envctrl_attach()
449 unitp->initting = B_FALSE; in envctrl_attach()
451 mutex_enter(&unitp->umutex); in envctrl_attach()
454 mutex_exit(&unitp->umutex); in envctrl_attach()
474 if (ddi_regs_map_setup(dip, 0, (caddr_t *)&unitp->bus_ctl_regs, 0, in envctrl_attach()
476 &unitp->ctlr_handle) != DDI_SUCCESS) { in envctrl_attach()
482 * If the PCI nexus has added a thermal interrupt, we first need in envctrl_attach()
495 &unitp->ic_trap_cookie) != DDI_SUCCESS) { in envctrl_attach()
500 mutex_init(&unitp->umutex, NULL, MUTEX_DRIVER, in envctrl_attach()
501 (void *)unitp->ic_trap_cookie); in envctrl_attach()
504 if (ddi_add_intr(dip, 0, &unitp->ic_trap_cookie, NULL, envctrl_bus_isr, in envctrl_attach()
512 if (ddi_add_intr(dip, 1, &unitp->ic_trap_cookie, NULL, envctrl_dev_isr, in envctrl_attach()
528 mutex_enter(&unitp->umutex); in envctrl_attach()
530 ENVCTRL_LED_BLINK, -1)) { in envctrl_attach()
532 unitp->activity_led_blink = B_TRUE; in envctrl_attach()
536 unitp->activity_led_blink = B_FALSE; in envctrl_attach()
539 unitp->shutdown = B_FALSE; in envctrl_attach()
540 unitp->num_ps_present = unitp->num_encl_present = 0; in envctrl_attach()
541 unitp->num_fans_present = MIN_FAN_BANKS; in envctrl_attach()
542 unitp->num_fans_failed = ENVCTRL_CHAR_ZERO; in envctrl_attach()
543 unitp->AFB_present = B_TRUE; in envctrl_attach()
544 unitp->dip = dip; in envctrl_attach()
576 DDI_PROP_DONTPASS, "cpu-fan-speeds", in envctrl_attach()
592 DDI_PROP_DONTPASS, "ps-fan-speeds", in envctrl_attach()
606 "fan-override", -1)) { in envctrl_attach()
609 unitp->AFB_present = B_TRUE; in envctrl_attach()
613 unitp->AFB_present = B_FALSE; in envctrl_attach()
619 unitp->AFB_present = B_TRUE; in envctrl_attach()
622 if (unitp->AFB_present == B_TRUE) in envctrl_attach()
623 unitp->num_fans_present++; in envctrl_attach()
626 mutex_exit(&unitp->umutex); in envctrl_attach()
628 unitp->initting = B_TRUE; in envctrl_attach()
630 unitp->initting = B_FALSE; in envctrl_attach()
633 mutex_enter(&unitp->umutex); in envctrl_attach()
657 unitp->timeout_id = 0; in envctrl_attach()
658 unitp->blink_timeout_id = 0; in envctrl_attach()
661 unitp->num_cpus_present = envctrl_numcpus; in envctrl_attach()
670 unitp->initting = B_TRUE; in envctrl_attach()
672 unitp->initting = B_FALSE; in envctrl_attach()
680 if (unitp->activity_led_blink == B_TRUE) { in envctrl_attach()
681 unitp->present_led_state = B_FALSE; in envctrl_attach()
682 mutex_exit(&unitp->umutex); in envctrl_attach()
684 mutex_enter(&unitp->umutex); in envctrl_attach()
692 if (unitp->cpu_pr_location[i] == B_TRUE) { in envctrl_attach()
700 unitp->shutdown = B_TRUE; in envctrl_attach()
713 mutex_exit(&unitp->umutex); in envctrl_attach()
729 ddi_remove_intr(dip, (uint_t)1, unitp->ic_trap_cookie); in envctrl_attach()
731 ddi_remove_intr(dip, (uint_t)0, unitp->ic_trap_cookie); in envctrl_attach()
734 mutex_destroy(&unitp->umutex); in envctrl_attach()
737 if (unitp->ctlr_handle) in envctrl_attach()
738 ddi_regs_map_free(&unitp->ctlr_handle); in envctrl_attach()
759 if (unitp->psksp != NULL) { in envctrl_detach()
760 kstat_delete(unitp->psksp); in envctrl_detach()
762 if (unitp->fanksp != NULL) { in envctrl_detach()
763 kstat_delete(unitp->fanksp); in envctrl_detach()
765 if (unitp->enclksp != NULL) { in envctrl_detach()
766 kstat_delete(unitp->enclksp); in envctrl_detach()
769 if (unitp->timeout_id != 0) { in envctrl_detach()
770 (void) untimeout(unitp->timeout_id); in envctrl_detach()
771 unitp->timeout_id = 0; in envctrl_detach()
773 if (unitp->blink_timeout_id != 0) { in envctrl_detach()
774 (void) untimeout(unitp->blink_timeout_id); in envctrl_detach()
775 unitp->blink_timeout_id = 0; in envctrl_detach()
780 ddi_remove_intr(dip, (uint_t)0, unitp->ic_trap_cookie); in envctrl_detach()
781 ddi_remove_intr(dip, (uint_t)1, unitp->ic_trap_cookie); in envctrl_detach()
783 ddi_regs_map_free(&unitp->ctlr_handle); in envctrl_detach()
785 mutex_destroy(&unitp->umutex); in envctrl_detach()
795 mutex_enter(&unitp->umutex); in envctrl_detach()
796 if (unitp->suspended) { in envctrl_detach()
798 mutex_exit(&unitp->umutex); in envctrl_detach()
801 unitp->suspended = 1; in envctrl_detach()
802 mutex_exit(&unitp->umutex); in envctrl_detach()
828 *result = unitp->dip; in envctrl_getinfo()
864 mutex_enter(&unitp->umutex); in envctrl_open()
867 if ((unitp->oflag & FWRITE)) { in envctrl_open()
868 mutex_exit(&unitp->umutex); in envctrl_open()
871 unitp->oflag |= FWRITE; in envctrl_open()
875 q->q_ptr = WR(q)->q_ptr = (caddr_t)unitp; in envctrl_open()
885 unitp->readq = RD(q); in envctrl_open()
886 unitp->writeq = WR(q); in envctrl_open()
887 unitp->msg = (mblk_t *)NULL; in envctrl_open()
889 mutex_exit(&unitp->umutex); in envctrl_open()
899 unitp = (struct envctrlunit *)q->q_ptr; in envctrl_close()
901 mutex_enter(&unitp->umutex); in envctrl_close()
903 unitp->oflag = B_FALSE; in envctrl_close()
904 unitp->current_mode = ENVCTRL_NORMAL_MODE; in envctrl_close()
907 q->q_ptr = WR(q)->q_ptr = NULL; in envctrl_close()
910 mutex_exit(&unitp->umutex); in envctrl_close()
930 unitp = (struct envctrlunit *)q->q_ptr; in envctrl_wput()
939 mp->b_cont = NULL; in envctrl_wput()
940 if ((mp->b_wptr - mp->b_rptr) <= 0) { in envctrl_wput()
952 iocp = (struct iocblk *)(void *)mp->b_rptr; in envctrl_wput()
953 cmd = iocp->ioc_cmd; in envctrl_wput()
958 if (iocp->ioc_count == TRANSPARENT) { in envctrl_wput()
959 mcopyin(mp, *(caddr_t *)mp->b_cont->b_rptr, in envctrl_wput()
971 if (unitp->current_mode == ENVCTRL_DIAG_MODE) { in envctrl_wput()
972 if (unitp->timeout_id != 0) { in envctrl_wput()
973 (void) untimeout(unitp->timeout_id); in envctrl_wput()
974 unitp->timeout_id = 0; in envctrl_wput()
983 if (iocp->ioc_count == TRANSPARENT) { in envctrl_wput()
984 mcopyin(mp, *(caddr_t *)mp->b_cont->b_rptr, in envctrl_wput()
992 if (unitp->current_mode == ENVCTRL_DIAG_MODE && in envctrl_wput()
993 iocp->ioc_count == TRANSPARENT) { in envctrl_wput()
994 mcopyin(mp, *(caddr_t *)mp->b_cont->b_rptr, in envctrl_wput()
1002 if (unitp->current_mode == ENVCTRL_DIAG_MODE && in envctrl_wput()
1003 iocp->ioc_count == TRANSPARENT) { in envctrl_wput()
1004 mcopyin(mp, *(caddr_t *)mp->b_cont->b_rptr, in envctrl_wput()
1016 if (unitp->current_mode == ENVCTRL_DIAG_MODE && in envctrl_wput()
1017 iocp->ioc_count == TRANSPARENT) { in envctrl_wput()
1018 mcopyin(mp, *(caddr_t *)mp->b_cont->b_rptr, in envctrl_wput()
1027 if (iocp->ioc_count == TRANSPARENT) { in envctrl_wput()
1028 mcopyin(mp, *(caddr_t *)mp->b_cont->b_rptr, in envctrl_wput()
1036 if (iocp->ioc_count == TRANSPARENT) { in envctrl_wput()
1037 mcopyin(mp, *(caddr_t *)mp->b_cont->b_rptr, in envctrl_wput()
1046 if (iocp->ioc_count == TRANSPARENT) { in envctrl_wput()
1047 mcopyin(mp, *(caddr_t *)mp->b_cont->b_rptr, in envctrl_wput()
1067 csp = (struct copyresp *)(void *)mp->b_rptr; in envctrl_wput()
1072 if (csp->cp_rval != 0) { in envctrl_wput()
1077 cqp = (struct copyreq *)(void *)mp->b_rptr; in envctrl_wput()
1079 cmd = csp->cp_cmd; in envctrl_wput()
1080 state = (long)cqp->cq_private; in envctrl_wput()
1085 (void *)mp->b_cont->b_rptr; in envctrl_wput()
1086 mutex_enter(&unitp->umutex); in envctrl_wput()
1088 fanspeed->type) == DDI_FAILURE) { in envctrl_wput()
1095 mutex_exit(&unitp->umutex); in envctrl_wput()
1098 mutex_exit(&unitp->umutex); in envctrl_wput()
1103 wdval = (uint8_t *)(void *)mp->b_cont->b_rptr; in envctrl_wput()
1104 mutex_enter(&unitp->umutex); in envctrl_wput()
1112 if (unitp->current_mode == ENVCTRL_NORMAL_MODE) { in envctrl_wput()
1114 mutex_exit(&unitp->umutex); in envctrl_wput()
1120 mutex_exit(&unitp->umutex); in envctrl_wput()
1125 (void *)mp->b_cont->b_rptr; in envctrl_wput()
1126 mutex_enter(&unitp->umutex); in envctrl_wput()
1132 mutex_exit(&unitp->umutex); in envctrl_wput()
1135 if (state == -1) { in envctrl_wput()
1140 (void *)mp->b_cont->b_rptr; in envctrl_wput()
1141 mutex_enter(&unitp->umutex); in envctrl_wput()
1145 mcopyout(mp, (void *)-1, in envctrl_wput()
1147 csp->cp_private, NULL); in envctrl_wput()
1150 mutex_exit(&unitp->umutex); in envctrl_wput()
1155 if (state == -1) { in envctrl_wput()
1160 (void *)mp->b_cont->b_rptr; in envctrl_wput()
1161 mutex_enter(&unitp->umutex); in envctrl_wput()
1163 mutex_exit(&unitp->umutex); in envctrl_wput()
1164 mcopyout(mp, (void *)-1, in envctrl_wput()
1166 csp->cp_private, NULL); in envctrl_wput()
1172 if (state == -1) { in envctrl_wput()
1177 (void *)mp->b_cont->b_rptr; in envctrl_wput()
1178 mutex_enter(&unitp->umutex); in envctrl_wput()
1181 mutex_exit(&unitp->umutex); in envctrl_wput()
1182 mcopyout(mp, (void *)-1, in envctrl_wput()
1184 csp->cp_private, NULL); in envctrl_wput()
1188 tempr = (uint8_t *)(void *)mp->b_cont->b_rptr; in envctrl_wput()
1192 mutex_enter(&unitp->umutex); in envctrl_wput()
1194 mutex_exit(&unitp->umutex); in envctrl_wput()
1200 wdval = (uint8_t *)(void *)mp->b_cont->b_rptr; in envctrl_wput()
1204 mutex_enter(&unitp->umutex); in envctrl_wput()
1206 mutex_exit(&unitp->umutex); in envctrl_wput()
1213 if (state == -1) { in envctrl_wput()
1217 tempr = (uchar_t *)(void *)mp->b_cont->b_rptr; in envctrl_wput()
1218 *tempr = unitp->current_mode; in envctrl_wput()
1219 mcopyout(mp, (void *)-1, sizeof (uchar_t), in envctrl_wput()
1220 csp->cp_private, NULL); in envctrl_wput()
1225 wdval = (uint8_t *)(void *)mp->b_cont->b_rptr; in envctrl_wput()
1228 mutex_enter(&unitp->umutex); in envctrl_wput()
1229 unitp->current_mode = *wdval; in envctrl_wput()
1230 if (unitp->timeout_id != 0 && in envctrl_wput()
1232 (void) untimeout(unitp->timeout_id); in envctrl_wput()
1233 unitp->timeout_id = in envctrl_wput()
1256 unitp->current_mode = in envctrl_wput()
1259 unitp->current_mode = in envctrl_wput()
1262 mutex_exit(&unitp->umutex); in envctrl_wput()
1277 if (*mp->b_rptr & FLUSHR) { in envctrl_wput()
1278 *mp->b_rptr &= ~FLUSHW; in envctrl_wput()
1299 mutex_enter(&unitp->umutex); in envctrl_bus_isr()
1305 mutex_exit(&unitp->umutex); in envctrl_bus_isr()
1320 mutex_enter(&unitp->umutex); in envctrl_dev_isr()
1329 * ------------------------- in envctrl_dev_isr()
1331 * ------------------------- in envctrl_dev_isr()
1375 mutex_exit(&unitp->umutex); in envctrl_dev_isr()
1377 mutex_enter(&unitp->umutex); in envctrl_dev_isr()
1379 mutex_exit(&unitp->umutex); in envctrl_dev_isr()
1442 mutex_exit(&unitp->umutex); in envctrl_dev_isr()
1456 mutex_enter(&unitp->umutex); in envctrl_init_bus()
1458 ddi_put8(unitp->ctlr_handle, in envctrl_init_bus()
1459 &unitp->bus_ctl_regs->s0, ENVCTRL_CHAR_ZERO); in envctrl_init_bus()
1463 ddi_put8(unitp->ctlr_handle, &unitp->bus_ctl_regs->s1, in envctrl_init_bus()
1465 (void) ddi_put8(unitp->ctlr_handle, &unitp->bus_ctl_regs->s0, in envctrl_init_bus()
1469 ddi_put8(unitp->ctlr_handle, in envctrl_init_bus()
1470 &unitp->bus_ctl_regs->s1, ENVCTRL_BUS_CLOCK0); in envctrl_init_bus()
1474 ddi_put8(unitp->ctlr_handle, in envctrl_init_bus()
1475 &unitp->bus_ctl_regs->s0, ENVCTRL_BUS_CLOCK1); in envctrl_init_bus()
1478 ddi_put8(unitp->ctlr_handle, in envctrl_init_bus()
1479 &unitp->bus_ctl_regs->s1, ENVCTRL_BUS_ESI); in envctrl_init_bus()
1498 if (unitp->initting == B_TRUE) { in envctrl_init_bus()
1505 (unitp->AFB_present == B_FALSE)) in envctrl_init_bus()
1516 unitp->current_mode = ENVCTRL_NORMAL_MODE; in envctrl_init_bus()
1519 mutex_exit(&unitp->umutex); in envctrl_init_bus()
1533 ASSERT(MUTEX_HELD(&unitp->umutex)); in envctrl_xmit()
1540 if (fanspeed->chip_num > ENVCTRL_FAN_ADDR_MAX) { in envctrl_xmit()
1544 if (fanspeed->fan_num > ENVCTRL_PORT7) { in envctrl_xmit()
1548 if (fanspeed->val > MAX_FAN_VAL) { in envctrl_xmit()
1553 slave_addr = (TDA8444T_BASE_ADDR | fanspeed->chip_num); in envctrl_xmit()
1554 buf[0] = fanspeed->val; in envctrl_xmit()
1557 TDA8444T_BASE_ADDR | fanspeed->chip_num, 0xF, in envctrl_xmit()
1558 fanspeed->fan_num, buf, 1); in envctrl_xmit()
1565 mutex_exit(&unitp->umutex); in envctrl_xmit()
1567 mutex_enter(&unitp->umutex); in envctrl_xmit()
1579 switch (fanspeed->fan_num) { in envctrl_xmit()
1581 unitp->fan_kstats[ENVCTRL_FAN_TYPE_CPU].fanspeed = in envctrl_xmit()
1582 fanspeed->val; in envctrl_xmit()
1585 unitp->fan_kstats[ENVCTRL_FAN_TYPE_PS].fanspeed = in envctrl_xmit()
1586 fanspeed->val; in envctrl_xmit()
1589 unitp->fan_kstats[ENVCTRL_FAN_TYPE_AFB].fanspeed = in envctrl_xmit()
1590 fanspeed->val; in envctrl_xmit()
1598 buf[0] = ioport->val; in envctrl_xmit()
1599 if (ioport->chip_num > ENVCTRL_PCF8574_DEV7) in envctrl_xmit()
1603 if (ioport->type == PCF8574A) { in envctrl_xmit()
1604 slave_addr = (PCF8574A_BASE_ADDR | ioport->chip_num); in envctrl_xmit()
1607 PCF8574A_BASE_ADDR | ioport->chip_num, buf, 1); in envctrl_xmit()
1609 slave_addr = (PCF8574_BASE_ADDR | ioport->chip_num); in envctrl_xmit()
1611 PCF8574_BASE_ADDR | ioport->chip_num, buf, 1); in envctrl_xmit()
1620 mutex_exit(&unitp->umutex); in envctrl_xmit()
1622 mutex_enter(&unitp->umutex); in envctrl_xmit()
1629 ioport->chip_num, ioport->type); in envctrl_xmit()
1653 ASSERT(MUTEX_HELD(&unitp->umutex)); in envctrl_recv()
1658 slave_addr = (PCF8591_BASE_ADDR | temp->chip_num); in envctrl_recv()
1662 PCF8591_BASE_ADDR | temp->chip_num & 0xF, in envctrl_recv()
1663 temp->sensor_num, 0, 0, 1, &recv_data, 1); in envctrl_recv()
1676 mutex_exit(&unitp->umutex); in envctrl_recv()
1678 mutex_enter(&unitp->umutex); in envctrl_recv()
1685 temp->temp_val = recv_data; in envctrl_recv()
1694 if (ioport->chip_num > ENVCTRL_PCF8574_DEV7) in envctrl_recv()
1696 ioport->chip_num); in envctrl_recv()
1698 if (ioport->type == PCF8574A) { in envctrl_recv()
1700 ioport->chip_num); in envctrl_recv()
1702 PCF8574A_BASE_ADDR | ioport->chip_num, buf, 1); in envctrl_recv()
1705 ioport->chip_num); in envctrl_recv()
1707 PCF8574_BASE_ADDR | ioport->chip_num, buf, 1); in envctrl_recv()
1716 mutex_exit(&unitp->umutex); in envctrl_recv()
1718 mutex_enter(&unitp->umutex); in envctrl_recv()
1725 ioport->chip_num, ioport->type); in envctrl_recv()
1728 ioport->val = buf[0]; in envctrl_recv()
1743 ASSERT(MUTEX_HELD(&unitp->umutex)); in envctrl_get_ps_temp()
1781 mutex_exit(&unitp->umutex); in envctrl_get_ps_temp()
1783 mutex_enter(&unitp->umutex); in envctrl_get_ps_temp()
1802 ASSERT(MUTEX_HELD(&unitp->umutex)); in envctrl_get_cpu_temp()
1834 mutex_exit(&unitp->umutex); in envctrl_get_cpu_temp()
1836 mutex_enter(&unitp->umutex); in envctrl_get_cpu_temp()
1841 return (MAX_CPU_TEMP - 10); in envctrl_get_cpu_temp()
1860 ASSERT(MUTEX_HELD(&unitp->umutex)); in envctrl_get_lm75_temp()
1887 tmp1 = -tmp1; in envctrl_get_lm75_temp()
1889 k = 0 - tmp1; in envctrl_get_lm75_temp()
1903 mutex_enter(&unitp->umutex); in envctrl_tempr_poll()
1905 if (unitp->shutdown == B_TRUE) { in envctrl_tempr_poll()
1916 if (unitp->current_mode == ENVCTRL_DIAG_MODE) { in envctrl_tempr_poll()
1923 unitp->current_mode = ENVCTRL_NORMAL_MODE; in envctrl_tempr_poll()
1929 unitp->timeout_id = (timeout(envctrl_tempr_poll, in envctrl_tempr_poll()
1932 mutex_exit(&unitp->umutex); in envctrl_tempr_poll()
1941 mutex_enter(&unitp->umutex); in envctrl_led_blink()
1947 if (unitp->present_led_state == B_TRUE) { in envctrl_led_blink()
1955 unitp->present_led_state = B_FALSE; in envctrl_led_blink()
1958 unitp->present_led_state = B_TRUE; in envctrl_led_blink()
1964 unitp->blink_timeout_id = (timeout(envctrl_led_blink, in envctrl_led_blink()
1967 mutex_exit(&unitp->umutex); in envctrl_led_blink()
1981 ASSERT(MUTEX_HELD(&unitp->umutex)); in envctrl_get_sys_temperatures()
1990 * we wil re-se the watchdog timer each time in envctrl_get_sys_temperatures()
1997 if (unitp->current_mode == ENVCTRL_DIAG_MODE) { in envctrl_get_sys_temperatures()
1998 unitp->current_mode = ENVCTRL_NORMAL_MODE; in envctrl_get_sys_temperatures()
2000 unitp->current_mode = ENVCTRL_DIAG_MODE; in envctrl_get_sys_temperatures()
2020 if (unitp->current_mode == ENVCTRL_DIAG_MODE && diag_tempr != NULL) { in envctrl_get_sys_temperatures()
2021 if (unitp->timeout_id != 0) { in envctrl_get_sys_temperatures()
2022 (void) untimeout(unitp->timeout_id); in envctrl_get_sys_temperatures()
2026 unitp->timeout_id = (timeout(envctrl_tempr_poll, in envctrl_get_sys_temperatures()
2034 if (ambtemp == -100) { in envctrl_get_sys_temperatures()
2035 mutex_exit(&unitp->umutex); in envctrl_get_sys_temperatures()
2037 mutex_enter(&unitp->umutex); in envctrl_get_sys_temperatures()
2050 unitp->current_mode == ENVCTRL_NORMAL_MODE) { in envctrl_get_sys_temperatures()
2051 unitp->shutdown = B_TRUE; in envctrl_get_sys_temperatures()
2053 if (unitp->current_mode == ENVCTRL_NORMAL_MODE) { in envctrl_get_sys_temperatures()
2072 if (unitp->cpu_pr_location[i] == B_TRUE) { in envctrl_get_sys_temperatures()
2078 unitp->shutdown = B_TRUE; in envctrl_get_sys_temperatures()
2102 if (unitp->current_mode == ENVCTRL_DIAG_MODE && diag_tempr != NULL) { in envctrl_get_sys_temperatures()
2105 temperature = hicputemp - CPU_AMB_RISE; in envctrl_get_sys_temperatures()
2114 if (unitp->current_mode == ENVCTRL_NORMAL_MODE) { in envctrl_get_sys_temperatures()
2140 unitp->fan_kstats[ENVCTRL_FAN_TYPE_CPU].fanspeed = fan.val; in envctrl_get_sys_temperatures()
2146 if (unitp->AFB_present == B_TRUE) { in envctrl_get_sys_temperatures()
2149 unitp->fan_kstats[ENVCTRL_FAN_TYPE_AFB].fanspeed = fan.val; in envctrl_get_sys_temperatures()
2160 if (unitp->ps_present[i]) { in envctrl_get_sys_temperatures()
2162 unitp->ps_kstats[i].ps_tempr = tmptemp & 0xFFFF; in envctrl_get_sys_temperatures()
2168 unitp->shutdown = B_TRUE; in envctrl_get_sys_temperatures()
2186 if (temperature - ambtemp > PS_AMB_RISE) { in envctrl_get_sys_temperatures()
2187 ambtemp = temperature - PS_AMB_RISE; in envctrl_get_sys_temperatures()
2200 unitp->fan_kstats[ENVCTRL_FAN_TYPE_PS].fanspeed = fan.val; in envctrl_get_sys_temperatures()
2220 ASSERT(MUTEX_HELD(&unitp->umutex)); in envctrl_fan_fail_service()
2234 unitp->fan_kstats[ENVCTRL_FAN_TYPE_PS].fans_ok = B_TRUE; in envctrl_fan_fail_service()
2235 unitp->fan_kstats[ENVCTRL_FAN_TYPE_CPU].fans_ok = B_TRUE; in envctrl_fan_fail_service()
2236 unitp->fan_kstats[ENVCTRL_FAN_TYPE_AFB].fans_ok = B_TRUE; in envctrl_fan_fail_service()
2237 unitp->fan_kstats[ENVCTRL_FAN_TYPE_PS].fanflt_num = 0; in envctrl_fan_fail_service()
2238 unitp->fan_kstats[ENVCTRL_FAN_TYPE_CPU].fanflt_num = 0; in envctrl_fan_fail_service()
2239 unitp->fan_kstats[ENVCTRL_FAN_TYPE_AFB].fanflt_num = 0; in envctrl_fan_fail_service()
2240 unitp->num_fans_failed = 0; in envctrl_fan_fail_service()
2245 if (unitp->shutdown != B_TRUE) { in envctrl_fan_fail_service()
2264 unitp->fan_kstats[fantype].fans_ok = B_FALSE; in envctrl_fan_fail_service()
2265 unitp->fan_kstats[fantype].fanflt_num = psfanflt - 1; in envctrl_fan_fail_service()
2267 unitp->current_mode == ENVCTRL_NORMAL_MODE) { in envctrl_fan_fail_service()
2269 psfanflt - 1); in envctrl_fan_fail_service()
2272 unitp->fan_kstats[fantype].fans_ok = B_TRUE; in envctrl_fan_fail_service()
2273 unitp->fan_kstats[fantype].fanflt_num = 0; in envctrl_fan_fail_service()
2289 unitp->fan_kstats[fantype].fans_ok = B_FALSE; in envctrl_fan_fail_service()
2290 unitp->fan_kstats[fantype].fanflt_num = cpufanflt - 1; in envctrl_fan_fail_service()
2292 unitp->current_mode == ENVCTRL_NORMAL_MODE) { in envctrl_fan_fail_service()
2294 cpufanflt - 1); in envctrl_fan_fail_service()
2297 unitp->fan_kstats[fantype].fans_ok = B_TRUE; in envctrl_fan_fail_service()
2298 unitp->fan_kstats[fantype].fanflt_num = 0; in envctrl_fan_fail_service()
2302 (unitp->AFB_present == B_TRUE)) { in envctrl_fan_fail_service()
2311 unitp->fan_kstats[ENVCTRL_FAN_TYPE_AFB].fans_ok in envctrl_fan_fail_service()
2313 unitp->fan_kstats[ENVCTRL_FAN_TYPE_AFB].fanflt_num = in envctrl_fan_fail_service()
2315 if (unitp->current_mode == ENVCTRL_NORMAL_MODE) { in envctrl_fan_fail_service()
2326 unitp->num_fans_failed != 0) { in envctrl_fan_fail_service()
2339 if (unitp->AFB_present == B_FALSE) { in envctrl_fan_fail_service()
2344 (status != DDI_SUCCESS)) && !unitp->initting && in envctrl_fan_fail_service()
2345 unitp->current_mode == ENVCTRL_NORMAL_MODE) { in envctrl_fan_fail_service()
2363 unitp->shutdown = B_TRUE; in envctrl_fan_fail_service()
2368 unitp->num_fans_failed = (psfanflt + cpufanflt + afbfanflt); in envctrl_fan_fail_service()
2390 ASSERT(MUTEX_HELD(&unitp->umutex)); in envctrl_PS_intr_service()
2392 if (unitp->current_mode == ENVCTRL_DIAG_MODE) { in envctrl_PS_intr_service()
2405 mutex_exit(&unitp->umutex); in envctrl_PS_intr_service()
2407 mutex_enter(&unitp->umutex); in envctrl_PS_intr_service()
2421 unitp->pshotplug_id = (timeout(envctrl_pshotplug_poll, in envctrl_PS_intr_service()
2432 ASSERT(MUTEX_HELD(&unitp->umutex)); in envctrl_reset_dflop()
2459 ASSERT(MUTEX_HELD(&unitp->umutex)); in envctrl_add_encl_kstats()
2462 if (unitp->encl_kstats[i].instance == I2C_NODEV) { in envctrl_add_encl_kstats()
2463 unitp->encl_kstats[i].instance = instance; in envctrl_add_encl_kstats()
2464 unitp->encl_kstats[i].type = type; in envctrl_add_encl_kstats()
2465 unitp->encl_kstats[i].value = val; in envctrl_add_encl_kstats()
2470 unitp->num_encl_present++; in envctrl_add_encl_kstats()
2479 ASSERT(MUTEX_HELD(&unitp->umutex)); in envctrl_enable_devintrs()
2519 ASSERT(MUTEX_HELD(&unitp->umutex)); in envctrl_stop_clock()
2539 ASSERT(MUTEX_HELD(&unitp->umutex)); in envctrl_reset_watchdog()
2541 /* the clock MUST be stopped before we re-set it */ in envctrl_reset_watchdog()
2558 * seconds. Valid values are 40-99. The timer in envctrl_reset_watchdog()
2562 if (unitp->current_mode == ENVCTRL_DIAG_MODE) { in envctrl_reset_watchdog()
2563 if (unitp->timeout_id != 0) { in envctrl_reset_watchdog()
2564 (void) untimeout(unitp->timeout_id); in envctrl_reset_watchdog()
2565 unitp->timeout_id = 0; in envctrl_reset_watchdog()
2566 unitp->timeout_id = (timeout(envctrl_tempr_poll, in envctrl_reset_watchdog()
2582 * counts from 0-99 with an intr triggered in envctrl_reset_watchdog()
2584 * also count from a pre-set value which is in envctrl_reset_watchdog()
2586 * safe so our value is 99-3 or 96. in envctrl_reset_watchdog()
2595 if (unitp->current_mode == ENVCTRL_DIAG_MODE) { in envctrl_reset_watchdog()
2604 res = (0x99 - (res | (w << 4))); in envctrl_reset_watchdog()
2619 * to re-start the clock in the CSR. in envctrl_reset_watchdog()
2644 ASSERT(MUTEX_HELD(&unitp->umutex)); in envctrl_ps_probe()
2646 unitp->num_ps_present = 0; in envctrl_ps_probe()
2649 unitp->ps_present[i] = B_FALSE; in envctrl_ps_probe()
2650 unitp->ps_kstats[i].ps_rating = 0; in envctrl_ps_probe()
2651 unitp->ps_kstats[i].ps_tempr = 0; in envctrl_ps_probe()
2677 mutex_exit(&unitp->umutex); in envctrl_ps_probe()
2679 mutex_enter(&unitp->umutex); in envctrl_ps_probe()
2714 unitp->ps_present[i] = B_TRUE; in envctrl_ps_probe()
2716 unitp->ps_kstats[i].instance = i; in envctrl_ps_probe()
2717 unitp->ps_kstats[i].ps_tempr = ENVCTRL_INIT_TEMPR; in envctrl_ps_probe()
2718 ++unitp->num_ps_present; in envctrl_ps_probe()
2727 unitp->ps_kstats[i].ps_rating = ENVCTRL_PS_550; in envctrl_ps_probe()
2730 unitp->ps_kstats[i].ps_rating = ENVCTRL_PS_650; in envctrl_ps_probe()
2735 unitp->ps_kstats[i].ps_ok = B_FALSE; in envctrl_ps_probe()
2738 unitp->ps_kstats[i].ps_ok = B_TRUE; in envctrl_ps_probe()
2743 unitp->ps_kstats[i].limit_ok = B_FALSE; in envctrl_ps_probe()
2746 unitp->ps_kstats[i].limit_ok = B_TRUE; in envctrl_ps_probe()
2751 unitp->ps_kstats[i].curr_share_ok = B_FALSE; in envctrl_ps_probe()
2754 unitp->ps_kstats[i].curr_share_ok = B_TRUE; in envctrl_ps_probe()
2798 if (unitp->current_mode == ENVCTRL_NORMAL_MODE) { in envctrl_ps_probe()
2827 if ((unitp->encl_kstats[i].type == ENVCTRL_ENCL_FSP) && in envctrl_abort_seq_handler()
2828 (unitp->encl_kstats[i].instance != I2C_NODEV)) { in envctrl_abort_seq_handler()
2829 secure = unitp->encl_kstats[i].value; in envctrl_abort_seq_handler()
2860 ASSERT(MUTEX_HELD(&unitp->umutex)); in envctrl_get_fpm_status()
2877 mutex_exit(&unitp->umutex); in envctrl_get_fpm_status()
2879 mutex_enter(&unitp->umutex); in envctrl_get_fpm_status()
2897 ASSERT(MUTEX_HELD(&unitp->umutex)); in envctrl_set_fsp()
2918 ASSERT(MUTEX_HELD(&unitp->umutex)); in envctrl_get_dskled()
2920 if (chip->chip_num > ENVCTRL_PCF8574_DEV2 || in envctrl_get_dskled()
2921 chip->type != ENVCTRL_ENCL_BACKPLANE4 && in envctrl_get_dskled()
2922 chip->type != ENVCTRL_ENCL_BACKPLANE8) { in envctrl_get_dskled()
2925 oldtype = chip->type; in envctrl_get_dskled()
2926 chip->type = PCF8574; in envctrl_get_dskled()
2928 chip->type = oldtype; in envctrl_get_dskled()
2929 chip->val = ~chip->val; in envctrl_get_dskled()
2949 ASSERT(MUTEX_HELD(&unitp->umutex)); in envctrl_set_dskled()
2952 if (chip->chip_num > ENVCTRL_PCF8574_DEV2 || in envctrl_set_dskled()
2953 chip->val > ENVCTRL_DISK8LED_ALLOFF || in envctrl_set_dskled()
2954 chip->val < ENVCTRL_CHAR_ZERO) { in envctrl_set_dskled()
2958 if (chip->type != ENVCTRL_ENCL_BACKPLANE4 && in envctrl_set_dskled()
2959 chip->type != ENVCTRL_ENCL_BACKPLANE8) { in envctrl_set_dskled()
2972 if (controller_present[i] == -1) in envctrl_set_dskled()
2976 if (chip->chip_num == controller_addr[i]) { in envctrl_set_dskled()
2977 if (chip->val != ENVCTRL_CHAR_ZERO) in envctrl_set_dskled()
3007 if (chip->chip_num == backaddrs[i]) { in envctrl_set_dskled()
3012 switch (chip->type) { in envctrl_set_dskled()
3015 instance, chip->val); in envctrl_set_dskled()
3019 instance, chip->val); in envctrl_set_dskled()
3024 chip->type = PCF8574; in envctrl_set_dskled()
3029 * knows that a 1 is a TRUE state or fault. ;-) in envctrl_set_dskled()
3031 chip->val = ~(chip->val); in envctrl_set_dskled()
3040 ASSERT(MUTEX_HELD(&unitp->umutex)); in envctrl_add_kstats()
3042 if ((unitp->enclksp = kstat_create(ENVCTRL_MODULE_NAME, unitp->instance, in envctrl_add_kstats()
3044 sizeof (unitp->encl_kstats), in envctrl_add_kstats()
3047 unitp->instance); in envctrl_add_kstats()
3051 unitp->enclksp->ks_update = envctrl_encl_kstat_update; in envctrl_add_kstats()
3052 unitp->enclksp->ks_private = (void *)unitp; in envctrl_add_kstats()
3053 kstat_install(unitp->enclksp); in envctrl_add_kstats()
3056 if ((unitp->fanksp = kstat_create(ENVCTRL_MODULE_NAME, unitp->instance, in envctrl_add_kstats()
3058 sizeof (unitp->fan_kstats), in envctrl_add_kstats()
3061 unitp->instance); in envctrl_add_kstats()
3065 unitp->fanksp->ks_update = envctrl_fanstat_kstat_update; in envctrl_add_kstats()
3066 unitp->fanksp->ks_private = (void *)unitp; in envctrl_add_kstats()
3067 kstat_install(unitp->fanksp); in envctrl_add_kstats()
3069 if ((unitp->psksp = kstat_create(ENVCTRL_MODULE_NAME, unitp->instance, in envctrl_add_kstats()
3071 sizeof (unitp->ps_kstats), in envctrl_add_kstats()
3074 unitp->instance); in envctrl_add_kstats()
3078 unitp->psksp->ks_update = envctrl_ps_kstat_update; in envctrl_add_kstats()
3079 unitp->psksp->ks_private = (void *)unitp; in envctrl_add_kstats()
3080 kstat_install(unitp->psksp); in envctrl_add_kstats()
3092 unitp = (struct envctrlunit *)ksp->ks_private; in envctrl_ps_kstat_update()
3094 mutex_enter(&unitp->umutex); in envctrl_ps_kstat_update()
3095 ASSERT(MUTEX_HELD(&unitp->umutex)); in envctrl_ps_kstat_update()
3097 kstatp = (char *)ksp->ks_data; in envctrl_ps_kstat_update()
3103 unitp->psksp->ks_ndata = unitp->num_ps_present; in envctrl_ps_kstat_update()
3104 bcopy(&unitp->ps_kstats, kstatp, sizeof (unitp->ps_kstats)); in envctrl_ps_kstat_update()
3106 mutex_exit(&unitp->umutex); in envctrl_ps_kstat_update()
3115 kstatp = (char *)ksp->ks_data; in envctrl_fanstat_kstat_update()
3116 unitp = (struct envctrlunit *)ksp->ks_private; in envctrl_fanstat_kstat_update()
3118 mutex_enter(&unitp->umutex); in envctrl_fanstat_kstat_update()
3119 ASSERT(MUTEX_HELD(&unitp->umutex)); in envctrl_fanstat_kstat_update()
3124 unitp->fanksp->ks_ndata = unitp->num_fans_present; in envctrl_fanstat_kstat_update()
3125 bcopy(unitp->fan_kstats, kstatp, sizeof (unitp->fan_kstats)); in envctrl_fanstat_kstat_update()
3127 mutex_exit(&unitp->umutex); in envctrl_fanstat_kstat_update()
3138 kstatp = (char *)ksp->ks_data; in envctrl_encl_kstat_update()
3139 unitp = (struct envctrlunit *)ksp->ks_private; in envctrl_encl_kstat_update()
3141 mutex_enter(&unitp->umutex); in envctrl_encl_kstat_update()
3142 ASSERT(MUTEX_HELD(&unitp->umutex)); in envctrl_encl_kstat_update()
3148 unitp->enclksp->ks_ndata = unitp->num_encl_present; in envctrl_encl_kstat_update()
3151 bcopy(unitp->encl_kstats, kstatp, sizeof (unitp->encl_kstats)); in envctrl_encl_kstat_update()
3153 mutex_exit(&unitp->umutex); in envctrl_encl_kstat_update()
3166 ASSERT(MUTEX_HELD(&unitp->umutex)); in envctrl_init_fan_kstats()
3168 for (i = 0; i < unitp->num_fans_present; i++) { in envctrl_init_fan_kstats()
3169 unitp->fan_kstats[i].instance = 0; in envctrl_init_fan_kstats()
3170 unitp->fan_kstats[i].type = 0; in envctrl_init_fan_kstats()
3171 unitp->fan_kstats[i].fans_ok = B_TRUE; in envctrl_init_fan_kstats()
3172 unitp->fan_kstats[i].fanflt_num = B_FALSE; in envctrl_init_fan_kstats()
3173 unitp->fan_kstats[i].fanspeed = B_FALSE; in envctrl_init_fan_kstats()
3176 unitp->fan_kstats[ENVCTRL_FAN_TYPE_PS].type = ENVCTRL_FAN_TYPE_PS; in envctrl_init_fan_kstats()
3177 unitp->fan_kstats[ENVCTRL_FAN_TYPE_CPU].type = ENVCTRL_FAN_TYPE_CPU; in envctrl_init_fan_kstats()
3178 if (unitp->AFB_present == B_TRUE) in envctrl_init_fan_kstats()
3179 unitp->fan_kstats[ENVCTRL_FAN_TYPE_AFB].type = in envctrl_init_fan_kstats()
3193 ASSERT(MUTEX_HELD(&unitp->umutex)); in envctrl_init_encl_kstats()
3196 unitp->encl_kstats[i].instance = I2C_NODEV; in envctrl_init_encl_kstats()
3221 if (ddi_prop_lookup_int_array(DDI_DEV_T_ANY, unitp->dip, in envctrl_init_encl_kstats()
3259 ASSERT(MUTEX_HELD(&unitp->umutex)); in envctrl_mod_encl_kstats()
3262 if (unitp->encl_kstats[i].instance == instance && in envctrl_mod_encl_kstats()
3263 unitp->encl_kstats[i].type == type) { in envctrl_mod_encl_kstats()
3264 unitp->encl_kstats[i].value = val; in envctrl_mod_encl_kstats()
3281 * we need to check the "upa-portid" property. in envctrl_probe_cpus()
3290 unitp->cpu_pr_location[instance] = B_FALSE; in envctrl_probe_cpus()
3311 DDI_PROP_DONTPASS, "upa-portid", -1)) == -1) { in envctrl_match_cpu()
3312 cmn_err(CE_WARN, "envctrl no cpu upa-portid"); in envctrl_match_cpu()
3314 unitp->cpu_pr_location[cpu_slot] = B_TRUE; in envctrl_match_cpu()
3315 unitp->num_cpus_present++; in envctrl_match_cpu()
3343 if (unitp->num_fans_failed > 0 && thisled != 0) { in envctrl_isother_fault_led()
3360 mutex_enter(&unitp->umutex); in envctrl_pshotplug_poll()
3364 mutex_exit(&unitp->umutex); in envctrl_pshotplug_poll()
3388 ddi_get8(ehcp->ctlr_handle, &ehcp->bus_ctl_regs->s1); in eHc_start_pcf8584()
3408 ddi_put8(ehcp->ctlr_handle, &ehcp->bus_ctl_regs->s0, byteaddress); in eHc_start_pcf8584()
3411 ddi_put8(ehcp->ctlr_handle, &ehcp->bus_ctl_regs->s1, in eHc_start_pcf8584()
3419 ddi_get8(ehcp->ctlr_handle, &ehcp->bus_ctl_regs->s1); in eHc_start_pcf8584()
3446 * and discard the first byte off the bus - this in eHc_start_pcf8584()
3452 discard = ddi_get8(ehcp->ctlr_handle, &ehcp->bus_ctl_regs->s0); in eHc_start_pcf8584()
3460 poll_status = ddi_get8(ehcp->ctlr_handle, in eHc_start_pcf8584()
3461 &ehcp->bus_ctl_regs->s1); in eHc_start_pcf8584()
3492 ddi_put8(ehcp->ctlr_handle, &ehcp->bus_ctl_regs->s1, in eHc_stop_pcf8584()
3503 *data = ddi_get8(ehcp->ctlr_handle, &ehcp->bus_ctl_regs->s0); in eHc_read_pcf8584()
3509 ddi_get8(ehcp->ctlr_handle, &ehcp->bus_ctl_regs->s1); in eHc_read_pcf8584()
3543 ddi_put8(ehcp->ctlr_handle, &ehcp->bus_ctl_regs->s0, data); in eHc_write_pcf8584()
3549 ddi_get8(ehcp->ctlr_handle, &ehcp->bus_ctl_regs->s1); in eHc_write_pcf8584()
3584 ddi_put8(ehcp->ctlr_handle, &ehcp->bus_ctl_regs->s1, EHC_S1_ES0); in eHc_after_read_pcf8584()
3587 * Read the "byte-before-the-last-byte" - sets PIN bit to '1' in eHc_after_read_pcf8584()
3590 *data = ddi_get8(ehcp->ctlr_handle, &ehcp->bus_ctl_regs->s0); in eHc_after_read_pcf8584()
3596 ddi_get8(ehcp->ctlr_handle, &ehcp->bus_ctl_regs->s1); in eHc_after_read_pcf8584()
3624 discard = ddi_get8(ehcp->ctlr_handle, &ehcp->bus_ctl_regs->s0); in eHc_after_read_pcf8584()
3646 ASSERT(MUTEX_HELD(&ehcp->umutex)); in eHc_write_tda8444()
3697 ASSERT(MUTEX_HELD(&ehcp->umutex)); in eHc_read_pcf8574a()
3710 * Read the last byte - discard it. in eHc_read_pcf8574a()
3712 discard = ddi_get8(ehcp->ctlr_handle, in eHc_read_pcf8574a()
3713 &ehcp->bus_ctl_regs->s0); in eHc_read_pcf8574a()
3721 for (i = 0; i < size - 1; i++) { in eHc_read_pcf8574a()
3751 ASSERT(MUTEX_HELD(&ehcp->umutex)); in eHc_write_pcf8574a()
3767 * Send the data - poll as needed. in eHc_write_pcf8574a()
3778 * Transmission complete - generate stop condition and in eHc_write_pcf8574a()
3799 ASSERT(MUTEX_HELD(&ehcp->umutex)); in eHc_read_pcf8574()
3812 * Read the last byte - discard it. in eHc_read_pcf8574()
3814 discard = ddi_get8(ehcp->ctlr_handle, in eHc_read_pcf8574()
3815 &ehcp->bus_ctl_regs->s0); in eHc_read_pcf8574()
3823 for (i = 0; i < size - 1; i++) { in eHc_read_pcf8574()
3853 ASSERT(MUTEX_HELD(&ehcp->umutex)); in eHc_write_pcf8574()
3869 * Send the data - poll as needed. in eHc_write_pcf8574()
3879 * Transmission complete - generate stop condition and in eHc_write_pcf8574()
3900 ASSERT(MUTEX_HELD(&ehcp->umutex)); in eHc_read_lm75()
3913 * Read the last byte - discard it. in eHc_read_lm75()
3915 discard = ddi_get8(ehcp->ctlr_handle, in eHc_read_lm75()
3916 &ehcp->bus_ctl_regs->s0); in eHc_read_lm75()
3924 for (i = 0; i < size - 1; i++) { in eHc_read_lm75()
3953 ASSERT(MUTEX_HELD(&ehcp->umutex)); in eHc_write_pcf8583()
3966 * Send the data - poll as needed. in eHc_write_pcf8583()
3977 * Transmission complete - generate stop condition and in eHc_write_pcf8583()
4001 ASSERT(MUTEX_HELD(&ehcp->umutex)); in eHc_read_pcf8591()
4031 ddi_put8(ehcp->ctlr_handle, &ehcp->bus_ctl_regs->s1, in eHc_read_pcf8591()
4034 ddi_put8(ehcp->ctlr_handle, &ehcp->bus_ctl_regs->s0, in eHc_read_pcf8591()
4042 ddi_get8(ehcp->ctlr_handle, &ehcp->bus_ctl_regs->s1); in eHc_read_pcf8591()
4058 * Read the last byte - discard it. in eHc_read_pcf8591()
4060 discard = ddi_get8(ehcp->ctlr_handle, &ehcp->bus_ctl_regs->s0); in eHc_read_pcf8591()
4090 for (i = 0; i < size - 1; i++) { in eHc_read_pcf8591()