/*
 * Copyright (c) 2022, Teslabs Engineering S.L.
 * SPDX-License-Identifier: Apache-2.0
 */

/dts-v1/;

#include <arm/gigadevice/gd32e50x/gd32e507xe.dtsi>
#include "gd32e507z_eval-pinctrl.dtsi"

/ {
	model = "GigaDevice GD32E507Z-EVAL";
	compatible = "gd,gd32e507z-eval";

	chosen {
		zephyr,sram = &sram0;
		zephyr,flash = &flash0;
		zephyr,console = &usart0;
		zephyr,shell-uart = &usart0;
	};

	leds {
		compatible = "gpio-leds";
		led1: led1 {
			gpios = <&gpiog 10 GPIO_ACTIVE_HIGH>;
		};
		led2: led2 {
			gpios = <&gpiog 11 GPIO_ACTIVE_HIGH>;
		};
		led3: led3 {
			gpios = <&gpiog 12 GPIO_ACTIVE_HIGH>;
		};
		led4: led4 {
			gpios = <&gpiog 13 GPIO_ACTIVE_HIGH>;
		};
	};

	gpio_keys {
		compatible = "gpio-keys";
		key_a: key_a {
			label = "KEY_A";
			gpios = <&gpioa 0 GPIO_ACTIVE_LOW>;
		};
		key_b: key_b {
			label = "KEY_B";
			gpios = <&gpioc 13 GPIO_ACTIVE_LOW>;
		};
		key_c: key_c {
			label = "KEY_C";
			gpios = <&gpiof 13 GPIO_ACTIVE_LOW>;
		};
		key_d: key_d {
			label = "KEY_D";
			gpios = <&gpiof 14 GPIO_ACTIVE_LOW>;
		};
		key_cet: key_cet {
			label = "KEY_CET";
			gpios = <&gpiof 15 GPIO_ACTIVE_LOW>;
		};
	};

	pwmleds {
		compatible = "pwm-leds";

		/* NOTE: bridge TIMER0_CH0 (PA8) and LED1 (PG10)*/
		pwm_led: pwm_led {
			pwms = <&pwm0 0 PWM_MSEC(20) PWM_POLARITY_NORMAL>;
		};
	};

	aliases {
		led0 = &led1;
		sw0 = &key_a;
		pwm-led0 = &pwm_led;
	};
};

&gpioa {
	status = "okay";
};

&gpioc {
	status = "okay";
};

&gpiof {
	status = "okay";
};

&gpiog {
	status = "okay";
};

&usart0 {
	status = "okay";
	current-speed = <115200>;
	pinctrl-0 = <&usart0_default>;
	pinctrl-names = "default";
};

&timer0 {
	status = "okay";
	prescaler = <256>;

	pwm0: pwm {
		status = "okay";
		pinctrl-0 = <&pwm0_default>;
		pinctrl-names = "default";
	};
};
