stm32f746: to switch on user LED1 & read user button

All discovery boards have one user button & one user LED. Here we are
just reading the button status & switching ON the user LED.

Signed-off-by: Vikas Manocha <vikas.manocha@st.com>
cc: Christophe KERELLO <christophe.kerello@st.com>
This commit is contained in:
Vikas Manocha 2017-04-10 15:03:00 -07:00 committed by Tom Rini
parent 280057bd7d
commit 2f80a9f72e
3 changed files with 48 additions and 0 deletions

View file

@ -78,6 +78,16 @@
gpio9 = &gpioj;
gpio10 = &gpiok;
};
led1 {
compatible = "st,led1";
led-gpio = <&gpioi 1 0>;
};
button1 {
compatible = "st,button1";
button-gpio = <&gpioi 11 0>;
};
};
&clk_hse {

View file

@ -17,6 +17,7 @@
#include <asm/arch/stm32_periph.h>
#include <asm/arch/stm32_defs.h>
#include <asm/arch/syscfg.h>
#include <asm/gpio.h>
DECLARE_GLOBAL_DATA_PTR;
@ -72,6 +73,42 @@ u32 get_board_rev(void)
return 0;
}
int board_late_init(void)
{
struct gpio_desc gpio = {};
int node;
node = fdt_node_offset_by_compatible(gd->fdt_blob, 0, "st,led1");
if (node < 0)
return -1;
gpio_request_by_name_nodev(gd->fdt_blob, node, "led-gpio", 0, &gpio,
GPIOD_IS_OUT);
if (dm_gpio_is_valid(&gpio)) {
dm_gpio_set_value(&gpio, 0);
mdelay(10);
dm_gpio_set_value(&gpio, 1);
}
/* read button 1*/
node = fdt_node_offset_by_compatible(gd->fdt_blob, 0, "st,button1");
if (node < 0)
return -1;
gpio_request_by_name_nodev(gd->fdt_blob, node, "button-gpio", 0, &gpio,
GPIOD_IS_IN);
if (dm_gpio_is_valid(&gpio)) {
if (dm_gpio_get_value(&gpio))
puts("usr button is at HIGH LEVEL\n");
else
puts("usr button is at LOW LEVEL\n");
}
return 0;
}
int board_init(void)
{
gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100;

View file

@ -75,4 +75,5 @@
#define CONFIG_CMD_MEM
#define CONFIG_CMD_CACHE
#define CONFIG_BOARD_LATE_INIT
#endif /* __CONFIG_H */