summaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
authorJordan Hargrave <jordan@cvs.openbsd.org>2005-10-19 21:52:31 +0000
committerJordan Hargrave <jordan@cvs.openbsd.org>2005-10-19 21:52:31 +0000
commita78dceebc44b60d378e488776f4a2c296bbd17e0 (patch)
tree6234c031c9edf151424afbdada8120417db784b0 /sys/dev
parent7cc95b102041316892accf5739dc60268f4bb330 (diff)
Added code to properly read power supply installed/power state
ok marco@
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/ipmi.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/sys/dev/ipmi.c b/sys/dev/ipmi.c
index e0c6bb83f91..a55b1d6cf97 100644
--- a/sys/dev/ipmi.c
+++ b/sys/dev/ipmi.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ipmi.c,v 1.8 2005/10/19 21:43:09 jordan Exp $ */
+/* $OpenBSD: ipmi.c,v 1.9 2005/10/19 21:52:30 jordan Exp $ */
/*
* Copyright (c) 2005 Jordan Hargrave
@@ -1284,7 +1284,20 @@ ipmi_sensor_status(struct ipmi_softc *sc, struct ipmi_sensor *psensor,
break;
case 0x6F08: /* power supply */
- psensor->i_sensor.value = (reading[2] & 0xE) ? 0 : 1;
+ /* Reading: 1 = present+powered, 0 = otherwise */
+ psensor->i_sensor.value = (reading[2] & 1) ? 1 : 0;
+ if (reading[2] & 0x10) {
+ /* XXX: Need sysctl type for Power Supply types
+ * ok: power supply installed && powered
+ * warn: power supply installed && !powered
+ * crit: power supply !installed
+ */
+ return (SENSOR_S_CRIT);
+ }
+ if (reading[2] & 0x08) {
+ /* Power supply AC lost */
+ return (SENSOR_S_WARN);
+ }
break;
}