boards: stm32: add button and leds gpio definitions

Provide led and button nodes to stm32 based boards.
Provide matching zephyr aliases.

Signed-off-by: Erwan Gouriou <erwan.gouriou@linaro.org>
diff --git a/boards/arm/96b_argonkey/96b_argonkey.dts b/boards/arm/96b_argonkey/96b_argonkey.dts
index bb67d75..01fe99f 100644
--- a/boards/arm/96b_argonkey/96b_argonkey.dts
+++ b/boards/arm/96b_argonkey/96b_argonkey.dts
@@ -16,6 +16,34 @@
 		zephyr,sram = &sram0;
 		zephyr,flash = &flash0;
 	};
+
+	leds {
+		compatible = "gpio-leds";
+		green_led_0: led@0 {
+			gpios = <&gpioc 13 GPIO_INT_ACTIVE_HIGH>;
+			label = "USR0 LED";
+		};
+		green_led_1: led@1 {
+			gpios = <&gpiob 2 GPIO_INT_ACTIVE_HIGH>;
+			label = "USR1 LED";
+		};
+	};
+
+	gpio_keys {
+		compatible = "gpio-keys";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		user_button: button@0 {
+			label = "User";
+			gpios = <&gpioa 2 GPIO_INT_ACTIVE_LOW>;
+		};
+	};
+
+	aliases {
+		led0 = &green_led_0;
+		led1 = &green_led_1;
+		sw0 = &user_button;
+	};
 };
 
 &usart1 {
diff --git a/boards/arm/96b_carbon/96b_carbon.dts b/boards/arm/96b_carbon/96b_carbon.dts
index 30c3544..8872cfa 100644
--- a/boards/arm/96b_carbon/96b_carbon.dts
+++ b/boards/arm/96b_carbon/96b_carbon.dts
@@ -16,6 +16,39 @@
 		zephyr,sram = &sram0;
 		zephyr,flash = &flash0;
 	};
+
+	leds {
+		compatible = "gpio-leds";
+		green_led_1: led@0 {
+			gpios = <&gpiod 2 GPIO_INT_ACTIVE_HIGH>;
+			label = "USR1 LED";
+		};
+		green_led_2: led@1 {
+			gpios = <&gpioa 15 GPIO_INT_ACTIVE_HIGH>;
+			label = "USR2 LED";
+		};
+		bt_blue_led: led@2 {
+			gpios = <&gpioa 15 GPIO_INT_ACTIVE_HIGH>;
+			label = "BT LED";
+		};
+	};
+
+	gpio_keys {
+		compatible = "gpio-keys";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		user_button: button@0 {
+			label = "User";
+			gpios = <&gpiob 2 GPIO_INT_ACTIVE_LOW>;
+		};
+	};
+
+	aliases {
+		led0 = &green_led_1;
+		led1 = &green_led_2;
+		led2 = &bt_blue_led;
+		sw0 = &user_button;
+	};
 };
 
 &usart1 {
diff --git a/boards/arm/96b_neonkey/96b_neonkey.dts b/boards/arm/96b_neonkey/96b_neonkey.dts
index a7c0768..14bcef4 100644
--- a/boards/arm/96b_neonkey/96b_neonkey.dts
+++ b/boards/arm/96b_neonkey/96b_neonkey.dts
@@ -16,6 +16,44 @@
 		zephyr,sram = &sram0;
 		zephyr,flash = &flash0;
 	};
+
+	leds {
+		compatible = "gpio-leds";
+		green_led_0: led@0 {
+			gpios = <&gpiob 12 GPIO_INT_ACTIVE_HIGH>;
+			label = "USR0 LED";
+		};
+		green_led_1: led@1 {
+			gpios = <&gpiob 13 GPIO_INT_ACTIVE_HIGH>;
+			label = "USR1 LED";
+		};
+		green_led_2: led@2 {
+			gpios = <&gpiob 14 GPIO_INT_ACTIVE_HIGH>;
+			label = "USR2 LED";
+		};
+		green_led_3: led@3 {
+			gpios = <&gpiob 15 GPIO_INT_ACTIVE_HIGH>;
+			label = "USR3 LED";
+		};
+	};
+
+	gpio_keys {
+		compatible = "gpio-keys";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		user_button: button@0 {
+			label = "User";
+			gpios = <&gpiob 2 GPIO_INT_ACTIVE_LOW>;
+		};
+	};
+
+	aliases {
+		led0 = &green_led_0;
+		led1 = &green_led_1;
+		led2 = &green_led_2;
+		led3 = &green_led_3;
+		sw0 = &user_button;
+	};
 };
 
 &usart1 {
diff --git a/boards/arm/disco_l475_iot1/disco_l475_iot1.dts b/boards/arm/disco_l475_iot1/disco_l475_iot1.dts
index d0f653d..2f2fa95 100644
--- a/boards/arm/disco_l475_iot1/disco_l475_iot1.dts
+++ b/boards/arm/disco_l475_iot1/disco_l475_iot1.dts
@@ -16,6 +16,34 @@
 		zephyr,sram = &sram0;
 		zephyr,flash = &flash0;
 	};
+
+	leds {
+		compatible = "gpio-leds";
+		green_led_1: led@0 {
+			gpios = <&gpioa 5 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD1";
+		};
+		green_led_2: led@1 {
+			gpios = <&gpiob 14 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD2";
+		};
+	};
+
+	gpio_keys {
+		compatible = "gpio-keys";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		user_button: button@0 {
+			label = "User";
+			gpios = <&gpioc 13 GPIO_INT_ACTIVE_LOW>;
+		};
+	};
+
+	aliases {
+		led0 = &green_led_2;
+		led1 = &green_led_1;
+		sw0 = &user_button;
+	};
 };
 
 &usart1 {
diff --git a/boards/arm/nucleo_f030r8/nucleo_f030r8.dts b/boards/arm/nucleo_f030r8/nucleo_f030r8.dts
index 14fb312..bd0db6c 100644
--- a/boards/arm/nucleo_f030r8/nucleo_f030r8.dts
+++ b/boards/arm/nucleo_f030r8/nucleo_f030r8.dts
@@ -16,6 +16,29 @@
 		zephyr,sram = &sram0;
 		zephyr,flash = &flash0;
 	};
+
+	leds {
+		compatible = "gpio-leds";
+		green_led_2: led@0 {
+			gpios = <&gpioa 5 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD2";
+		};
+	};
+
+	gpio_keys {
+		compatible = "gpio-keys";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		user_button: button@0 {
+			label = "User";
+			gpios = <&gpioc 13 GPIO_INT_ACTIVE_LOW>;
+		};
+	};
+
+	aliases {
+		led0 = &green_led_2;
+		sw0 = &user_button;
+	};
 };
 
 &usart1 {
diff --git a/boards/arm/nucleo_f070rb/nucleo_f070rb.dts b/boards/arm/nucleo_f070rb/nucleo_f070rb.dts
index cdcf07f..97d27da 100644
--- a/boards/arm/nucleo_f070rb/nucleo_f070rb.dts
+++ b/boards/arm/nucleo_f070rb/nucleo_f070rb.dts
@@ -16,6 +16,29 @@
 		zephyr,sram = &sram0;
 		zephyr,flash = &flash0;
 	};
+
+	leds {
+		compatible = "gpio-leds";
+		green_led_2: led@0 {
+			gpios = <&gpioa 5 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD2";
+		};
+	};
+
+	gpio_keys {
+		compatible = "gpio-keys";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		user_button: button@0 {
+			label = "User";
+			gpios = <&gpioc 13 GPIO_INT_ACTIVE_LOW>;
+		};
+	};
+
+	aliases {
+		led0 = &green_led_2;
+		sw0 = &user_button;
+	};
 };
 
 &usart2 {
diff --git a/boards/arm/nucleo_f091rc/nucleo_f091rc.dts b/boards/arm/nucleo_f091rc/nucleo_f091rc.dts
index 34ffe3e..d2f1fb1 100644
--- a/boards/arm/nucleo_f091rc/nucleo_f091rc.dts
+++ b/boards/arm/nucleo_f091rc/nucleo_f091rc.dts
@@ -16,6 +16,29 @@
 		zephyr,sram = &sram0;
 		zephyr,flash = &flash0;
 	};
+
+	leds {
+		compatible = "gpio-leds";
+		green_led_2: led@0 {
+			gpios = <&gpioa 5 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD2";
+		};
+	};
+
+	gpio_keys {
+		compatible = "gpio-keys";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		user_button: button@0 {
+			label = "User";
+			gpios = <&gpioc 13 GPIO_INT_ACTIVE_LOW>;
+		};
+	};
+
+	aliases {
+		led0 = &green_led_2;
+		sw0 = &user_button;
+	};
 };
 
 &usart1 {
diff --git a/boards/arm/nucleo_f103rb/nucleo_f103rb.dts b/boards/arm/nucleo_f103rb/nucleo_f103rb.dts
index 7e4e081..6dc8a13 100644
--- a/boards/arm/nucleo_f103rb/nucleo_f103rb.dts
+++ b/boards/arm/nucleo_f103rb/nucleo_f103rb.dts
@@ -16,6 +16,29 @@
 		zephyr,sram = &sram0;
 		zephyr,flash = &flash0;
 	};
+
+	leds {
+		compatible = "gpio-leds";
+		green_led_2: led@0 {
+			gpios = <&gpioa 5 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD2";
+		};
+	};
+
+	gpio_keys {
+		compatible = "gpio-keys";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		user_button: button@0 {
+			label = "User";
+			gpios = <&gpioc 13 GPIO_INT_ACTIVE_LOW>;
+		};
+	};
+
+	aliases {
+		led0 = &green_led_2;
+		sw0 = &user_button;
+	};
 };
 
 &usart1 {
diff --git a/boards/arm/nucleo_f334r8/nucleo_f334r8.dts b/boards/arm/nucleo_f334r8/nucleo_f334r8.dts
index 396dfe7..853f1f4 100644
--- a/boards/arm/nucleo_f334r8/nucleo_f334r8.dts
+++ b/boards/arm/nucleo_f334r8/nucleo_f334r8.dts
@@ -16,6 +16,29 @@
 		zephyr,sram = &sram0;
 		zephyr,flash = &flash0;
 	};
+
+	leds {
+		compatible = "gpio-leds";
+		green_led_2: led@0 {
+			gpios = <&gpioa 5 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD2";
+		};
+	};
+
+	gpio_keys {
+		compatible = "gpio-keys";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		user_button: button@0 {
+			label = "User";
+			gpios = <&gpioc 13 GPIO_INT_ACTIVE_LOW>;
+		};
+	};
+
+	aliases {
+		led0 = &green_led_2;
+		sw0 = &user_button;
+	};
 };
 
 &usart1 {
diff --git a/boards/arm/nucleo_f401re/nucleo_f401re.dts b/boards/arm/nucleo_f401re/nucleo_f401re.dts
index ceb8407..56b826a 100644
--- a/boards/arm/nucleo_f401re/nucleo_f401re.dts
+++ b/boards/arm/nucleo_f401re/nucleo_f401re.dts
@@ -16,6 +16,29 @@
 		zephyr,sram = &sram0;
 		zephyr,flash = &flash0;
 	};
+
+	leds {
+		compatible = "gpio-leds";
+		green_led_2: led@0 {
+			gpios = <&gpioa 5 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD2";
+		};
+	};
+
+	gpio_keys {
+		compatible = "gpio-keys";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		user_button: button@0 {
+			label = "User";
+			gpios = <&gpioc 13 GPIO_INT_ACTIVE_LOW>;
+		};
+	};
+
+	aliases {
+		led0 = &green_led_2;
+		sw0 = &user_button;
+	};
 };
 
 &usart1 {
diff --git a/boards/arm/nucleo_f411re/nucleo_f411re.dts b/boards/arm/nucleo_f411re/nucleo_f411re.dts
index fe74be7..f800a84 100644
--- a/boards/arm/nucleo_f411re/nucleo_f411re.dts
+++ b/boards/arm/nucleo_f411re/nucleo_f411re.dts
@@ -16,6 +16,29 @@
 		zephyr,sram = &sram0;
 		zephyr,flash = &flash0;
 	};
+
+	leds {
+		compatible = "gpio-leds";
+		green_led_2: led@0 {
+			gpios = <&gpioa 5 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD2";
+		};
+	};
+
+	gpio_keys {
+		compatible = "gpio-keys";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		user_button: button@0 {
+			label = "User";
+			gpios = <&gpioc 13 GPIO_INT_ACTIVE_LOW>;
+		};
+	};
+
+	aliases {
+		led0 = &green_led_2;
+		sw0 = &user_button;
+	};
 };
 
 &usart1 {
diff --git a/boards/arm/nucleo_f412zg/nucleo_f412zg.dts b/boards/arm/nucleo_f412zg/nucleo_f412zg.dts
index 0a73c85..9d5ae8b 100644
--- a/boards/arm/nucleo_f412zg/nucleo_f412zg.dts
+++ b/boards/arm/nucleo_f412zg/nucleo_f412zg.dts
@@ -16,6 +16,39 @@
 		zephyr,sram = &sram0;
 		zephyr,flash = &flash0;
 	};
+
+	leds {
+		compatible = "gpio-leds";
+		green_led_1: led@0 {
+			gpios = <&gpiob 0 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD1";
+		};
+		blue_led_1: led@1 {
+			gpios = <&gpiob 7 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD2";
+		};
+		red_led_1: led@2 {
+			gpios = <&gpiob 14 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD3";
+		};
+	};
+
+	gpio_keys {
+		compatible = "gpio-keys";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		user_button: button@0 {
+			label = "User";
+			gpios = <&gpioc 13 GPIO_INT_ACTIVE_LOW>;
+		};
+	};
+
+	aliases {
+		led0 = &green_led_1;
+		led1 = &blue_led_1;
+		led2 = &red_led_1;
+		sw0 = &user_button;
+	};
 };
 
 &usart3 {
diff --git a/boards/arm/nucleo_f413zh/nucleo_f413zh.dts b/boards/arm/nucleo_f413zh/nucleo_f413zh.dts
index a17c2cd..78fd180 100644
--- a/boards/arm/nucleo_f413zh/nucleo_f413zh.dts
+++ b/boards/arm/nucleo_f413zh/nucleo_f413zh.dts
@@ -16,6 +16,39 @@
 		zephyr,sram = &sram0;
 		zephyr,flash = &flash0;
 	};
+
+	leds {
+		compatible = "gpio-leds";
+		green_led_1: led@0 {
+			gpios = <&gpiob 0 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD1";
+		};
+		blue_led_1: led@1 {
+			gpios = <&gpiob 7 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD2";
+		};
+		red_led_1: led@2 {
+			gpios = <&gpiob 14 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD3";
+		};
+	};
+
+	gpio_keys {
+		compatible = "gpio-keys";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		user_button: button@0 {
+			label = "User";
+			gpios = <&gpioc 13 GPIO_INT_ACTIVE_LOW>;
+		};
+	};
+
+	aliases {
+		led0 = &green_led_1;
+		led1 = &blue_led_1;
+		led2 = &red_led_1;
+		sw0 = &user_button;
+	};
 };
 
 &usart3 {
diff --git a/boards/arm/nucleo_f429zi/nucleo_f429zi.dts b/boards/arm/nucleo_f429zi/nucleo_f429zi.dts
index ecbe159..8af99b7 100644
--- a/boards/arm/nucleo_f429zi/nucleo_f429zi.dts
+++ b/boards/arm/nucleo_f429zi/nucleo_f429zi.dts
@@ -16,6 +16,39 @@
 		zephyr,sram = &sram0;
 		zephyr,flash = &flash0;
 	};
+
+	leds {
+		compatible = "gpio-leds";
+		green_led_1: led@0 {
+			gpios = <&gpiob 0 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD1";
+		};
+		blue_led_1: led@1 {
+			gpios = <&gpiob 7 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD2";
+		};
+		red_led_1: led@2 {
+			gpios = <&gpiob 14 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD3";
+		};
+	};
+
+	gpio_keys {
+		compatible = "gpio-keys";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		user_button: button@0 {
+			label = "User";
+			gpios = <&gpioc 13 GPIO_INT_ACTIVE_LOW>;
+		};
+	};
+
+	aliases {
+		led0 = &green_led_1;
+		led1 = &blue_led_1;
+		led2 = &red_led_1;
+		sw0 = &user_button;
+	};
 };
 
 &i2c1 {
diff --git a/boards/arm/nucleo_f446re/nucleo_f446re.dts b/boards/arm/nucleo_f446re/nucleo_f446re.dts
index 5468aa6..2324c66 100644
--- a/boards/arm/nucleo_f446re/nucleo_f446re.dts
+++ b/boards/arm/nucleo_f446re/nucleo_f446re.dts
@@ -16,6 +16,29 @@
 		zephyr,sram = &sram0;
 		zephyr,flash = &flash0;
 	};
+
+	leds {
+		compatible = "gpio-leds";
+		green_led_2: led@0 {
+			gpios = <&gpioa 5 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD2";
+		};
+	};
+
+	gpio_keys {
+		compatible = "gpio-keys";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		user_button: button@0 {
+			label = "User";
+			gpios = <&gpioc 13 GPIO_INT_ACTIVE_LOW>;
+		};
+	};
+
+	aliases {
+		led0 = &green_led_2;
+		sw0 = &user_button;
+	};
 };
 
 &usart1 {
@@ -36,4 +59,3 @@
 	status = "ok";
 	clock-frequency = <I2C_BITRATE_FAST>;
 };
-
diff --git a/boards/arm/nucleo_l073rz/nucleo_l073rz.dts b/boards/arm/nucleo_l073rz/nucleo_l073rz.dts
index 63d84fc..d78fe57 100644
--- a/boards/arm/nucleo_l073rz/nucleo_l073rz.dts
+++ b/boards/arm/nucleo_l073rz/nucleo_l073rz.dts
@@ -16,6 +16,29 @@
 		zephyr,sram = &sram0;
 		zephyr,flash = &flash0;
 	};
+
+	leds {
+		compatible = "gpio-leds";
+		green_led_2: led@0 {
+			gpios = <&gpioa 5 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD2";
+		};
+	};
+
+	gpio_keys {
+		compatible = "gpio-keys";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		user_button: button@0 {
+			label = "User";
+			gpios = <&gpioc 13 GPIO_INT_ACTIVE_LOW>;
+		};
+	};
+
+	aliases {
+		led0 = &green_led_2;
+		sw0 = &user_button;
+	};
 };
 
 &usart1 {
diff --git a/boards/arm/nucleo_l432kc/nucleo_l432kc.dts b/boards/arm/nucleo_l432kc/nucleo_l432kc.dts
index 60c0925..9c09d17 100644
--- a/boards/arm/nucleo_l432kc/nucleo_l432kc.dts
+++ b/boards/arm/nucleo_l432kc/nucleo_l432kc.dts
@@ -16,6 +16,29 @@
 		zephyr,sram = &sram0;
 		zephyr,flash = &flash0;
 	};
+
+	leds {
+		compatible = "gpio-leds";
+		green_led_2: led@0 {
+			gpios = <&gpioa 5 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD2";
+		};
+	};
+
+	gpio_keys {
+		compatible = "gpio-keys";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		user_button: button@0 {
+			label = "User";
+			gpios = <&gpioc 13 GPIO_INT_ACTIVE_LOW>;
+		};
+	};
+
+	aliases {
+		led0 = &green_led_2;
+		sw0 = &user_button;
+	};
 };
 
 &usart1 {
diff --git a/boards/arm/nucleo_l476rg/nucleo_l476rg.dts b/boards/arm/nucleo_l476rg/nucleo_l476rg.dts
index 749be78..bfe8236 100644
--- a/boards/arm/nucleo_l476rg/nucleo_l476rg.dts
+++ b/boards/arm/nucleo_l476rg/nucleo_l476rg.dts
@@ -16,6 +16,29 @@
 		zephyr,sram = &sram0;
 		zephyr,flash = &flash0;
 	};
+
+	leds {
+		compatible = "gpio-leds";
+		green_led_2: led@0 {
+			gpios = <&gpioa 5 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD2";
+		};
+	};
+
+	gpio_keys {
+		compatible = "gpio-keys";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		user_button: button@0 {
+			label = "User";
+			gpios = <&gpioc 13 GPIO_INT_ACTIVE_LOW>;
+		};
+	};
+
+	aliases {
+		led0 = &green_led_2;
+		sw0 = &user_button;
+	};
 };
 
 &usart1 {
diff --git a/boards/arm/olimex_stm32_e407/olimex_stm32_e407.dts b/boards/arm/olimex_stm32_e407/olimex_stm32_e407.dts
index 597ce17..94ad868 100644
--- a/boards/arm/olimex_stm32_e407/olimex_stm32_e407.dts
+++ b/boards/arm/olimex_stm32_e407/olimex_stm32_e407.dts
@@ -17,6 +17,29 @@
 		zephyr,flash = &flash0;
 		zephyr,ccm = &ccm0;
 	};
+
+	leds {
+		compatible = "gpio-leds";
+		green_led_1: led@0 {
+			gpios = <&gpioc 13 GPIO_INT_ACTIVE_HIGH>;
+			label = "LED1";
+		};
+	};
+
+	gpio_keys {
+		compatible = "gpio-keys";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		user_button: button@0 {
+			label = "Key";
+			gpios = <&gpioa 0 GPIO_INT_ACTIVE_LOW>;
+		};
+	};
+
+	aliases {
+		led0 = &green_led_1;
+		sw0 = &user_button;
+	};
 };
 
 &usart1 {
@@ -39,4 +62,3 @@
 	pinctrl-names = "default";
 	status = "ok";
 };
-
diff --git a/boards/arm/olimex_stm32_h407/olimex_stm32_h407.dts b/boards/arm/olimex_stm32_h407/olimex_stm32_h407.dts
index 8415c2e..1c47285 100644
--- a/boards/arm/olimex_stm32_h407/olimex_stm32_h407.dts
+++ b/boards/arm/olimex_stm32_h407/olimex_stm32_h407.dts
@@ -17,6 +17,29 @@
 		zephyr,flash = &flash0;
 		zephyr,ccm = &ccm0;
 	};
+
+	leds {
+		compatible = "gpio-leds";
+		green_led_2: led@0 {
+			gpios = <&gpioa 0 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD2";
+		};
+	};
+
+	gpio_keys {
+		compatible = "gpio-keys";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		user_button: button@0 {
+			label = "User";
+			gpios = <&gpioc 13 GPIO_INT_ACTIVE_LOW>;
+		};
+	};
+
+	aliases {
+		led0 = &green_led_2;
+		sw0 = &user_button;
+	};
 };
 
 &usart2 {
@@ -39,4 +62,3 @@
 	pinctrl-names = "default";
 	status = "ok";
 };
-
diff --git a/boards/arm/olimex_stm32_p405/olimex_stm32_p405.dts b/boards/arm/olimex_stm32_p405/olimex_stm32_p405.dts
index f3a9eb1..89f72f5 100644
--- a/boards/arm/olimex_stm32_p405/olimex_stm32_p405.dts
+++ b/boards/arm/olimex_stm32_p405/olimex_stm32_p405.dts
@@ -17,6 +17,29 @@
 		zephyr,flash = &flash0;
 		zephyr,ccm = &ccm0;
 	};
+
+	leds {
+		compatible = "gpio-leds";
+		green_led_1: led@0 {
+			gpios = <&gpioc 12 GPIO_INT_ACTIVE_HIGH>;
+			label = "LED1";
+		};
+	};
+
+	gpio_keys {
+		compatible = "gpio-keys";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		user_button: button@0 {
+			label = "Key";
+			gpios = <&gpioa 0 GPIO_INT_ACTIVE_LOW>;
+		};
+	};
+
+	aliases {
+		led0 = &green_led_1;
+		sw0 = &user_button;
+	};
 };
 
 &usart2 {
@@ -25,4 +48,3 @@
 	pinctrl-names = "default";
 	status = "ok";
 };
-
diff --git a/boards/arm/olimexino_stm32/olimexino_stm32.dts b/boards/arm/olimexino_stm32/olimexino_stm32.dts
index 22f6012..8750393 100644
--- a/boards/arm/olimexino_stm32/olimexino_stm32.dts
+++ b/boards/arm/olimexino_stm32/olimexino_stm32.dts
@@ -16,6 +16,33 @@
 		zephyr,sram = &sram0;
 		zephyr,flash = &flash0;
 	};
+
+	leds {
+		compatible = "gpio-leds";
+		green_led_1: led@0 {
+			gpios = <&gpioa 5 GPIO_INT_ACTIVE_HIGH>;
+			label = "LED1";
+		};
+		yellow_led_2: led@1 {
+			gpios = <&gpioa 1 GPIO_INT_ACTIVE_HIGH>;
+			label = "LED2";
+		};
+	};
+
+	gpio_keys {
+		compatible = "gpio-keys";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		user_button: button@0 {
+			label = "Key";
+			gpios = <&gpioc 9 GPIO_INT_ACTIVE_LOW>;
+		};
+	};
+
+	aliases {
+		led0 = &green_led_1;
+		sw0 = &user_button;
+	};
 };
 
 &usart1 {
diff --git a/boards/arm/stm3210c_eval/stm3210c_eval.dts b/boards/arm/stm3210c_eval/stm3210c_eval.dts
index 2171a4b..3b33b13 100644
--- a/boards/arm/stm3210c_eval/stm3210c_eval.dts
+++ b/boards/arm/stm3210c_eval/stm3210c_eval.dts
@@ -16,6 +16,29 @@
 		zephyr,sram = &sram0;
 		zephyr,flash = &flash0;
 	};
+
+	leds {
+		compatible = "gpio-leds";
+		green_led_2: led@0 {
+			gpios = <&gpiod 13 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD2";
+		};
+	};
+
+	gpio_keys {
+		compatible = "gpio-keys";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		user_button: button@0 {
+			label = "User";
+			gpios = <&gpiob 9 GPIO_INT_ACTIVE_LOW>;
+		};
+	};
+
+	aliases {
+		led0 = &green_led_2;
+		sw0 = &user_button;
+	};
 };
 
 &usart2 {
diff --git a/boards/arm/stm32373c_eval/stm32373c_eval.dts b/boards/arm/stm32373c_eval/stm32373c_eval.dts
index e6e3765..9d7f469 100644
--- a/boards/arm/stm32373c_eval/stm32373c_eval.dts
+++ b/boards/arm/stm32373c_eval/stm32373c_eval.dts
@@ -16,6 +16,29 @@
 		zephyr,sram = &sram0;
 		zephyr,flash = &flash0;
 	};
+
+	leds {
+		compatible = "gpio-leds";
+		green_led_2: led@0 {
+			gpios = <&gpioc 1 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD2";
+		};
+	};
+
+	gpio_keys {
+		compatible = "gpio-keys";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		user_button: button@0 {
+			label = "Key";
+			gpios = <&gpioa 2 GPIO_INT_ACTIVE_LOW>;
+		};
+	};
+
+	aliases {
+		led0 = &green_led_2;
+		sw0 = &user_button;
+	};
 };
 
 &usart2 {
diff --git a/boards/arm/stm32_min_dev/stm32_min_dev.dts b/boards/arm/stm32_min_dev/stm32_min_dev.dts
index 4ed7fb8..0c53fdd 100644
--- a/boards/arm/stm32_min_dev/stm32_min_dev.dts
+++ b/boards/arm/stm32_min_dev/stm32_min_dev.dts
@@ -16,6 +16,18 @@
 		zephyr,sram = &sram0;
 		zephyr,flash = &flash0;
 	};
+
+	leds {
+		compatible = "gpio-leds";
+		led: led@0 {
+			gpios = <&gpiob 12 GPIO_INT_ACTIVE_HIGH>;
+			label = "LD";
+		};
+	};
+
+	aliases {
+		led0 = &led;
+	};
 };
 
 &usart1 {
diff --git a/boards/arm/stm32f072_eval/stm32f072_eval.dts b/boards/arm/stm32f072_eval/stm32f072_eval.dts
index 19156c5..cae5e91 100644
--- a/boards/arm/stm32f072_eval/stm32f072_eval.dts
+++ b/boards/arm/stm32f072_eval/stm32f072_eval.dts
@@ -16,6 +16,65 @@
 		zephyr,sram = &sram0;
 		zephyr,flash = &flash0;
 	};
+
+
+	leds {
+		compatible = "gpio-leds";
+		green_led_1: led@0 {
+			gpios = <&gpiod 8 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD1";
+		};
+		orange_led_2: led@1 {
+			gpios = <&gpiod 9 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD2";
+		};
+		red_led_3: led@2 {
+			gpios = <&gpiod 10 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD3";
+		};
+		blue_led_4: led@3 {
+			gpios = <&gpiod 11 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD4";
+		};
+	};
+
+	gpio_keys {
+		compatible = "gpio-keys";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		tamper: tamper@0 {
+			label = "tamper button";
+			gpios = <&gpioc 13 GPIO_INT_ACTIVE_LOW>;
+		};
+		joy_sel: joystick@1 {
+			label = "joystick selection";
+			gpios = <&gpioa 0 GPIO_INT_ACTIVE_LOW>;
+		};
+		joy_down: joystick@2 {
+			label = "joystick down";
+			gpios = <&gpiof 10 GPIO_INT_ACTIVE_LOW>;
+		};
+		joy_up: joystick@3 {
+			label = "joystick up";
+			gpios = <&gpiof 9 GPIO_INT_ACTIVE_LOW>;
+		};
+		joy_left: joystick@4 {
+			label = "joystick left";
+			gpios = <&gpiof 2 GPIO_INT_ACTIVE_LOW>;
+		};
+		joy_right: joystick@5 {
+			label = "joystick right";
+			gpios = <&gpioe 3 GPIO_INT_ACTIVE_LOW>;
+		};
+	};
+
+	aliases {
+		led0 = &green_led_1;
+		led1 = &orange_led_2;
+		led2 = &red_led_3;
+		led3 = &blue_led_4;
+		sw0 = &joy_sel;
+	};
 };
 
 &usart2 {
diff --git a/boards/arm/stm32f072b_disco/stm32f072b_disco.dts b/boards/arm/stm32f072b_disco/stm32f072b_disco.dts
index d6aa63f..c0370f2 100644
--- a/boards/arm/stm32f072b_disco/stm32f072b_disco.dts
+++ b/boards/arm/stm32f072b_disco/stm32f072b_disco.dts
@@ -16,6 +16,44 @@
 		zephyr,sram = &sram0;
 		zephyr,flash = &flash0;
 	};
+
+	leds {
+		compatible = "gpio-leds";
+		red_up_led_3: led@0 {
+			gpios = <&gpioc 6 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD3";
+		};
+		yellow_left_4: led@1 {
+			gpios = <&gpioc 8 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD4";
+		};
+		green_right_led_5: led@2 {
+			gpios = <&gpioc 9 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD5";
+		};
+		blue_low_led_6: led@3 {
+			gpios = <&gpioc 7 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD6";
+		};
+	};
+
+	gpio_keys {
+		compatible = "gpio-keys";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		user_button: button@0 {
+			label = "User";
+			gpios = <&gpioa 0 GPIO_INT_ACTIVE_LOW>;
+		};
+	};
+
+	aliases {
+		led0 = &red_up_led_3;
+		led1 = &yellow_left_4;
+		led2 = &green_right_led_5;
+		led3 = &blue_low_led_6;
+		sw0 = &user_button;
+	};
 };
 
 &usart1 {
diff --git a/boards/arm/stm32f0_disco/stm32f0_disco.dts b/boards/arm/stm32f0_disco/stm32f0_disco.dts
index 1426986..240b848 100644
--- a/boards/arm/stm32f0_disco/stm32f0_disco.dts
+++ b/boards/arm/stm32f0_disco/stm32f0_disco.dts
@@ -16,6 +16,34 @@
 		zephyr,sram = &sram0;
 		zephyr,flash = &flash0;
 	};
+
+	leds {
+		compatible = "gpio-leds";
+		green_led_3: led@0 {
+			gpios = <&gpioc 9 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD3";
+		};
+		blue_led_4: led@1 {
+			gpios = <&gpioc 8 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD4";
+		};
+	};
+
+	gpio_keys {
+		compatible = "gpio-keys";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		user_button: button@0 {
+			label = "Key";
+			gpios = <&gpioa 0 GPIO_INT_ACTIVE_LOW>;
+		};
+	};
+
+	aliases {
+		led0 = &green_led_3;
+		led1 = &blue_led_4;
+		sw0 = &user_button;
+	};
 };
 
 &usart1 {
diff --git a/boards/arm/stm32f3_disco/stm32f3_disco.dts b/boards/arm/stm32f3_disco/stm32f3_disco.dts
index 2cc209a..7fa649e 100644
--- a/boards/arm/stm32f3_disco/stm32f3_disco.dts
+++ b/boards/arm/stm32f3_disco/stm32f3_disco.dts
@@ -16,6 +16,57 @@
 		zephyr,sram = &sram0;
 		zephyr,flash = &flash0;
 	};
+
+	leds {
+		compatible = "gpio-leds";
+		red_led_3: led@0 {
+			gpios = <&gpioe 9 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD3";
+		};
+		blue_led_4: led@1 {
+			gpios = <&gpioe 8 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD4";
+		};
+		orange_led_5: led@2 {
+			gpios = <&gpioe 10 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD5";
+		};
+		green_led_6: led@3 {
+			gpios = <&gpioe 15 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD6";
+		};
+		green_led_7: led@4 {
+			gpios = <&gpiod 11 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD7";
+		};
+		orange_led_8: led@5 {
+			gpios = <&gpioe 14 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD8";
+		};
+		blue_led_9: led@6 {
+			gpios = <&gpioe 12 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD9";
+		};
+		red_led_10: led@7 {
+			gpios = <&gpioe 13 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD10";
+		};
+	};
+
+	gpio_keys {
+		compatible = "gpio-keys";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		user_button: button@0 {
+			label = "User";
+			gpios = <&gpioa 0 GPIO_INT_ACTIVE_LOW>;
+		};
+	};
+
+	aliases {
+		led0 = &green_led_6;
+		sw0 = &user_button;
+	};
 };
 
 &usart1 {
diff --git a/boards/arm/stm32f411e_disco/stm32f411e_disco.dts b/boards/arm/stm32f411e_disco/stm32f411e_disco.dts
index a04ad16..333332a 100644
--- a/boards/arm/stm32f411e_disco/stm32f411e_disco.dts
+++ b/boards/arm/stm32f411e_disco/stm32f411e_disco.dts
@@ -16,6 +16,44 @@
 		zephyr,sram = &sram0;
 		zephyr,flash = &flash0;
 	};
+
+	leds {
+		compatible = "gpio-leds";
+		orange_led_3: led@0 {
+			gpios = <&gpiod 13 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD3";
+		};
+		green_led_4: led@1 {
+			gpios = <&gpiod 12 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD4";
+		};
+		red_led_5: led@2 {
+			gpios = <&gpiod 14 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD5";
+		};
+		blue_led_6: led@3 {
+			gpios = <&gpiod 15 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD6";
+		};
+	};
+
+	gpio_keys {
+		compatible = "gpio-keys";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		user_button: button@0 {
+			label = "User";
+			gpios = <&gpioa 0 GPIO_INT_ACTIVE_LOW>;
+		};
+	};
+
+	aliases {
+		led0 = &orange_led_3;
+		led1 = &green_led_4;
+		led2 = &red_led_5;
+		led3 = &blue_led_6;
+		sw0 = &user_button;
+	};
 };
 
 &usart2 {
diff --git a/boards/arm/stm32f412g_disco/stm32f412g_disco.dts b/boards/arm/stm32f412g_disco/stm32f412g_disco.dts
index de6400b..9e44fd5 100644
--- a/boards/arm/stm32f412g_disco/stm32f412g_disco.dts
+++ b/boards/arm/stm32f412g_disco/stm32f412g_disco.dts
@@ -16,6 +16,60 @@
 		zephyr,sram = &sram0;
 		zephyr,flash = &flash0;
 	};
+
+	leds {
+		compatible = "gpio-leds";
+		green_led_1: led@0 {
+			gpios = <&gpioe 0 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD1";
+		};
+		orange_led_2: led@1 {
+			gpios = <&gpioe 1 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD2";
+		};
+		red_led_3: led@2 {
+			gpios = <&gpioe 2 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD3";
+		};
+		blue_led_4: led@3 {
+			gpios = <&gpioe 4 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD4";
+		};
+	};
+
+	gpio_keys {
+		compatible = "gpio-keys";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		joy_sel: joystick@0 {
+			label = "joystick selection";
+			gpios = <&gpioa 0 GPIO_INT_ACTIVE_LOW>;
+		};
+		joy_down: joystick@1 {
+			label = "joystick down";
+			gpios = <&gpiog 1 GPIO_INT_ACTIVE_LOW>;
+		};
+		joy_up: joystick@2 {
+			label = "joystick up";
+			gpios = <&gpiog 0 GPIO_INT_ACTIVE_LOW>;
+		};
+		joy_left: joystick@3 {
+			label = "joystick left";
+			gpios = <&gpiof 15 GPIO_INT_ACTIVE_LOW>;
+		};
+		joy_right: joystick@4 {
+			label = "joystick right";
+			gpios = <&gpiof 14 GPIO_INT_ACTIVE_LOW>;
+		};
+	};
+
+	aliases {
+		led0 = &green_led_1;
+		led1 = &orange_led_2;
+		led2 = &red_led_3;
+		led3 = &blue_led_4;
+		sw0 = &joy_sel;
+	};
 };
 
 &usart2 {
diff --git a/boards/arm/stm32f429i_disc1/stm32f429i_disc1.dts b/boards/arm/stm32f429i_disc1/stm32f429i_disc1.dts
index 54b1c0f..12c32e0 100644
--- a/boards/arm/stm32f429i_disc1/stm32f429i_disc1.dts
+++ b/boards/arm/stm32f429i_disc1/stm32f429i_disc1.dts
@@ -16,6 +16,33 @@
 		zephyr,sram = &sram0;
 		zephyr,flash = &flash0;
 	};
+
+	leds {
+		compatible = "gpio-leds";
+		orange_led_3: led@0 {
+			gpios = <&gpiog 13 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD3";
+		};
+		green_led_4: led@1 {
+			gpios = <&gpiog 14 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD4";
+		};
+	};
+
+	gpio_keys {
+		compatible = "gpio-keys";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		user_button: button@0 {
+			label = "User";
+			gpios = <&gpioa 0 GPIO_INT_ACTIVE_LOW>;
+		};
+	};
+
+	aliases {
+		led0 = &green_led_4;
+		sw0 = &user_button;
+	};
 };
 
 &usart1 {
diff --git a/boards/arm/stm32f469i_disco/stm32f469i_disco.dts b/boards/arm/stm32f469i_disco/stm32f469i_disco.dts
index ac09a69..d9ce6b2 100644
--- a/boards/arm/stm32f469i_disco/stm32f469i_disco.dts
+++ b/boards/arm/stm32f469i_disco/stm32f469i_disco.dts
@@ -16,6 +16,41 @@
 		zephyr,sram = &sram0;
 		zephyr,flash = &flash0;
 	};
+
+	leds {
+		compatible = "gpio-leds";
+		green_led_1: led@0 {
+			gpios = <&gpiog 6 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD1";
+		};
+		orange_led_2: led@1 {
+			gpios = <&gpiod 4 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD2";
+		};
+		red_led_3: led@2 {
+			gpios = <&gpiod 5 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD3";
+		};
+		blue_led_4: led@3 {
+			gpios = <&gpiok 3 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD4";
+		};
+	};
+
+	gpio_keys {
+		compatible = "gpio-keys";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		user_button: button@0 {
+			label = "User";
+			gpios = <&gpioa 0 GPIO_INT_ACTIVE_LOW>;
+		};
+	};
+
+	aliases {
+		led0 = &green_led_1;
+		sw0 = &user_button;
+	};
 };
 
 &usart3 {
diff --git a/boards/arm/stm32f4_disco/stm32f4_disco.dts b/boards/arm/stm32f4_disco/stm32f4_disco.dts
index b4b7f8d..213d3a4 100644
--- a/boards/arm/stm32f4_disco/stm32f4_disco.dts
+++ b/boards/arm/stm32f4_disco/stm32f4_disco.dts
@@ -16,6 +16,41 @@
 		zephyr,sram = &sram0;
 		zephyr,flash = &flash0;
 	};
+
+	leds {
+		compatible = "gpio-leds";
+		orange_led_3: led@0 {
+			gpios = <&gpiod 13 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD3";
+		};
+		green_led_4: led@1 {
+			gpios = <&gpiod 12 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD4";
+		};
+		red_led_5: led@2 {
+			gpios = <&gpiod 14 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD5";
+		};
+		blue_led_6: led@3 {
+			gpios = <&gpiod 15 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD6";
+		};
+	};
+
+	gpio_keys {
+		compatible = "gpio-keys";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		user_button: button@0 {
+			label = "Key";
+			gpios = <&gpioa 0 GPIO_INT_ACTIVE_LOW>;
+		};
+	};
+
+	aliases {
+		led0 = &green_led_4;
+		sw0 = &user_button;
+	};
 };
 
 &usart1 {
diff --git a/boards/arm/stm32l476g_disco/stm32l476g_disco.dts b/boards/arm/stm32l476g_disco/stm32l476g_disco.dts
index 930c0a7..fdfd82b 100644
--- a/boards/arm/stm32l476g_disco/stm32l476g_disco.dts
+++ b/boards/arm/stm32l476g_disco/stm32l476g_disco.dts
@@ -20,6 +20,49 @@
 		zephyr,sram = &sram0;
 		zephyr,flash = &flash0;
 	};
+
+	leds {
+		compatible = "gpio-leds";
+		green_led_4: led@0 {
+			gpios = <&gpiob 2 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD4";
+		};
+		green_led_5: led@1 {
+			gpios = <&gpioe 8 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD5";
+		};
+	};
+
+	gpio_keys {
+		compatible = "gpio-keys";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		joy_center: joystick@0 {
+			label = "joystick center";
+			gpios = <&gpioa 0 GPIO_INT_ACTIVE_LOW>;
+		};
+		joy_down: joystick@1 {
+			label = "joystick down";
+			gpios = <&gpioa 5 GPIO_INT_ACTIVE_LOW>;
+		};
+		joy_up: joystick@2 {
+			label = "joystick up";
+			gpios = <&gpioa 3 GPIO_INT_ACTIVE_LOW>;
+		};
+		joy_left: joystick@3 {
+			label = "joystick left";
+			gpios = <&gpioa 1 GPIO_INT_ACTIVE_LOW>;
+		};
+		joy_right: joystick@4 {
+			label = "joystick right";
+			gpios = <&gpioa 2 GPIO_INT_ACTIVE_LOW>;
+		};
+	};
+
+	aliases {
+		led0 = &green_led_4;
+		sw0 = &joy_center;
+	};
 };
 
 &usart2 {
diff --git a/boards/arm/stm32l496g_disco/stm32l496g_disco.dts b/boards/arm/stm32l496g_disco/stm32l496g_disco.dts
index 2b4c018..51532a2 100644
--- a/boards/arm/stm32l496g_disco/stm32l496g_disco.dts
+++ b/boards/arm/stm32l496g_disco/stm32l496g_disco.dts
@@ -16,6 +16,45 @@
 		zephyr,sram = &sram0;
 		zephyr,flash = &flash0;
 	};
+
+	leds {
+		compatible = "gpio-leds";
+		green_led_2: led@0 {
+			gpios = <&gpiob 13 GPIO_INT_ACTIVE_HIGH>;
+			label = "User LD2";
+		};
+	};
+
+	gpio_keys {
+		compatible = "gpio-keys";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		joy_sel: joystick@0 {
+			label = "joystick select";
+			gpios = <&gpioc 13 GPIO_INT_ACTIVE_LOW>;
+		};
+		joy_down: joystick@1 {
+			label = "joystick down";
+			gpios = <&gpioi 10 GPIO_INT_ACTIVE_LOW>;
+		};
+		joy_up: joystick@2 {
+			label = "joystick up";
+			gpios = <&gpioi 8 GPIO_INT_ACTIVE_LOW>;
+		};
+		joy_left: joystick@3 {
+			label = "joystick left";
+			gpios = <&gpioi 9 GPIO_INT_ACTIVE_LOW>;
+		};
+		joy_right: joystick@4 {
+			label = "joystick right";
+			gpios = <&gpiof 11 GPIO_INT_ACTIVE_LOW>;
+		};
+	};
+
+	aliases {
+		led0 = &green_led_2;
+		sw0 = &joy_sel;
+	};
 };
 
 &usart1 {