/*
 * Copyright (c) 2021, ATL Electronics
 * SPDX-License-Identifier: Apache-2.0
 */

/dts-v1/;

#include <gigadevice/gd32f403/gd32f403zet6.dtsi>
#include "gd32f403z_eval-pinctrl.dtsi"

/ {
	model = "GigaDevice GD32F403Z Evaluation Kit";
	compatible = "gd,gd32f403z";

	chosen {
		zephyr,sram = &sram0;
		zephyr,flash = &flash0;
		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>;
		};
	};

	pwmleds {
		compatible = "pwm-leds";

		/* NOTE: bridge TIMER0_CH0 (PA8) and LED2 (PF0) */
		pwm_led: pwm_led {
			pwms = <&pwm0 0 PWM_POLARITY_NORMAL>;
		};
	};

	aliases {
		led0 = &led2;
		led1 = &led3;
		sw0 = &user_key1;
		pwm-led0 = &pwm_led;
	};
};

&gpioa {
	status = "okay";
};

&gpioc {
	status = "okay";
};

&gpiof {
	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";
	};
};
