]> git.proxmox.com Git - mirror_edk2.git/blame - EmbeddedPkg/Include/Protocol/EmbeddedGpio.h
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / EmbeddedPkg / Include / Protocol / EmbeddedGpio.h
CommitLineData
1e57a462 1/** @file\r
2\r
3 Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>\r
4\r
878b807a 5 SPDX-License-Identifier: BSD-2-Clause-Patent\r
1e57a462 6\r
7**/\r
8\r
9#ifndef __EMBEDDED_GPIO_H__\r
10#define __EMBEDDED_GPIO_H__\r
11\r
12//\r
13// Protocol interface structure\r
14//\r
e7108d0e 15typedef struct _EMBEDDED_GPIO EMBEDDED_GPIO;\r
1e57a462 16\r
17//\r
18// Data Types\r
19//\r
20typedef UINTN EMBEDDED_GPIO_PIN;\r
21\r
e7108d0e
MK
22#define GPIO(Port, Pin) ((EMBEDDED_GPIO_PIN)(((Port) << (16)) | (Pin)))\r
23#define GPIO_PIN(x) ((EMBEDDED_GPIO_PIN)(x) & (0xFFFF))\r
24#define GPIO_PORT(x) ((EMBEDDED_GPIO_PIN)(x) >> (16))\r
1e57a462 25\r
26typedef enum {\r
e7108d0e
MK
27 GPIO_MODE_INPUT = 0x00,\r
28 GPIO_MODE_OUTPUT_0 = 0x0E,\r
29 GPIO_MODE_OUTPUT_1 = 0x0F,\r
30 GPIO_MODE_SPECIAL_FUNCTION_2 = 0x02,\r
31 GPIO_MODE_SPECIAL_FUNCTION_3 = 0x03,\r
32 GPIO_MODE_SPECIAL_FUNCTION_4 = 0x04,\r
33 GPIO_MODE_SPECIAL_FUNCTION_5 = 0x05,\r
34 GPIO_MODE_SPECIAL_FUNCTION_6 = 0x06,\r
35 GPIO_MODE_SPECIAL_FUNCTION_7 = 0x07\r
1e57a462 36} EMBEDDED_GPIO_MODE;\r
37\r
38typedef enum {\r
39 GPIO_PULL_NONE,\r
40 GPIO_PULL_UP,\r
41 GPIO_PULL_DOWN\r
42} EMBEDDED_GPIO_PULL;\r
43\r
44//\r
45// Function Prototypes\r
46//\r
47typedef\r
48EFI_STATUS\r
e7108d0e 49(EFIAPI *EMBEDDED_GPIO_GET)(\r
1e57a462 50 IN EMBEDDED_GPIO *This,\r
51 IN EMBEDDED_GPIO_PIN Gpio,\r
52 OUT UINTN *Value\r
53 );\r
e7108d0e 54\r
1e57a462 55/*++\r
56\r
57Routine Description:\r
58\r
59 Gets the state of a GPIO pin\r
60\r
61Arguments:\r
62\r
63 This - pointer to protocol\r
64 Gpio - which pin to read\r
65 Value - state of the pin\r
3402aac7 66\r
1e57a462 67Returns:\r
68\r
69 EFI_SUCCESS - GPIO state returned in Value\r
70\r
71--*/\r
72\r
1e57a462 73typedef\r
74EFI_STATUS\r
e7108d0e
MK
75(EFIAPI *EMBEDDED_GPIO_SET)(\r
76 IN EMBEDDED_GPIO *This,\r
77 IN EMBEDDED_GPIO_PIN Gpio,\r
78 IN EMBEDDED_GPIO_MODE Mode\r
79 );\r
80\r
1e57a462 81/*++\r
82\r
83Routine Description:\r
84\r
85 Sets the state of a GPIO pin\r
86\r
87Arguments:\r
88\r
89 This - pointer to protocol\r
90 Gpio - which pin to modify\r
91 Mode - mode to set\r
3402aac7 92\r
1e57a462 93Returns:\r
94\r
95 EFI_SUCCESS - GPIO set as requested\r
96\r
97--*/\r
98\r
1e57a462 99typedef\r
100EFI_STATUS\r
e7108d0e
MK
101(EFIAPI *EMBEDDED_GPIO_GET_MODE)(\r
102 IN EMBEDDED_GPIO *This,\r
103 IN EMBEDDED_GPIO_PIN Gpio,\r
104 OUT EMBEDDED_GPIO_MODE *Mode\r
105 );\r
106\r
1e57a462 107/*++\r
108\r
109Routine Description:\r
110\r
111 Gets the mode (function) of a GPIO pin\r
112\r
113Arguments:\r
114\r
115 This - pointer to protocol\r
116 Gpio - which pin\r
117 Mode - pointer to output mode value\r
3402aac7 118\r
1e57a462 119Returns:\r
120\r
121 EFI_SUCCESS - mode value retrieved\r
122\r
123--*/\r
124\r
1e57a462 125typedef\r
126EFI_STATUS\r
e7108d0e
MK
127(EFIAPI *EMBEDDED_GPIO_SET_PULL)(\r
128 IN EMBEDDED_GPIO *This,\r
129 IN EMBEDDED_GPIO_PIN Gpio,\r
130 IN EMBEDDED_GPIO_PULL Direction\r
131 );\r
132\r
1e57a462 133/*++\r
134\r
135Routine Description:\r
136\r
137 Sets the pull-up / pull-down resistor of a GPIO pin\r
138\r
139Arguments:\r
140\r
141 This - pointer to protocol\r
142 Gpio - which pin\r
143 Direction - pull-up, pull-down, or none\r
3402aac7 144\r
1e57a462 145Returns:\r
146\r
147 EFI_SUCCESS - pin was set\r
148\r
149--*/\r
150\r
1e57a462 151struct _EMBEDDED_GPIO {\r
e7108d0e
MK
152 EMBEDDED_GPIO_GET Get;\r
153 EMBEDDED_GPIO_SET Set;\r
154 EMBEDDED_GPIO_GET_MODE GetMode;\r
155 EMBEDDED_GPIO_SET_PULL SetPull;\r
1e57a462 156};\r
157\r
e7108d0e 158extern EFI_GUID gEmbeddedGpioProtocolGuid;\r
1e57a462 159\r
e7108d0e
MK
160typedef struct _GPIO_CONTROLLER GPIO_CONTROLLER;\r
161typedef struct _PLATFORM_GPIO_CONTROLLER PLATFORM_GPIO_CONTROLLER;\r
78741ce9
HZ
162\r
163struct _GPIO_CONTROLLER {\r
e7108d0e
MK
164 UINTN RegisterBase;\r
165 UINTN GpioIndex;\r
166 UINTN InternalGpioCount;\r
78741ce9
HZ
167};\r
168\r
169struct _PLATFORM_GPIO_CONTROLLER {\r
e7108d0e
MK
170 UINTN GpioCount;\r
171 UINTN GpioControllerCount;\r
172 GPIO_CONTROLLER *GpioController;\r
78741ce9
HZ
173};\r
174\r
e7108d0e 175extern EFI_GUID gPlatformGpioProtocolGuid;\r
78741ce9 176\r
3402aac7 177#endif\r