diff options
author | sgadagottu <sgadagottu@nvidia.com> | 2010-03-08 15:42:22 +0530 |
---|---|---|
committer | Gary King <gking@nvidia.com> | 2010-03-17 08:28:22 -0800 |
commit | bcd820aacce5fad00566edbe1504ecbe344f5fa5 (patch) | |
tree | c0e87dd3b7b61f8370c91f1545df4b63a7a2ec05 /arch/arm | |
parent | 930347bdf016fa78e10d9aacb855f7727d2cf0a6 (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>
Diffstat (limited to 'arch/arm')
-rwxr-xr-x | arch/arm/mach-tegra/odm_kit/query/whistler/nvodm_query.c | 26 |
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; } |