summaryrefslogtreecommitdiff
path: root/ArmPlatformPkg/Drivers
diff options
context:
space:
mode:
Diffstat (limited to 'ArmPlatformPkg/Drivers')
-rw-r--r--ArmPlatformPkg/Drivers/PL061GpioDxe/PL061Gpio.c40
1 files changed, 7 insertions, 33 deletions
diff --git a/ArmPlatformPkg/Drivers/PL061GpioDxe/PL061Gpio.c b/ArmPlatformPkg/Drivers/PL061GpioDxe/PL061Gpio.c
index 937b725821..c8125fd0e0 100644
--- a/ArmPlatformPkg/Drivers/PL061GpioDxe/PL061Gpio.c
+++ b/ArmPlatformPkg/Drivers/PL061GpioDxe/PL061Gpio.c
@@ -1,6 +1,7 @@
/** @file
*
* Copyright (c) 2011, ARM Limited. All rights reserved.
+* Copyright (c) 2016, Linaro Limited. All rights reserved.
*
* This program and the accompanying materials
* are licensed and made available under the terms and conditions of the BSD
@@ -27,7 +28,6 @@
#include <Protocol/EmbeddedGpio.h>
#include <Drivers/PL061Gpio.h>
-BOOLEAN mPL061Initialized = FALSE;
/**
Function implementations
@@ -78,8 +78,6 @@ PL061Initialize (
// // Ensure interrupts are disabled
//}
- mPL061Initialized = TRUE;
-
EXIT:
return Status;
}
@@ -109,30 +107,19 @@ Get (
OUT UINTN *Value
)
{
- EFI_STATUS Status = EFI_SUCCESS;
-
if ( (Value == NULL)
|| (Gpio > LAST_GPIO_PIN))
{
return EFI_INVALID_PARAMETER;
}
- // Initialize the hardware if not already done
- if (!mPL061Initialized) {
- Status = PL061Initialize();
- if (EFI_ERROR(Status)) {
- goto EXIT;
- }
- }
-
if (MmioRead8 (PL061_GPIO_DATA_REG) & GPIO_PIN_MASK_HIGH_8BIT(Gpio)) {
*Value = 1;
} else {
*Value = 0;
}
- EXIT:
- return Status;
+ return EFI_SUCCESS;
}
/**
@@ -169,14 +156,6 @@ Set (
goto EXIT;
}
- // Initialize the hardware if not already done
- if (!mPL061Initialized) {
- Status = PL061Initialize();
- if (EFI_ERROR(Status)) {
- goto EXIT;
- }
- }
-
switch (Mode)
{
case GPIO_MODE_INPUT:
@@ -233,22 +212,12 @@ GetMode (
OUT EMBEDDED_GPIO_MODE *Mode
)
{
- EFI_STATUS Status;
-
// Check for errors
if ( (Mode == NULL)
|| (Gpio > LAST_GPIO_PIN)) {
return EFI_INVALID_PARAMETER;
}
- // Initialize the hardware if not already done
- if (!mPL061Initialized) {
- Status = PL061Initialize();
- if (EFI_ERROR(Status)) {
- return Status;
- }
- }
-
// Check if it is input or output
if (MmioRead8 (PL061_GPIO_DIR_REG) & GPIO_PIN_MASK_HIGH_8BIT(Gpio)) {
// Pin set to output
@@ -329,6 +298,11 @@ PL061InstallProtocol (
//
ASSERT_PROTOCOL_ALREADY_INSTALLED (NULL, &gEmbeddedGpioProtocolGuid);
+ Status = PL061Initialize();
+ if (EFI_ERROR(Status)) {
+ return EFI_DEVICE_ERROR;
+ }
+
// Install the Embedded GPIO Protocol onto a new handle
Handle = NULL;
Status = gBS->InstallMultipleProtocolInterfaces(