On 2/24/20 4:28 PM, Lukasz Majewski wrote:
> Hi Marek,

Hi,

>> On Thu, 20 Jun 2019 22:53:58 +0200
>> Marek Vasut <[email protected]> wrote:
>>
>>> It is likely that the DM conversion of EHCI iMX5 driver was a
>>> derivative of EHCI VF, however the conversion is incomplete and is
>>> missing the bind workaround, which updates dev->seq number. Without
>>> this, all controllers have dev->seq number 0 . Add this bind
>>> workaround into EHCI iMX5 driver as well.
>>>
>>> Signed-off-by: Marek Vasut <[email protected]>
>>> Cc: Abel Vesa <[email protected]>
>>> Cc: Adam Ford <[email protected]>
>>> Cc: Fabio Estevam <[email protected]>
>>> Cc: Ludwig Zenz <[email protected]>
>>> Cc: Peng Fan <[email protected]>
>>> Cc: Stefano Babic <[email protected]>
>>> Cc: Vagrant Cascadian <[email protected]>
>>> ---
>>>  drivers/usb/host/ehci-mx5.c | 17 +++++++++++++++++
>>>  1 file changed, 17 insertions(+)
>>>
>>> diff --git a/drivers/usb/host/ehci-mx5.c
>>> b/drivers/usb/host/ehci-mx5.c index 0b32728c57..4db513f4e5 100644
>>> --- a/drivers/usb/host/ehci-mx5.c
>>> +++ b/drivers/usb/host/ehci-mx5.c
>>> @@ -301,6 +301,22 @@ static int ehci_usb_ofdata_to_platdata(struct
>>> udevice *dev) return 0;
>>>  }
>>>  
>>> +static int ehci_usb_bind(struct udevice *dev)
>>> +{
>>> +   static int num_controllers;
>>> +
>>> +   /*
>>> +    * Without this hack, if we return ENODEV for USB
>>> Controller 0, on
>>> +    * probe for the next controller, USB Controller 1 will be
>>> given a
>>> +    * sequence number of 0. This conflicts with our
>>> requirement of
>>> +    * sequence numbers while initialising the peripherals.
>>> +    */
>>> +   dev->req_seq = num_controllers;
>>> +   num_controllers++;
>>> +
>>> +   return 0;
>>> +}
>>> +
>>>  static int ehci_usb_probe(struct udevice *dev)
>>>  {
>>>     struct usb_platdata *plat = dev_get_platdata(dev);
>>> @@ -362,6 +378,7 @@ U_BOOT_DRIVER(usb_mx5) = {
>>>     .id     = UCLASS_USB,
>>>     .of_match = mx5_usb_ids,
>>>     .ofdata_to_platdata = ehci_usb_ofdata_to_platdata,
>>> +   .bind   = ehci_usb_bind,
>>>     .probe  = ehci_usb_probe,
>>>     .remove = ehci_deregister,
>>>     .ops    = &ehci_usb_ops,  
>>
>> Tested-by: Lukasz Majewski <[email protected]>
>>
>> Tested on HSC|DDC i.MX53 board (usb start works as previously).
>>
> 
> Gentle ping on this patch :-)

I think this approach doesn't work, there was a discussion about this
under a patch like this for ehci-mx6.c . Take a look at the patches for
the ehci-mx6.c in mainline and replicate the approach, or even better,
solve the TODO there altogether.

[...]

Reply via email to