[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