in RISC-V_RV32_THEAD_SMART_CDS/csi_driver/smartl_rv32/devices.c [165:224]
int32_t target_gpio_port_init(port_name_e port, uint32_t *base, uint32_t *irq, void **handler, uint32_t *pin_num)
{
int i;
for (i = 0; i < CONFIG_GPIO_NUM; i++) {
if (sg_gpio_config[i].port == port) {
if (base != NULL) {
*base = sg_gpio_config[i].base;
}
if (irq != NULL) {
*irq = sg_gpio_config[i].irq;
}
if (pin_num != NULL) {
*pin_num = sg_gpio_config[i].pin_num;
}
if (handler != NULL) {
switch (i) {
case 0:
*handler = (void *)GPIO0_IRQHandler;
break;
case 1:
*handler = (void *)GPIO1_IRQHandler;
break;
case 2:
*handler = (void *)GPIO2_IRQHandler;
break;
case 3:
*handler = (void *)GPIO3_IRQHandler;
break;
case 4:
*handler = (void *)GPIO4_IRQHandler;
break;
case 5:
*handler = (void *)GPIO5_IRQHandler;
break;
case 6:
*handler = (void *)GPIO6_IRQHandler;
break;
case 7:
*handler = (void *)GPIO7_IRQHandler;
break;
}
}
return i;
}
}
return -1;
}