3 Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
5 SPDX-License-Identifier: BSD-2-Clause-Patent
9 #ifndef __EMBEDDED_GPIO_H__
10 #define __EMBEDDED_GPIO_H__
13 // Protocol interface structure
15 typedef struct _EMBEDDED_GPIO EMBEDDED_GPIO
;
20 typedef UINTN EMBEDDED_GPIO_PIN
;
22 #define GPIO(Port, Pin) ((EMBEDDED_GPIO_PIN)(((Port) << (16)) | (Pin)))
23 #define GPIO_PIN(x) ((EMBEDDED_GPIO_PIN)(x) & (0xFFFF))
24 #define GPIO_PORT(x) ((EMBEDDED_GPIO_PIN)(x) >> (16))
27 GPIO_MODE_INPUT
= 0x00,
28 GPIO_MODE_OUTPUT_0
= 0x0E,
29 GPIO_MODE_OUTPUT_1
= 0x0F,
30 GPIO_MODE_SPECIAL_FUNCTION_2
= 0x02,
31 GPIO_MODE_SPECIAL_FUNCTION_3
= 0x03,
32 GPIO_MODE_SPECIAL_FUNCTION_4
= 0x04,
33 GPIO_MODE_SPECIAL_FUNCTION_5
= 0x05,
34 GPIO_MODE_SPECIAL_FUNCTION_6
= 0x06,
35 GPIO_MODE_SPECIAL_FUNCTION_7
= 0x07
45 // Function Prototypes
49 (EFIAPI
*EMBEDDED_GPIO_GET
) (
50 IN EMBEDDED_GPIO
*This
,
51 IN EMBEDDED_GPIO_PIN Gpio
,
58 Gets the state of a GPIO pin
62 This - pointer to protocol
63 Gpio - which pin to read
64 Value - state of the pin
68 EFI_SUCCESS - GPIO state returned in Value
75 (EFIAPI
*EMBEDDED_GPIO_SET
) (
76 IN EMBEDDED_GPIO
*This
,
77 IN EMBEDDED_GPIO_PIN Gpio
,
78 IN EMBEDDED_GPIO_MODE Mode
84 Sets the state of a GPIO pin
88 This - pointer to protocol
89 Gpio - which pin to modify
94 EFI_SUCCESS - GPIO set as requested
101 (EFIAPI
*EMBEDDED_GPIO_GET_MODE
) (
102 IN EMBEDDED_GPIO
*This
,
103 IN EMBEDDED_GPIO_PIN Gpio
,
104 OUT EMBEDDED_GPIO_MODE
*Mode
110 Gets the mode (function) of a GPIO pin
114 This - pointer to protocol
116 Mode - pointer to output mode value
120 EFI_SUCCESS - mode value retrieved
127 (EFIAPI
*EMBEDDED_GPIO_SET_PULL
) (
128 IN EMBEDDED_GPIO
*This
,
129 IN EMBEDDED_GPIO_PIN Gpio
,
130 IN EMBEDDED_GPIO_PULL Direction
136 Sets the pull-up / pull-down resistor of a GPIO pin
140 This - pointer to protocol
142 Direction - pull-up, pull-down, or none
146 EFI_SUCCESS - pin was set
152 struct _EMBEDDED_GPIO
{
153 EMBEDDED_GPIO_GET Get
;
154 EMBEDDED_GPIO_SET Set
;
155 EMBEDDED_GPIO_GET_MODE GetMode
;
156 EMBEDDED_GPIO_SET_PULL SetPull
;
159 extern EFI_GUID gEmbeddedGpioProtocolGuid
;
161 typedef struct _GPIO_CONTROLLER GPIO_CONTROLLER
;
162 typedef struct _PLATFORM_GPIO_CONTROLLER PLATFORM_GPIO_CONTROLLER
;
164 struct _GPIO_CONTROLLER
{
167 UINTN InternalGpioCount
;
170 struct _PLATFORM_GPIO_CONTROLLER
{
172 UINTN GpioControllerCount
;
173 GPIO_CONTROLLER
*GpioController
;
176 extern EFI_GUID gPlatformGpioProtocolGuid
;