2022-05-30 02:48 AM
I am using an STM32MP151 in linux (5.4.56) and therefore using the DTS to setup some GPIOs i need.
I have difficulties setting up PUSH_PULL | PULL_UP configuration in the DTS for my GPIO, while, after linux has booted, using devmem i am successfull in altering the PUPDR for this GPIO and read the new config.
main_ss_en-gpios = <&gpiod 13 (GPIO_ACTIVE_HIGH | GPIO_PUSH_PULL | GPIO_PULL_UP)>;
Howver, when i read the PUPDR register with devmem, this is all zero.
In my board, this gpiobank is at 0x50005000.
After Linux started up, using devmem, i can see:
# devmem 0x5000500c
0x00001000
while it should read 0x08001000 or 0x04001000, depending if i set PU or PD.
If now i set one of those values, devmem should it correctly.
I tried to look at the gpio driver, pinctrl driver, etc ... i cannot see a reason why this is not applied upon parsing the dts.
Am i missing something here ?
THanks,
Jacques
2022-05-31 06:35 AM
Jacques,
I've got similar issue, (need pull up for push button) solved by this kind of things in the dts:
you can check pullup/dn by using gpioinfo command line tool:
something like: gpioinfo gpiochip0
DTS PART:
&pinctrl {
u-boot,dm-pre-reloc;
/*23/06/21: pullup sur bouton*/
foo_pins_a: foo@0 {
pins {
pinmux =<STM32_PINMUX('F', 10, GPIO)>,<STM32_PINMUX('F', 11, GPIO)>,<STM32_PINMUX('F', 12, GPIO)>;
bias-pull-up;
};
};
Elsewhere in the dts
/*23/06/21: gestion bouton*/
buttonkeys {
compatible = "gpio-keys";
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&foo_pins_a>;
top-key-0 {
label="top key";
linux,code=<103>;
};
bot-key-1 {
label="bot key";
linux,code=<108>;
};
ok-key-2 {
label="ok key";
linux,code=<28>;
};
hopes it help a bit
2022-06-01 01:12 AM
Hi,
nice suggestion !
I will try it and keep the results posted here.
Thanks
Jacques
2023-04-16 10:01 PM
got same problem, and Eldam's solution does not work on my machine.
[ 4.103903] gpio-keys buttonkeys: Found button without gpio or irq
[ 4.113005] gpio-keys: probe of buttonkeys failed with error -22