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));

Reply via email to