[U-Boot] [PATCH v5 0/7] usb: Add cadence USB3 gadget/host/phy driver

Sherry Sun sherry.sun at nxp.com
Wed Aug 28 14:22:17 UTC 2019


Hi Vignesh,

> 
> Hi Sherry,
> 
> On 21/08/19 8:05 PM, Sherry Sun wrote:
> > These patches introduce new Cadence driver to U-Boot.
> > The first patch is to add the Cadence USB3 IP(CDNS3) core and driver
> > for the usb gadget.
> > The second patch introduce the xhci-imx8 usb host driver separately.
> > The third patch introduce the cdns3 phy driver which can be used for
> > both
> > cdns3 host driver and gadget driver.
> > The cdns3 usb gadget/host/phy driver are all used DM mode.
> >
> > The current driver has been validated on i.MX8 platform.
> > If someone want to test it, please note that the additional dts nodes/
> > config macros/clock driver are also essential. You can also get my
> > test patches at
> >
> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub
> .com%2Fsherrysun1%2Fu-boot-
> imx.git&data=02%7C01%7Csherry.sun%40nxp.com%7C97d431d6b5694
> 51ff8ac08d72bb5f883%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%
> 7C637025932942549390&sdata=XEFSCN0TtgU1H1zhNAgZeZIRgDInL%2B
> 2Gb8ec3KO4AsI%3D&reserved=0 to start your test quickly.
> >
> 
> I see that Cadence USB driver for Linux kernel is still under development and
> DT compatible binding is supposed to be "cdns,usb3" not "cdns,usb3-1.0.0".
> See v11:
> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpatch
> work.kernel.org%2Fpatch%2F11114415%2F&data=02%7C01%7Csherry.s
> un%40nxp.com%7C97d431d6b569451ff8ac08d72bb5f883%7C686ea1d3bc2b
> 4c6fa92cd99c5c301635%7C0%7C0%7C637025932942549390&sdata=Jltlk
> Te7SXTAQAKtF7HzOqY291upS67Eixeke9oXQ2w%3D&reserved=0
> Deviating from kernel binding will break sync'ing of DTs b/w kernel and U-
> Boot.
> 

Thanks for your reminder, I only noticed the DT compatible in v5 last time. So I will change it to "cdns,usb3" in next version.

> Also, why not sync the latest host/gadget driver patches from kernel as is?
> That should help in borrowing bug fixes/features whenever Cadence updates
> kernel driver in future.

Since there are many differences between the cdns3 driver in uboot and kernel, 
such as in uboot, we didn't support host mode in cdns3 core.c, instead we add an 
xhci-imx8 driver as host driver. So the patches from kernel can't be applied  to this driver.

> 
> BTW, have you tested gadget driver with functions that use bulk endpoints
> such as f_mass_storage or f_fastboot?

Yes, I have tested the ums and fastboot function already, and it has proved to work well on i.MX8 platform.

Best regards
Sherry sun

> 
> Regards
> Vignesh
> 
> > Changes in v5:
> >  - Delete some unnecessary code.
> >  - Fix some issues about lack of parentheses.
> >  - Add separate patch for core framework changes.
> >  - Add "reg-names" for usb nodes in DT and use it to get reg  values.
> >  - Use "cdns,usb3-1.0.0" compatible instead "cdns,usb3".
> >  - Add DM_FLAG_OS_PREPARE flag to xhci-imx8 driver.
> >
> > Sherry Sun (7):
> >   dt-bindings: add dt-binding doc for CDNS3 controller
> >   usb: gadget: Add the cadence USB3 gadget driver
> >   usb: gadget: Add match_ep call back to usb_gadget_ops
> >   usb: gadget: Add gadget_is_cdns3 checking to provide bcdUSB value
> >   usb: host: Add the USB3 host driver
> >   phy: Add USB PHY driver for the cadence USB3
> >   usb: gadget: core: introduce ->udc_set_speed() method
> >
> >  Makefile                                   |    1 +
> >  doc/device-tree-bindings/usb/cdns-usb3.txt |   53 +
> >  drivers/phy/Kconfig                        |    8 +
> >  drivers/phy/Makefile                       |    1 +
> >  drivers/phy/cdns3-usb-phy.c                |  241 +++
> >  drivers/usb/Kconfig                        |    2 +
> >  drivers/usb/cdns3/Kconfig                  |   20 +
> >  drivers/usb/cdns3/Makefile                 |    5 +
> >  drivers/usb/cdns3/cdns3-generic.c          |  114 +
> >  drivers/usb/cdns3/cdns3-nxp-reg-def.h      |   93 +
> >  drivers/usb/cdns3/core.c                   |  203 ++
> >  drivers/usb/cdns3/core.h                   |  118 ++
> >  drivers/usb/cdns3/dev-regs-macro.h         |  116 ++
> >  drivers/usb/cdns3/dev-regs-map.h           |  117 ++
> >  drivers/usb/cdns3/gadget-export.h          |   26 +
> >  drivers/usb/cdns3/gadget.c                 | 2183 ++++++++++++++++++++
> >  drivers/usb/cdns3/gadget.h                 |  225 ++
> >  drivers/usb/cdns3/io.h                     |   27 +
> >  drivers/usb/gadget/epautoconf.c            |    4 +
> >  drivers/usb/gadget/gadget_chips.h          |    7 +
> >  drivers/usb/gadget/udc/Makefile            |    1 +
> >  drivers/usb/gadget/udc/udc-core.c          |   23 +
> >  drivers/usb/host/Kconfig                   |    9 +
> >  drivers/usb/host/Makefile                  |    1 +
> >  drivers/usb/host/xhci-imx8.c               |  210 ++
> >  include/linux/usb/gadget.h                 |    5 +
> >  scripts/Makefile.spl                       |    1 +
> >  27 files changed, 3814 insertions(+)
> >  create mode 100644 doc/device-tree-bindings/usb/cdns-usb3.txt
> >  create mode 100644 drivers/phy/cdns3-usb-phy.c  create mode 100644
> > drivers/usb/cdns3/Kconfig  create mode 100644
> > drivers/usb/cdns3/Makefile  create mode 100644
> > drivers/usb/cdns3/cdns3-generic.c  create mode 100644
> > drivers/usb/cdns3/cdns3-nxp-reg-def.h
> >  create mode 100644 drivers/usb/cdns3/core.c  create mode 100644
> > drivers/usb/cdns3/core.h  create mode 100644
> > drivers/usb/cdns3/dev-regs-macro.h
> >  create mode 100644 drivers/usb/cdns3/dev-regs-map.h  create mode
> > 100644 drivers/usb/cdns3/gadget-export.h  create mode 100644
> > drivers/usb/cdns3/gadget.c  create mode 100644
> > drivers/usb/cdns3/gadget.h  create mode 100644 drivers/usb/cdns3/io.h
> > create mode 100644 drivers/usb/host/xhci-imx8.c
> >
> 
> --
> Regards
> Vignesh


More information about the U-Boot mailing list