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

/dts-v1/;

#include <arm/gigadevice/gd32e50x/gd32e507xe.dtsi>
#include "gd32e507v_start-pinctrl.dtsi"
#include <zephyr/dt-bindings/input/input-event-codes.h>

/ {
	model = "GigaDevice GD32E507V-START";
	compatible = "gd,gd32e507v-start";

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

	leds {
		compatible = "gpio-leds";
		led1: led1 {
			gpios = <&gpioc 6 GPIO_ACTIVE_HIGH>;
		};
	};

	gpio_keys {
		compatible = "gpio-keys";
		user_key: user_key {
			label = "USER_KEY";
			gpios = <&gpioa 0 GPIO_ACTIVE_LOW>;
			zephyr,code = <INPUT_KEY_0>;
		};
	};

	pwmleds {
		compatible = "pwm-leds";

		pwm_led: pwm_led {
			pwms = <&pwm2 0 PWM_MSEC(20) PWM_POLARITY_NORMAL>;
		};
	};

	aliases {
		led0 = &led1;
		sw0 = &user_key;
		pwm-led0 = &pwm_led;
		watchdog0 = &fwdgt;
	};
};

&gpioa {
	status = "okay";
};

&gpioc {
	status = "okay";
};

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

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

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

&fwdgt {
	status = "okay";
};
