summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/nvddk
diff options
context:
space:
mode:
authorSteve Lin <stlin@nvidia.com>2010-02-16 11:12:01 -0800
committerGary King <gking@nvidia.com>2010-02-23 20:47:02 -0800
commit43d12dfa4f6c806f1eda2318e85546b90e10ec69 (patch)
tree4ede79b38743886f559b7c99281292b51a3e3dc8 /arch/arm/mach-tegra/nvddk
parente092a2114c3ca29182b85f6c17401021097fc58d (diff)
tegra nvddk: fixing null phy host issue when connecting to an OTG device
When the null phy host connects to an OTG device, the ID pin must set to 1 which indicates the AP is the host. Otherwise, the device may act as host and AP will not able to recognize the device. Also configure the pinmux according to the odmdata. Bug 625086: [AP20 \ Whistler \ Android] ULPI Null phy doesn't work with linux ehci driver Change-Id: I5f1c53cbcf91a8978eab8be63431794df6e57e3a
Diffstat (limited to 'arch/arm/mach-tegra/nvddk')
-rw-r--r--arch/arm/mach-tegra/nvddk/nvddk_usbphy_ap20.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/arch/arm/mach-tegra/nvddk/nvddk_usbphy_ap20.c b/arch/arm/mach-tegra/nvddk/nvddk_usbphy_ap20.c
index ae9ec213233a..83e807cd2324 100644
--- a/arch/arm/mach-tegra/nvddk/nvddk_usbphy_ap20.c
+++ b/arch/arm/mach-tegra/nvddk/nvddk_usbphy_ap20.c
@@ -590,7 +590,8 @@ Ap20UsbPhyUlpiNullModeConfigure(
USB_IF_REG_WR(ULPIS2S_CTRL,
USB_IF_DRF_DEF(ULPIS2S_CTRL, ULPIS2S_ENA, ENABLE) |
USB_IF_DRF_DEF(ULPIS2S_CTRL, ULPIS2S_PLLU_MASTER_BLASTER60, ENABLE) |
- USB_IF_DRF_NUM(ULPIS2S_CTRL, ULPIS2S_SPARE, 1));
+ USB_IF_DRF_NUM(ULPIS2S_CTRL, ULPIS2S_SPARE,
+ (pUsbPhy->pProperty->UsbMode == NvOdmUsbModeType_Host)?3:1));
// Select ULPI_CORE_CLK_SEL to SHADOW_CLK
ULPI_IF_REG_WR(TIMING_CTRL_0,
@@ -1239,6 +1240,7 @@ Ap20UsbPhyPowerUp(
{
case NvOdmUsbInterfaceType_UlpiNullPhy:
Ap20UsbPhyUlpiNullModeConfigure(pUsbPhy);
+ Ap20UsbPhyUlpiPowerControl(pUsbPhy, NV_TRUE);
break;
case NvOdmUsbInterfaceType_UlpiExternalPhy:
pUsbPhy->hOdmUlpi = NvOdmUsbUlpiOpen(pUsbPhy->Instance);
@@ -1259,6 +1261,10 @@ Ap20UsbPhyPowerUp(
if (ErrVal == NvSuccess)
{
Ap20UsbPhySelectUsbMode(pUsbPhy);
+
+ if (pUsbPhy->pProperty->UsbInterfaceType ==
+ NvOdmUsbInterfaceType_UlpiNullPhy)
+ pUsbPhy->hOdmUlpi = NvOdmUsbUlpiOpen(pUsbPhy->Instance);
}
return ErrVal;