]> git.proxmox.com Git - mirror_edk2.git/blame - EmbeddedPkg/Include/Protocol/EmbeddedGpio.h
ARM Packages: Fixed line endings
[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
5 This program and the accompanying materials\r
6 are licensed and made available under the terms and conditions of the BSD License\r
7 which accompanies this distribution. The full text of the license may be found at\r
8 http://opensource.org/licenses/bsd-license.php\r
9\r
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12\r
13**/\r
14\r
15#ifndef __EMBEDDED_GPIO_H__\r
16#define __EMBEDDED_GPIO_H__\r
17\r
18//\r
19// Protocol interface structure\r
20//\r
21typedef struct _EMBEDDED_GPIO EMBEDDED_GPIO;\r
22\r
23//\r
24// Data Types\r
25//\r
26typedef UINTN EMBEDDED_GPIO_PIN;\r
27\r
28#define GPIO(Port, Pin) ((EMBEDDED_GPIO_PIN)(((Port) << (16)) | (Pin)))\r
29#define GPIO_PIN(x) ((EMBEDDED_GPIO_PIN)(x) & (0xFFFF))\r
30#define GPIO_PORT(x) ((EMBEDDED_GPIO_PIN)(x) >> (16))\r
31\r
32typedef enum {\r
33 GPIO_MODE_INPUT = 0x00,\r
34 GPIO_MODE_OUTPUT_0 = 0x0E,\r
35 GPIO_MODE_OUTPUT_1 = 0x0F,\r
36 GPIO_MODE_SPECIAL_FUNCTION_2 = 0x02,\r
37 GPIO_MODE_SPECIAL_FUNCTION_3 = 0x03,\r
38 GPIO_MODE_SPECIAL_FUNCTION_4 = 0x04,\r
39 GPIO_MODE_SPECIAL_FUNCTION_5 = 0x05,\r
40 GPIO_MODE_SPECIAL_FUNCTION_6 = 0x06,\r
41 GPIO_MODE_SPECIAL_FUNCTION_7 = 0x07\r
42} EMBEDDED_GPIO_MODE;\r
43\r
44typedef enum {\r
45 GPIO_PULL_NONE,\r
46 GPIO_PULL_UP,\r
47 GPIO_PULL_DOWN\r
48} EMBEDDED_GPIO_PULL;\r
49\r
50//\r
51// Function Prototypes\r
52//\r
53typedef\r
54EFI_STATUS\r
55(EFIAPI *EMBEDDED_GPIO_GET) (\r
56 IN EMBEDDED_GPIO *This,\r
57 IN EMBEDDED_GPIO_PIN Gpio,\r
58 OUT UINTN *Value\r
59 );\r
60/*++\r
61\r
62Routine Description:\r
63\r
64 Gets the state of a GPIO pin\r
65\r
66Arguments:\r
67\r
68 This - pointer to protocol\r
69 Gpio - which pin to read\r
70 Value - state of the pin\r
71 \r
72Returns:\r
73\r
74 EFI_SUCCESS - GPIO state returned in Value\r
75\r
76--*/\r
77\r
78\r
79typedef\r
80EFI_STATUS\r
81(EFIAPI *EMBEDDED_GPIO_SET) (\r
82 IN EMBEDDED_GPIO *This,\r
83 IN EMBEDDED_GPIO_PIN Gpio,\r
84 IN EMBEDDED_GPIO_MODE Mode\r
85 );\r
86/*++\r
87\r
88Routine Description:\r
89\r
90 Sets the state of a GPIO pin\r
91\r
92Arguments:\r
93\r
94 This - pointer to protocol\r
95 Gpio - which pin to modify\r
96 Mode - mode to set\r
97 \r
98Returns:\r
99\r
100 EFI_SUCCESS - GPIO set as requested\r
101\r
102--*/\r
103\r
104\r
105typedef\r
106EFI_STATUS\r
107(EFIAPI *EMBEDDED_GPIO_GET_MODE) (\r
108 IN EMBEDDED_GPIO *This,\r
109 IN EMBEDDED_GPIO_PIN Gpio,\r
110 OUT EMBEDDED_GPIO_MODE *Mode\r
111 );\r
112/*++\r
113\r
114Routine Description:\r
115\r
116 Gets the mode (function) of a GPIO pin\r
117\r
118Arguments:\r
119\r
120 This - pointer to protocol\r
121 Gpio - which pin\r
122 Mode - pointer to output mode value\r
123 \r
124Returns:\r
125\r
126 EFI_SUCCESS - mode value retrieved\r
127\r
128--*/\r
129\r
130\r
131typedef\r
132EFI_STATUS\r
133(EFIAPI *EMBEDDED_GPIO_SET_PULL) (\r
134 IN EMBEDDED_GPIO *This,\r
135 IN EMBEDDED_GPIO_PIN Gpio,\r
136 IN EMBEDDED_GPIO_PULL Direction\r
137 );\r
138/*++\r
139\r
140Routine Description:\r
141\r
142 Sets the pull-up / pull-down resistor of a GPIO pin\r
143\r
144Arguments:\r
145\r
146 This - pointer to protocol\r
147 Gpio - which pin\r
148 Direction - pull-up, pull-down, or none\r
149 \r
150Returns:\r
151\r
152 EFI_SUCCESS - pin was set\r
153\r
154--*/\r
155\r
156\r
157\r
158struct _EMBEDDED_GPIO {\r
159 EMBEDDED_GPIO_GET Get;\r
160 EMBEDDED_GPIO_SET Set;\r
161 EMBEDDED_GPIO_GET_MODE GetMode;\r
162 EMBEDDED_GPIO_SET_PULL SetPull;\r
163};\r
164\r
165extern EFI_GUID gEmbeddedGpioProtocolGuid;\r
166\r
167#endif \r