ARM: tegra: usb_phy: Configure USB1 PHY to use programmed value
authorNathan Connell <w14185@motorola.com>
Wed, 12 Jan 2011 20:32:24 +0000 (14:32 -0600)
committerBenoit Goby <benoit@android.com>
Wed, 26 Jan 2011 01:33:24 +0000 (17:33 -0800)
instead of fused value.  This is required
to meet High Speed USB signaling requirements.

Change-Id: I659b33faa950605ecf040598112e1972047ae7ad
Signed-off-by: Nathan Connell <w14185@motorola.com>
arch/arm/mach-tegra/usb_phy.c

index 13e502cd04903838085ee4d317573d7b72a33da5..7242dda542c2cd2de9229fbc807c169619f5cffe 100644 (file)
 #define   UTMIP_PD_CHRG                        (1 << 0)
 
 #define UTMIP_SPARE_CFG0       0x834
-#define   FUSE_SETUP_SEL               (1 << 3);
+#define   FUSE_SETUP_SEL               (1 << 3)
 
 #define UTMIP_XCVR_CFG1                0x838
 #define   UTMIP_FORCE_PDDISC_POWERDOWN (1 << 0)
@@ -420,6 +420,15 @@ static void utmi_phy_power_on(struct tegra_usb_phy *phy)
        val |= UTMIP_BIAS_PDTRK_COUNT(0x5);
        writel(val, base + UTMIP_BIAS_CFG1);
 
+       if (phy->instance == 0) {
+               val = readl(base + UTMIP_SPARE_CFG0);
+               if (phy->mode == TEGRA_USB_PHY_MODE_DEVICE)
+                       val &= ~FUSE_SETUP_SEL;
+               else
+                       val |= FUSE_SETUP_SEL;
+               writel(val, base + UTMIP_SPARE_CFG0);
+       }
+
        if (phy->instance == 2) {
                val = readl(base + USB_SUSP_CTRL);
                val |= UTMIP_PHY_ENABLE;