void irq_callback()

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]);
}