1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 #ifndef __DAL_GPIO_TYPES_H__
27 #define __DAL_GPIO_TYPES_H__
28
29 #define BUNDLE_A_MASK 0x00FFF000L
30 #define BUNDLE_B_MASK 0x00000FFFL
31
32
33
34
35
36
37
38
39
40 enum gpio_result {
41 GPIO_RESULT_OK,
42 GPIO_RESULT_NULL_HANDLE,
43 GPIO_RESULT_INVALID_DATA,
44 GPIO_RESULT_DEVICE_BUSY,
45 GPIO_RESULT_OPEN_FAILED,
46 GPIO_RESULT_ALREADY_OPENED,
47 GPIO_RESULT_NON_SPECIFIC_ERROR
48 };
49
50
51
52
53
54
55
56
57
58 enum gpio_id {
59 GPIO_ID_UNKNOWN = (-1),
60 GPIO_ID_DDC_DATA,
61 GPIO_ID_DDC_CLOCK,
62 GPIO_ID_GENERIC,
63 GPIO_ID_HPD,
64 GPIO_ID_GPIO_PAD,
65 GPIO_ID_VIP_PAD,
66 GPIO_ID_SYNC,
67 GPIO_ID_GSL,
68 GPIO_ID_COUNT,
69 GPIO_ID_MIN = GPIO_ID_DDC_DATA,
70 GPIO_ID_MAX = GPIO_ID_GSL
71 };
72
73 #define GPIO_ENUM_UNKNOWN \
74 32
75
76 struct gpio_pin_info {
77 uint32_t offset;
78 uint32_t offset_y;
79 uint32_t offset_en;
80 uint32_t offset_mask;
81
82 uint32_t mask;
83 uint32_t mask_y;
84 uint32_t mask_en;
85 uint32_t mask_mask;
86 };
87
88 enum gpio_pin_output_state {
89 GPIO_PIN_OUTPUT_STATE_ACTIVE_LOW,
90 GPIO_PIN_OUTPUT_STATE_ACTIVE_HIGH,
91 GPIO_PIN_OUTPUT_STATE_DEFAULT = GPIO_PIN_OUTPUT_STATE_ACTIVE_LOW
92 };
93
94 enum gpio_generic {
95 GPIO_GENERIC_UNKNOWN = (-1),
96 GPIO_GENERIC_A,
97 GPIO_GENERIC_B,
98 GPIO_GENERIC_C,
99 GPIO_GENERIC_D,
100 GPIO_GENERIC_E,
101 GPIO_GENERIC_F,
102 GPIO_GENERIC_G,
103 GPIO_GENERIC_COUNT,
104 GPIO_GENERIC_MIN = GPIO_GENERIC_A,
105 GPIO_GENERIC_MAX = GPIO_GENERIC_B
106 };
107
108 enum gpio_hpd {
109 GPIO_HPD_UNKNOWN = (-1),
110 GPIO_HPD_1,
111 GPIO_HPD_2,
112 GPIO_HPD_3,
113 GPIO_HPD_4,
114 GPIO_HPD_5,
115 GPIO_HPD_6,
116 GPIO_HPD_COUNT,
117 GPIO_HPD_MIN = GPIO_HPD_1,
118 GPIO_HPD_MAX = GPIO_HPD_6
119 };
120
121 enum gpio_gpio_pad {
122 GPIO_GPIO_PAD_UNKNOWN = (-1),
123 GPIO_GPIO_PAD_0,
124 GPIO_GPIO_PAD_1,
125 GPIO_GPIO_PAD_2,
126 GPIO_GPIO_PAD_3,
127 GPIO_GPIO_PAD_4,
128 GPIO_GPIO_PAD_5,
129 GPIO_GPIO_PAD_6,
130 GPIO_GPIO_PAD_7,
131 GPIO_GPIO_PAD_8,
132 GPIO_GPIO_PAD_9,
133 GPIO_GPIO_PAD_10,
134 GPIO_GPIO_PAD_11,
135 GPIO_GPIO_PAD_12,
136 GPIO_GPIO_PAD_13,
137 GPIO_GPIO_PAD_14,
138 GPIO_GPIO_PAD_15,
139 GPIO_GPIO_PAD_16,
140 GPIO_GPIO_PAD_17,
141 GPIO_GPIO_PAD_18,
142 GPIO_GPIO_PAD_19,
143 GPIO_GPIO_PAD_20,
144 GPIO_GPIO_PAD_21,
145 GPIO_GPIO_PAD_22,
146 GPIO_GPIO_PAD_23,
147 GPIO_GPIO_PAD_24,
148 GPIO_GPIO_PAD_25,
149 GPIO_GPIO_PAD_26,
150 GPIO_GPIO_PAD_27,
151 GPIO_GPIO_PAD_28,
152 GPIO_GPIO_PAD_29,
153 GPIO_GPIO_PAD_30,
154 GPIO_GPIO_PAD_COUNT,
155 GPIO_GPIO_PAD_MIN = GPIO_GPIO_PAD_0,
156 GPIO_GPIO_PAD_MAX = GPIO_GPIO_PAD_30
157 };
158
159 enum gpio_vip_pad {
160 GPIO_VIP_PAD_UNKNOWN = (-1),
161
162
163 GPIO_VIP_PAD_SCL,
164
165
166 GPIO_VIP_PAD_SDA,
167 GPIO_VIP_PAD_VHAD,
168 GPIO_VIP_PAD_VPHCTL,
169 GPIO_VIP_PAD_VIPCLK,
170 GPIO_VIP_PAD_VID,
171 GPIO_VIP_PAD_VPCLK0,
172 GPIO_VIP_PAD_DVALID,
173 GPIO_VIP_PAD_PSYNC,
174 GPIO_VIP_PAD_COUNT,
175 GPIO_VIP_PAD_MIN = GPIO_VIP_PAD_SCL,
176 GPIO_VIP_PAD_MAX = GPIO_VIP_PAD_PSYNC
177 };
178
179 enum gpio_sync {
180 GPIO_SYNC_UNKNOWN = (-1),
181 GPIO_SYNC_HSYNC_A,
182 GPIO_SYNC_VSYNC_A,
183 GPIO_SYNC_HSYNC_B,
184 GPIO_SYNC_VSYNC_B,
185 GPIO_SYNC_COUNT,
186 GPIO_SYNC_MIN = GPIO_SYNC_HSYNC_A,
187 GPIO_SYNC_MAX = GPIO_SYNC_VSYNC_B
188 };
189
190 enum gpio_gsl {
191 GPIO_GSL_UNKNOWN = (-1),
192 GPIO_GSL_GENLOCK_CLOCK,
193 GPIO_GSL_GENLOCK_VSYNC,
194 GPIO_GSL_SWAPLOCK_A,
195 GPIO_GSL_SWAPLOCK_B,
196 GPIO_GSL_COUNT,
197 GPIO_GSL_MIN = GPIO_GSL_GENLOCK_CLOCK,
198 GPIO_GSL_MAX = GPIO_GSL_SWAPLOCK_B
199 };
200
201
202
203
204
205
206 enum gpio_ddc_line {
207 GPIO_DDC_LINE_UNKNOWN = (-1),
208 GPIO_DDC_LINE_DDC1,
209 GPIO_DDC_LINE_DDC2,
210 GPIO_DDC_LINE_DDC3,
211 GPIO_DDC_LINE_DDC4,
212 GPIO_DDC_LINE_DDC5,
213 GPIO_DDC_LINE_DDC6,
214 GPIO_DDC_LINE_DDC_VGA,
215 GPIO_DDC_LINE_VIP_PAD,
216 GPIO_DDC_LINE_I2C_PAD = GPIO_DDC_LINE_VIP_PAD,
217 GPIO_DDC_LINE_COUNT,
218 GPIO_DDC_LINE_MIN = GPIO_DDC_LINE_DDC1,
219 GPIO_DDC_LINE_MAX = GPIO_DDC_LINE_I2C_PAD
220 };
221
222
223
224
225
226
227 enum gpio_mode {
228 GPIO_MODE_UNKNOWN = (-1),
229 GPIO_MODE_INPUT,
230 GPIO_MODE_OUTPUT,
231 GPIO_MODE_FAST_OUTPUT,
232 GPIO_MODE_HARDWARE,
233 GPIO_MODE_INTERRUPT
234 };
235
236
237
238
239
240
241
242
243
244
245
246 enum gpio_signal_source {
247 GPIO_SIGNAL_SOURCE_UNKNOWN = (-1),
248 GPIO_SIGNAL_SOURCE_DACA_STEREO_SYNC,
249 GPIO_SIGNAL_SOURCE_PASS_THROUGH_STEREO_SYNC,
250 GPIO_SIGNAL_SOURCE_DACB_STEREO_SYNC,
251 GPIO_SIGNAL_SOURCE_DACA_HSYNC,
252 GPIO_SIGNAL_SOURCE_DACB_HSYNC,
253 GPIO_SIGNAL_SOURCE_DACA_VSYNC,
254 GPIO_SIGNAL_SOURCE_DACB_VSYNC,
255 };
256
257 enum gpio_stereo_source {
258 GPIO_STEREO_SOURCE_UNKNOWN = (-1),
259 GPIO_STEREO_SOURCE_D1,
260 GPIO_STEREO_SOURCE_D2,
261 GPIO_STEREO_SOURCE_D3,
262 GPIO_STEREO_SOURCE_D4,
263 GPIO_STEREO_SOURCE_D5,
264 GPIO_STEREO_SOURCE_D6
265 };
266
267
268
269
270
271 enum gpio_config_type {
272 GPIO_CONFIG_TYPE_NONE,
273 GPIO_CONFIG_TYPE_DDC,
274 GPIO_CONFIG_TYPE_HPD,
275 GPIO_CONFIG_TYPE_GENERIC_MUX,
276 GPIO_CONFIG_TYPE_GSL_MUX,
277 GPIO_CONFIG_TYPE_I2C_AUX_DUAL_MODE
278 };
279
280
281
282 enum gpio_ddc_config_type {
283 GPIO_DDC_CONFIG_TYPE_MODE_AUX,
284 GPIO_DDC_CONFIG_TYPE_MODE_I2C,
285 GPIO_DDC_CONFIG_TYPE_POLL_FOR_CONNECT,
286 GPIO_DDC_CONFIG_TYPE_POLL_FOR_DISCONNECT,
287 GPIO_DDC_CONFIG_TYPE_DISABLE_POLLING
288 };
289
290 struct gpio_ddc_config {
291 enum gpio_ddc_config_type type;
292 bool data_en_bit_present;
293 bool clock_en_bit_present;
294 };
295
296
297
298 struct gpio_hpd_config {
299 uint32_t delay_on_connect;
300 uint32_t delay_on_disconnect;
301 };
302
303 struct gpio_generic_mux_config {
304 bool enable_output_from_mux;
305 enum gpio_signal_source mux_select;
306 enum gpio_stereo_source stereo_select;
307 };
308
309 enum gpio_gsl_mux_config_type {
310 GPIO_GSL_MUX_CONFIG_TYPE_DISABLE,
311 GPIO_GSL_MUX_CONFIG_TYPE_TIMING_SYNC,
312 GPIO_GSL_MUX_CONFIG_TYPE_FLIP_SYNC
313 };
314
315 struct gpio_gsl_mux_config {
316 enum gpio_gsl_mux_config_type type;
317
318
319 uint32_t gsl_group;
320 };
321
322 struct gpio_config_data {
323 enum gpio_config_type type;
324 union {
325 struct gpio_ddc_config ddc;
326 struct gpio_hpd_config hpd;
327 struct gpio_generic_mux_config generic_mux;
328 struct gpio_gsl_mux_config gsl_mux;
329 } config;
330 };
331
332 #endif