[patch] USB after second suspend/resume on ThinkPads.
John Baldwin
jhb at freebsd.org
Wed Jun 18 17:04:07 UTC 2014
On Wednesday, June 18, 2014 12:13:15 pm Edward Tomasz Napierała wrote:
> 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:
Ahh, I think I see. Try this instead:
Index: sys/dev/acpica/acpi_powerres.c
===================================================================
--- acpi_powerres.c (revision 267550)
+++ acpi_powerres.c (working copy)
@@ -645,7 +645,7 @@ acpi_pwr_switch_power(void)
acpi_name(rp->ap_resource), status));
/* XXX is this correct? Always switch if in doubt? */
continue;
- } else if (rp->ap_state == ACPI_PWR_UNK)
+ } else
rp->ap_state = cur;
/*
@@ -689,7 +689,7 @@ acpi_pwr_switch_power(void)
acpi_name(rp->ap_resource), status));
/* XXX is this correct? Always switch if in doubt? */
continue;
- } else if (rp->ap_state == ACPI_PWR_UNK)
+ } else
rp->ap_state = cur;
/*
(We were ignoring what _STA told us and believed it was ON because we had
cached that state previously.)
--
John Baldwin
More information about the freebsd-current
mailing list