diff options
author | Kuo-Jung Su <dantesu@faraday-tech.com> | 2013-05-15 15:29:23 +0800 |
---|---|---|
committer | Marek Vasut <marex@denx.de> | 2013-06-12 22:22:51 +0200 |
commit | e82a316d7f9425943d86c1ed61c5cf57b0d5b188 (patch) | |
tree | f32a19b18dde2c92c54c86018f88689057e9f6fb /common/usb_hub.c | |
parent | aa1550588cc60549bf3a97dc6dccb7de4c022aa6 (diff) | |
download | u-boot-imx-e82a316d7f9425943d86c1ed61c5cf57b0d5b188.zip u-boot-imx-e82a316d7f9425943d86c1ed61c5cf57b0d5b188.tar.gz u-boot-imx-e82a316d7f9425943d86c1ed61c5cf57b0d5b188.tar.bz2 |
usb: ehci: add Faraday USB 2.0 EHCI support
This patch adds support to both Faraday FUSBH200 and FOTG210,
the differences between Faraday EHCI and standard EHCI are
listed bellow:
1. The PORTSC starts at 0x30 instead of 0x44.
2. The CONFIGFLAG(0x40) is not only un-implemented, and
also has its address space removed.
3. Faraday EHCI is a TDI design, but it doesn't
compatible with the general TDI implementation
found at both U-Boot and Linux.
4. The ISOC descriptors differ from standard EHCI in
several ways. But since U-boot doesn't support ISOC,
we don't have to worry about that.
Signed-off-by: Kuo-Jung Su <dantesu@faraday-tech.com>
CC: Marek Vasut <marex@denx.de>
Diffstat (limited to 'common/usb_hub.c')
-rw-r--r-- | common/usb_hub.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/common/usb_hub.c b/common/usb_hub.c index fc3a8c1..774ba63 100644 --- a/common/usb_hub.c +++ b/common/usb_hub.c @@ -489,7 +489,11 @@ static int usb_hub_configure(struct usb_device *dev) i + 1, portstatus); usb_clear_port_feature(dev, i + 1, USB_PORT_FEAT_C_ENABLE); - + /* + * The following hack causes a ghost device problem + * to Faraday EHCI + */ +#ifndef CONFIG_USB_EHCI_FARADAY /* EM interference sometimes causes bad shielded USB * devices to be shutdown by the hub, this hack enables * them again. Works at least with mouse driver */ @@ -501,6 +505,7 @@ static int usb_hub_configure(struct usb_device *dev) "re-enabling...\n", i + 1); usb_hub_port_connect_change(dev, i); } +#endif } if (portstatus & USB_PORT_STAT_SUSPEND) { debug("port %d suspend change\n", i + 1); |