summaryrefslogtreecommitdiff
path: root/drivers/usb
diff options
context:
space:
mode:
authorDan Murphy <dmurphy@ti.com>2013-10-11 12:28:18 -0500
committerMarek Vasut <marex@denx.de>2013-10-20 23:42:41 +0200
commit3d799c7f5e0dd2bea3f4ec839ad7692f7122d992 (patch)
tree0cce5e5408e5949d608b39ddbb80e2a5476ddf06 /drivers/usb
parent834e91af432479e3808e9cbd1d38199f724fc5aa (diff)
downloadu-boot-imx-3d799c7f5e0dd2bea3f4ec839ad7692f7122d992.zip
u-boot-imx-3d799c7f5e0dd2bea3f4ec839ad7692f7122d992.tar.gz
u-boot-imx-3d799c7f5e0dd2bea3f4ec839ad7692f7122d992.tar.bz2
usb: am437x: Add support for am437x xhci USB host
Add the support for the am437x xhci usb host. The xHCI host on AM437 is connected to a usb2 phy so need to add support to enable those clocks. Signed-off-by: Dan Murphy <dmurphy@ti.com>
Diffstat (limited to 'drivers/usb')
-rw-r--r--drivers/usb/phy/omap_usb_phy.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/drivers/usb/phy/omap_usb_phy.c b/drivers/usb/phy/omap_usb_phy.c
index f074a88..af46db2 100644
--- a/drivers/usb/phy/omap_usb_phy.c
+++ b/drivers/usb/phy/omap_usb_phy.c
@@ -207,6 +207,25 @@ void usb_phy_power(int on)
}
#endif /* CONFIG_OMAP_USB2PHY2_HOST */
+#ifdef CONFIG_AM437X_USB2PHY2_HOST
+static void am437x_enable_usb2_phy2(struct omap_xhci *omap)
+{
+ const u32 usb_otg_ss_clk_val = (USBOTGSSX_CLKCTRL_MODULE_EN |
+ USBOTGSSX_CLKCTRL_OPTFCLKEN_REFCLK960);
+
+ writel(usb_otg_ss_clk_val, PRM_PER_USB_OTG_SS0_CLKCTRL);
+ writel(usb_otg_ss_clk_val, PRM_PER_USB_OTG_SS1_CLKCTRL);
+
+ writel(USBPHYOCPSCP_MODULE_EN, PRM_PER_USBPHYOCP2SCP0_CLKCTRL);
+ writel(USBPHYOCPSCP_MODULE_EN, PRM_PER_USBPHYOCP2SCP1_CLKCTRL);
+}
+
+void usb_phy_power(int on)
+{
+ return;
+}
+#endif /* CONFIG_AM437X_USB2PHY2_HOST */
+
void omap_reset_usb_phy(struct dwc3 *dwc3_reg)
{
/* Assert USB3 PHY reset */
@@ -231,6 +250,10 @@ void omap_enable_phy(struct omap_xhci *omap)
omap_enable_usb2_phy2(omap);
#endif
+#ifdef CONFIG_AM437X_USB2PHY2_HOST
+ am437x_enable_usb2_phy2(omap);
+#endif
+
#ifdef CONFIG_OMAP_USB3PHY1_HOST
omap_enable_usb3_phy(omap);
omap_usb3_phy_init(omap->usb3_phy);