Currently, there's code in acpi.c that sends the system back to sleep
when resuming with closed lid and machdep.lidsuspend=1. I often use my
laptop in a docking station with an external monitor and keep the lid
closed, and I'd like to be able to resume just by pushing the power
button on the docking station. (Also, I first thought something was
broken when pushing the button only made the suspend-indicator light
blink for a moment.)

If checking for open lids is necessary in some cases, then I can
certainly live with lidsuspend=0, but otherwise I'd prefer if it was
possible to resume with a closed lid. I removed the check and didn't
notice any problems. The diff below removes the check and also the
function acpibtn_numopenlids which is not used anywhere else.



Index: sys/dev/acpi/acpi.c
===================================================================
RCS file: /cvs/src/sys/dev/acpi/acpi.c,v
retrieving revision 1.281
diff -u -p -r1.281 acpi.c
--- sys/dev/acpi/acpi.c 17 Jan 2015 04:18:49 -0000      1.281
+++ sys/dev/acpi/acpi.c 29 Jan 2015 22:53:42 -0000
@@ -2161,7 +2161,6 @@ int
 acpi_sleep_state(struct acpi_softc *sc, int state)
 {
        extern int perflevel;
-       extern int lid_suspend;
        int error = ENXIO;
        int s;
 
@@ -2305,10 +2304,6 @@ fail_alloc:
 
        acpi_record_event(sc, APM_NORMAL_RESUME);
        acpi_indicator(sc, ACPI_SST_WORKING);
-
-       /* If we woke up but all the lids are closed, go back to sleep */
-       if (acpibtn_numopenlids() == 0 && lid_suspend != 0)
-               acpi_addtask(sc, acpi_sleep_task, sc, state);
 
 fail_tts:
        return (error);
Index: sys/dev/acpi/acpibtn.c
===================================================================
RCS file: /cvs/src/sys/dev/acpi/acpibtn.c,v
retrieving revision 1.41
diff -u -p -r1.41 acpibtn.c
--- sys/dev/acpi/acpibtn.c      27 Jan 2015 19:40:14 -0000      1.41
+++ sys/dev/acpi/acpibtn.c      29 Jan 2015 22:53:42 -0000
@@ -74,37 +74,6 @@ struct cfdriver acpibtn_cd = {
 
 const char *acpibtn_hids[] = { ACPI_DEV_LD, ACPI_DEV_PBD, ACPI_DEV_SBD, 0 };
 
-/*
- * acpibtn_numopenlids
- *
- * Return the number of _LID devices that are in the "open" state.
- * Used to determine if we should go back to sleep/hibernate if we
- * woke up with the all the lids still closed for some reason. If
- * the machine has no lids, returns -1.
- */
-int
-acpibtn_numopenlids(void)
-{
-       struct acpi_lid *lid;
-       int64_t val;
-       int ct = 0;
-
-       /* If we have no lids ... */
-       if (SLIST_EMPTY(&acpibtn_lids))
-               return (-1);
-
-       /*
-        * Determine how many lids are open. Assumes _LID evals to
-        * non-0 or 0, for on / off (which is what the spec says).
-        */
-       SLIST_FOREACH(lid, &acpibtn_lids, abl_link)
-               if (!aml_evalinteger(lid->abl_softc->sc_acpi,
-                   lid->abl_softc->sc_devnode, "_LID", 0, NULL, &val) &&
-                   val != 0)
-                       ct++;
-       return (ct);
-}
-
 int
 acpibtn_setpsw(struct acpibtn_softc *sc, int psw)
 {
Index: sys/dev/acpi/acpidev.h
===================================================================
RCS file: /cvs/src/sys/dev/acpi/acpidev.h,v
retrieving revision 1.36
diff -u -p -r1.36 acpidev.h
--- sys/dev/acpi/acpidev.h      23 Nov 2014 20:33:47 -0000      1.36
+++ sys/dev/acpi/acpidev.h      29 Jan 2015 22:53:42 -0000
@@ -337,5 +337,4 @@ struct acpiec_softc {
 
 void           acpibtn_disable_psw(void);
 void           acpibtn_enable_psw(void);
-int            acpibtn_numopenlids(void);
 #endif /* __DEV_ACPI_ACPIDEV_H__ */

Reply via email to