summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsgadagottu <sgadagottu@nvidia.com>2010-03-08 15:42:22 +0530
committerGary King <gking@nvidia.com>2010-03-17 08:28:22 -0800
commitbcd820aacce5fad00566edbe1504ecbe344f5fa5 (patch)
treec0e87dd3b7b61f8370c91f1545df4b63a7a2ec05
parent930347bdf016fa78e10d9aacb855f7727d2cf0a6 (diff)
tegra usb: Device hangs after connecting devices to USB3
AP20 pop chip is not having USB3 ID pin. Currently both pop and non-pop whistler are using same odm query with Idpin type as "Cable Id". Since, it is not reflecting correct Id pin type for pop, causing the issue. With this change based on the board type, proper id pin type is returned as part of usb odm query for USB3. Without ID pin dynamic detection of devices is not possible, so host functionality is disabled for USB3 on pop boards. With this change USB3 host is working for non-pop modules and no hang is seen with pop modules. Bug 655520 : [AP20/Android/Whistler]: Device hangs after connecting USB devices(mouse/keyboard). Tested on : whistler E1109 and whistlerE1008 Change-Id: I5cd67c54756666e58cbc778da2b1015df27c14c6 Reviewed-on: http://git-master/r/795 Reviewed-by: Narendra Damahe <ndamahe@nvidia.com> Reviewed-by: Gary King <gking@nvidia.com> Tested-by: Gary King <gking@nvidia.com>
-rwxr-xr-xarch/arm/mach-tegra/odm_kit/query/whistler/nvodm_query.c26
1 files changed, 25 insertions, 1 deletions
diff --git a/arch/arm/mach-tegra/odm_kit/query/whistler/nvodm_query.c b/arch/arm/mach-tegra/odm_kit/query/whistler/nvodm_query.c
index 2221ef071261..4ef673a080f9 100755
--- a/arch/arm/mach-tegra/odm_kit/query/whistler/nvodm_query.c
+++ b/arch/arm/mach-tegra/odm_kit/query/whistler/nvodm_query.c
@@ -1250,6 +1250,19 @@ NvOdmQueryGetUsbProperty(NvOdmIoModule OdmIoModule,
NV_FALSE
};
+ /* E1108 has no ID pin for USB3, so disable USB3 Host */
+ static const NvOdmUsbProperty Usb3Property_E1108 =
+ {
+ NvOdmUsbInterfaceType_Utmi,
+ NvOdmUsbChargerType_UsbHost,
+ 20,
+ NV_TRUE,
+ NvOdmUsbModeType_None,
+ NvOdmUsbIdPinType_None,
+ NvOdmUsbConnectorsMuxType_None,
+ NV_FALSE
+ };
+
if (OdmIoModule == NvOdmIoModule_Usb && Instance == 0)
return &(Usb1Property);
@@ -1265,7 +1278,18 @@ NvOdmQueryGetUsbProperty(NvOdmIoModule OdmIoModule,
}
if (OdmIoModule == NvOdmIoModule_Usb && Instance == 2)
- return &(Usb3Property);
+ {
+#if NVODM_ENABLE_EMC_DVFS
+ if (NvOdmIsE1108Hynix())
+ {
+ return &(Usb3Property_E1108);
+ }
+ else
+#endif
+ {
+ return &(Usb3Property);
+ }
+ }
return (const NvOdmUsbProperty *)NULL;
}