Hello Mike and Max, my work laptop is running Windows and on there one must press power button to wake up the machine. If I connect the dots right, current behaviour was implemented to prevent a "hot bag" problem. Mimicking the Windows behaviour would also prevent laptop wake ups on a bumpy road.
Would it make any sense to mimic this behaviour in obsd? -- Kind regards, Ville On 30 January 2015 at 05:27, Mike Larkin <mlar...@azathoth.net> wrote: > On Fri, Jan 30, 2015 at 12:42:04AM +0100, Max Fillinger wrote: > > 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. > > > > This was put in for a reason. I would suggest you go read the commit > logs and understand why, before proposing reverting functionality > you obviously have not researched. > > -ml > > > > > > > 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__ */ > > > >