acpidock(4) updates its sensor's value when docking and undocking, but it
never sets its sensor's status. As a result, it's difficult to hook into
docking/undocking changes with sensorsd(8) (to change the value of
machdep.lidsuspend, for example).
This diff sets the status to SENSOR_S_OK when docked and SENSOR_S_UNKNOWN
when undocked.
Ok?
Index: sys/dev/acpi/acpidock.c
===================================================================
RCS file: /work/cvsroot/src/sys/dev/acpi/acpidock.c,v
retrieving revision 1.42
diff -p -u -r1.42 acpidock.c
--- sys/dev/acpi/acpidock.c 27 Jul 2010 01:21:19 -0000 1.42
+++ sys/dev/acpi/acpidock.c 20 Aug 2014 22:56:25 -0000
@@ -103,6 +103,7 @@ acpidock_attach(struct device *parent, s
sc->sc_sens.type = SENSOR_INDICATOR;
sc->sc_sens.value = sc->sc_docked == ACPIDOCK_STATUS_DOCKED;
+ sc->sc_sens.status = sc->sc_docked ? SENSOR_S_OK : SENSOR_S_UNKNOWN;
sensor_attach(&sc->sc_sensdev, &sc->sc_sens);
sensordev_install(&sc->sc_sensdev);
@@ -241,6 +242,7 @@ acpidock_notify(struct aml_node *node, i
acpidock_status(sc);
sc->sc_sens.value = sc->sc_docked == ACPIDOCK_STATUS_DOCKED;
+ sc->sc_sens.status = sc->sc_docked ? SENSOR_S_OK : SENSOR_S_UNKNOWN;
if (sc->sc_docked)
strlcpy(sc->sc_sens.desc, "docked",
sizeof(sc->sc_sens.desc));