2024-10-04 04:59 AM
Hello
I currently run on hardware STM32MP135f-DK and am preparing for running a custom HW.
When assigning PA12 as a gpio-key in the devicetree,I get this error on boot:
[ 3.544391] genirq: Flags mismatch irq 45. 00000083 (my-input) vs. 00002088 (0-0021)
[ 3.551110] gpio-keys gpio-keys: Unable to claim irq 45; error -16
[ 3.557446] gpio-keys: probe of gpio-keys failed with error -16
The result is that nothing from that gpio-keys-node is initialized (if I run gpioinfo)
PA12 is also referenced by ETH2 by default, and all references to eth2 are removed from my devicetree
This is how I add the new gpio to the devicetree, basically the same as the default user-pa13, but with 12 instead of 13.
gpio-keys {
compatible = "gpio-keys";
my-input {
label = "my-input";
linux,code = <BTN_2>;
gpios = <&gpioa 12 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
};
};
I cannot find anything else pointing at PA12 in the devicetree.
Other pins that I define as gpio-keys work.
Does anyone know what is interfering or where to start looking?
Solved! Go to Solution.
2024-10-04 09:19 AM
Hi,
I think the PA12 is maybe already defined elsewhere.
Various command who could help.
gpioinfo
cat /sys/kernel/debug/gpio
cat /sys/kernel/debug/pinctrl/soc*:pinctrl*/pinconf-pins
Maybe there is link with the HW limitation which does not allow more than one same 'N' for GPIO interrupt on PxN (x ={A...Z}, and N = {0 to 15} )
Regards.
2024-10-04 09:19 AM
Hi,
I think the PA12 is maybe already defined elsewhere.
Various command who could help.
gpioinfo
cat /sys/kernel/debug/gpio
cat /sys/kernel/debug/pinctrl/soc*:pinctrl*/pinconf-pins
Maybe there is link with the HW limitation which does not allow more than one same 'N' for GPIO interrupt on PxN (x ={A...Z}, and N = {0 to 15} )
Regards.
2024-10-07 11:07 PM
gpioinfo: "line 12: "PA12" input"
line 11: "PA11" input active-low bias=pull-up consumer="pa11"
line 12: "PA12" input
line 13: "PA13" input active-low bias=pull-up consumer="User-PA13"
cat /sys/kernel/debug/gpio
gpio-11 (PA11 |pa11 ) in hi IRQ ACTIVE LOW
gpio-12 (PA12 )
gpio-13 (PA13 |User-PA13 ) in hi IRQ ACTIVE LOW
cat /sys/kernel/debug/pinctrl/soc*:pinctrl*/pinconf-pins
pin 11 (PA11): input - high - pull up
pin 12 (PA12): input - high - pull up
pin 13 (PA13): input - high - pull up
I have decompiled the devicetree and tried to look for it, but I cannot find anything about either PA12 or "00002088 (0-0021)"
It seems that it is the hardware limitation that causes it.
Various other pins, A11, A13, B6 and B3 in a gpio-keys-node properly initializes.
I added A12, B12, E12 and H12, (none of which are used according to gpioinfo) into separate gpio-keys-nodes and none of which succeeded to initialize
[ 3.310474] genirq: Flags mismatch irq 45. 00000083 (h12) vs. 00002088 (0-0021)
[ 3.316560] gpio-keys gpio-keys-h12: Unable to claim irq 45; error -16
[ 3.323233] gpio-keys: probe of gpio-keys-h12 failed with error -16
[ 3.329587] genirq: Flags mismatch irq 45. 00000083 (a12) vs. 00002088 (0-0021)
[ 3.336765] gpio-keys gpio-keys-a12: Unable to claim irq 45; error -16
[ 3.343154] gpio-keys: probe of gpio-keys-a12 failed with error -16
[ 3.349581] genirq: Flags mismatch irq 45. 00000083 (b12) vs. 00002088 (0-0021)
[ 3.356786] gpio-keys gpio-keys-b12: Unable to claim irq 45; error -16
[ 3.363296] gpio-keys: probe of gpio-keys-b12 failed with error -16
[ 3.369618] genirq: Flags mismatch irq 45. 00000083 (e12) vs. 00002088 (0-0021)
[ 3.376825] gpio-keys gpio-keys-e12: Unable to claim irq 45; error -16
[ 3.383333] gpio-keys: probe of gpio-keys-e12 failed with error -16
I have not yet managed to find out which pin is interfering.