summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorSuresh Mangipudi <smangipudi@nvidia.com>2010-08-12 18:05:05 +0530
committerGary King <gking@nvidia.com>2010-08-29 14:44:55 -0700
commit91c5af5df99b5c5753998fb2e3b4ea07af23ef07 (patch)
tree005f384dd390deb42cd1d2f48c715a3baf3dc05b /arch
parent0896d785822fe22b1d5b968a4bbd8dbf43ad3de3 (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.c28
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;
}
}