Lines Matching refs:unitp
274 register struct envctrlunit *unitp; in envctrl_attach() local
294 if (!(unitp = ddi_get_soft_state(envctrlsoft_statep, instance))) in envctrl_attach()
296 mutex_enter(&unitp->umutex); in envctrl_attach()
297 if (!unitp->suspended) { in envctrl_attach()
298 mutex_exit(&unitp->umutex); in envctrl_attach()
301 unitp->suspended = 0; in envctrl_attach()
302 unitp->initting = B_TRUE; in envctrl_attach()
303 envctrl_init_bus(unitp); in envctrl_attach()
304 unitp->initting = B_FALSE; in envctrl_attach()
306 envctrl_ps_probe(unitp); in envctrl_attach()
307 envctrl_probe_cpus(unitp); in envctrl_attach()
308 mutex_exit(&unitp->umutex); in envctrl_attach()
335 unitp = ddi_get_soft_state(envctrlsoft_statep, instance); in envctrl_attach()
337 if (ddi_regs_map_setup(dip, 0, (caddr_t *)&unitp->bus_ctl_regs, 0, in envctrl_attach()
339 &unitp->ctlr_handle) != DDI_SUCCESS) { in envctrl_attach()
359 &unitp->ic_trap_cookie) != DDI_SUCCESS) { in envctrl_attach()
365 mutex_init(&unitp->umutex, NULL, MUTEX_DRIVER, in envctrl_attach()
366 (void *)unitp->ic_trap_cookie); in envctrl_attach()
369 if (ddi_add_intr(dip, 0, &unitp->ic_trap_cookie, NULL, envctrl_bus_isr, in envctrl_attach()
370 (caddr_t)unitp) != DDI_SUCCESS) { in envctrl_attach()
377 if (ddi_add_intr(dip, 1, &unitp->ic_trap_cookie, NULL, envctrl_dev_isr, in envctrl_attach()
378 (caddr_t)unitp) != DDI_SUCCESS) { in envctrl_attach()
393 mutex_enter(&unitp->umutex); in envctrl_attach()
399 unitp->activity_led_blink = B_TRUE; in envctrl_attach()
400 unitp->shutdown = B_FALSE; in envctrl_attach()
401 unitp->num_ps_present = 0; in envctrl_attach()
402 unitp->num_encl_present = 1; in envctrl_attach()
403 unitp->current_mode = ENVCTRL_NORMAL_MODE; in envctrl_attach()
405 unitp->num_cpus_present = envctrl_numcpus; in envctrl_attach()
407 envctrl_probe_cpus(unitp); in envctrl_attach()
408 if ((unitp->cpu_pr_location[ENVCTRL_CPU0] == B_FALSE) || in envctrl_attach()
409 (unitp->cpu_pr_location[ENVCTRL_CPU1] == B_FALSE)) in envctrl_attach()
411 unitp->num_temps_present = 5; in envctrl_attach()
413 unitp->num_temps_present = 6; in envctrl_attach()
414 unitp->num_fans_present = 1; in envctrl_attach()
415 unitp->dip = dip; in envctrl_attach()
417 mutex_exit(&unitp->umutex); in envctrl_attach()
463 mutex_enter(&unitp->umutex); in envctrl_attach()
468 unitp->temp_kstats[k].type = sensor_types[i]; in envctrl_attach()
478 unitp->temp_kstats[k].min = in envctrl_attach()
483 unitp->temp_kstats[k].warning_threshold = in envctrl_attach()
488 unitp->temp_kstats[k].shutdown_threshold = in envctrl_attach()
500 bcopy((caddr_t)&creg_prop[j], unitp->temp_kstats[k].label, in envctrl_attach()
506 (unitp->cpu_pr_location[ENVCTRL_CPU0] == in envctrl_attach()
509 (unitp->cpu_pr_location[ENVCTRL_CPU1] == B_FALSE))) in envctrl_attach()
526 unitp->initting = B_TRUE; in envctrl_attach()
527 envctrl_init_bus(unitp); in envctrl_attach()
529 unitp->initting = B_FALSE; in envctrl_attach()
532 unitp->timeout_id = 0; in envctrl_attach()
533 unitp->blink_timeout_id = 0; in envctrl_attach()
535 unitp->fan_failed = 0; in envctrl_attach()
536 unitp->fan_kstats.fans_ok = B_TRUE; in envctrl_attach()
537 unitp->tempr_warning = 0; in envctrl_attach()
539 envctrl_ps_probe(unitp); in envctrl_attach()
541 unitp->initting = B_TRUE; in envctrl_attach()
542 envctrl_fan_fail_service(unitp); in envctrl_attach()
543 unitp->initting = B_FALSE; in envctrl_attach()
549 status = envctrl_write_chip(unitp, ENVCTRL_PCF8591, EHC_DEV2, 0, in envctrl_attach()
558 envctrl_add_kstats(unitp); in envctrl_attach()
559 envctrl_init_encl_kstats(unitp); in envctrl_attach()
560 envctrl_check_disk_kstats(unitp); in envctrl_attach()
562 envctrl_update_fanspeed(unitp); in envctrl_attach()
563 idle_fanspeed = unitp->fan_kstats.fanspeed; in envctrl_attach()
565 if (unitp->activity_led_blink == B_TRUE) { in envctrl_attach()
566 unitp->present_led_state = B_FALSE; in envctrl_attach()
567 mutex_exit(&unitp->umutex); in envctrl_attach()
568 envctrl_led_blink((void *)unitp); in envctrl_attach()
569 mutex_enter(&unitp->umutex); in envctrl_attach()
572 (void) envctrl_set_fsp(unitp, &fspval); in envctrl_attach()
575 mutex_exit(&unitp->umutex); in envctrl_attach()
577 envctrl_tempr_poll((void *)unitp); in envctrl_attach()
591 ddi_remove_intr(dip, (uint_t)1, unitp->ic_trap_cookie); in envctrl_attach()
593 ddi_remove_intr(dip, (uint_t)0, unitp->ic_trap_cookie); in envctrl_attach()
596 mutex_destroy(&unitp->umutex); in envctrl_attach()
599 if (unitp->ctlr_handle) in envctrl_attach()
600 ddi_regs_map_free(&unitp->ctlr_handle); in envctrl_attach()
612 register struct envctrlunit *unitp; in envctrl_detach() local
615 unitp = ddi_get_soft_state(envctrlsoft_statep, instance); in envctrl_detach()
621 if (unitp->psksp != NULL) { in envctrl_detach()
622 kstat_delete(unitp->psksp); in envctrl_detach()
624 if (unitp->fanksp != NULL) { in envctrl_detach()
625 kstat_delete(unitp->fanksp); in envctrl_detach()
627 if (unitp->enclksp != NULL) { in envctrl_detach()
628 kstat_delete(unitp->enclksp); in envctrl_detach()
630 if (unitp->tempksp != NULL) { in envctrl_detach()
631 kstat_delete(unitp->tempksp); in envctrl_detach()
633 if (unitp->diskksp != NULL) { in envctrl_detach()
634 kstat_delete(unitp->diskksp); in envctrl_detach()
637 if (unitp->timeout_id != 0) { in envctrl_detach()
638 (void) untimeout(unitp->timeout_id); in envctrl_detach()
639 unitp->timeout_id = 0; in envctrl_detach()
641 if (unitp->blink_timeout_id != 0) { in envctrl_detach()
642 (void) untimeout(unitp->blink_timeout_id); in envctrl_detach()
643 unitp->blink_timeout_id = 0; in envctrl_detach()
648 ddi_remove_intr(dip, (uint_t)0, unitp->ic_trap_cookie); in envctrl_detach()
649 ddi_remove_intr(dip, (uint_t)1, unitp->ic_trap_cookie); in envctrl_detach()
651 ddi_regs_map_free(&unitp->ctlr_handle); in envctrl_detach()
653 mutex_destroy(&unitp->umutex); in envctrl_detach()
661 if (!(unitp = ddi_get_soft_state(envctrlsoft_statep, instance))) in envctrl_detach()
663 mutex_enter(&unitp->umutex); in envctrl_detach()
664 if (unitp->suspended) { in envctrl_detach()
667 mutex_exit(&unitp->umutex); in envctrl_detach()
670 unitp->suspended = 1; in envctrl_detach()
671 mutex_exit(&unitp->umutex); in envctrl_detach()
687 struct envctrlunit *unitp; in envctrl_getinfo() local
699 if ((unitp = (struct envctrlunit *) in envctrl_getinfo()
702 *result = unitp->dip; in envctrl_getinfo()
725 struct envctrlunit *unitp; in envctrl_open() local
732 unitp = (struct envctrlunit *) in envctrl_open()
735 if (unitp == NULL) in envctrl_open()
741 mutex_enter(&unitp->umutex); in envctrl_open()
744 if ((unitp->oflag & FWRITE)) { in envctrl_open()
745 mutex_exit(&unitp->umutex); in envctrl_open()
748 unitp->oflag |= FWRITE; in envctrl_open()
752 mutex_exit(&unitp->umutex); in envctrl_open()
760 struct envctrlunit *unitp; in envctrl_close() local
766 unitp = (struct envctrlunit *) in envctrl_close()
768 if (unitp == NULL) in envctrl_close()
771 mutex_enter(&unitp->umutex); in envctrl_close()
773 unitp->oflag = B_FALSE; in envctrl_close()
774 unitp->current_mode = ENVCTRL_NORMAL_MODE; in envctrl_close()
776 mutex_exit(&unitp->umutex); in envctrl_close()
788 struct envctrlunit *unitp; in envctrl_ioctl() local
801 unitp = (struct envctrlunit *) in envctrl_ioctl()
827 mutex_enter(&unitp->umutex); in envctrl_ioctl()
828 unitp->current_mode = wdval; in envctrl_ioctl()
829 if (unitp->timeout_id != 0 && in envctrl_ioctl()
831 (void) untimeout(unitp->timeout_id); in envctrl_ioctl()
832 unitp->timeout_id = in envctrl_ioctl()
834 (caddr_t)unitp, overtemp_timeout_hz)); in envctrl_ioctl()
841 status = envctrl_write_chip(unitp, in envctrl_ioctl()
848 driver_name, unitp->instance); in envctrl_ioctl()
855 (void) envctrl_check_sys_temperatures(unitp); in envctrl_ioctl()
856 unitp->current_mode = ENVCTRL_DIAG_MODE; in envctrl_ioctl()
857 envctrl_fan_fail_service(unitp); in envctrl_ioctl()
858 unitp->current_mode = ENVCTRL_NORMAL_MODE; in envctrl_ioctl()
860 mutex_exit(&unitp->umutex); in envctrl_ioctl()
866 wdval = unitp->current_mode; in envctrl_ioctl()
877 if (unitp->current_mode == ENVCTRL_DIAG_MODE) { in envctrl_ioctl()
878 if (unitp->timeout_id != 0) { in envctrl_ioctl()
879 (void) untimeout(unitp->timeout_id); in envctrl_ioctl()
880 unitp->timeout_id = 0; in envctrl_ioctl()
882 envctrl_tempr_poll((void *)unitp); in envctrl_ioctl()
901 mutex_enter(&unitp->umutex); in envctrl_ioctl()
902 status = envctrl_read_chip(unitp, ENVCTRL_PCF8591, in envctrl_ioctl()
904 mutex_exit(&unitp->umutex); in envctrl_ioctl()
908 driver_name, unitp->instance); in envctrl_ioctl()
925 if (unitp->current_mode == ENVCTRL_DIAG_MODE) { in envctrl_ioctl()
937 mutex_enter(&unitp->umutex); in envctrl_ioctl()
938 status = envctrl_set_fanspeed(unitp, &fanspeed); in envctrl_ioctl()
943 driver_name, unitp->instance); in envctrl_ioctl()
946 mutex_exit(&unitp->umutex); in envctrl_ioctl()
963 mutex_enter(&unitp->umutex); in envctrl_ioctl()
964 status = envctrl_read_chip(unitp, ENVCTRL_PCF8591, in envctrl_ioctl()
967 mutex_exit(&unitp->umutex); in envctrl_ioctl()
971 driver_name, unitp->instance); in envctrl_ioctl()
986 unitp->fan_kstats.fanspeed = a_fanspeed.val; in envctrl_ioctl()
1004 mutex_enter(&unitp->umutex); in envctrl_ioctl()
1012 if (unitp->current_mode == ENVCTRL_NORMAL_MODE) { in envctrl_ioctl()
1014 mutex_exit(&unitp->umutex); in envctrl_ioctl()
1021 status = envctrl_set_fsp(unitp, &wdval); in envctrl_ioctl()
1022 mutex_exit(&unitp->umutex); in envctrl_ioctl()
1026 driver_name, unitp->instance); in envctrl_ioctl()
1041 mutex_enter(&unitp->umutex); in envctrl_ioctl()
1042 status = envctrl_get_fpm_status(unitp, &wdval); in envctrl_ioctl()
1043 mutex_exit(&unitp->umutex); in envctrl_ioctl()
1047 driver_name, unitp->instance); in envctrl_ioctl()
1068 mutex_enter(&unitp->umutex); in envctrl_ioctl()
1069 if (envctrl_set_dskled(unitp, &ledchip)) { in envctrl_ioctl()
1072 mutex_exit(&unitp->umutex); in envctrl_ioctl()
1085 mutex_enter(&unitp->umutex); in envctrl_ioctl()
1086 if (envctrl_get_dskled(unitp, &ledchip)) { in envctrl_ioctl()
1094 mutex_exit(&unitp->umutex); in envctrl_ioctl()
1097 if (unitp->current_mode != ENVCTRL_DIAG_MODE) { in envctrl_ioctl()
1106 mutex_enter(&unitp->umutex); in envctrl_ioctl()
1107 status = envctrl_write_chip(unitp, temp.type, temp.chip_num, in envctrl_ioctl()
1112 driver_name, unitp->instance); in envctrl_ioctl()
1115 mutex_exit(&unitp->umutex); in envctrl_ioctl()
1123 mutex_enter(&unitp->umutex); in envctrl_ioctl()
1124 status = envctrl_read_chip(unitp, temp.type, temp.chip_num, in envctrl_ioctl()
1129 driver_name, unitp->instance); in envctrl_ioctl()
1132 mutex_exit(&unitp->umutex); in envctrl_ioctl()
1148 struct envctrlunit *unitp = (struct envctrlunit *)(void *)arg; in envctrl_bus_isr() local
1151 mutex_enter(&unitp->umutex); in envctrl_bus_isr()
1157 mutex_exit(&unitp->umutex); in envctrl_bus_isr()
1164 struct envctrlunit *unitp = (struct envctrlunit *)(void *)arg; in envctrl_dev_isr() local
1173 mutex_enter(&unitp->umutex); in envctrl_dev_isr()
1198 status = ehc_read_pcf8574a((struct ehc_envcunit *)unitp, in envctrl_dev_isr()
1207 status = ehc_read_pcf8574a((struct ehc_envcunit *)unitp, in envctrl_dev_isr()
1225 driver_name, unitp->instance); in envctrl_dev_isr()
1226 ehc_init_pcf8584((struct ehc_envcunit *)unitp); in envctrl_dev_isr()
1227 mutex_exit(&unitp->umutex); in envctrl_dev_isr()
1241 (void) envctrl_check_sys_temperatures(unitp); in envctrl_dev_isr()
1246 envctrl_intr_latch_clr(unitp); in envctrl_dev_isr()
1253 envctrl_check_disk_kstats(unitp); in envctrl_dev_isr()
1266 envctrl_fan_fail_service(unitp); in envctrl_dev_isr()
1271 envctrl_intr_latch_clr(unitp); in envctrl_dev_isr()
1278 (void) envctrl_get_fpm_status(unitp, (uint8_t *)NULL); in envctrl_dev_isr()
1284 envctrl_PS_intr_service(unitp); in envctrl_dev_isr()
1302 driver_name, unitp->instance); in envctrl_dev_isr()
1308 mutex_exit(&unitp->umutex); in envctrl_dev_isr()
1315 envctrl_read_chip(struct envctrlunit *unitp, int type, int chip_num, int port, in envctrl_read_chip() argument
1329 status = ehc_read_pcf8574a((struct ehc_envcunit *)unitp, in envctrl_read_chip()
1333 status = ehc_read_pcf8574((struct ehc_envcunit *)unitp, in envctrl_read_chip()
1337 status = ehc_read_pcf8591((struct ehc_envcunit *)unitp, in envctrl_read_chip()
1349 ehc_init_pcf8584((struct ehc_envcunit *)unitp); in envctrl_read_chip()
1359 envctrl_write_chip(struct envctrlunit *unitp, int type, int chip_num, int port, in envctrl_write_chip() argument
1379 (struct ehc_envcunit *)unitp, in envctrl_write_chip()
1383 status = ehc_write_pcf8574((struct ehc_envcunit *)unitp, in envctrl_write_chip()
1387 status = ehc_write_pcf8591((struct ehc_envcunit *)unitp, in envctrl_write_chip()
1400 ehc_init_pcf8584((struct ehc_envcunit *)unitp); in envctrl_write_chip()
1411 envctrl_get_cpu_temp(struct envctrlunit *unitp, int cpunum) in envctrl_get_cpu_temp() argument
1416 ASSERT(MUTEX_HELD(&unitp->umutex)); in envctrl_get_cpu_temp()
1426 status = envctrl_read_chip(unitp, ENVCTRL_PCF8591, EHC_DEV7, cpunum, in envctrl_get_cpu_temp()
1430 driver_name, unitp->instance); in envctrl_get_cpu_temp()
1442 struct envctrlunit *unitp = (struct envctrlunit *)arg; in envctrl_tempr_poll() local
1444 mutex_enter(&unitp->umutex); in envctrl_tempr_poll()
1446 if (unitp->shutdown == B_TRUE) { in envctrl_tempr_poll()
1453 envctrl_intr_latch_clr(unitp); in envctrl_tempr_poll()
1455 envctrl_reset_dflop(unitp); in envctrl_tempr_poll()
1456 envctrl_enable_devintrs(unitp); in envctrl_tempr_poll()
1462 if (unitp->current_mode == ENVCTRL_DIAG_MODE) { in envctrl_tempr_poll()
1467 driver_name, unitp->instance); in envctrl_tempr_poll()
1470 unitp->current_mode = ENVCTRL_NORMAL_MODE; in envctrl_tempr_poll()
1472 status = envctrl_check_sys_temperatures(unitp); in envctrl_tempr_poll()
1476 driver_name, unitp->instance); in envctrl_tempr_poll()
1480 envctrl_fan_fail_service(unitp); in envctrl_tempr_poll()
1484 envctrl_ps_probe(unitp); in envctrl_tempr_poll()
1487 if ((unitp->fan_failed == B_TRUE) || (unitp->tempr_warning == B_TRUE)) { in envctrl_tempr_poll()
1492 if (unitp->timeout_id != 0) in envctrl_tempr_poll()
1493 (void) untimeout(unitp->timeout_id); in envctrl_tempr_poll()
1494 unitp->timeout_id = (timeout(envctrl_tempr_poll, in envctrl_tempr_poll()
1495 (caddr_t)unitp, warning_timeout_hz)); in envctrl_tempr_poll()
1501 unitp->timeout_id = (timeout(envctrl_tempr_poll, in envctrl_tempr_poll()
1502 (caddr_t)unitp, overtemp_timeout_hz)); in envctrl_tempr_poll()
1505 mutex_exit(&unitp->umutex); in envctrl_tempr_poll()
1513 struct envctrlunit *unitp = (struct envctrlunit *)arg; in envctrl_led_blink() local
1515 mutex_enter(&unitp->umutex); in envctrl_led_blink()
1517 status = envctrl_read_chip(unitp, ENVCTRL_PCF8574A, EHC_DEV6, in envctrl_led_blink()
1521 driver_name, unitp->instance); in envctrl_led_blink()
1523 unitp->blink_timeout_id = (timeout(envctrl_led_blink, in envctrl_led_blink()
1524 (caddr_t)unitp, blink_timeout_hz)); in envctrl_led_blink()
1525 mutex_exit(&unitp->umutex); in envctrl_led_blink()
1529 if (unitp->present_led_state == B_TRUE) { in envctrl_led_blink()
1536 unitp->present_led_state = B_FALSE; in envctrl_led_blink()
1539 unitp->present_led_state = B_TRUE; in envctrl_led_blink()
1561 status = envctrl_write_chip(unitp, ENVCTRL_PCF8574A, EHC_DEV6, in envctrl_led_blink()
1565 driver_name, unitp->instance); in envctrl_led_blink()
1567 unitp->blink_timeout_id = (timeout(envctrl_led_blink, in envctrl_led_blink()
1568 (caddr_t)unitp, blink_timeout_hz)); in envctrl_led_blink()
1569 mutex_exit(&unitp->umutex); in envctrl_led_blink()
1574 unitp->blink_timeout_id = (timeout(envctrl_led_blink, in envctrl_led_blink()
1575 (caddr_t)unitp, blink_timeout_hz)); in envctrl_led_blink()
1577 mutex_exit(&unitp->umutex); in envctrl_led_blink()
1581 envctrl_check_sys_temperatures(struct envctrlunit *unitp) in envctrl_check_sys_temperatures() argument
1589 status = envctrl_read_chip(unitp, ENVCTRL_PCF8591, EHC_DEV2, in envctrl_check_sys_temperatures()
1593 driver_name, unitp->instance); in envctrl_check_sys_temperatures()
1597 warning_level = envctrl_check_tempr_levels(unitp, EHC_DEV2, in envctrl_check_sys_temperatures()
1608 unitp->tempr_warning = B_TRUE; in envctrl_check_sys_temperatures()
1610 unitp->tempr_warning = B_TRUE; in envctrl_check_sys_temperatures()
1612 unitp->shutdown = B_TRUE; in envctrl_check_sys_temperatures()
1618 status = envctrl_read_chip(unitp, ENVCTRL_PCF8591, EHC_DEV7, in envctrl_check_sys_temperatures()
1622 driver_name, unitp->instance); in envctrl_check_sys_temperatures()
1626 warning_level = envctrl_check_tempr_levels(unitp, EHC_DEV7, in envctrl_check_sys_temperatures()
1635 if ((warning_level == yellow) && (unitp->shutdown == B_FALSE)) in envctrl_check_sys_temperatures()
1636 unitp->tempr_warning = B_TRUE; in envctrl_check_sys_temperatures()
1638 unitp->tempr_warning = B_TRUE; in envctrl_check_sys_temperatures()
1640 unitp->shutdown = B_TRUE; in envctrl_check_sys_temperatures()
1642 } else if ((level == green) && (unitp->tempr_warning == B_TRUE)) { in envctrl_check_sys_temperatures()
1650 unitp->tempr_warning = B_FALSE; in envctrl_check_sys_temperatures()
1653 status = envctrl_get_fpm_status(unitp, &fspval); in envctrl_check_sys_temperatures()
1657 driver_name, unitp->instance); in envctrl_check_sys_temperatures()
1660 if ((unitp->tempr_warning == B_TRUE) || (unitp->shutdown == B_TRUE)) in envctrl_check_sys_temperatures()
1664 if (envctrl_isother_fault_led(unitp, fspval, in envctrl_check_sys_temperatures()
1672 status = envctrl_set_fsp(unitp, &fspval); in envctrl_check_sys_temperatures()
1676 driver_name, unitp->instance); in envctrl_check_sys_temperatures()
1682 if (unitp->tempr_warning == B_TRUE) { in envctrl_check_sys_temperatures()
1683 if (unitp->timeout_id != 0) { in envctrl_check_sys_temperatures()
1684 (void) untimeout(unitp->timeout_id); in envctrl_check_sys_temperatures()
1685 unitp->timeout_id = (timeout(envctrl_tempr_poll, in envctrl_check_sys_temperatures()
1686 (caddr_t)unitp, warning_timeout_hz)); in envctrl_check_sys_temperatures()
1694 envctrl_check_tempr_levels(struct envctrlunit *unitp, int chip_num, in envctrl_check_tempr_levels() argument
1711 unitp->fan_kstats.fanspeed = 255; in envctrl_check_tempr_levels()
1713 unitp->fan_kstats.fanspeed = tval; in envctrl_check_tempr_levels()
1715 unitp->fan_kstats.fanspeed, data[i]); in envctrl_check_tempr_levels()
1722 if (unitp->cpu_pr_location[i] == B_FALSE) in envctrl_check_tempr_levels()
1727 (j < unitp->num_temps_present)) in envctrl_check_tempr_levels()
1747 (unitp->current_mode == ENVCTRL_NORMAL_MODE)) { in envctrl_check_tempr_levels()
1757 status = envctrl_write_chip(unitp, ENVCTRL_PCF8591, in envctrl_check_tempr_levels()
1762 driver_name, unitp->instance); in envctrl_check_tempr_levels()
1763 status = envctrl_read_chip(unitp, ENVCTRL_PCF8591, in envctrl_check_tempr_levels()
1768 driver_name, unitp->instance); in envctrl_check_tempr_levels()
1772 unitp->fan_kstats.fanspeed = 255; in envctrl_check_tempr_levels()
1774 unitp->fan_kstats.fanspeed = tval; in envctrl_check_tempr_levels()
1778 temp_degree_c, data[i], unitp->temp_kstats[j].label); in envctrl_check_tempr_levels()
1780 unitp->temp_kstats[j].value = temp_degree_c; in envctrl_check_tempr_levels()
1782 unitp->temp_kstats[j].warning_threshold) || in envctrl_check_tempr_levels()
1783 (temp_degree_c < unitp->temp_kstats[j].min)) { in envctrl_check_tempr_levels()
1790 temp_degree_c, unitp->temp_kstats[j].label); in envctrl_check_tempr_levels()
1793 unitp->temp_kstats[j].shutdown_threshold) { in envctrl_check_tempr_levels()
1800 temp_degree_c, unitp->temp_kstats[j].label); in envctrl_check_tempr_levels()
1812 envctrl_update_fanspeed(struct envctrlunit *unitp) in envctrl_update_fanspeed() argument
1818 status = envctrl_read_chip(unitp, ENVCTRL_PCF8591, EHC_DEV2, in envctrl_update_fanspeed()
1822 driver_name, unitp->instance); in envctrl_update_fanspeed()
1828 unitp->fan_kstats.fanspeed = 255; in envctrl_update_fanspeed()
1830 unitp->fan_kstats.fanspeed = tval; in envctrl_update_fanspeed()
1835 envctrl_fan_fail_service(struct envctrlunit *unitp) in envctrl_fan_fail_service() argument
1846 ASSERT(MUTEX_HELD(&unitp->umutex)); in envctrl_fan_fail_service()
1851 envctrl_intr_latch_clr(unitp); in envctrl_fan_fail_service()
1854 status = ehc_read_pcf8574a((struct ehc_envcunit *)unitp, in envctrl_fan_fail_service()
1862 status = ehc_read_pcf8574a((struct ehc_envcunit *)unitp, in envctrl_fan_fail_service()
1874 driver_name, unitp->instance); in envctrl_fan_fail_service()
1875 ehc_init_pcf8584((struct ehc_envcunit *)unitp); in envctrl_fan_fail_service()
1883 if (unitp->fan_failed == B_TRUE) { in envctrl_fan_fail_service()
1884 if (unitp->current_mode == ENVCTRL_NORMAL_MODE) in envctrl_fan_fail_service()
1887 unitp->fan_kstats.fans_ok = B_TRUE; in envctrl_fan_fail_service()
1891 status = envctrl_get_fpm_status(unitp, &fpmstat); in envctrl_fan_fail_service()
1896 driver_name, unitp->instance); in envctrl_fan_fail_service()
1898 if (!(envctrl_isother_fault_led(unitp, fpmstat, 0))) { in envctrl_fan_fail_service()
1901 if (unitp->shutdown != B_TRUE) { in envctrl_fan_fail_service()
1902 status = envctrl_set_fsp(unitp, &fpmstat); in envctrl_fan_fail_service()
1907 driver_name, unitp->instance); in envctrl_fan_fail_service()
1914 unitp->fan_failed = B_FALSE; in envctrl_fan_fail_service()
1917 if (unitp->fan_failed == B_FALSE) { in envctrl_fan_fail_service()
1918 if (unitp->current_mode == ENVCTRL_NORMAL_MODE) in envctrl_fan_fail_service()
1921 unitp->fan_failed = B_TRUE; in envctrl_fan_fail_service()
1922 unitp->fan_kstats.fans_ok = B_FALSE; in envctrl_fan_fail_service()
1926 status = envctrl_get_fpm_status(unitp, &fpmstat); in envctrl_fan_fail_service()
1931 driver_name, unitp->instance); in envctrl_fan_fail_service()
1935 status = envctrl_set_fsp(unitp, &fpmstat); in envctrl_fan_fail_service()
1939 driver_name, unitp->instance); in envctrl_fan_fail_service()
1945 if (unitp->timeout_id != 0) { in envctrl_fan_fail_service()
1946 (void) untimeout(unitp->timeout_id); in envctrl_fan_fail_service()
1947 unitp->timeout_id = in envctrl_fan_fail_service()
1949 (caddr_t)unitp, warning_timeout_hz)); in envctrl_fan_fail_service()
1968 envctrl_PS_intr_service(struct envctrlunit *unitp) in envctrl_PS_intr_service() argument
1971 ASSERT(MUTEX_HELD(&unitp->umutex)); in envctrl_PS_intr_service()
1973 if (unitp->current_mode == ENVCTRL_DIAG_MODE) { in envctrl_PS_intr_service()
1983 unitp->pshotplug_id = (timeout(envctrl_pshotplug_poll, in envctrl_PS_intr_service()
1984 (caddr_t)unitp, pshotplug_timeout_hz)); in envctrl_PS_intr_service()
1989 envctrl_init_bus(struct envctrlunit *unitp) in envctrl_init_bus() argument
1991 ehc_init_pcf8584((struct ehc_envcunit *)unitp); in envctrl_init_bus()
1996 envctrl_intr_latch_clr(unitp); in envctrl_init_bus()
1998 envctrl_reset_dflop(unitp); in envctrl_init_bus()
2000 envctrl_enable_devintrs(unitp); in envctrl_init_bus()
2005 envctrl_reset_dflop(struct envctrlunit *unitp) in envctrl_reset_dflop() argument
2010 ASSERT(MUTEX_HELD(&unitp->umutex)); in envctrl_reset_dflop()
2013 status = envctrl_write_chip(unitp, ENVCTRL_PCF8574A, EHC_DEV0, in envctrl_reset_dflop()
2017 driver_name, unitp->instance); in envctrl_reset_dflop()
2021 status = envctrl_write_chip(unitp, ENVCTRL_PCF8574A, EHC_DEV0, in envctrl_reset_dflop()
2025 driver_name, unitp->instance); in envctrl_reset_dflop()
2031 envctrl_enable_devintrs(struct envctrlunit *unitp) in envctrl_enable_devintrs() argument
2036 ASSERT(MUTEX_HELD(&unitp->umutex)); in envctrl_enable_devintrs()
2039 status = envctrl_write_chip(unitp, ENVCTRL_PCF8574A, EHC_DEV0, in envctrl_enable_devintrs()
2043 driver_name, unitp->instance); in envctrl_enable_devintrs()
2047 status = envctrl_write_chip(unitp, ENVCTRL_PCF8574A, EHC_DEV0, in envctrl_enable_devintrs()
2051 driver_name, unitp->instance); in envctrl_enable_devintrs()
2056 envctrl_intr_latch_clr(struct envctrlunit *unitp) in envctrl_intr_latch_clr() argument
2061 ASSERT(MUTEX_HELD(&unitp->umutex)); in envctrl_intr_latch_clr()
2064 status = envctrl_write_chip(unitp, ENVCTRL_PCF8574A, EHC_DEV0, in envctrl_intr_latch_clr()
2068 driver_name, unitp->instance); in envctrl_intr_latch_clr()
2072 status = envctrl_write_chip(unitp, ENVCTRL_PCF8574A, EHC_DEV0, in envctrl_intr_latch_clr()
2076 driver_name, unitp->instance); in envctrl_intr_latch_clr()
2082 envctrl_ps_probe(struct envctrlunit *unitp) in envctrl_ps_probe() argument
2091 ASSERT(MUTEX_HELD(&unitp->umutex)); in envctrl_ps_probe()
2093 unitp->num_ps_present = 0; in envctrl_ps_probe()
2095 status = envctrl_read_chip(unitp, ENVCTRL_PCF8574A, EHC_DEV1, in envctrl_ps_probe()
2099 driver_name, unitp->instance); in envctrl_ps_probe()
2104 unitp->ps_kstats[i].slot = -1; in envctrl_ps_probe()
2136 unitp->ps_kstats[j].slot = i; in envctrl_ps_probe()
2137 ++unitp->num_ps_present; in envctrl_ps_probe()
2148 unitp->ps_kstats[j].ps_ok = B_FALSE; in envctrl_ps_probe()
2152 unitp->ps_kstats[j].ps_ok = B_TRUE; in envctrl_ps_probe()
2192 status = envctrl_get_fpm_status(unitp, &fpmstat); in envctrl_ps_probe()
2195 driver_name, unitp->instance); in envctrl_ps_probe()
2201 if (envctrl_isother_fault_led(unitp, fpmstat, in envctrl_ps_probe()
2209 status = envctrl_set_fsp(unitp, &fpmstat); in envctrl_ps_probe()
2213 driver_name, unitp->instance); in envctrl_ps_probe()
2229 struct envctrlunit *unitp; in envctrl_abort_seq_handler() local
2239 if (unitp = (struct envctrlunit *) in envctrl_abort_seq_handler()
2244 ASSERT(unitp); in envctrl_abort_seq_handler()
2246 secure = unitp->encl_kstats.value; in envctrl_abort_seq_handler()
2252 driver_name, unitp->instance); in envctrl_abort_seq_handler()
2256 driver_name, unitp->instance); in envctrl_abort_seq_handler()
2268 envctrl_get_fpm_status(struct envctrlunit *unitp, uint8_t *val) in envctrl_get_fpm_status() argument
2273 ASSERT(MUTEX_HELD(&unitp->umutex)); in envctrl_get_fpm_status()
2275 status = envctrl_read_chip(unitp, ENVCTRL_PCF8574A, EHC_DEV6, in envctrl_get_fpm_status()
2279 driver_name, unitp->instance); in envctrl_get_fpm_status()
2288 unitp->encl_kstats.value = recv_data; in envctrl_get_fpm_status()
2294 envctrl_set_fsp(struct envctrlunit *unitp, uint8_t *val) in envctrl_set_fsp() argument
2301 ASSERT(MUTEX_HELD(&unitp->umutex)); in envctrl_set_fsp()
2316 status = envctrl_write_chip(unitp, ENVCTRL_PCF8574A, EHC_DEV6, in envctrl_set_fsp()
2320 driver_name, unitp->instance); in envctrl_set_fsp()
2330 status = envctrl_get_fpm_status(unitp, &confirm_val); in envctrl_set_fsp()
2336 driver_name, unitp->instance); in envctrl_set_fsp()
2358 envctrl_get_dskled(struct envctrlunit *unitp, struct envctrl_chip *chip) in envctrl_get_dskled() argument
2362 ASSERT(MUTEX_HELD(&unitp->umutex)); in envctrl_get_dskled()
2369 status = envctrl_read_chip(unitp, ENVCTRL_PCF8574A, EHC_DEV7, in envctrl_get_dskled()
2373 driver_name, unitp->instance); in envctrl_get_dskled()
2381 envctrl_set_dskled(struct envctrlunit *unitp, struct envctrl_chip *chip) in envctrl_set_dskled() argument
2394 ASSERT(MUTEX_HELD(&unitp->umutex)); in envctrl_set_dskled()
2403 status = envctrl_read_chip(unitp, ENVCTRL_PCF8574A, EHC_DEV6, in envctrl_set_dskled()
2407 driver_name, unitp->instance); in envctrl_set_dskled()
2413 if (!(envctrl_isother_fault_led(unitp, val, in envctrl_set_dskled()
2427 status = envctrl_set_fsp(unitp, &val); in envctrl_set_dskled()
2430 driver_name, unitp->instance); in envctrl_set_dskled()
2435 status = envctrl_read_chip(unitp, ENVCTRL_PCF8574A, EHC_DEV5, in envctrl_set_dskled()
2439 driver_name, unitp->instance); in envctrl_set_dskled()
2443 envctrl_update_disk_kstats(unitp, val, ~(chip->val)); in envctrl_set_dskled()
2457 status = envctrl_write_chip(unitp, ENVCTRL_PCF8574A, EHC_DEV7, in envctrl_set_dskled()
2461 driver_name, unitp->instance); in envctrl_set_dskled()
2474 status = envctrl_get_dskled(unitp, &confirm_chip); in envctrl_set_dskled()
2502 envctrl_set_fanspeed(struct envctrlunit *unitp, struct envctrl_chip *fanspeed) in envctrl_set_fanspeed() argument
2511 status = envctrl_write_chip(unitp, ENVCTRL_PCF8591, in envctrl_set_fanspeed()
2514 envctrl_fan_fail_service(unitp); in envctrl_set_fanspeed()
2517 unitp->instance); in envctrl_set_fanspeed()
2521 envctrl_update_fanspeed(unitp); in envctrl_set_fanspeed()
2522 readback_speed = unitp->fan_kstats.fanspeed; in envctrl_set_fanspeed()
2547 envctrl_add_kstats(struct envctrlunit *unitp) in envctrl_add_kstats() argument
2550 ASSERT(MUTEX_HELD(&unitp->umutex)); in envctrl_add_kstats()
2552 if ((unitp->enclksp = kstat_create(ENVCTRL_MODULE_NAME, unitp->instance, in envctrl_add_kstats()
2554 sizeof (unitp->encl_kstats), in envctrl_add_kstats()
2557 driver_name, unitp->instance); in envctrl_add_kstats()
2561 unitp->enclksp->ks_update = envctrl_encl_kstat_update; in envctrl_add_kstats()
2562 unitp->enclksp->ks_private = (void *)unitp; in envctrl_add_kstats()
2563 kstat_install(unitp->enclksp); in envctrl_add_kstats()
2566 if ((unitp->fanksp = kstat_create(ENVCTRL_MODULE_NAME, unitp->instance, in envctrl_add_kstats()
2568 sizeof (unitp->fan_kstats), in envctrl_add_kstats()
2571 driver_name, unitp->instance); in envctrl_add_kstats()
2575 unitp->fanksp->ks_update = envctrl_fanstat_kstat_update; in envctrl_add_kstats()
2576 unitp->fanksp->ks_private = (void *)unitp; in envctrl_add_kstats()
2577 kstat_install(unitp->fanksp); in envctrl_add_kstats()
2579 if ((unitp->psksp = kstat_create(ENVCTRL_MODULE_NAME, unitp->instance, in envctrl_add_kstats()
2581 sizeof (unitp->ps_kstats), in envctrl_add_kstats()
2584 driver_name, unitp->instance); in envctrl_add_kstats()
2588 unitp->psksp->ks_update = envctrl_ps_kstat_update; in envctrl_add_kstats()
2589 unitp->psksp->ks_private = (void *)unitp; in envctrl_add_kstats()
2590 kstat_install(unitp->psksp); in envctrl_add_kstats()
2592 if ((unitp->tempksp = kstat_create(ENVCTRL_MODULE_NAME, in envctrl_add_kstats()
2593 unitp->instance, ENVCTRL_KSTAT_TEMPERATURE, "misc", KSTAT_TYPE_RAW, in envctrl_add_kstats()
2594 sizeof (unitp->temp_kstats), in envctrl_add_kstats()
2597 driver_name, unitp->instance); in envctrl_add_kstats()
2601 unitp->tempksp->ks_update = envctrl_temp_kstat_update; in envctrl_add_kstats()
2602 unitp->tempksp->ks_private = (void *)unitp; in envctrl_add_kstats()
2603 kstat_install(unitp->tempksp); in envctrl_add_kstats()
2605 if ((unitp->diskksp = kstat_create(ENVCTRL_MODULE_NAME, in envctrl_add_kstats()
2606 unitp->instance, ENVCTRL_KSTAT_DISK, "misc", KSTAT_TYPE_RAW, in envctrl_add_kstats()
2607 sizeof (unitp->disk_kstats), in envctrl_add_kstats()
2610 driver_name, unitp->instance); in envctrl_add_kstats()
2614 unitp->diskksp->ks_update = envctrl_disk_kstat_update; in envctrl_add_kstats()
2615 unitp->diskksp->ks_private = (void *)unitp; in envctrl_add_kstats()
2616 kstat_install(unitp->diskksp); in envctrl_add_kstats()
2623 struct envctrlunit *unitp; in envctrl_ps_kstat_update() local
2628 unitp = (struct envctrlunit *)ksp->ks_private; in envctrl_ps_kstat_update()
2630 mutex_enter(&unitp->umutex); in envctrl_ps_kstat_update()
2631 ASSERT(MUTEX_HELD(&unitp->umutex)); in envctrl_ps_kstat_update()
2636 mutex_exit(&unitp->umutex); in envctrl_ps_kstat_update()
2640 unitp->psksp->ks_ndata = unitp->num_ps_present; in envctrl_ps_kstat_update()
2641 bcopy((caddr_t)&unitp->ps_kstats, kstatp, in envctrl_ps_kstat_update()
2642 sizeof (unitp->ps_kstats)); in envctrl_ps_kstat_update()
2644 mutex_exit(&unitp->umutex); in envctrl_ps_kstat_update()
2651 struct envctrlunit *unitp; in envctrl_fanstat_kstat_update() local
2655 unitp = (struct envctrlunit *)ksp->ks_private; in envctrl_fanstat_kstat_update()
2657 mutex_enter(&unitp->umutex); in envctrl_fanstat_kstat_update()
2658 ASSERT(MUTEX_HELD(&unitp->umutex)); in envctrl_fanstat_kstat_update()
2661 mutex_exit(&unitp->umutex); in envctrl_fanstat_kstat_update()
2664 unitp->fanksp->ks_ndata = unitp->num_fans_present; in envctrl_fanstat_kstat_update()
2665 bcopy((caddr_t)&unitp->fan_kstats, kstatp, in envctrl_fanstat_kstat_update()
2666 sizeof (unitp->fan_kstats)); in envctrl_fanstat_kstat_update()
2668 mutex_exit(&unitp->umutex); in envctrl_fanstat_kstat_update()
2675 struct envctrlunit *unitp; in envctrl_encl_kstat_update() local
2681 unitp = (struct envctrlunit *)ksp->ks_private; in envctrl_encl_kstat_update()
2683 mutex_enter(&unitp->umutex); in envctrl_encl_kstat_update()
2684 ASSERT(MUTEX_HELD(&unitp->umutex)); in envctrl_encl_kstat_update()
2687 mutex_exit(&unitp->umutex); in envctrl_encl_kstat_update()
2691 unitp->enclksp->ks_ndata = unitp->num_encl_present; in envctrl_encl_kstat_update()
2692 status = envctrl_get_fpm_status(unitp, (uint8_t *)NULL); in envctrl_encl_kstat_update()
2694 bcopy((caddr_t)&unitp->encl_kstats, kstatp, in envctrl_encl_kstat_update()
2695 sizeof (unitp->encl_kstats)); in envctrl_encl_kstat_update()
2697 mutex_exit(&unitp->umutex); in envctrl_encl_kstat_update()
2704 struct envctrlunit *unitp; in envctrl_temp_kstat_update() local
2708 unitp = (struct envctrlunit *)ksp->ks_private; in envctrl_temp_kstat_update()
2710 mutex_enter(&unitp->umutex); in envctrl_temp_kstat_update()
2711 ASSERT(MUTEX_HELD(&unitp->umutex)); in envctrl_temp_kstat_update()
2714 mutex_exit(&unitp->umutex); in envctrl_temp_kstat_update()
2717 unitp->tempksp->ks_ndata = unitp->num_temps_present; in envctrl_temp_kstat_update()
2718 bcopy((caddr_t)unitp->temp_kstats, kstatp, in envctrl_temp_kstat_update()
2719 sizeof (unitp->temp_kstats)); in envctrl_temp_kstat_update()
2721 mutex_exit(&unitp->umutex); in envctrl_temp_kstat_update()
2728 struct envctrlunit *unitp; in envctrl_disk_kstat_update() local
2732 unitp = (struct envctrlunit *)ksp->ks_private; in envctrl_disk_kstat_update()
2734 mutex_enter(&unitp->umutex); in envctrl_disk_kstat_update()
2735 ASSERT(MUTEX_HELD(&unitp->umutex)); in envctrl_disk_kstat_update()
2738 mutex_exit(&unitp->umutex); in envctrl_disk_kstat_update()
2741 unitp->diskksp->ks_ndata = unitp->num_disks_present; in envctrl_disk_kstat_update()
2742 bcopy((caddr_t)unitp->disk_kstats, kstatp, in envctrl_disk_kstat_update()
2743 sizeof (unitp->disk_kstats)); in envctrl_disk_kstat_update()
2745 mutex_exit(&unitp->umutex); in envctrl_disk_kstat_update()
2750 envctrl_init_encl_kstats(struct envctrlunit *unitp) in envctrl_init_encl_kstats() argument
2755 ASSERT(MUTEX_HELD(&unitp->umutex)); in envctrl_init_encl_kstats()
2757 status = envctrl_read_chip(unitp, ENVCTRL_PCF8574A, EHC_DEV6, in envctrl_init_encl_kstats()
2761 driver_name, unitp->instance); in envctrl_init_encl_kstats()
2765 unitp->encl_kstats.value = val; in envctrl_init_encl_kstats()
2769 envctrl_check_disk_kstats(struct envctrlunit *unitp) in envctrl_check_disk_kstats() argument
2774 ASSERT(MUTEX_HELD(&unitp->umutex)); in envctrl_check_disk_kstats()
2776 status = envctrl_read_chip(unitp, ENVCTRL_PCF8574A, EHC_DEV5, in envctrl_check_disk_kstats()
2780 driver_name, unitp->instance); in envctrl_check_disk_kstats()
2783 status = envctrl_read_chip(unitp, ENVCTRL_PCF8574A, EHC_DEV7, in envctrl_check_disk_kstats()
2787 driver_name, unitp->instance); in envctrl_check_disk_kstats()
2790 envctrl_update_disk_kstats(unitp, diskpr, diskfl); in envctrl_check_disk_kstats()
2795 envctrl_update_disk_kstats(struct envctrlunit *unitp, uint8_t diskpr, in envctrl_update_disk_kstats() argument
2804 unitp->disk_kstats[count].disk_ok = 0; in envctrl_update_disk_kstats()
2806 unitp->disk_kstats[count].disk_ok = 1; in envctrl_update_disk_kstats()
2807 unitp->disk_kstats[count].slot = i; in envctrl_update_disk_kstats()
2812 unitp->num_disks_present = count; in envctrl_update_disk_kstats()
2816 envctrl_probe_cpus(struct envctrlunit *unitp) in envctrl_probe_cpus() argument
2834 unitp->cpu_pr_location[instance] = B_FALSE; in envctrl_probe_cpus()
2837 ddi_walk_devs(ddi_root_node(), envctrl_match_cpu, unitp); in envctrl_probe_cpus()
2847 struct envctrlunit *unitp = (struct envctrlunit *)arg; in envctrl_match_cpu() local
2858 driver_name, unitp->instance); in envctrl_match_cpu()
2860 unitp->cpu_pr_location[cpu_slot] = B_TRUE; in envctrl_match_cpu()
2861 unitp->num_cpus_present++; in envctrl_match_cpu()
2881 envctrl_isother_fault_led(struct envctrlunit *unitp, uint8_t fspval, in envctrl_isother_fault_led() argument
2889 if ((unitp->fan_failed == B_TRUE) && thisled != 0) { in envctrl_isother_fault_led()
2904 struct envctrlunit *unitp = (struct envctrlunit *)arg; in envctrl_pshotplug_poll() local
2906 mutex_enter(&unitp->umutex); in envctrl_pshotplug_poll()
2908 envctrl_ps_probe(unitp); in envctrl_pshotplug_poll()
2910 mutex_exit(&unitp->umutex); in envctrl_pshotplug_poll()