mbox series

[U-Boot,v4,00/15] Improvement for the DWC3 USB generic driver and fixes for the K2 platforms

Message ID 20190911093358.25290-1-jjhiblot@ti.com
Headers show
Series Improvement for the DWC3 USB generic driver and fixes for the K2 platforms | expand

Message

Jean-Jacques Hiblot Sept. 11, 2019, 9:33 a.m. UTC
The K2 platforms have shown boot issues after switching to the DWC3 generic
driver. Those are due to the fact that the USB domains are not turned off
before booting linux and the phy were not properly initialized. Fixing it
by improving the DWC3-generic driver and handling the USB power domain in
the PHY driver.

Improvements to the DWC3 generic driver are:
- core: read quirks properties from DT and apply the fixes.
- add a new host driver that uses the DWC3 core (more generic than
xhci-dwc3). This should enable most platforms to drop their own version
of the xhci-driver to use the generic one instead.

This series also removes the now unused xhci-zynqmp driver and tries to
better manage the Kconfig options related to DWC3 gadget/host mode
selection.

This has been tested with K2 and DRA7 platforms (host and device modes).
Travis build: https://travis-ci.org/jjhiblot/u-boot/builds/583080674

Changes in v4:
- removed patches already merged (DWC3 fixes)
- update more defconfigs (u200, sei510, rock64-rk332 and odroid-n2)
- Fix the test of the USB_DWC3_GADGET option. IS_ENABLED() requires the
  whole option name including the 'CONFIG_' prefix

Changes in v3:
- updated log message when defaulting to super speed

Changes in v2:
Update commit log
Select USB_GADGET_DUALSPEED if USB_DWC3_GADGET is selected

Jean-Jacques Hiblot (15):
  usb: host: remove the xhci-zynqmp driver
  usb: dwc3: switch to peripheral mode when exiting
  usb: xhci: move xhci.h to include usb
  usb: dwc3: always use the inlined version of
    dwc3_host_init/dwc3_host_exit
  usb: dwc3-generic: use platdata
  usb: dwc3-generic: factorize code
  usb: dwc3-generic: add a new host driver that uses the dwc3 core
  usb: dwc3-generic: if no max speed is specified in DT, assume super
    speed
  usb: dwc3: Add dwc3_of_parse() to get quirks information from DT
  usb: dwc3: Kconfig: get rid of obsolete mode selection
  ARM: keystone: increase PSC timeout
  ARM: keystone: Do not enable the USB power domains at the board level
  phy: keystone-usb: handle the transition of the USB power domain
  configs: k2g_evm_defconfig: disable XHCI_DWC3 and enable
    KEYSTONE_USB_PHY
  ARM: DTS: keystone: complete the description of the USB PHY devices

 MAINTAINERS                                   |   1 +
 arch/arm/dts/keystone-k2e-evm-u-boot.dtsi     |  32 ++++
 arch/arm/dts/keystone-k2g-evm-u-boot.dtsi     |  28 ++++
 arch/arm/dts/keystone-k2hk-evm-u-boot.dtsi    |  14 ++
 arch/arm/dts/keystone-k2l-evm-u-boot.dtsi     |  18 +++
 .../arm/mach-keystone/include/mach/psc_defs.h |   2 +-
 board/ti/ks2_evm/board.c                      |  13 --
 configs/avnet_ultra96_rev1_defconfig          |   1 -
 configs/evb-rk3328_defconfig                  |   1 +
 configs/k2g_evm_defconfig                     |   3 +-
 configs/odroid-n2_defconfig                   |   1 +
 configs/rock64-rk3328_defconfig               |   1 +
 configs/sei510_defconfig                      |   1 +
 configs/u200_defconfig                        |   1 +
 .../xilinx_zynqmp_zc1751_xm015_dc1_defconfig  |   1 -
 .../xilinx_zynqmp_zc1751_xm016_dc2_defconfig  |   1 -
 .../xilinx_zynqmp_zc1751_xm017_dc3_defconfig  |   1 -
 configs/xilinx_zynqmp_zcu100_revC_defconfig   |   1 -
 configs/xilinx_zynqmp_zcu102_rev1_0_defconfig |   1 -
 configs/xilinx_zynqmp_zcu102_revA_defconfig   |   1 -
 configs/xilinx_zynqmp_zcu102_revB_defconfig   |   1 -
 configs/xilinx_zynqmp_zcu104_revA_defconfig   |   1 -
 configs/xilinx_zynqmp_zcu104_revC_defconfig   |   1 -
 configs/xilinx_zynqmp_zcu106_revA_defconfig   |   1 -
 configs/xilinx_zynqmp_zcu111_revA_defconfig   |   1 -
 drivers/phy/keystone-usb-phy.c                |  22 +++
 drivers/usb/dwc3/Kconfig                      |  18 +--
 drivers/usb/dwc3/core.c                       |  84 +++++++++-
 drivers/usb/dwc3/core.h                       |   6 +-
 drivers/usb/dwc3/dwc3-generic.c               | 146 ++++++++++++++----
 drivers/usb/host/Kconfig                      |   7 -
 drivers/usb/host/Makefile                     |   1 -
 drivers/usb/host/xhci-dwc3.c                  |   2 +-
 drivers/usb/host/xhci-exynos5.c               |   2 +-
 drivers/usb/host/xhci-fsl.c                   |   2 +-
 drivers/usb/host/xhci-mem.c                   |   2 +-
 drivers/usb/host/xhci-mvebu.c                 |   2 +-
 drivers/usb/host/xhci-omap.c                  |   2 +-
 drivers/usb/host/xhci-pci.c                   |   2 +-
 drivers/usb/host/xhci-rcar.c                  |   2 +-
 drivers/usb/host/xhci-ring.c                  |   2 +-
 drivers/usb/host/xhci-rockchip.c              |   2 +-
 drivers/usb/host/xhci-zynqmp.c                | 146 ------------------
 drivers/usb/host/xhci.c                       |   2 +-
 drivers/usb/phy/omap_usb_phy.c                |   2 +-
 {drivers/usb/host => include/usb}/xhci.h      |   0
 46 files changed, 331 insertions(+), 251 deletions(-)
 create mode 100644 arch/arm/dts/keystone-k2l-evm-u-boot.dtsi
 delete mode 100644 drivers/usb/host/xhci-zynqmp.c
 rename {drivers/usb/host => include/usb}/xhci.h (100%)