12#include "hw/top/dt/dt_gpio.h"
23 uint32_t
reg_addr[kDtGpioRegBlockCount];
24 uint32_t
mem_addr[kDtGpioMemoryCount];
25 uint32_t
mem_size[kDtGpioMemoryCount];
47 [kDtGpioRegBlockCore] = 0x40040000,
61 [kDtGpioPeriphIoGpio0] = {
69 [kDtGpioPeriphIoGpio1] = {
77 [kDtGpioPeriphIoGpio2] = {
85 [kDtGpioPeriphIoGpio3] = {
93 [kDtGpioPeriphIoGpio4] = {
101 [kDtGpioPeriphIoGpio5] = {
109 [kDtGpioPeriphIoGpio6] = {
117 [kDtGpioPeriphIoGpio7] = {
125 [kDtGpioPeriphIoGpio8] = {
133 [kDtGpioPeriphIoGpio9] = {
141 [kDtGpioPeriphIoGpio10] = {
149 [kDtGpioPeriphIoGpio11] = {
157 [kDtGpioPeriphIoGpio12] = {
165 [kDtGpioPeriphIoGpio13] = {
173 [kDtGpioPeriphIoGpio14] = {
181 [kDtGpioPeriphIoGpio15] = {
189 [kDtGpioPeriphIoGpio16] = {
197 [kDtGpioPeriphIoGpio17] = {
205 [kDtGpioPeriphIoGpio18] = {
213 [kDtGpioPeriphIoGpio19] = {
221 [kDtGpioPeriphIoGpio20] = {
229 [kDtGpioPeriphIoGpio21] = {
237 [kDtGpioPeriphIoGpio22] = {
245 [kDtGpioPeriphIoGpio23] = {
253 [kDtGpioPeriphIoGpio24] = {
261 [kDtGpioPeriphIoGpio25] = {
269 [kDtGpioPeriphIoGpio26] = {
277 [kDtGpioPeriphIoGpio27] = {
285 [kDtGpioPeriphIoGpio28] = {
293 [kDtGpioPeriphIoGpio29] = {
301 [kDtGpioPeriphIoGpio30] = {
309 [kDtGpioPeriphIoGpio31] = {
319 .input_period_counter_count = 0,
329#define TRY_GET_DT(dt, default) ({ if ((dt) < (dt_gpio_t)0 || (dt) >= kDtGpioCount) return (default); &gpio_desc[dt]; })
347 return TRY_GET_DT(dt, 0xdeadbeef)->reg_addr[reg_block];
354 return TRY_GET_DT(dt, 0xdeadbeef)->mem_addr[mem];
368 if (first_irq == kDtPlicIrqIdNone) {
369 return kDtPlicIrqIdNone;
379 if (first_irq == kDtPlicIrqIdNone) {
394 return TRY_GET_DT(dt, kDtPeriphIoConstantHighZ)->periph_io[sig];
417 return TRY_GET_DT(dt, 0)->ipgen_ext.input_period_counter_count;