[U-Boot] UCLASS_MISC bug

Simon Glass sjg at chromium.org
Fri Mar 22 07:53:26 UTC 2019


Hi,

On Tue, 19 Mar 2019 at 23:29, Jean-Jacques Hiblot <jjhiblot at ti.com> wrote:
>
> + Simon Glass
>
>
> Hi Serguey,
>
> On 15/03/2019 22:55, Sergey Kubushyn wrote:
> > I would like to point that this was not a very good idea:
> >
> > === Cut ===
> > --- uboot-imx-next/drivers/misc/misc-uclass.c    2018-12-20
> > 20:35:22.505180339 -0800
> > +++ u-boot-imx/drivers/misc/misc-uclass.c    2019-03-13
> > 11:50:19.408982814 -0700
> > @@ -68,4 +68,7 @@ int misc_set_enabled(struct udevice *dev
> >  UCLASS_DRIVER(misc) = {
> >      .id        = UCLASS_MISC,
> >      .name        = "misc",
> > +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA)
> > +    .post_bind    = dm_scan_fdt_dev,
> > +#endif
> >  };
> > === Cut ===
> >
> > The problem comes up with all those "glue" layers like e.g. in
> > usb/dwc3 and
> > everywhere else.
> >
> > Those "glues" primarily bind drivers to e.g. USB interfaces like e.g.
> > dwc3-generic does. That is where it should stop because glue knows better
> > what to bind. However, after glue has bound appropriate drivers to their
> > interfaces that post_bind scans FDT again and finds yet another bunch of
> > drivers that it binds on top of what glue already bound. This happens
> > e.g.
> > with DWC3 drivers that glues bind to interfaces depending on their
> > declared
> > roles. However both peripheral and XHCI drivers are compatible with
> > "snps,dwc3" so they are bound on top creating a huge mess. Here is a
> > dm tree
> > fragment of its action:
> >
> > === Cut ===
> >  phy          0  [ + ]   imx8mq_usb_phy        |-- phy at 381f0040
> >  misc         0  [ + ]   imx8m_dwc3_glue       |-- usb at 38100000
> >  usb          0  [   ]   imx8m_dwc3_periphera  |   |-- dwc3
> >  usb          0  [   ]   xhci-dwc3             |   `-- dwc3
> >  phy          1  [   ]   imx8mq_usb_phy        |-- phy at 382f0040
> >  misc         1  [   ]   imx8m_dwc3_glue       |-- usb at 38200000
> >  usb          1  [   ]   xhci-dwc3             |   |-- dwc3
> >  usb          2  [   ]   xhci-dwc3             |   `-- dwc3
> > === Cut ===
> >
> > The glue bound imx8m_dwc3_peripheral to USB0 then post_bind found yet
> > another "compatible" driver, xhci-dwc3 and bound it to the same
> > interface.
> >
> > Then glue bound xhci-dwc3 to USB1 but post_bind found yet another
> > "compatible" driver, xhci-dwc3 and bound it again so there are TWO xhci
> > drivers bound to the same interface.
> >
> > This is simplified picture -- I removed "compatible" from my peripheral
> > driver so it only comes up once, under USB0. If I leave that "compatible"
> > with "snps,dwc3" there everything gets even weirder :(
> >
> > That diff above is the latest 2019.04-rc3 u-boot-imx-next vs 2019.01-rc
> > something release.
> >
> > We either need some additional special flag to disable that post_bind
> > where
> > it is not needed or create a special new class for those binding
> > "glues" or
> > this change should be reverted.
>
> We can also see the problem on TI platforms.
>
> Tested with a am57xx evm

Can you check for an existing device and not create a new one in that case?

Maybe use device_find_first_child_by_uclass() ?

Regards,
Simon


>
> JJ
>
> >
> > P.S. I'm going to post imx8m USB glue, USB PHY, USB peripheral initial
> > drivers probably Monday late night as they still need some cleanup. It
> > all
> > works with full Linux Kernel DTS files, picks power domains from there.
> >
> > Don't know what to do with my board-specific DTS as there is (and
> > probably
> > will not be) our board submitted -- it is not secret but used in our
> > devices
> > only and not available to the public -- so it doesn't make sense to
> > post a
> > full DTS. Will probably send a fragment.
> >
> > ---
> > ******************************************************************
> > *  KSI at home    KOI8 Net  < >  The impossible we do immediately.  *
> > *  Las Vegas   NV, USA   < >  Miracles require 24-hour notice.   *
> > ******************************************************************
> > _______________________________________________
> > U-Boot mailing list
> > U-Boot at lists.denx.de
> > https://lists.denx.de/listinfo/u-boot


More information about the U-Boot mailing list