[U-Boot] UCLASS_MISC bug
Jean-Jacques Hiblot
jjhiblot at ti.com
Tue Mar 19 15:29:25 UTC 2019
+ 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
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