AM69: main_gpio4 fails to probe with error, "IRQ index 2 not found".

Part Number: AM69

Tool/software:

Hello.

I am currently working on the requirement to set the CPU affinity of GPIO interrupts. (See the table below.)

As far as my knowledge goes, GPIO interrupts are managed on a per-bank basis. Not in per-pin basis.
In order to meet the requirement, it will be necessary to configure the additional GPIO modules as following table.

In order to achieve this, I enabled three more modules in the device tree file.

&main_gpio2 {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&card_intr_pins_con_2>;
};

&main_gpio4 {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&card_intr_pins_con_4>;
};

&main_gpio6 {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&card_intr_pins_con_6>;
};

When I boot the kernel with this config, GPIO driver prints the following error.

[    1.712423] davinci_gpio 620000.gpio: error -ENXIO: IRQ index 2 not found
[    1.712694] davinci_gpio 630000.gpio: error -ENXIO: IRQ index 0 not found

I also discoverd that a similar discussion was held on AM64x.
https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1000615/processor-sdk-am64x-gpio1-device-fails-to-initialize-with-error-irq-index-2-not-found/3715207?tisearch=e2e-sitesearch&keymatch=IRQ%20index%20not%20found

My SDK version is 11.

Thanks.

  • Hi,

    Let me look into this further and get back to you in a couple days. Thank you for your patience.

    Thanks,

    Neehar

  • Hi,

    Is there any update on this?

    Thanks.

    Minsoo

  • Hi Minsoo,

    To begin, the Linux gpio driver does not support changing or setting the affinity.

    Additionally, are you making any changes to the resource partitioning allocations in rm-cfg.c?

    Could you also provide the GPIO interrupt set up in the dts?

    Thanks,

    Neehar

  • Hi,

    > To begin, the Linux gpio driver does not support changing or setting the affinity.

    Yes, I am aware of that. I forgot to share that I've made some adjustments to GPIO driver and device tree.

    I've added following codes into davinci_gpio_irq_setup() function.

    // In drivers/gpio/gpio-davinci.c
    
    #include <linux/interrupt.h>
    #include <linux/cpumask.h> // Add this
    
    static int davinci_gpio_irq_setup(struct platform_device *pdev) {
    // Add these codes
    	int		is_gpio_affinity_node = 0;
    	u32		binten = 0, cpu_affin_per_bank[5];
    	struct device_node *dn = dev_of_node(dev);
    	cpumask_t new_mask;
    	int cpu=0;
    
    
    		irq_set_chained_handler_and_data(chips->irqs[bank],
    						 gpio_irq_handler, irqdata);
    
    // Add these codes.
    		cpumask_clear(&new_mask);
    		if (is_gpio_affinity_node == 1) {
    			dev_err(dev, "GPIO-AFFINITY) set interrupt map of BANK #%d AFFIN #0x%x\n", bank, cpu_affin_per_bank[bank]);
    			for_each_online_cpu(cpu) {
    				dev_err(dev, "GPIO-AFFINITY) For looping CORE : 0x%x\n", BIT(cpu));
    				if (cpu_affin_per_bank[bank] & BIT(cpu)) {
    					dev_err(dev, "GPIO-AFFINITY) Setting BANK #%d to CORE : 0x%x\n", bank, BIT(cpu));
    					cpumask_set_cpu(cpu, &new_mask);
    				}
    			}
    			ret = irq_set_affinity_and_hint(chips->irqs[bank], &new_mask);
    			if (ret)
    				dev_err(dev, "GPIO-AFFINITY) ERROR OCCURED\n");
    		}
    }

    For device tree, I've added these.

    // k3-am69-sk.dts
    
    &main_pmx0 {
        card_intr_pins_con_0: card-intr-pins-con-0 {
    		pinctrl-single,pins = <
    			J784S4_IOPAD(0x004, PIN_INPUT_PULLDOWN, 7) /* (AG36) MCAN12_TX.GPIO0_1 */ 		
                J784S4_IOPAD(0x008, PIN_INPUT_PULLDOWN, 7) /* (AJ33) MCAN12_RX.GPIO0_2 */ 		
    			J784S4_IOPAD(0x08c, PIN_INPUT_PULLDOWN, 7) /* (AE35) MCASP0_AXR7.GPIO0_35 */ 	
                J784S4_IOPAD(0x0bc, PIN_INPUT_PULLDOWN, 7) /* (AD33) MCASP1_AFSX.GPIO0_47 */ 	
                J784S4_IOPAD(0x0c0, PIN_INPUT_PULLDOWN, 7) /* (AD38) MCASP1_AXR0.GPIO0_48 */ 	
    		>;
    	};
    
    	card_intr_pins_con_2: card-intr-pins-con-2 {
    		pinctrl-single,pins = <
    			J784S4_IOPAD(0x00c, PIN_INPUT_PULLDOWN, 7) /* (AF33) MCAN13_TX.GPIO0_3 */ 		 
                J784S4_IOPAD(0x034, PIN_INPUT_PULLDOWN, 7) /* (AJ34) PMIC_WAKE0n.GPIO0_13 */ 	 
                J784S4_IOPAD(0x090, PIN_INPUT_PULLDOWN, 7) /* (AC35) MCASP0_AXR8.GPIO0_36 */ 	 
    			J784S4_IOPAD(0x0cc, PIN_INPUT_PULLDOWN, 7) /* (AM37) SPI0_CS0.GPIO0_51 */		 
    			J784S4_IOPAD(0x0a4, PIN_INPUT_PULLDOWN, 7) /* (AJ36) MCASP0_AXR13.GPIO0_41 */ 	 
                J784S4_IOPAD(0x0a8, PIN_INPUT_PULLDOWN, 7) /* (AF34) MCASP0_AXR14.GPIO0_42 */ 	 
                J784S4_IOPAD(0x0b8, PIN_INPUT_PULLDOWN, 7) /* (AC34) MCASP1_ACLKX.GPIO0_46 */ 	 
                J784S4_IOPAD(0x06c, PIN_INPUT_PULLDOWN, 7) /* (AJ37) MCAN1_TX.GPIO0_27 */ 		
    			J784S4_IOPAD(0x0cc, PIN_INPUT_PULLDOWN, 7) /* (AM37) SPI0_CS0.GPIO0_51 */		 
    		>;
    	};
    };
    
    &main_gpio0 {
    	status = "okay";
    	pinctrl-names = "default";
    	pinctrl-0 = <&card_intr_pins_con_0>;
    	interrupt-affinity = <0x03>, <0x03>, <0x03>, <0x03>, <0x03>;
    };
    
    &main_gpio2 {
    	status = "okay";
    	pinctrl-names = "default";
    	pinctrl-0 = <&card_intr_pins_con_2>;
    	interrupt-affinity = <0x40>, <0x10>, <0x08>, <0x80>, <0x03>;
    };
    
    &main_gpio4 {
    	status = "okay";
    	pinctrl-names = "default";
    	// The driver fails to probe even without this setting.
    	// pinctrl-0 = <&card_intr_pins_con_4>;
    	// interrupt-affinity = <0x10>, <0x03>, <0x80>, <0x03>, <0x03>;
    };
    
    &main_gpio6 {
    	status = "okay";
    	pinctrl-names = "default";
    	// The driver fails to probe even without this setting.
    	// pinctrl-0 = <&card_intr_pins_con_6>;
    	// interrupt-affinity = <0x20>, <0x03>, <0x10>, <0x03>, <0x03>;
    };

    After booting the Image, Following logs are showed up.

    600000.gpio : main_gpio0
    610000.gpio : main_gpio2
    620000.gpio : main_gpio4
    630000.gpio : main_gpio6

    root@am69-sk:~# dmesg | grep gpio
    [    1.705321] davinci_gpio 42110000.gpio: GPIO-AFFINITY) no interrupt map found.
    [    1.707506] davinci_gpio 600000.gpio: GPIO-AFFINITY) set interrupt map of BANK #0 AFFIN #0x3
    [    1.707511] davinci_gpio 600000.gpio: GPIO-AFFINITY) For looping CORE : 0x1
    [    1.707514] davinci_gpio 600000.gpio: GPIO-AFFINITY) Setting BANK #0 to CORE : 0x1
    [    1.707516] davinci_gpio 600000.gpio: GPIO-AFFINITY) For looping CORE : 0x2
    [    1.707519] davinci_gpio 600000.gpio: GPIO-AFFINITY) Setting BANK #0 to CORE : 0x2
    [    1.707521] davinci_gpio 600000.gpio: GPIO-AFFINITY) For looping CORE : 0x4
    [    1.707523] davinci_gpio 600000.gpio: GPIO-AFFINITY) For looping CORE : 0x8
    [    1.707525] davinci_gpio 600000.gpio: GPIO-AFFINITY) For looping CORE : 0x10
    [    1.707527] davinci_gpio 600000.gpio: GPIO-AFFINITY) For looping CORE : 0x20
    [    1.707529] davinci_gpio 600000.gpio: GPIO-AFFINITY) For looping CORE : 0x40
    [    1.707531] davinci_gpio 600000.gpio: GPIO-AFFINITY) For looping CORE : 0x80
    [    1.707542] davinci_gpio 600000.gpio: GPIO-AFFINITY) set interrupt map of BANK #1 AFFIN #0x3
    [    1.707544] davinci_gpio 600000.gpio: GPIO-AFFINITY) For looping CORE : 0x1
    [    1.707546] davinci_gpio 600000.gpio: GPIO-AFFINITY) Setting BANK #1 to CORE : 0x1
    [    1.707548] davinci_gpio 600000.gpio: GPIO-AFFINITY) For looping CORE : 0x2
    [    1.707550] davinci_gpio 600000.gpio: GPIO-AFFINITY) Setting BANK #1 to CORE : 0x2
    [    1.707552] davinci_gpio 600000.gpio: GPIO-AFFINITY) For looping CORE : 0x4
    [    1.707554] davinci_gpio 600000.gpio: GPIO-AFFINITY) For looping CORE : 0x8
    [    1.707556] davinci_gpio 600000.gpio: GPIO-AFFINITY) For looping CORE : 0x10
    [    1.707558] davinci_gpio 600000.gpio: GPIO-AFFINITY) For looping CORE : 0x20
    [    1.707560] davinci_gpio 600000.gpio: GPIO-AFFINITY) For looping CORE : 0x40
    [    1.707562] davinci_gpio 600000.gpio: GPIO-AFFINITY) For looping CORE : 0x80
    [    1.707572] davinci_gpio 600000.gpio: GPIO-AFFINITY) set interrupt map of BANK #2 AFFIN #0x3
    [    1.707574] davinci_gpio 600000.gpio: GPIO-AFFINITY) For looping CORE : 0x1
    [    1.707576] davinci_gpio 600000.gpio: GPIO-AFFINITY) Setting BANK #2 to CORE : 0x1
    [    1.707578] davinci_gpio 600000.gpio: GPIO-AFFINITY) For looping CORE : 0x2
    [    1.707580] davinci_gpio 600000.gpio: GPIO-AFFINITY) Setting BANK #2 to CORE : 0x2
    [    1.707582] davinci_gpio 600000.gpio: GPIO-AFFINITY) For looping CORE : 0x4
    [    1.707584] davinci_gpio 600000.gpio: GPIO-AFFINITY) For looping CORE : 0x8
    [    1.707586] davinci_gpio 600000.gpio: GPIO-AFFINITY) For looping CORE : 0x10
    [    1.707588] davinci_gpio 600000.gpio: GPIO-AFFINITY) For looping CORE : 0x20
    [    1.707590] davinci_gpio 600000.gpio: GPIO-AFFINITY) For looping CORE : 0x40
    [    1.707592] davinci_gpio 600000.gpio: GPIO-AFFINITY) For looping CORE : 0x80
    [    1.707602] davinci_gpio 600000.gpio: GPIO-AFFINITY) set interrupt map of BANK #3 AFFIN #0x3
    [    1.707604] davinci_gpio 600000.gpio: GPIO-AFFINITY) For looping CORE : 0x1
    [    1.707606] davinci_gpio 600000.gpio: GPIO-AFFINITY) Setting BANK #3 to CORE : 0x1
    [    1.707609] davinci_gpio 600000.gpio: GPIO-AFFINITY) For looping CORE : 0x2
    [    1.707611] davinci_gpio 600000.gpio: GPIO-AFFINITY) Setting BANK #3 to CORE : 0x2
    [    1.707613] davinci_gpio 600000.gpio: GPIO-AFFINITY) For looping CORE : 0x4
    [    1.707614] davinci_gpio 600000.gpio: GPIO-AFFINITY) For looping CORE : 0x8
    [    1.707616] davinci_gpio 600000.gpio: GPIO-AFFINITY) For looping CORE : 0x10
    [    1.707618] davinci_gpio 600000.gpio: GPIO-AFFINITY) For looping CORE : 0x20
    [    1.707620] davinci_gpio 600000.gpio: GPIO-AFFINITY) For looping CORE : 0x40
    [    1.707622] davinci_gpio 600000.gpio: GPIO-AFFINITY) For looping CORE : 0x80
    [    1.707632] davinci_gpio 600000.gpio: GPIO-AFFINITY) set interrupt map of BANK #4 AFFIN #0x3
    [    1.707634] davinci_gpio 600000.gpio: GPIO-AFFINITY) For looping CORE : 0x1
    [    1.707636] davinci_gpio 600000.gpio: GPIO-AFFINITY) Setting BANK #4 to CORE : 0x1
    [    1.707638] davinci_gpio 600000.gpio: GPIO-AFFINITY) For looping CORE : 0x2
    [    1.707640] davinci_gpio 600000.gpio: GPIO-AFFINITY) Setting BANK #4 to CORE : 0x2
    [    1.707642] davinci_gpio 600000.gpio: GPIO-AFFINITY) For looping CORE : 0x4
    [    1.707644] davinci_gpio 600000.gpio: GPIO-AFFINITY) For looping CORE : 0x8
    [    1.707645] davinci_gpio 600000.gpio: GPIO-AFFINITY) For looping CORE : 0x10
    [    1.707647] davinci_gpio 600000.gpio: GPIO-AFFINITY) For looping CORE : 0x20
    [    1.707649] davinci_gpio 600000.gpio: GPIO-AFFINITY) For looping CORE : 0x40
    [    1.707651] davinci_gpio 600000.gpio: GPIO-AFFINITY) For looping CORE : 0x80
    [    1.709805] davinci_gpio 610000.gpio: GPIO-AFFINITY) set interrupt map of BANK #0 AFFIN #0x40
    [    1.709810] davinci_gpio 610000.gpio: GPIO-AFFINITY) For looping CORE : 0x1
    [    1.709812] davinci_gpio 610000.gpio: GPIO-AFFINITY) For looping CORE : 0x2
    [    1.709815] davinci_gpio 610000.gpio: GPIO-AFFINITY) For looping CORE : 0x4
    [    1.709816] davinci_gpio 610000.gpio: GPIO-AFFINITY) For looping CORE : 0x8
    [    1.709819] davinci_gpio 610000.gpio: GPIO-AFFINITY) For looping CORE : 0x10
    [    1.709821] davinci_gpio 610000.gpio: GPIO-AFFINITY) For looping CORE : 0x20
    [    1.709823] davinci_gpio 610000.gpio: GPIO-AFFINITY) For looping CORE : 0x40
    [    1.709824] davinci_gpio 610000.gpio: GPIO-AFFINITY) Setting BANK #0 to CORE : 0x40
    [    1.709827] davinci_gpio 610000.gpio: GPIO-AFFINITY) For looping CORE : 0x80
    [    1.709837] davinci_gpio 610000.gpio: GPIO-AFFINITY) set interrupt map of BANK #1 AFFIN #0x10
    [    1.709839] davinci_gpio 610000.gpio: GPIO-AFFINITY) For looping CORE : 0x1
    [    1.709841] davinci_gpio 610000.gpio: GPIO-AFFINITY) For looping CORE : 0x2
    [    1.709843] davinci_gpio 610000.gpio: GPIO-AFFINITY) For looping CORE : 0x4
    [    1.709845] davinci_gpio 610000.gpio: GPIO-AFFINITY) For looping CORE : 0x8
    [    1.709847] davinci_gpio 610000.gpio: GPIO-AFFINITY) For looping CORE : 0x10
    [    1.709849] davinci_gpio 610000.gpio: GPIO-AFFINITY) Setting BANK #1 to CORE : 0x10
    [    1.709851] davinci_gpio 610000.gpio: GPIO-AFFINITY) For looping CORE : 0x20
    [    1.709854] davinci_gpio 610000.gpio: GPIO-AFFINITY) For looping CORE : 0x40
    [    1.709856] davinci_gpio 610000.gpio: GPIO-AFFINITY) For looping CORE : 0x80
    [    1.709865] davinci_gpio 610000.gpio: GPIO-AFFINITY) set interrupt map of BANK #2 AFFIN #0x8
    [    1.709868] davinci_gpio 610000.gpio: GPIO-AFFINITY) For looping CORE : 0x1
    [    1.709870] davinci_gpio 610000.gpio: GPIO-AFFINITY) For looping CORE : 0x2
    [    1.709871] davinci_gpio 610000.gpio: GPIO-AFFINITY) For looping CORE : 0x4
    [    1.709873] davinci_gpio 610000.gpio: GPIO-AFFINITY) For looping CORE : 0x8
    [    1.709875] davinci_gpio 610000.gpio: GPIO-AFFINITY) Setting BANK #2 to CORE : 0x8
    [    1.709877] davinci_gpio 610000.gpio: GPIO-AFFINITY) For looping CORE : 0x10
    [    1.709879] davinci_gpio 610000.gpio: GPIO-AFFINITY) For looping CORE : 0x20
    [    1.709881] davinci_gpio 610000.gpio: GPIO-AFFINITY) For looping CORE : 0x40
    [    1.709883] davinci_gpio 610000.gpio: GPIO-AFFINITY) For looping CORE : 0x80
    [    1.709893] davinci_gpio 610000.gpio: GPIO-AFFINITY) set interrupt map of BANK #3 AFFIN #0x80
    [    1.709895] davinci_gpio 610000.gpio: GPIO-AFFINITY) For looping CORE : 0x1
    [    1.709897] davinci_gpio 610000.gpio: GPIO-AFFINITY) For looping CORE : 0x2
    [    1.709899] davinci_gpio 610000.gpio: GPIO-AFFINITY) For looping CORE : 0x4
    [    1.709901] davinci_gpio 610000.gpio: GPIO-AFFINITY) For looping CORE : 0x8
    [    1.709903] davinci_gpio 610000.gpio: GPIO-AFFINITY) For looping CORE : 0x10
    [    1.709904] davinci_gpio 610000.gpio: GPIO-AFFINITY) For looping CORE : 0x20
    [    1.709906] davinci_gpio 610000.gpio: GPIO-AFFINITY) For looping CORE : 0x40
    [    1.709908] davinci_gpio 610000.gpio: GPIO-AFFINITY) For looping CORE : 0x80
    [    1.709910] davinci_gpio 610000.gpio: GPIO-AFFINITY) Setting BANK #3 to CORE : 0x80
    [    1.709920] davinci_gpio 610000.gpio: GPIO-AFFINITY) set interrupt map of BANK #4 AFFIN #0x3
    [    1.709922] davinci_gpio 610000.gpio: GPIO-AFFINITY) For looping CORE : 0x1
    [    1.709924] davinci_gpio 610000.gpio: GPIO-AFFINITY) Setting BANK #4 to CORE : 0x1
    [    1.709926] davinci_gpio 610000.gpio: GPIO-AFFINITY) For looping CORE : 0x2
    [    1.709928] davinci_gpio 610000.gpio: GPIO-AFFINITY) Setting BANK #4 to CORE : 0x2
    [    1.709930] davinci_gpio 610000.gpio: GPIO-AFFINITY) For looping CORE : 0x4
    [    1.709932] davinci_gpio 610000.gpio: GPIO-AFFINITY) For looping CORE : 0x8
    [    1.709934] davinci_gpio 610000.gpio: GPIO-AFFINITY) For looping CORE : 0x10
    [    1.709936] davinci_gpio 610000.gpio: GPIO-AFFINITY) For looping CORE : 0x20
    [    1.709939] davinci_gpio 610000.gpio: GPIO-AFFINITY) For looping CORE : 0x40
    [    1.709941] davinci_gpio 610000.gpio: GPIO-AFFINITY) For looping CORE : 0x80
    [    1.710311] davinci_gpio 620000.gpio: error -ENXIO: IRQ index 2 not found
    [    1.710571] davinci_gpio 630000.gpio: error -ENXIO: IRQ index 0 not found
    

    To sure that GPIO affinity settings are applied, I used uio driver and read /proc/interrupts.

    [ GPIO # ] -> [ GPIO Module # that used in uio device node] -> [ uio # ]
    1. GPIO0_42 -> MAIN_GPIO0 (Affinity set to CPU#0) -> uio0
    2. GPIO0_36 -> MAIN_GPIO2 (Affinity set to CPU#3) -> uio1

    Result of cat /proc/interrupts :

    Device nodes used for test :

    uio0: uio0 {
    	compatible = "uio-gpio";
    	status = "okay";
    	interrupt-parent = <&main_gpio0>;
    	interrupts = <42 IRQ_TYPE_EDGE_RISING>;
    };
    
    uio1: uio1 {
    	compatible = "uio-gpio";
    	status = "okay";
    	interrupt-parent = <&main_gpio2>;
    	interrupts = <36 IRQ_TYPE_EDGE_RISING>;
    };

    > Additionally, are you making any changes to the resource partitioning allocations in rm-cfg.c?

    I do not aware of rm-cfg.c.
    Where can I find this?

    Thanks.

  • Hi Minsoo,

    Are you running RTOS on R5F cores as well? If so, what GPIO or controllers are you using?

    If the GPIO IRQs are first requested/owned by MCU2_0 firmware, the device manager (DM) marks the GPIO resource as allocated to MCU2_0.
    So when you run in Linux, the GPIO driver in A72 is requesting for the same interrupts which is not acknowledged and causes the GPIO driver to error out.

    Thanks,

    Neehar

  • Hi,

    Are you running RTOS on R5F cores as well?

    Since I am using the default settings provided by Ti SDK, I think it depends on the default setting of Yocto SDK.

    Is it default to run RTOS image on R5F cores?

    Thanks.

    Minsoo

  • Hi Minsoo,

    Could you please test with the following driver patch:

    diff --git a/drivers/gpio/gpio-davinci.c b/drivers/gpio/gpio-davinci.c
    index 69f3d864f69d..f5757d0c37a0 100644
    --- a/drivers/gpio/gpio-davinci.c
    +++ b/drivers/gpio/gpio-davinci.c
    @@ -238,11 +238,13 @@ static int davinci_gpio_probe(struct platform_device *pdev)
     	if (IS_ERR(gpio_base))
     		return PTR_ERR(gpio_base);
     
    +#if 0
     	for (i = 0; i < nirq; i++) {
     		chips->irqs[i] = platform_get_irq(pdev, i);
     		if (chips->irqs[i] < 0)
     			return dev_err_probe(dev, chips->irqs[i], "IRQ not populated\n");
     	}
    +#endif
     
     	chips->chip.label = dev_name(dev);
     
    @@ -271,9 +273,11 @@ static int davinci_gpio_probe(struct platform_device *pdev)
     		return ret;
     
     	platform_set_drvdata(pdev, chips);
    +#if 0
     	ret = davinci_gpio_irq_setup(pdev);
     	if (ret)
     		return ret;
    +#endif
     
     	return 0;
     }
    

    Thanks,

    Neehar

  • Hi.

    I've tried the patch.

    It removes the error. But, as the patch removes the IRQ setup procedure of the driver, other drivers that depends on the GPIO interrupts are not working at all.

    Thanks,

  • Hi Minsoo,

    I will speak to another engineer to take a look and help with your issue.

    Thanks,

    Neehar

  • Hello,

    Any update on this?

    Thanks.

  • Hi Minsoo,

    Support will be very limited on this topic. We have not validated this feature under Linux.

    Jared, who has helped in a previous E2E thread, has entered an internal Jira ticket to support CPU affinity of GPIO interrupts. Due to backlog of other pending feature requests, we have not been able to schedule this feature into the roadmap, but we are planning to implement in the future.

    Regards,

    Takuma

  • Hello,

    It seems my inquiry was not interpreted correctly.
    I am fully aware that IRQ affinity related functionality is not possible.

    What I am currently inquiring about is that while I successfully activated main_gpio0 and main_gpio2, when I added main_gpio4 and main_gpio6 by setting their status to “okay” to activate them, it became impossible to register any IRQs starting from IRQ index 2 on main_gpio4.

    With this device tree file...

    // k3-am69-sk.dts
    
    &main_gpio0 {
    	status = "okay";
    	pinctrl-names = "default";
    };
    
    &main_gpio2 {
    	status = "okay";
    	pinctrl-names = "default";
    };
    
    &main_gpio4 { // <~ main_gpio4 IRQ index 2 causes error
    	status = "okay";
    	pinctrl-names = "default";
    };
    
    &main_gpio6 { // All of the IRQ causes error.
    	status = "okay";
    	pinctrl-names = "default";
    };

    causes errors while probing GPIO controller #4, #6.

    [    1.710311] davinci_gpio 620000.gpio: error -ENXIO: IRQ index 2 not found
    [    1.710571] davinci_gpio 630000.gpio: error -ENXIO: IRQ index 0 not found

    Thanks.

  • Hi Minsoo,

    Please reference this E2E for main_gpio2, main_gpio4, and main_gpio6 usage:  RE: DRA821U: GPIO Banks and groups in DRA821 processor 

    Regards,

    Takuma