[U-Boot] [PATCH] usb: ehci-mx6: Fix bus enumeration for DM case

Lukasz Majewski lukma at denx.de
Mon Jun 24 11:57:49 UTC 2019


Hi Marek,

> On 6/24/19 12:26 PM, Lukasz Majewski wrote:
> > On Mon, 24 Jun 2019 12:06:28 +0200
> > Marek Vasut <marex at denx.de> wrote:
> >   
> >> On 6/24/19 8:33 AM, Peng Fan wrote:  
> >>> Hi Marek,
> >>>     
> >>>> Subject: Re: [PATCH] usb: ehci-mx6: Fix bus enumeration for DM
> >>>> case
> >>>>
> >>>> On 6/21/19 3:45 AM, Peng Fan wrote:    
> >>>>> Hi Marek,
> >>>>>    
> >>>>>> -----Original Message-----
> >>>>>> From: Marek Vasut [mailto:marex at denx.de]
> >>>>>> Sent: 2019年6月21日 4:54
> >>>>>> To: u-boot at lists.denx.de
> >>>>>> Cc: Marek Vasut <marex at denx.de>; Abel Vesa
> >>>>>> <abel.vesa at nxp.com>;    
> >>>> Adam    
> >>>>>> Ford <aford173 at gmail.com>; Fabio Estevam
> >>>>>> <festevam at gmail.com>;    
> >>>> Ludwig    
> >>>>>> Zenz <lzenz at dh-electronics.com>; Peng Fan
> >>>>>> <peng.fan at nxp.com>;    
> >>>> Stefano    
> >>>>>> Babic <sbabic at denx.de>; Vagrant Cascadian <vagrant at debian.org>
> >>>>>> Subject: [PATCH] usb: ehci-mx6: Fix bus enumeration for DM case
> >>>>>>
> >>>>>> It is likely that the DM conversion of EHCI iMX6 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 iMX6 driver as well.    
> >>>>>>
> >>>>>> Signed-off-by: Marek Vasut <marex at denx.de>
> >>>>>> Cc: Abel Vesa <abel.vesa at nxp.com>
> >>>>>> Cc: Adam Ford <aford173 at gmail.com>
> >>>>>> Cc: Fabio Estevam <festevam at gmail.com>
> >>>>>> Cc: Ludwig Zenz <lzenz at dh-electronics.com>
> >>>>>> Cc: Peng Fan <peng.fan at nxp.com>
> >>>>>> Cc: Stefano Babic <sbabic at denx.de>
> >>>>>> Cc: Vagrant Cascadian <vagrant at debian.org>
> >>>>>> ---
> >>>>>>  drivers/usb/host/ehci-mx6.c | 17 +++++++++++++++++
> >>>>>>  1 file changed, 17 insertions(+)
> >>>>>>
> >>>>>> diff --git a/drivers/usb/host/ehci-mx6.c
> >>>>>> b/drivers/usb/host/ehci-mx6.c index 33abfeada0..109ed7ed4a
> >>>>>> 100644 --- a/drivers/usb/host/ehci-mx6.c
> >>>>>> +++ b/drivers/usb/host/ehci-mx6.c
> >>>>>> @@ -503,6 +503,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;    
> >>>>>
> >>>>> With alias in dts, no need this, right?    
> >>>>
> >>>> There are no aliases in the DTs for the USB controllers, so that
> >>>> doesn't help. I think for DM, the real solution would be to parse
> >>>> the PHY phandle and pass around the PHY address instead of some
> >>>> arbitrary index, but that's something to be done for next
> >>>> release. For this release, it's only fixes.    
> >>>
> >>> I think the better method is use alias in dts, introducing
> >>> xx-u-boot.dtsi for such case.    
> >>
> >> What good would that make if you can obtain the PHY address from
> >> the DT, without the need for arbitrary error-prone indexes? The
> >> indexes are remnants from when there was no DM or from the DM
> >> conversion, so we should remove them altogether.
> >>  
> >>>> Would you be interested in implementing the later for
> >>>> -next ? ;-)    
> >>>
> >>> In NXP vendor tree, we have ehci_usb_get_phy to parse phy from
> >>> dtb, I could find some time send that to community.    
> >> What about implementing a proper USB PHY driver, which binds to a
> >> DT entry, and then hooking it up to the EHCI MX6 ? IIRC the
> >> infrastructure for this is already in place and that would be the
> >> right (TM) solution.
> >>  
> > 
> > Sorry, but I'm a bit confused.
> > 
> > The patch that you introduced above, in the commit message, states
> > clearly that it is a hack.
> > 
> > Why shall we allow introducing hacks instead of implementing it in
> > the "right way" from the outset ?  
> 
> Because we're in RC4 right now and this is the simplest possible fix
> which works and is consistent with the other NXP EHCI drivers.
> See the
> commit message -- this fills in the missing bit which ehci-vf has, but
> which was omitted from ehci-mx6 and ehci-mx5 during the conversion.
> 

Apparently I was not causing the error which you have encountered.

> The PHY driver and the migration to that infrastructure can be done in
> the next cycle, but right now there's no time to develop a driver and
> thoroughly test either the PHY driver or the changes to the EHCI
> driver, no way.
> 
> > As you mentioned the infrastructure is already in place, so why not
> > do it in the correct way?
> > 
> > And yes, as Peng noted up, till now many boards use aliases to fix
> > this situation.  
> 
> Right, so this does not work with the USB stack, but feel free to try
> it yourself. That's why the ehci-vf has this hack in place.

That is why I'm asking as I do use usb on imx53 and imx6q boards. The
imx53 uses usbh1 which has alias to usb1.

> 
> And I am in fact fine with this, because you don't end up patching DTs
> with arbitrary aliases

This patch causes regression (the board hang) when tested on TPC70
i.MX6Q board.

master branch
SHA1:  77f6e2dd0551d8a825bab391a1bd6b838874bcd4

Log from u-boot (broken):

Booting update from usb ...  
starting USB...      
Bus usb at 2184200:


Working one:

=> usb start
starting USB...
Bus usb at 2184200: USB EHCI 1.00
scanning bus usb at 2184200 for devices... 2 USB Device(s) found
       scanning usb for storage devices... 1 Storage Device(s) found


> AND because this will code go away once the PHY
> driver is in place anyway and so would the aliases.
> 

For now it causes working board to hang. Please fix the patch.


Best regards,

Lukasz Majewski

--

DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma at denx.de
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20190624/aca65b21/attachment.sig>


More information about the U-Boot mailing list