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

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

#include <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>;
		};

		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";
		};
	};
};
