u-boot-brain/drivers/usb/host
Hans de Goede fcdd8aaa48 dm: usb: Fix finding of first upstream usb-2 hub in the ehci dm code
The ehci driver model code for finding the first upstream usb-2 hub before
this commit has a number of issues:

1) "if (!ttdev->speed != USB_SPEED_HIGH)" does not work because the '!'
   takes presedence over the '!=' this should simply be
   "if (ttdev->speed == USB_SPEED_HIGH)"
2) It makes ttdev point to the first upstream usb-2 hub, but ttdev should
   point to the last usb-1 device before the first usb-2 hub (when going
   upstream from the device), as ttdev is used to find the port of the
   first usb-2 hub to which the the last usb-1 device is connected.
3) parent_devnum however should be set to the devnum of the first usb-2
   hub, so we need to keep pointers around to both usb_device structs.

To complicate things further during enumeration usb_device.dev will point
to the parent udevice, where as during normal use it will point to
the actual udevice, we must handle both cases correctly.

This commit fixes all this making usb-1 devices attached to usb-2 hubs,
including usb-1 devices attached to usb-1 hubs attached to usb-2 hubs, work.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Acked-by: Simon Glass <sjg@chromium.org>
2015-05-05 20:58:42 -06:00
..
dwc2.c usb: dwc2: retry NAK'd interrupt transfers 2015-04-14 05:47:59 +02:00
dwc2.h usb: dwc2: detect device speed correctly 2015-04-14 05:47:59 +02:00
ehci-armada100.c usb: ehci-hcd: add enum usb_init_type parameter to ehci_hcd_init. 2013-10-20 23:46:27 +02:00
ehci-atmel.c USB: ehci-atmel: use pcr to enable or disable clock 2014-09-19 00:11:21 +02:00
ehci-exynos.c dm: usb: exynos: Add driver model support to exynos EHCI 2015-04-18 11:11:27 -06:00
ehci-faraday.c dm: usb: Drop the EHCI weak functions 2015-04-18 11:11:24 -06:00
ehci-fsl.c drivers: usb: fsl: Workaround for Erratum A004477 2015-05-04 09:23:50 -07:00
ehci-hcd.c dm: usb: Fix finding of first upstream usb-2 hub in the ehci dm code 2015-05-05 20:58:42 -06:00
ehci-marvell.c arm: marvell: Move arch/kirkwood.h to arch/soc.h 2014-10-23 09:59:20 -04:00
ehci-mpc512x.c powerpc/usb:Differentiate USB controller base address 2013-10-24 09:35:09 -07:00
ehci-mx5.c dm: usb: Drop the EHCI weak functions 2015-04-18 11:11:24 -06:00
ehci-mx6.c usb:ehci-mx6 add phy mode query function 2014-11-14 20:56:54 +01:00
ehci-mxc.c usb: ehci-hcd: add enum usb_init_type parameter to ehci_hcd_init. 2013-10-20 23:46:27 +02:00
ehci-mxs.c usb: ehci: mxs: Add board-specific callbacks 2014-09-29 09:02:16 +02:00
ehci-omap.c usb: ehci-omap: Reset the USB Host OMAP module 2013-12-06 07:02:32 -05:00
ehci-pci.c usb: pci: Use pci_find_class() to find the device 2015-02-05 22:16:42 -07:00
ehci-ppc4xx.c usb: ehci-hcd: add enum usb_init_type parameter to ehci_hcd_init. 2013-10-20 23:46:27 +02:00
ehci-rmobile.c usb: rmobile: Use ARRAY_SIZE(usb_base_address) instead of CONFIG_USB_MAX_CONTROLLER_COUNT 2014-11-07 16:32:02 +01:00
ehci-spear.c usb: ehci-hcd: add enum usb_init_type parameter to ehci_hcd_init. 2013-10-20 23:46:27 +02:00
ehci-sunxi.c sunxi: usb: Do not call phy_probe from hcd code 2015-05-04 16:51:55 +02:00
ehci-tegra.c dm: usb: tegra: Add driver model support to tegra EHCI 2015-04-18 11:11:27 -06:00
ehci-uniphier.c ARM: UniPhier: adjust device trees for business transfer 2015-03-15 13:37:00 +09:00
ehci-vct.c usb: ehci-hcd: add enum usb_init_type parameter to ehci_hcd_init. 2013-10-20 23:46:27 +02:00
ehci-vf.c usb: host: Add ehci-vf USB driver for ARM Vybrid SoC's 2015-04-23 14:56:09 -04:00
ehci-zynq.c ARM: zynq: ehci: Added USB host driver support 2014-05-14 07:43:35 +02:00
ehci.h dm: usb: Add driver model support to EHCI 2015-04-18 11:11:25 -06:00
isp116x-hcd.c include: move various macros to include/linux/kernel.h 2014-11-20 11:28:25 -05:00
isp116x.h Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
Kconfig usb: UniPhier: add UniPhier on-chip xHCI host driver support 2015-03-01 00:03:00 +09:00
Makefile usb: host: Add ehci-vf USB driver for ARM Vybrid SoC's 2015-04-23 14:56:09 -04:00
ohci-at91.c USB: ohci-at91: use pcr to enable or disable clock 2014-09-19 00:11:20 +02:00
ohci-da8xx.c Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
ohci-ep93xx.c arm: ep9315: Return back Cirrus Logic EDB9315A board support 2014-07-04 23:45:48 +02:00
ohci-hcd.c include: move various macros to include/linux/kernel.h 2014-11-20 11:28:25 -05:00
ohci-s3c24xx.c include: move various macros to include/linux/kernel.h 2014-11-20 11:28:25 -05:00
ohci-s3c24xx.h dm: Move s3c24xx USB driver to a proper place 2012-10-18 06:54:18 +02:00
ohci.h usb: new board-specific USB init interface 2013-10-20 23:42:40 +02:00
r8a66597-hcd.c include: move various macros to include/linux/kernel.h 2014-11-20 11:28:25 -05:00
r8a66597.h usb: r8a66597: Fix argument mistake of inl 2011-08-08 21:40:40 +02:00
sl811-hcd.c usb: add enum usb_init_type parameter to usb_lowlevel_init 2013-10-20 23:45:26 +02:00
sl811.h drivers/usb: regorganisation 2009-04-06 20:40:46 +02:00
usb-sandbox.c dm: usb: sandbox: Add a driver for sandbox 2015-04-18 11:11:26 -06:00
usb-uclass.c dm: usb: Copy over usb_device values from usb_scan_device() to final usb_device 2015-05-05 20:58:41 -06:00
utmi-armada100.c Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
xhci-exynos5.c dm: usb: exynos: Adjust XHCI driver to support driver model 2015-04-18 11:11:29 -06:00
xhci-keystone.c keystone: usb: add support of usb xhci 2014-10-23 11:27:04 -04:00
xhci-mem.c dm: usb: Support driver model in XHCI 2015-04-18 11:11:28 -06:00
xhci-omap.c usb: host: xhci: make sure to power up PHY 2014-07-09 22:11:51 +02:00
xhci-pci.c usb: pci: Add XHCI driver for PCI 2015-02-05 22:16:42 -07:00
xhci-ring.c dm: usb: xhci: Use a function to get xhci_ctrl 2015-04-18 11:11:28 -06:00
xhci-uniphier.c ARM: UniPhier: adjust device trees for business transfer 2015-03-15 13:37:00 +09:00
xhci.c dm: usb: Rename the XHCI HCD to U-Boot 2015-04-18 11:11:28 -06:00
xhci.h dm: usb: Support driver model in XHCI 2015-04-18 11:11:28 -06:00