in common/util/hal_gpio.c [25:64]
void irq_callback(const struct device *dev, struct gpio_callback *cb, uint32_t pins)
{
uint8_t group, index, gpio_num;
if (dev == dev_gpio[gpio_a_d]) {
group = gpio_a_d;
} else if (dev == dev_gpio[gpio_e_h]) {
group = gpio_e_h;
} else if (dev == dev_gpio[gpio_i_l]) {
group = gpio_i_l;
} else if (dev == dev_gpio[gpio_m_p]) {
group = gpio_m_p;
} else if (dev == dev_gpio[gpio_q_t]) {
group = gpio_q_t;
} else if (dev == dev_gpio[gpio_u_v]) {
group = gpio_u_v;
} else {
printk("invalid dev group for isr cb\n");
return;
}
for (index = 0; index < GPIO_GROUP_SIZE; index++) {
if ((pins >> index) & 0x1) {
pins = index;
break;
}
}
if (index == GPIO_GROUP_SIZE) {
printk("irq_callback: pin %x not found\n", pins);
return;
}
gpio_num = (group * GPIO_GROUP_SIZE) + pins;
if (gpio_cfg[gpio_num].int_cb == NULL) {
printk("CB func pointer NULL for gpio num %d\n", gpio_num);
return;
}
k_work_submit_to_queue(&gpio_work_queue, &gpio_work[gpio_num]);
}