/*
 * Copyright (c) 2021 Tokita, Hiroshi <tokita.hiroshi@gmail.com>
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include <zephyr/dt-bindings/gpio/gpio.h>
#include <zephyr/dt-bindings/timer/riscv-machine-timer.h>
#include <zephyr/dt-bindings/i2c/i2c.h>

#include <zephyr/dt-bindings/pwm/pwm.h>

/ {
	#address-cells = <1>;
	#size-cells = <1>;

	cpus {
		#address-cells = <1>;
		#size-cells = <0>;

		cpu: cpu@0 {
			clock-frequency = <108000000>;
			mcause-exception-mask = <0x7ff>;
			compatible = "nuclei,bumblebee", "riscv";
			device_type = "cpu";
			reg = <0>;
		};
	};

	sram0: memory@20000000 {
		compatible = "mmio-sram";
	};

	soc {
		#address-cells = <1>;
		#size-cells = <1>;
		compatible = "gd,gd32vf103-soc", "simple-bus";
		ranges;

		mtimer: machine-timer@d1000000 {
			compatible = "riscv,machine-timer";
			reg = <0xd1000000 0x1
			       0xd1000008 0x1>;
			clk-divider = <RISCV_MACHINE_TIMER_DIVIDER_4>;
		};

		eclic: interrupt-controller@d2000000 {
			#interrupt-cells = <2>;
			compatible = "nuclei,eclic";
			interrupt-controller;
			reg =  <0xd2000000 0x0001
				0xd2000004 0x0004
				0xd200000b 0x0001
				0xd2001000 0x1000>;
			label = "NUCLEI_ECLIC";
		};

		fmc: flash-controller@40022000 {
			compatible = "gd,gd32-flash-controller";
			label = "FMC";
			reg = <0x40022000 0x400>;
			#address-cells = <1>;
			#size-cells = <1>;

			flash0: flash@8000000 {
				compatible = "soc-nv-flash";
				label = "FLASH0";
				write-block-size = <2>;
			};
		};

		usart0: serial@40013800 {
			compatible = "gd,gd32-usart";
			reg = <0x40013800 0x400>;
			interrupts = <56 0>;
			interrupt-parent = <&eclic>;
			rcu-periph-clock = <0x60e>;
			status = "disabled";
			label = "UART_0";
		};

		usart1: serial@40004400 {
			compatible = "gd,gd32-usart";
			reg = <0x40004400 0x400>;
			interrupts = <57 0>;
			interrupt-parent = <&eclic>;
			rcu-periph-clock = <0x711>;
			status = "disabled";
			label = "UART_1";
		};

		usart2: serial@40004800 {
			compatible = "gd,gd32-usart";
			reg = <0x40004800 0x400>;
			interrupts = <58 0>;
			interrupt-parent = <&eclic>;
			rcu-periph-clock = <0x712>;
			status = "disabled";
			label = "UART_2";
		};

		dac: dac@40007400 {
			compatible = "gd,gd32-dac";
			reg = <0x40007400 0x400>;
			rcu-periph-clock = <0x71d>;
			num-channels = <2>;
			label = "DAC";
			status = "disabled";
			#io-channel-cells = <1>;
		};

		i2c0: i2c@40005400 {
			compatible = "gd,gd32-i2c";
			reg = <0x40005400 0x400>;
			#address-cells = <1>;
			#size-cells = <0>;
			clock-frequency = <I2C_BITRATE_STANDARD>;
			interrupts = <50 0>, <51 0>;
			interrupt-names = "event", "error";
			interrupt-parent = <&eclic>;
			rcu-periph-clock = <0x715>;
			status = "disabled";
			label = "I2C_0";
		};

		spi0: spi@40013000 {
			compatible = "gd,gd32-spi";
			reg = <0x40013000 0x400>;
			interrupts = <54 0>;
			interrupt-parent = <&eclic>;
			rcu-periph-clock = <0x60c>;
			status = "disabled";
			label = "SPI_0";
			#address-cells = <1>;
			#size-cells = <0>;
		};

		spi1: spi@40003800 {
			compatible = "gd,gd32-spi";
			reg = <0x40003800 0x400>;
			interrupts = <55 0>;
			interrupt-parent = <&eclic>;
			rcu-periph-clock = <0x70e>;
			status = "disabled";
			label = "SPI_1";
			#address-cells = <1>;
			#size-cells = <0>;
		};

		afio: afio@40010000 {
			compatible = "gd,gd32-afio";
			reg = <0x40010000 0x400>;
			rcu-periph-clock = <0x600>;
			status = "okay";
			label = "AFIO";
		};

		exti: interrupt-controller@40010400 {
			compatible = "gd,gd32-exti";
			interrupt-controller;
			#interrupt-cells = <1>;
			reg = <0x40010400 0x400>;
			num-lines = <19>;
			interrupt-parent = <&eclic>;
			interrupts = <25 0>, <26 0>, <27 0>, <28 0>, <29 0>,
				     <42 0>, <59 0>;
			interrupt-names = "line0", "line1", "line2", "line3",
					  "line4", "line5-9", "line10-15";
			status = "okay";
			label = "EXTI";
		};

		pinctrl: pin-controller@40010800 {
			compatible = "gd,gd32-pinctrl-afio";
			reg = <0x40010800 0x1c00>;
			#address-cells = <1>;
			#size-cells = <1>;
			status = "okay";
			label = "PINCTRL";

			gpioa: gpio@40010800 {
				compatible = "gd,gd32-gpio";
				reg = <0x40010800 0x400>;
				gpio-controller;
				#gpio-cells = <2>;
				rcu-periph-clock = <0x602>;
				status = "disabled";
				label = "GPIOA";
			};

			gpiob: gpio@40010c00 {
				compatible = "gd,gd32-gpio";
				reg = <0x40010c00 0x400>;
				gpio-controller;
				#gpio-cells = <2>;
				rcu-periph-clock = <0x603>;
				status = "disabled";
				label = "GPIOB";
			};

			gpioc: gpio@40011000 {
				compatible = "gd,gd32-gpio";
				reg = <0x40011000 0x400>;
				gpio-controller;
				#gpio-cells = <2>;
				rcu-periph-clock = <0x604>;
				status = "disabled";
				label = "GPIOC";
			};

			gpiod: gpio@40011400 {
				compatible = "gd,gd32-gpio";
				reg = <0x40011400 0x400>;
				gpio-controller;
				#gpio-cells = <2>;
				rcu-periph-clock = <0x605>;
				status = "disabled";
				label = "GPIOD";
			};

			gpioe: gpio@40011800 {
				compatible = "gd,gd32-gpio";
				reg = <0x40011800 0x400>;
				gpio-controller;
				#gpio-cells = <2>;
				rcu-periph-clock = <0x606>;
				status = "disabled";
				label = "GPIOE";
			};
		};

		timer0: timer@40012c00 {
			compatible = "gd,gd32-timer";
			reg = <0x40012c00 0x400>;
			interrupt-parent = <&eclic>;
			interrupts = <43 0>, <44 0>, <45 0>, <46 0>;
			interrupt-names = "brk", "up", "trgcom", "cc";
			rcu-periph-clock = <0x60b>;
			rcu-periph-reset = <0x30b>;
			is-advanced;
			channels = <4>;
			status = "disabled";
			label = "TIMER_0";

			pwm {
				compatible = "gd,gd32-pwm";
				status = "disabled";
				label = "PWM_0";
				#pwm-cells = <3>;
			};
		};

		timer1: timer@40000000 {
			compatible = "gd,gd32-timer";
			reg = <0x40000000 0x400>;
			interrupt-parent = <&eclic>;
			interrupts = <47 0>;
			interrupt-names = "global";
			rcu-periph-clock = <0x700>;
			rcu-periph-reset = <0x400>;
			channels = <4>;
			status = "disabled";
			label = "TIMER_1";

			pwm {
				compatible = "gd,gd32-pwm";
				status = "disabled";
				label = "PWM_1";
				#pwm-cells = <3>;
			};
		};

		timer2: timer@40000400 {
			compatible = "gd,gd32-timer";
			reg = <0x40000400 0x400>;
			interrupt-parent = <&eclic>;
			interrupts = <48 0>;
			interrupt-names = "global";
			rcu-periph-clock = <0x701>;
			rcu-periph-reset = <0x401>;
			channels = <4>;
			status = "disabled";
			label = "TIMER_2";

			pwm {
				compatible = "gd,gd32-pwm";
				status = "disabled";
				label = "PWM_2";
				#pwm-cells = <3>;
			};
		};

		timer3: timer@40000800 {
			compatible = "gd,gd32-timer";
			reg = <0x40000800 0x400>;
			interrupt-parent = <&eclic>;
			interrupts = <49 0>;
			interrupt-names = "global";
			rcu-periph-clock = <0x702>;
			rcu-periph-reset = <0x402>;
			channels = <4>;
			status = "disabled";
			label = "TIMER_3";

			pwm {
				compatible = "gd,gd32-pwm";
				status = "disabled";
				label = "PWM_3";
				#pwm-cells = <3>;
			};
		};

		timer4: timer@40000c00 {
			compatible = "gd,gd32-timer";
			reg = <0x40000c00 0x400>;
			interrupt-parent = <&eclic>;
			interrupts = <69 0>;
			interrupt-names = "global";
			rcu-periph-clock = <0x703>;
			rcu-periph-reset = <0x403>;
			channels = <4>;
			status = "disabled";
			label = "TIMER_4";

			pwm {
				compatible = "gd,gd32-pwm";
				status = "disabled";
				label = "PWM_4";
				#pwm-cells = <3>;
			};
		};

		timer5: timer@40001000 {
			compatible = "gd,gd32-timer";
			reg = <0x40001000 0x400>;
			interrupt-parent = <&eclic>;
			interrupts = <73 0>;
			interrupt-names = "global";
			rcu-periph-clock = <0x704>;
			rcu-periph-reset = <0x404>;
			channels = <0>;
			status = "disabled";
			label = "TIMER_5";
		};

		timer6: timer@40001400 {
			compatible = "gd,gd32-timer";
			reg = <0x40001400 0x400>;
			interrupt-parent = <&eclic>;
			interrupts = <74 0>;
			interrupt-names = "global";
			rcu-periph-clock = <0x705>;
			rcu-periph-reset = <0x405>;
			channels = <0>;
			status = "disabled";
			label = "TIMER_6";
		};
	};
};
