[U-Boot] [RFC PATCH 0/2] OMAP4/5: Add alternative method for HSIC USB devices reset

Lubomir Popov lpopov at mm-sol.com
Thu Dec 19 15:54:19 CET 2013


This patch introduces an alternative method for resetting HSIC-attached USB
devices on OMAP4/5, needed for working around the fail to connect with some
types. The solution implemented by Dan Murphy for the OMAP5432 uEVM (reset via
a callback in the board file, invoked from within usb_hub.c) does work for that
board, but is proven to fail for a custom OMAP5430 design. Moreover, the uEVM
should not be taken for a OMAP5 "golden standard" due to a hardware limitation:
power switches for the two downstream ports of the USB3503A hub (such switches
must be controlled by the hub) have been omitted, and VBUS is always present on
the sockets whenever DC input power is applied to the board. This could be one
of the possible reasons for U-Boot not being able to detect some particular
flash drives (that otherwise work correctly on other OMAP4/5 boards), as well
as for some known Linux issues.

The proposed patch provides an option for individual reset of HSIC-connected
USB devices, with configurable reset hold and delay times, all enabled by
defines in the board header only. This option is activated if at least one
CONFIG_OMAP_HSIC_PORTx_RESET_GPIO has been defined - then a weak dummy function
in ehci-hcd.c (in the USB_PORT_FEAT_POWER feature set by ehci_submit_root())
shall be overridden by a callback in ehci-omap.c that shall do the actual
device reset for the specified ports. No changes to the board .c file are
required. If desired, Dan's method may be preserved and shall co-exist for
other ports if an overriding function is present in the board file.

The patch also fixes HSIC operation on all OMAP5-ES1.0 USB ports.

It has to be noted that this patch proposes a strict differentiation between
PHYs and HSIC devices, which seems reasonable - a HSIC-connected device is
actually a permanently attached USB slave, while a PHY is just a hardware
extension of the host port, and handling them in the same manner is not
appropriate.

Tested on the OMAP5432 uEVM, as well as on a custom OMAP5430 board (with two
HSIC devices - USB4640 combo hub and LAN9730 Ethernet) and on a custom OMAP4
board (with one USB4640 HSIC hub; tested with OMAP4460 and 4470).

Lubomir Popov (2):
  ARM: OMAP4/5: Add alternative method for HSIC USB devices reset
  ARM: omap5_uevm: Example usage of alternative HSIC USB device reset

 board/ti/omap5_uevm/evm.c    |    2 +
 drivers/usb/host/ehci-hcd.c  |   15 ++++
 drivers/usb/host/ehci-omap.c |  174 +++++++++++++++++++++++++++++++++++++-----
 include/configs/omap5_uevm.h |   13 +++-
 4 files changed, 182 insertions(+), 22 deletions(-)

-- 
1.7.9.5


More information about the U-Boot mailing list