stm32mp1: add pull-up for gpio button PA13 and PA14
When a push-button is released and PA13/PA14 are defined as input (high-Z) the LED should not be active as the circuit is open but a small current leak through PCB or push-button close the circuit and allows a small LED bias giving erroneous level voltage. So it is recommended to activate an internal pull-up in order to clearly fix the voltage at PA13/PA14 when button is released and to wait a short delay before to read the GPIO value only when the pull-up is correctly configured. Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com> Reviewed-by: Patrice Chotard <patrice.chotard@foss.st.com>
This commit is contained in:
parent
8b71b20e0e
commit
2a7034c77d
3 changed files with 6 additions and 4 deletions
|
@ -17,8 +17,8 @@
|
|||
u-boot,error-led = "error";
|
||||
u-boot,mmc-env-partition = "ssbl";
|
||||
st,adc_usb_pd = <&adc1 18>, <&adc1 19>;
|
||||
st,fastboot-gpios = <&gpioa 13 GPIO_ACTIVE_LOW>;
|
||||
st,stm32prog-gpios = <&gpioa 14 GPIO_ACTIVE_LOW>;
|
||||
st,fastboot-gpios = <&gpioa 13 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
|
||||
st,stm32prog-gpios = <&gpioa 14 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
|
||||
};
|
||||
|
||||
firmware {
|
||||
|
|
|
@ -16,8 +16,8 @@
|
|||
u-boot,boot-led = "heartbeat";
|
||||
u-boot,error-led = "error";
|
||||
u-boot,mmc-env-partition = "ssbl";
|
||||
st,fastboot-gpios = <&gpioa 13 GPIO_ACTIVE_LOW>;
|
||||
st,stm32prog-gpios = <&gpioa 14 GPIO_ACTIVE_LOW>;
|
||||
st,fastboot-gpios = <&gpioa 13 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
|
||||
st,stm32prog-gpios = <&gpioa 14 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
|
||||
};
|
||||
|
||||
firmware {
|
||||
|
|
|
@ -155,6 +155,7 @@ static void board_key_check(void)
|
|||
&gpio, GPIOD_IS_IN)) {
|
||||
log_debug("could not find a /config/st,fastboot-gpios\n");
|
||||
} else {
|
||||
udelay(20);
|
||||
if (dm_gpio_get_value(&gpio)) {
|
||||
log_notice("Fastboot key pressed, ");
|
||||
boot_mode = BOOT_FASTBOOT;
|
||||
|
@ -168,6 +169,7 @@ static void board_key_check(void)
|
|||
&gpio, GPIOD_IS_IN)) {
|
||||
log_debug("could not find a /config/st,stm32prog-gpios\n");
|
||||
} else {
|
||||
udelay(20);
|
||||
if (dm_gpio_get_value(&gpio)) {
|
||||
log_notice("STM32Programmer key pressed, ");
|
||||
boot_mode = BOOT_STM32PROG;
|
||||
|
|
Loading…
Reference in a new issue