
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@denx.de] Sent: 2019年6月21日 4:54 To: u-boot@lists.denx.de Cc: Marek Vasut marex@denx.de; Abel Vesa abel.vesa@nxp.com;
Adam
Ford aford173@gmail.com; Fabio Estevam festevam@gmail.com;
Ludwig
Zenz lzenz@dh-electronics.com; Peng Fan peng.fan@nxp.com;
Stefano
Babic sbabic@denx.de; Vagrant Cascadian vagrant@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@denx.de Cc: Abel Vesa abel.vesa@nxp.com Cc: Adam Ford aford173@gmail.com Cc: Fabio Estevam festevam@gmail.com Cc: Ludwig Zenz lzenz@dh-electronics.com Cc: Peng Fan peng.fan@nxp.com Cc: Stefano Babic sbabic@denx.de Cc: Vagrant Cascadian vagrant@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.