GPIO interrupt handler for iMX6ULL

Hello, I am new to device trees.

I have written an interrupt handler driver and made some preliminary device tree updates for a GPIO interrupt, but the GPIO interrupt is still not enabled or executing the interrupt handler. The IRQ domain has not yet been recognized, and I am trying to understand what this means.

At boot, where &gpio3 is gpio@020a4000, the following log is produced:

[ 0.106338] irq: no irq domain found for /soc/aips-bus@02000000/gpio@020a4000 !

Here are snippets of the updates I have from the colibri-imx6ull-wifi.dtsi:

/ {
...
	gpio-intr-cap {
		compatible = "gpio-intr-cap";
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_gpio_int>;
		gpio = <&gpio3 1 GPIO_ACTIVE_HIGH>;
		interrupts = <1 IRQ_TYPE_LEVEL_HIGH>;
		interrupt-parent = <&gpio3>;
	};
};
&iomuxc {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_hog_1 &pinctrl_hog_2 &pinctrl_hog_8
		&pinctrl_hog_4 &pinctrl_hog_5 &pinctrl_hog_9 &pinctrl_hog_10 &pinctrl_hog_11 &pinctrl_gpio_int>;
};

and colibri-imx6ull.dtsi:

&iomuxc {
	imx6ull-colibri {
...
		pinctrl_gpio_int: gpiointgrp {
			fsl,pins = <
				MX6UL_PAD_LCD_ENABLE__GPIO3_IO01			0x1b0b0 /* SODIMM 44 */
			>;
		};
...
};

I am trying to follow the example to this post:

Writing and compiling an out-of-tree kernel module and integrating that into my Yocto build is another problem I haven’t quite solved yet. I am trying to follow solution #1 at this post:

The statement, “Then follow the typical out of tree kernel module process using this environment,” is rather opaque to me. Any help here is appreciated.

BSP 2.8 includes a GPIO driver which supports GPIO interrupts handling on user level. So you don’t need to write you own driver. Please check this article and this doc.

@alex.tx I am familiar with the user space polling methods that can be used to detect an interrupt through sysfs. I am implementing a “safe-shutdown” mechanism that is extremely time dependent. I am not actually sure how long I have before I lose power, but I am guessing it’s on the order of milliseconds. Because sysfs is really slow, I need a better solution: like an actual interrupt handler instead of a polling method.

If you are following example form NXP community, why haven’t you followed it exactly??