diff options
author | Suresh Mangipudi <smangipudi@nvidia.com> | 2010-08-12 18:05:05 +0530 |
---|---|---|
committer | Gary King <gking@nvidia.com> | 2010-08-29 14:44:55 -0700 |
commit | 91c5af5df99b5c5753998fb2e3b4ea07af23ef07 (patch) | |
tree | 005f384dd390deb42cd1d2f48c715a3baf3dc05b /arch | |
parent | 0896d785822fe22b1d5b968a4bbd8dbf43ad3de3 (diff) |
[ventana/ulpi] ulpi low power state
Release the ulpi gpio before entering lp0.
Bug 718123
Change-Id: I6a07f6df723b7192a3b83dbda1cde39b4dd75b93
Reviewed-on: http://git-master/r/5088
Reviewed-by: Hanumanth Venkateswa Moganty <vmoganty@nvidia.com>
Reviewed-by: Suresh Mangipudi <smangipudi@nvidia.com>
Tested-by: Suresh Mangipudi <smangipudi@nvidia.com>
Reviewed-by: Bitan Biswas <bbiswas@nvidia.com>
Reviewed-by: Gary King <gking@nvidia.com>
Diffstat (limited to 'arch')
-rwxr-xr-x[-rw-r--r--] | arch/arm/mach-tegra/odm_kit/adaptations/misc/ventana/nvodm_usbulpi.c | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/arch/arm/mach-tegra/odm_kit/adaptations/misc/ventana/nvodm_usbulpi.c b/arch/arm/mach-tegra/odm_kit/adaptations/misc/ventana/nvodm_usbulpi.c index f6e5804bb988..a3a690949954 100644..100755 --- a/arch/arm/mach-tegra/odm_kit/adaptations/misc/ventana/nvodm_usbulpi.c +++ b/arch/arm/mach-tegra/odm_kit/adaptations/misc/ventana/nvodm_usbulpi.c @@ -52,6 +52,8 @@ typedef struct NvOdmUsbUlpiRec { NvU64 CurrentGUID; + NvOdmServicesGpioHandle hGpio; + NvOdmGpioPinHandle hResetPin; } NvOdmUsbUlpi; NvOdmUsbUlpiHandle NvOdmUsbUlpiOpen(NvU32 Instance) @@ -60,8 +62,6 @@ NvOdmUsbUlpiHandle NvOdmUsbUlpiOpen(NvU32 Instance) NvU32 ClockInstances[MAX_CLOCKS]; NvU32 ClockFrequencies[MAX_CLOCKS]; NvU32 NumClocks; - NvOdmServicesGpioHandle hGpio; - NvOdmGpioPinHandle hResetPin; NvU32 Port = NVODM_PORT('v'); NvU32 Pin = 1; @@ -77,15 +77,15 @@ NvOdmUsbUlpiHandle NvOdmUsbUlpiOpen(NvU32 Instance) } NvOdmOsSleepMS(10); // Pull high on RESETB ( 22nd pin of smsc3315) - hGpio = NvOdmGpioOpen(); - hResetPin = NvOdmGpioAcquirePinHandle(hGpio, Port, Pin); + pDevice->hGpio = NvOdmGpioOpen(); + pDevice->hResetPin = NvOdmGpioAcquirePinHandle(pDevice->hGpio, Port, Pin); // config as out put pin - NvOdmGpioConfig(hGpio,hResetPin, NvOdmGpioPinMode_Output); + NvOdmGpioConfig(pDevice->hGpio, pDevice->hResetPin, NvOdmGpioPinMode_Output); // Set low to write high on ULPI_RESETB pin - NvOdmGpioSetState(hGpio, hResetPin, 0x01); - NvOdmGpioSetState(hGpio, hResetPin, 0x0); + NvOdmGpioSetState(pDevice->hGpio, pDevice->hResetPin, 0x01); + NvOdmGpioSetState(pDevice->hGpio, pDevice->hResetPin, 0x0); NvOdmOsSleepMS(5); - NvOdmGpioSetState(hGpio, hResetPin, 0x01); + NvOdmGpioSetState(pDevice->hGpio, pDevice->hResetPin, 0x01); pDevice->CurrentGUID = SMSC3317GUID; return pDevice; @@ -97,10 +97,20 @@ ExitUlpiOdm: void NvOdmUsbUlpiClose(NvOdmUsbUlpiHandle hOdmUlpi) { + if (hOdmUlpi->hResetPin) + { + NvOdmGpioSetState(hOdmUlpi->hGpio, hOdmUlpi->hResetPin, 0x0); + NvOdmGpioReleasePinHandle(hOdmUlpi->hGpio, hOdmUlpi->hResetPin); + hOdmUlpi->hResetPin = NULL; + } + if (hOdmUlpi->hGpio) + { + NvOdmGpioClose(hOdmUlpi->hGpio); + hOdmUlpi->hGpio = NULL; + } if (hOdmUlpi) { NvOdmOsFree(hOdmUlpi); - hOdmUlpi = NULL; } } |