boards: arm: gd32f403z_eval: add leds and keys

Add definitions for board LEDs and keys now that a GPIO driver exists.
The GPIO driver has also been enabled in the board defconfig, since it
is required to run some basic samples (e.g. blinky).

Signed-off-by: Gerard Marull-Paretas <gerard@teslabs.com>
diff --git a/boards/arm/gd32f403z_eval/doc/index.rst b/boards/arm/gd32f403z_eval/doc/index.rst
index cbdecf4..8cbac8d 100644
--- a/boards/arm/gd32f403z_eval/doc/index.rst
+++ b/boards/arm/gd32f403z_eval/doc/index.rst
@@ -58,6 +58,11 @@
 +-----------+------------+-----------------------+
 | Interface | Controller | Driver/Component      |
 +===========+============+=======================+
+| EXTI      | on-chip    | EXTI interrupt        |
+|           |            | controller            |
++-----------+------------+-----------------------+
+| GPIO      | on-chip    | gpio                  |
++-----------+------------+-----------------------+
 | NVIC      | on-chip    | nested vectored       |
 |           |            | interrupt controller  |
 +-----------+------------+-----------------------+
diff --git a/boards/arm/gd32f403z_eval/gd32f403z_eval.dts b/boards/arm/gd32f403z_eval/gd32f403z_eval.dts
index 29ba67b..c10b817 100644
--- a/boards/arm/gd32f403z_eval/gd32f403z_eval.dts
+++ b/boards/arm/gd32f403z_eval/gd32f403z_eval.dts
@@ -18,6 +18,64 @@
 		zephyr,console = &usart0;
 		zephyr,shell-uart = &usart0;
 	};
+
+	leds {
+		compatible = "gpio-leds";
+		led2: led2 {
+			gpios = <&gpiof 0 GPIO_ACTIVE_HIGH>;
+			label = "LED2";
+		};
+		led3: led3 {
+			gpios = <&gpiof 1 GPIO_ACTIVE_HIGH>;
+			label = "LED3";
+		};
+		led4: led4 {
+			gpios = <&gpiof 2 GPIO_ACTIVE_HIGH>;
+			label = "LED4";
+		};
+		led5: led5 {
+			gpios = <&gpiof 3 GPIO_ACTIVE_HIGH>;
+			label = "LED5";
+		};
+	};
+
+	gpio_keys {
+		compatible = "gpio-keys";
+		wakeup_key: wakeup_key {
+			label = "WAKEUP_KEY";
+			gpios = <&gpioa 0 GPIO_ACTIVE_LOW>;
+		};
+		tamper_key: tamper_key {
+			label = "TAMPER_KEY";
+			gpios = <&gpioc 13 GPIO_ACTIVE_LOW>;
+		};
+		user_key1: user_key1 {
+			label = "USER_KEY1";
+			gpios = <&gpiof 5 GPIO_ACTIVE_LOW>;
+		};
+		user_key2: user_key2 {
+			label = "USER_KEY2";
+			gpios = <&gpiof 4 GPIO_ACTIVE_LOW>;
+		};
+	};
+
+	aliases {
+		led0 = &led2;
+		led1 = &led3;
+		sw0 = &user_key1;
+	};
+};
+
+&gpioa {
+	status = "okay";
+};
+
+&gpioc {
+	status = "okay";
+};
+
+&gpiof {
+	status = "okay";
 };
 
 &usart0 {
diff --git a/boards/arm/gd32f403z_eval/gd32f403z_eval_defconfig b/boards/arm/gd32f403z_eval/gd32f403z_eval_defconfig
index 245a7e3..f9b77ad 100644
--- a/boards/arm/gd32f403z_eval/gd32f403z_eval_defconfig
+++ b/boards/arm/gd32f403z_eval/gd32f403z_eval_defconfig
@@ -12,3 +12,5 @@
 CONFIG_CONSOLE=y
 CONFIG_UART_CONSOLE=y
 CONFIG_SERIAL=y
+
+CONFIG_GPIO=y