All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH 00/20] usb: xhci: Fix USB xHCI support on Intel platform
@ 2017-06-16 13:31 Bin Meng
  2017-06-16 13:31 ` [U-Boot] [PATCH 01/20] usb: xhci: Remove incorrect comments for struct xhci_container_ctx Bin Meng
                   ` (23 more replies)
  0 siblings, 24 replies; 59+ messages in thread
From: Bin Meng @ 2017-06-16 13:31 UTC (permalink / raw)
  To: u-boot

Currently U-Boot xHCI driver does not work on Intel BayTrail SoC based
boards that have USB 3.0 ports. Trying to do a 'usb start' simply hangs
the board. This series fixes a bunch of xHCI driver issues to make it
work on Intel's platform.

Issues identified in the U-Boot xHCI driver are really spec violations,
but apparently other xHCI IPs found on ARM SoCs (mainly Synopsis IP?)
are quite tolerant with these spec violations, or IOW those IPs don't
respect the xHCI spec. While it comes to Intel platform, it just breaks.

Note xHCI interrupt transfer is still not supported in this series, as
it has been there since the original commit of xHCI support for years.

Tested on Intel MinnowMax board with the following USB devices:
- Dell USB 1.1 keyboard
- Dell USB 2.0 mouse
- Netac USB 2.0 flash disk
- JetFlash USB 3.0 flash disk
- GenesysLogic 4-port USB 3.0 hub, with an integrated Realtek USB
  ethernet chipset connected to one of its downstream port

Testing were performed on both ports (2.0 port and 3.0 port), and both
ports are connected to xHCI (configure MinnowMax to enable xHCI).

Testing results:
- DELL USB 1.1 keyboard and 2.0 mouse can be enumerated on both ports
- USB 2.0 and 3.0 flash disks work fine (enumerated, read/write) on
  both ports
- GenesysLogic USB 3.0 hub can be enumerated on 2.0 port as a 2.0 hub,
  and the integrated Realtek USB ethernet chipset enumerated as well.
  USB 2.0 and 3.0 flash disks connected via the hub can be enumerated,
  but DELL USB 1.1 keyboard and 2.0 mouse cannot.
- GenesysLogic USB 3.0 hub can be enumerated on 3.0 port as a 3.0 hub,
  but the integrated Realtek USB ethernet chipset cannot be enumerated.
  None of devices connected via the hub can be enumerated. U-Boot xHCI
  driver just throws BUG_ON() on the event TRB handling.

This indicates that USB 3.0 hub support in U-Boot is seriously broken.
So far this series tries to fix some of the issues identified, but the
USB 3.0 hub is still not working. This will be left as future work, or
if someone else is interested it to pick up the work.

The USB 3.0 hub work includes: port status translation, USB 3.0 newly
added "Set Hub Depth" request support, xHCI codes update to fill in
hub description fields in the input slot context when issuing commands
to xHC, etc.


Bin Meng (20):
  usb: xhci: Remove incorrect comments for struct xhci_container_ctx
  usb: xhci: Correct command TRB 4th dword initialization
  usb: xhci: Initialize scratchpad buffer array and scratchpad buffers
  usb: xhci: Add input slot context in xhci_set_configuration()
  usb: hub: Update handling connect status/change in usb_scan_port()
  usb: hub: Send correct wValue to get hub descriptor of a USB 3.0 hub
  usb: hub: Revise wLength for 'get port status' request
  usb: hub: Change USB hub descriptor to match USB 3.0 hubs
  usb: hub: Add 3.0 hub port status mask of 2.0 hub
  usb: xhci: Change MAX_HC_PORTS to 255
  usb: xhci: Get rid of CONFIG_SYS_USB_XHCI_MAX_ROOT_PORTS
  configs: Remove CONFIG_SYS_USB_XHCI_MAX_ROOT_PORTS in all boards
  usb: ehci: Get rid of CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS
  configs: Remove CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS in all boards
  usb: cmd: Print actual packet size for super speed devices
  usb: xhci: Convert CONFIG_USB_XHCI_PCI to Kconfig
  x86: minnowmax: Configure GPIO pins to turn on USB ports VBUS
  x86: minnowmax: Add a environment variable for USB power-on delay
  x86: minnowmax: Enable USB xHCI support
  x86: Remove CONFIG_USB_MAX_CONTROLLER_COUNT

 arch/arm/include/asm/ehci-omap.h          |  4 --
 arch/x86/dts/minnowmax.dts                |  3 ++
 board/intel/minnowmax/minnowmax.c         | 53 +++++++++++++++++++
 cmd/usb.c                                 |  7 ++-
 common/usb_hub.c                          | 41 ++++++++++-----
 configs/minnowmax_defconfig               |  1 +
 drivers/usb/emul/sandbox_hub.c            |  7 ++-
 drivers/usb/host/Kconfig                  |  6 +++
 drivers/usb/host/ehci-hcd.c               | 14 +++--
 drivers/usb/host/ehci.h                   |  7 ++-
 drivers/usb/host/xhci-mem.c               | 87 +++++++++++++++++++++++++++++++
 drivers/usb/host/xhci-ring.c              | 11 +++-
 drivers/usb/host/xhci.c                   | 17 +++---
 drivers/usb/host/xhci.h                   | 23 ++++----
 include/configs/MPC8572DS.h               |  1 -
 include/configs/am43xx_evm.h              |  1 -
 include/configs/am57xx_evm.h              |  1 -
 include/configs/cl-som-am57x.h            |  1 -
 include/configs/cm_t43.h                  |  1 -
 include/configs/cm_t54.h                  |  1 -
 include/configs/conga-qeval20-qa3-e3845.h |  3 --
 include/configs/corvus.h                  |  3 --
 include/configs/dfi-bt700.h               |  3 --
 include/configs/dra7xx_evm.h              |  1 -
 include/configs/ds414.h                   |  1 -
 include/configs/duovero.h                 |  2 -
 include/configs/exynos5-common.h          |  3 --
 include/configs/ls1012afrdm.h             |  1 -
 include/configs/ls1012aqds.h              |  1 -
 include/configs/ls1012ardb.h              |  1 -
 include/configs/ls1021aiot.h              |  1 -
 include/configs/ls1021aqds.h              |  1 -
 include/configs/ls1021atwr.h              |  1 -
 include/configs/ls1043aqds.h              |  1 -
 include/configs/ls1043ardb.h              |  1 -
 include/configs/ls1046aqds.h              |  1 -
 include/configs/ls1046ardb.h              |  1 -
 include/configs/ls2080aqds.h              |  1 -
 include/configs/ls2080ardb.h              |  1 -
 include/configs/ma5d4evk.h                |  1 -
 include/configs/mcx.h                     |  1 -
 include/configs/minnowmax.h               |  7 ++-
 include/configs/mvebu_armada-37xx.h       |  9 +---
 include/configs/mvebu_armada-8k.h         |  9 +---
 include/configs/mx35pdk.h                 |  1 -
 include/configs/odroid.h                  |  1 -
 include/configs/omap3_beagle.h            |  1 -
 include/configs/omap3_overo.h             |  1 -
 include/configs/omap4_panda.h             |  2 -
 include/configs/omap5_uevm.h              |  1 -
 include/configs/picosam9g45.h             |  3 --
 include/configs/rk3328_common.h           |  2 -
 include/configs/rk3399_common.h           |  3 --
 include/configs/sama5d2_ptc.h             |  4 --
 include/configs/snapper9g45.h             |  3 --
 include/configs/sunxi-common.h            |  1 -
 include/configs/tam3517-common.h          |  1 -
 include/configs/tao3530.h                 |  1 -
 include/configs/tegra114-common.h         |  1 -
 include/configs/tegra124-common.h         |  1 -
 include/configs/tegra20-common.h          |  1 -
 include/configs/tegra210-common.h         |  1 -
 include/configs/tegra30-common.h          |  1 -
 include/configs/ti_armv7_keystone2.h      |  1 -
 include/configs/uniphier.h                |  3 --
 include/configs/vinco.h                   |  6 ---
 include/configs/x86-common.h              |  2 -
 include/configs/xilinx_zynqmp.h           |  2 -
 include/usb.h                             | 18 +++++--
 include/usb_defs.h                        |  8 ++-
 scripts/config_whitelist.txt              |  2 -
 71 files changed, 259 insertions(+), 155 deletions(-)

-- 
2.9.2

^ permalink raw reply	[flat|nested] 59+ messages in thread

end of thread, other threads:[~2017-06-22  6:44 UTC | newest]

Thread overview: 59+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-06-16 13:31 [U-Boot] [PATCH 00/20] usb: xhci: Fix USB xHCI support on Intel platform Bin Meng
2017-06-16 13:31 ` [U-Boot] [PATCH 01/20] usb: xhci: Remove incorrect comments for struct xhci_container_ctx Bin Meng
2017-06-17  3:43   ` Simon Glass
2017-06-16 13:31 ` [U-Boot] [PATCH 02/20] usb: xhci: Correct command TRB 4th dword initialization Bin Meng
2017-06-17  3:43   ` Simon Glass
2017-06-16 13:31 ` [U-Boot] [PATCH 03/20] usb: xhci: Initialize scratchpad buffer array and scratchpad buffers Bin Meng
2017-06-17  3:43   ` Simon Glass
2017-06-16 13:31 ` [U-Boot] [PATCH 04/20] usb: xhci: Add input slot context in xhci_set_configuration() Bin Meng
2017-06-17  3:43   ` Simon Glass
2017-06-16 13:31 ` [U-Boot] [PATCH 05/20] usb: hub: Update handling connect status/change in usb_scan_port() Bin Meng
2017-06-16 14:19   ` Marek Vasut
2017-06-20 15:18     ` Dinh Nguyen
2017-06-16 13:31 ` [U-Boot] [PATCH 06/20] usb: hub: Send correct wValue to get hub descriptor of a USB 3.0 hub Bin Meng
2017-06-17  3:43   ` Simon Glass
2017-06-16 13:31 ` [U-Boot] [PATCH 07/20] usb: hub: Revise wLength for 'get port status' request Bin Meng
2017-06-17  3:43   ` Simon Glass
2017-06-16 13:31 ` [U-Boot] [PATCH 08/20] usb: hub: Change USB hub descriptor to match USB 3.0 hubs Bin Meng
2017-06-17  3:44   ` Simon Glass
2017-06-16 13:31 ` [U-Boot] [PATCH 09/20] usb: hub: Add 3.0 hub port status mask of 2.0 hub Bin Meng
2017-06-17  3:44   ` Simon Glass
2017-06-16 13:31 ` [U-Boot] [PATCH 10/20] usb: xhci: Change MAX_HC_PORTS to 255 Bin Meng
2017-06-17  3:44   ` Simon Glass
2017-06-16 13:31 ` [U-Boot] [PATCH 11/20] usb: xhci: Get rid of CONFIG_SYS_USB_XHCI_MAX_ROOT_PORTS Bin Meng
2017-06-17  3:44   ` Simon Glass
2017-06-16 13:31 ` [U-Boot] [PATCH 12/20] configs: Remove CONFIG_SYS_USB_XHCI_MAX_ROOT_PORTS in all boards Bin Meng
2017-06-16 14:06   ` Bin Meng
2017-06-21 12:13     ` Stefan Roese
2017-06-17  3:44   ` Simon Glass
2017-06-16 13:31 ` [U-Boot] [PATCH 13/20] usb: ehci: Get rid of CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS Bin Meng
2017-06-17  3:44   ` Simon Glass
2017-06-16 13:31 ` [U-Boot] [PATCH 14/20] configs: Remove CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS in all boards Bin Meng
2017-06-16 14:09   ` Bin Meng
2017-06-21 12:13     ` Stefan Roese
2017-06-17  3:44   ` Simon Glass
2017-06-16 13:31 ` [U-Boot] [PATCH 15/20] usb: cmd: Print actual packet size for super speed devices Bin Meng
2017-06-17  3:44   ` Simon Glass
2017-06-16 13:31 ` [U-Boot] [PATCH 16/20] usb: xhci: Convert CONFIG_USB_XHCI_PCI to Kconfig Bin Meng
2017-06-17  3:44   ` Simon Glass
2017-06-16 13:31 ` [U-Boot] [PATCH 17/20] x86: minnowmax: Configure GPIO pins to turn on USB ports VBUS Bin Meng
2017-06-17  3:44   ` Simon Glass
2017-06-17 13:41     ` Bin Meng
2017-06-22  6:44     ` Bin Meng
2017-06-16 13:31 ` [U-Boot] [PATCH 18/20] x86: minnowmax: Add a environment variable for USB power-on delay Bin Meng
2017-06-17  3:44   ` Simon Glass
2017-06-16 13:31 ` [U-Boot] [PATCH 19/20] x86: minnowmax: Enable USB xHCI support Bin Meng
2017-06-17  3:44   ` Simon Glass
2017-06-17 13:43     ` Bin Meng
2017-06-16 13:31 ` [U-Boot] [PATCH 20/20] x86: Remove CONFIG_USB_MAX_CONTROLLER_COUNT Bin Meng
2017-06-17  3:45   ` Simon Glass
2017-06-22  6:44     ` Bin Meng
2017-06-16 13:42 ` [U-Boot] [PATCH 00/20] usb: xhci: Fix USB xHCI support on Intel platform Bin Meng
2017-06-16 14:21 ` Marek Vasut
2017-06-16 14:29   ` Stefan Roese
2017-06-21  9:28 ` Stefan Roese
2017-06-21 10:24   ` Bin Meng
2017-06-21 12:07     ` Stefan Roese
2017-06-21 12:44       ` Bin Meng
2017-06-22  6:32         ` Bin Meng
2017-06-21 12:10 ` Stefan Roese

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.