12#include "dt/dt_gpio.h"
40 uint8_t input_period_counter_count;
51 [kDtGpioRegBlockCore] = 0x30000000,
62 [kDtGpioPeriphIoGpio0] = {
66 .periph_input_or_direct_pad = kTopDarjeelingDirectPadsGpioGpio0,
70 [kDtGpioPeriphIoGpio1] = {
74 .periph_input_or_direct_pad = kTopDarjeelingDirectPadsGpioGpio1,
78 [kDtGpioPeriphIoGpio2] = {
82 .periph_input_or_direct_pad = kTopDarjeelingDirectPadsGpioGpio2,
86 [kDtGpioPeriphIoGpio3] = {
90 .periph_input_or_direct_pad = kTopDarjeelingDirectPadsGpioGpio3,
94 [kDtGpioPeriphIoGpio4] = {
98 .periph_input_or_direct_pad = kTopDarjeelingDirectPadsGpioGpio4,
102 [kDtGpioPeriphIoGpio5] = {
106 .periph_input_or_direct_pad = kTopDarjeelingDirectPadsGpioGpio5,
110 [kDtGpioPeriphIoGpio6] = {
114 .periph_input_or_direct_pad = kTopDarjeelingDirectPadsGpioGpio6,
118 [kDtGpioPeriphIoGpio7] = {
122 .periph_input_or_direct_pad = kTopDarjeelingDirectPadsGpioGpio7,
126 [kDtGpioPeriphIoGpio8] = {
130 .periph_input_or_direct_pad = kTopDarjeelingDirectPadsGpioGpio8,
134 [kDtGpioPeriphIoGpio9] = {
138 .periph_input_or_direct_pad = kTopDarjeelingDirectPadsGpioGpio9,
142 [kDtGpioPeriphIoGpio10] = {
146 .periph_input_or_direct_pad = kTopDarjeelingDirectPadsGpioGpio10,
150 [kDtGpioPeriphIoGpio11] = {
154 .periph_input_or_direct_pad = kTopDarjeelingDirectPadsGpioGpio11,
158 [kDtGpioPeriphIoGpio12] = {
162 .periph_input_or_direct_pad = kTopDarjeelingDirectPadsGpioGpio12,
166 [kDtGpioPeriphIoGpio13] = {
170 .periph_input_or_direct_pad = kTopDarjeelingDirectPadsGpioGpio13,
174 [kDtGpioPeriphIoGpio14] = {
178 .periph_input_or_direct_pad = kTopDarjeelingDirectPadsGpioGpio14,
182 [kDtGpioPeriphIoGpio15] = {
186 .periph_input_or_direct_pad = kTopDarjeelingDirectPadsGpioGpio15,
190 [kDtGpioPeriphIoGpio16] = {
194 .periph_input_or_direct_pad = kTopDarjeelingDirectPadsGpioGpio16,
198 [kDtGpioPeriphIoGpio17] = {
202 .periph_input_or_direct_pad = kTopDarjeelingDirectPadsGpioGpio17,
206 [kDtGpioPeriphIoGpio18] = {
210 .periph_input_or_direct_pad = kTopDarjeelingDirectPadsGpioGpio18,
214 [kDtGpioPeriphIoGpio19] = {
218 .periph_input_or_direct_pad = kTopDarjeelingDirectPadsGpioGpio19,
222 [kDtGpioPeriphIoGpio20] = {
226 .periph_input_or_direct_pad = kTopDarjeelingDirectPadsGpioGpio20,
230 [kDtGpioPeriphIoGpio21] = {
234 .periph_input_or_direct_pad = kTopDarjeelingDirectPadsGpioGpio21,
238 [kDtGpioPeriphIoGpio22] = {
242 .periph_input_or_direct_pad = kTopDarjeelingDirectPadsGpioGpio22,
246 [kDtGpioPeriphIoGpio23] = {
250 .periph_input_or_direct_pad = kTopDarjeelingDirectPadsGpioGpio23,
254 [kDtGpioPeriphIoGpio24] = {
258 .periph_input_or_direct_pad = kTopDarjeelingDirectPadsGpioGpio24,
262 [kDtGpioPeriphIoGpio25] = {
266 .periph_input_or_direct_pad = kTopDarjeelingDirectPadsGpioGpio25,
270 [kDtGpioPeriphIoGpio26] = {
274 .periph_input_or_direct_pad = kTopDarjeelingDirectPadsGpioGpio26,
278 [kDtGpioPeriphIoGpio27] = {
282 .periph_input_or_direct_pad = kTopDarjeelingDirectPadsGpioGpio27,
286 [kDtGpioPeriphIoGpio28] = {
290 .periph_input_or_direct_pad = kTopDarjeelingDirectPadsGpioGpio28,
294 [kDtGpioPeriphIoGpio29] = {
298 .periph_input_or_direct_pad = kTopDarjeelingDirectPadsGpioGpio29,
302 [kDtGpioPeriphIoGpio30] = {
306 .periph_input_or_direct_pad = kTopDarjeelingDirectPadsGpioGpio30,
310 [kDtGpioPeriphIoGpio31] = {
314 .periph_input_or_direct_pad = kTopDarjeelingDirectPadsGpioGpio31,
320 .input_period_counter_count = 8,
330#define TRY_GET_DT(dt, default) ({ if ((dt) < (dt_gpio_t)0 || (dt) >= kDtGpioCount) return (default); &gpio_desc[dt]; })
348 return TRY_GET_DT(dt, 0xdeadbeef)->base_addr[reg_block];
355 if (first_irq == kDtPlicIrqIdNone) {
356 return kDtPlicIrqIdNone;
366 if (first_irq == kDtPlicIrqIdNone) {
379 return (
dt_alert_id_t)((uint32_t)gpio_desc[dt].first_alert + (uint32_t)alert);
386 if (alert < gpio_desc[dt].first_alert || alert >= gpio_desc[dt].first_alert + (
dt_alert_id_t)count) {
397 return TRY_GET_DT(dt, kDtPeriphIoConstantHighZ)->periph_io[sig];
420 return TRY_GET_DT(dt, 0)->ipgen_ext.input_period_counter_count;