\r
Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>\r
\r
- This program and the accompanying materials\r
- are licensed and made available under the terms and conditions of the BSD License\r
- which accompanies this distribution. The full text of the license may be found at\r
- http://opensource.org/licenses/bsd-license.php\r
-\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+ SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
\r
//\r
// Protocol interface structure\r
//\r
-typedef struct _EMBEDDED_GPIO EMBEDDED_GPIO;\r
+typedef struct _EMBEDDED_GPIO EMBEDDED_GPIO;\r
\r
//\r
// Data Types\r
//\r
typedef UINTN EMBEDDED_GPIO_PIN;\r
\r
-#define GPIO(Port, Pin) ((EMBEDDED_GPIO_PIN)(((Port) << (16)) | (Pin)))\r
-#define GPIO_PIN(x) ((EMBEDDED_GPIO_PIN)(x) & (0xFFFF))\r
-#define GPIO_PORT(x) ((EMBEDDED_GPIO_PIN)(x) >> (16))\r
+#define GPIO(Port, Pin) ((EMBEDDED_GPIO_PIN)(((Port) << (16)) | (Pin)))\r
+#define GPIO_PIN(x) ((EMBEDDED_GPIO_PIN)(x) & (0xFFFF))\r
+#define GPIO_PORT(x) ((EMBEDDED_GPIO_PIN)(x) >> (16))\r
\r
typedef enum {\r
- GPIO_MODE_INPUT = 0x00,\r
- GPIO_MODE_OUTPUT_0 = 0x0E,\r
- GPIO_MODE_OUTPUT_1 = 0x0F,\r
- GPIO_MODE_SPECIAL_FUNCTION_2 = 0x02,\r
- GPIO_MODE_SPECIAL_FUNCTION_3 = 0x03,\r
- GPIO_MODE_SPECIAL_FUNCTION_4 = 0x04,\r
- GPIO_MODE_SPECIAL_FUNCTION_5 = 0x05,\r
- GPIO_MODE_SPECIAL_FUNCTION_6 = 0x06,\r
- GPIO_MODE_SPECIAL_FUNCTION_7 = 0x07\r
+ GPIO_MODE_INPUT = 0x00,\r
+ GPIO_MODE_OUTPUT_0 = 0x0E,\r
+ GPIO_MODE_OUTPUT_1 = 0x0F,\r
+ GPIO_MODE_SPECIAL_FUNCTION_2 = 0x02,\r
+ GPIO_MODE_SPECIAL_FUNCTION_3 = 0x03,\r
+ GPIO_MODE_SPECIAL_FUNCTION_4 = 0x04,\r
+ GPIO_MODE_SPECIAL_FUNCTION_5 = 0x05,\r
+ GPIO_MODE_SPECIAL_FUNCTION_6 = 0x06,\r
+ GPIO_MODE_SPECIAL_FUNCTION_7 = 0x07\r
} EMBEDDED_GPIO_MODE;\r
\r
typedef enum {\r
//\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EMBEDDED_GPIO_GET) (\r
+(EFIAPI *EMBEDDED_GPIO_GET)(\r
IN EMBEDDED_GPIO *This,\r
IN EMBEDDED_GPIO_PIN Gpio,\r
OUT UINTN *Value\r
);\r
+\r
/*++\r
\r
Routine Description:\r
This - pointer to protocol\r
Gpio - which pin to read\r
Value - state of the pin\r
- \r
+\r
Returns:\r
\r
EFI_SUCCESS - GPIO state returned in Value\r
\r
--*/\r
\r
-\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EMBEDDED_GPIO_SET) (\r
- IN EMBEDDED_GPIO *This,\r
- IN EMBEDDED_GPIO_PIN Gpio,\r
- IN EMBEDDED_GPIO_MODE Mode\r
- );\r
+(EFIAPI *EMBEDDED_GPIO_SET)(\r
+ IN EMBEDDED_GPIO *This,\r
+ IN EMBEDDED_GPIO_PIN Gpio,\r
+ IN EMBEDDED_GPIO_MODE Mode\r
+ );\r
+\r
/*++\r
\r
Routine Description:\r
This - pointer to protocol\r
Gpio - which pin to modify\r
Mode - mode to set\r
- \r
+\r
Returns:\r
\r
EFI_SUCCESS - GPIO set as requested\r
\r
--*/\r
\r
-\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EMBEDDED_GPIO_GET_MODE) (\r
- IN EMBEDDED_GPIO *This,\r
- IN EMBEDDED_GPIO_PIN Gpio,\r
- OUT EMBEDDED_GPIO_MODE *Mode\r
- );\r
+(EFIAPI *EMBEDDED_GPIO_GET_MODE)(\r
+ IN EMBEDDED_GPIO *This,\r
+ IN EMBEDDED_GPIO_PIN Gpio,\r
+ OUT EMBEDDED_GPIO_MODE *Mode\r
+ );\r
+\r
/*++\r
\r
Routine Description:\r
This - pointer to protocol\r
Gpio - which pin\r
Mode - pointer to output mode value\r
- \r
+\r
Returns:\r
\r
EFI_SUCCESS - mode value retrieved\r
\r
--*/\r
\r
-\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EMBEDDED_GPIO_SET_PULL) (\r
- IN EMBEDDED_GPIO *This,\r
- IN EMBEDDED_GPIO_PIN Gpio,\r
- IN EMBEDDED_GPIO_PULL Direction\r
- );\r
+(EFIAPI *EMBEDDED_GPIO_SET_PULL)(\r
+ IN EMBEDDED_GPIO *This,\r
+ IN EMBEDDED_GPIO_PIN Gpio,\r
+ IN EMBEDDED_GPIO_PULL Direction\r
+ );\r
+\r
/*++\r
\r
Routine Description:\r
This - pointer to protocol\r
Gpio - which pin\r
Direction - pull-up, pull-down, or none\r
- \r
+\r
Returns:\r
\r
EFI_SUCCESS - pin was set\r
\r
--*/\r
\r
+struct _EMBEDDED_GPIO {\r
+ EMBEDDED_GPIO_GET Get;\r
+ EMBEDDED_GPIO_SET Set;\r
+ EMBEDDED_GPIO_GET_MODE GetMode;\r
+ EMBEDDED_GPIO_SET_PULL SetPull;\r
+};\r
+\r
+extern EFI_GUID gEmbeddedGpioProtocolGuid;\r
\r
+typedef struct _GPIO_CONTROLLER GPIO_CONTROLLER;\r
+typedef struct _PLATFORM_GPIO_CONTROLLER PLATFORM_GPIO_CONTROLLER;\r
\r
-struct _EMBEDDED_GPIO {\r
- EMBEDDED_GPIO_GET Get;\r
- EMBEDDED_GPIO_SET Set;\r
- EMBEDDED_GPIO_GET_MODE GetMode;\r
- EMBEDDED_GPIO_SET_PULL SetPull;\r
+struct _GPIO_CONTROLLER {\r
+ UINTN RegisterBase;\r
+ UINTN GpioIndex;\r
+ UINTN InternalGpioCount;\r
+};\r
+\r
+struct _PLATFORM_GPIO_CONTROLLER {\r
+ UINTN GpioCount;\r
+ UINTN GpioControllerCount;\r
+ GPIO_CONTROLLER *GpioController;\r
};\r
\r
-extern EFI_GUID gEmbeddedGpioProtocolGuid;\r
+extern EFI_GUID gPlatformGpioProtocolGuid;\r
\r
-#endif \r
+#endif\r