12#include "hw/top/dt/gpio.h"
40 uint8_t input_period_counter_count;
51 [kDtGpioRegBlockCore] = 0x40040000,
62 [kDtGpioPeriphIoGpio0] = {
70 [kDtGpioPeriphIoGpio1] = {
78 [kDtGpioPeriphIoGpio2] = {
86 [kDtGpioPeriphIoGpio3] = {
94 [kDtGpioPeriphIoGpio4] = {
102 [kDtGpioPeriphIoGpio5] = {
110 [kDtGpioPeriphIoGpio6] = {
118 [kDtGpioPeriphIoGpio7] = {
126 [kDtGpioPeriphIoGpio8] = {
134 [kDtGpioPeriphIoGpio9] = {
142 [kDtGpioPeriphIoGpio10] = {
150 [kDtGpioPeriphIoGpio11] = {
158 [kDtGpioPeriphIoGpio12] = {
166 [kDtGpioPeriphIoGpio13] = {
174 [kDtGpioPeriphIoGpio14] = {
182 [kDtGpioPeriphIoGpio15] = {
190 [kDtGpioPeriphIoGpio16] = {
198 [kDtGpioPeriphIoGpio17] = {
206 [kDtGpioPeriphIoGpio18] = {
214 [kDtGpioPeriphIoGpio19] = {
222 [kDtGpioPeriphIoGpio20] = {
230 [kDtGpioPeriphIoGpio21] = {
238 [kDtGpioPeriphIoGpio22] = {
246 [kDtGpioPeriphIoGpio23] = {
254 [kDtGpioPeriphIoGpio24] = {
262 [kDtGpioPeriphIoGpio25] = {
270 [kDtGpioPeriphIoGpio26] = {
278 [kDtGpioPeriphIoGpio27] = {
286 [kDtGpioPeriphIoGpio28] = {
294 [kDtGpioPeriphIoGpio29] = {
302 [kDtGpioPeriphIoGpio30] = {
310 [kDtGpioPeriphIoGpio31] = {
320 .input_period_counter_count = 0,
326 [kDtGpioRegBlockCore] = 0x40050000,
337 [kDtGpioPeriphIoGpio0] = {
345 [kDtGpioPeriphIoGpio1] = {
353 [kDtGpioPeriphIoGpio2] = {
361 [kDtGpioPeriphIoGpio3] = {
369 [kDtGpioPeriphIoGpio4] = {
377 [kDtGpioPeriphIoGpio5] = {
385 [kDtGpioPeriphIoGpio6] = {
393 [kDtGpioPeriphIoGpio7] = {
401 [kDtGpioPeriphIoGpio8] = {
409 [kDtGpioPeriphIoGpio9] = {
417 [kDtGpioPeriphIoGpio10] = {
425 [kDtGpioPeriphIoGpio11] = {
433 [kDtGpioPeriphIoGpio12] = {
441 [kDtGpioPeriphIoGpio13] = {
449 [kDtGpioPeriphIoGpio14] = {
457 [kDtGpioPeriphIoGpio15] = {
465 [kDtGpioPeriphIoGpio16] = {
473 [kDtGpioPeriphIoGpio17] = {
481 [kDtGpioPeriphIoGpio18] = {
489 [kDtGpioPeriphIoGpio19] = {
497 [kDtGpioPeriphIoGpio20] = {
505 [kDtGpioPeriphIoGpio21] = {
513 [kDtGpioPeriphIoGpio22] = {
521 [kDtGpioPeriphIoGpio23] = {
529 [kDtGpioPeriphIoGpio24] = {
537 [kDtGpioPeriphIoGpio25] = {
545 [kDtGpioPeriphIoGpio26] = {
553 [kDtGpioPeriphIoGpio27] = {
561 [kDtGpioPeriphIoGpio28] = {
569 [kDtGpioPeriphIoGpio29] = {
577 [kDtGpioPeriphIoGpio30] = {
585 [kDtGpioPeriphIoGpio31] = {
595 .input_period_counter_count = 0,
605#define TRY_GET_DT(dt, default) ({ if ((dt) < (dt_gpio_t)0 || (int)(dt) >= kDtGpioCount) return (default); &gpio_desc[dt]; })
623 return TRY_GET_DT(dt, 0xdeadbeef)->reg_addr[reg_block];
630 if (first_irq == kDtPlicIrqIdNone) {
631 return kDtPlicIrqIdNone;
641 if (first_irq == kDtPlicIrqIdNone) {
654 return (
dt_alert_id_t)((uint32_t)gpio_desc[dt].first_alert + (uint32_t)alert);
661 if (alert < gpio_desc[dt].first_alert || alert >= gpio_desc[dt].first_alert + (
dt_alert_id_t)count) {
672 return TRY_GET_DT(dt, kDtPeriphIoConstantHighZ)->periph_io[sig];
695 return TRY_GET_DT(dt, 0)->ipgen_ext.input_period_counter_count;