Re: [patch] USB after second suspend/resume on ThinkPads.

From: Edward Tomasz Napierała <trasz_at_freebsd.org>
Date: Wed, 18 Jun 2014 18:13:15 +0200
On 0618T0947, John Baldwin wrote:
> On Monday, June 16, 2014 3:21:55 pm Edward Tomasz Napierała wrote:
> > Hi.  Patch below should fix a problem where USB stops working after
> > _second_ suspend/resume, which happens on various ThinkPad models.
> > Please test, and report both success stories and failures.  If nothing
> > comes up, I'll commit it in a week or so.
> 
> Good find.  Have you thought about a more generic fix for this wherein you 
> track power resources and flip them on during resume in ACPI before doing
> DEVICE_RESUME() on the root bus?

Thing is, after resume this device claims to be on already.  The following
simple hack was enough to make it work:

Index: sys/dev/acpica/acpi_powerres.c
===================================================================
--- sys/dev/acpica/acpi_powerres.c      (revision 267417)
+++ sys/dev/acpica/acpi_powerres.c      (working copy)
_at__at_ -653,7 +653,7 _at__at_ acpi_pwr_switch_power(void)
         * effort; we don't know what to do if it fails, so checking wouldn't
         * help much.
         */
-       if (rp->ap_state != ACPI_PWR_ON) {
+       if (rp->ap_state != ACPI_PWR_ON || 1) {
            status = AcpiEvaluateObject(rp->ap_resource, "_ON", NULL, NULL);
            if (ACPI_FAILURE(status)) {
                ACPI_DEBUG_PRINT((ACPI_DB_OBJECTS,
Received on Wed Jun 18 2014 - 14:13:20 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:50 UTC