[PATCH 05/11] USB: OHCI: Properly handle ohci-ep93xx suspend
Hartley Sweeten
HartleyS at visionengravers.com
Mon Oct 14 16:42:28 EDT 2013
On Monday, October 14, 2013 1:35 PM, Alan Stern wrote:
> On Mon, 14 Oct 2013, Olof Johansson wrote:
>
>> Hi, Greg,
>>
>> [Adding ep93xx maintainers as well]
>>
>> On Wed, Oct 2, 2013 at 3:15 AM, Majunath Goudar <csmanjuvijay at gmail.com> wrote:
>>> From: Manjunath Goudar <manjunath.goudar at linaro.org>
>>>
>>> Suspend scenario in case of ohci-ep93xx glue was not
>>> properly handled as it was not suspending generic part
>>> of ohci controller. Alan Stern suggested, properly handle
>>> ohci-ep93xx suspend scenario.
>>>
>>> Calling explicitly the ohci_suspend() routine in
>>> ohci_hcd_ep93xx_drv_suspend() will ensure proper handling of
>>> suspend scenario.
>
>>> --- a/drivers/usb/host/ohci-ep93xx.c
>>> +++ b/drivers/usb/host/ohci-ep93xx.c
>>> @@ -112,13 +112,20 @@ static int ohci_hcd_ep93xx_drv_suspend(struct platform_device *pdev, pm_message_
>>> {
>>> struct usb_hcd *hcd = platform_get_drvdata(pdev);
>>> struct ohci_hcd *ohci = hcd_to_ohci(hcd);
>>> + bool do_wakeup = device_may_wakeup(&pdev->dev);
>>> + int ret;
>>>
>>> if (time_before(jiffies, ohci->next_statechange))
>>> msleep(5);
>>> ohci->next_statechange = jiffies;
>>>
>>> - clk_disable(usb_host_clock);
>>> - return 0;
>>> + ret = ohci_suspend(hcd, do_wakeup);
>>> + if (ret)
>>> + return ret;
>>> +
>>> + ep93xx_stop_hc(&pdev->dev);
>>> +
>>> + return ret;
>>> }
>>
>> This patch showed up in -next today (or maybe a while ago and I didn't
>> notice). It's causing a build failure on ep93xx:
>>
>> From http://arm-soc.lixom.net/buildlogs/next-thierry/v3.12-rc5-5366-gba2e8c2/buildall.arm.ep93xx_defconfig.log.failed:
>>
>> drivers/usb/host/ohci-ep93xx.c: In function 'ohci_hcd_ep93xx_drv_suspend':
>> drivers/usb/host/ohci-ep93xx.c:126:2: error: implicit declaration of
>> function 'ep93xx_stop_hc'
>>
>>
>> It's really confusing though, because Majunath has posted this patch
>> three times. The first time it had the ep93xx_stop_hc() call in there,
>> the second patch (labelled V2) did not, and the third(?) version,
>> without version label, also lacked it. No revision log in the patch,
>> and no comments on it.
>
> In fact he has posted it a lot more than 3 times, and the version
> numbers (or lack thereof) are definitely confusing.
>
> The reason for the build failure is that Manjanuth started work on this
> patch many months ago -- back in the spring. At that time the
> ep93xx_stop_hc() routine did exist.
>
> But commit af3f233fd27b (usb: ohci-ep93xx: tidy up driver (*probe) and
> (*remove)), dated July 1, removed it. Manjunath never updated his
> patch in response.
>
>> But it does seem like the wrong version was merged based on build results.
>
> No, it's a rebasing failure, not a wrong version.
Alan,
As an alternative to this patch, I have successfully used the ohci-platform
driver on the ep93xx. This does move a bit of glue code into the ep93xx
core (arch/arm/mach-ep93xx/core.c) but it removes the ohci-ep93xx glue
driver completely.
I can post a patch for this shortly if you would like.
Regards,
Hartley
More information about the linux-arm-kernel
mailing list