Re: Changes to power management in ehci-tegra |
|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
On Wed, 18 Apr 2012, Stephen Warren wrote:
> > How well does the existing driver work if you enable the
> > power_down_on_bus_suspend flag in the platform data?
>
> power_down_on_bus_suspend is always enabled for the Tegra EHCI controllers.
>
> The existing driver works fine (with or without USB_SUSPEND=y and
> PM_RUNTIME=y), although doesn't ever runtime-suspended, so I guess this
> is just hiding the problem:
>
> /sys/devices/tegra-ehci.2# cat {,usb3/}power/{control,runtime_status}
> auto
> unsupported
> auto
> active
>
> (I see the same with or without anything plugged in)
That's not meaningful in this situation. With the existing driver, the
controller will get powered down whenever the root hub suspends -- that
is, when tegra_ehci_bus_suspend() calls tegra_usb_suspend() which calls
tegra_ehci_power_down(). This should happen whenever no devices are
plugged in (assuming CONFIG_USB_SUSPEND is enabled). This mechanism
for powering down the controller doesn't use runtime PM, but it will
operate anyway.
The questions are: If you unplug everything under the existing driver,
what does usb3/power/runtime_status show? When you plug in a new
device, is it detected (presumably it is)? And finally, how does the
controller detect the new device while it is powered down?
> By the way, how broken is the current tegra_ehci_hub_control()? I see
> that it mostly duplicates ehci_hub_control() for a few cases, but has
> diverged a little since, e.g. the set_bit()/clear_bit() calls are using
> "wIndex - 1" instead of "wIndex" etc.
That's just a minor optimization. ehci_hub_control() decrements wIndex
near the start of certain cases, to avoid all those "- 1" things later
on.
I haven't tried to do a detailed check of all the code in
tegra_ehci_hub_control().
> Also, I wonder if the logic in the
> ClearPortFeature/USB_PORT_FEAT_ENABLE case might be worth moving into
> ehci-hub.c, if it's generally applicable? I did try removing that
> function and making the driver use ehci_hub_control() instead, but that
> didn't solve the resume issue.
Yes, that does look like a bug in ehci_hub_control(). Feel free to
submit a patch moving the Tegra code over.
Alan Stern
--
To unsubscribe from this list: send the line "unsubscribe linux-tegra" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
[ARM Kernel]
[Linux USB Devel]
[Video for Linux]
[Linux Audio Users]
[Photo]
[Yosemite News]
[Yosemite Photos]
[Free Online Dating]
[Linux Kernel]
[Linux SCSI]
[XFree86]