/*
 * Copyright (c) 2021 Andes Technology Corporation
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/dts-v1/;
#include <zephyr/dt-bindings/gpio/gpio.h>
#include <mem.h>

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

	cpus {
		#address-cells = <1>;
		#size-cells = <0>;
		timebase-frequency = <60000000>;
		CPU0: cpu@0 {
			compatible = "riscv";
			device_type = "cpu";
			reg = <0>;
			status = "okay";
			riscv,isa = "rv32imafdcxandes";
			mmu-type = "riscv,sv32";
			clock-frequency = <60000000>;
			i-cache-line-size = <32>;
			d-cache-line-size = <32>;
			CPU0_intc: interrupt-controller {
				#interrupt-cells = <1>;
				interrupt-controller;
				compatible = "riscv,cpu-intc";
			};
		};
		CPU1: cpu@1 {
			compatible = "riscv";
			device_type = "cpu";
			reg = <1>;
			status = "okay";
			riscv,isa = "rv32imafdcxandes";
			mmu-type = "riscv,sv32";
			clock-frequency = <60000000>;
			i-cache-line-size = <32>;
			d-cache-line-size = <32>;
			CPU1_intc: interrupt-controller {
				#interrupt-cells = <1>;
				interrupt-controller;
				compatible = "riscv,cpu-intc";
			};
		};
		CPU2: cpu@2 {
			compatible = "riscv";
			device_type = "cpu";
			reg = <2>;
			status = "okay";
			riscv,isa = "rv32imafdcxandes";
			mmu-type = "riscv,sv32";
			clock-frequency = <60000000>;
			i-cache-line-size = <32>;
			d-cache-line-size = <32>;
			CPU2_intc: interrupt-controller {
				#interrupt-cells = <1>;
				interrupt-controller;
				compatible = "riscv,cpu-intc";
			};
		};
		CPU3: cpu@3 {
			compatible = "riscv";
			device_type = "cpu";
			reg = <3>;
			status = "okay";
			riscv,isa = "rv32imafdcxandes";
			mmu-type = "riscv,sv32";
			clock-frequency = <60000000>;
			i-cache-line-size = <32>;
			d-cache-line-size = <32>;
			CPU3_intc: interrupt-controller {
				#interrupt-cells = <1>;
				interrupt-controller;
				compatible = "riscv,cpu-intc";
			};
		};
	};

	dram: memory@0 {
		device_type = "memory";
		compatible = "mmio-sram";
		reg = <0x00000000 0x40000000>;
	};

	soc {
		#address-cells = <1>;
		#size-cells = <1>;
		compatible = "andestech,ae350";
		ranges;

		plic0: interrupt-controller@e4000000 {
			compatible = "sifive,plic-1.0.0";
			#address-cells = <1>;
			#interrupt-cells = <2>;
			interrupt-controller;
			reg = <	0xe4000000 0x00001000
				0xe4002000 0x00000800
				0xe4200000 0x00010000 >;
			reg-names = "prio", "irq_en", "reg";
			riscv,max-priority = <255>;
			riscv,ndev = <1023>;
			interrupts-extended = <&CPU0_intc 11 &CPU1_intc 11
					       &CPU2_intc 11 &CPU3_intc 11>;
		};

		plic_sw0: interrupt-controller@e6400000 {
			compatible = "andestech,plic_sw";
			#address-cells = <1>;
			#interrupt-cells = <2>;
			interrupt-controller;
			reg = <0xe6400000 0x00400000>;
			riscv,max-priority = <255>;
			riscv,ndev = <1023>;
			interrupts-extended = <&CPU0_intc 3 &CPU1_intc 3
					       &CPU2_intc 3 &CPU3_intc 3>;
		};

		smu: smu@f0100000 {
			compatible = "andestech,atcsmu100";
			reg = <0xf0100000 0x1000>;
			status = "disabled";
		};

		l2_cache: cache-controller@e0500000 {
			compatible = "andestech,l2c";
			reg = <0xe0500000 0x1000>;
			cache-unified;
			status = "disabled";
		};

		uart0: serial@f0200020 {
			compatible = "ns16550";
			label = "UART_0";
			reg = <0xf0200020 0x1000>;
			reg-shift = <2>;
			interrupts = <8 1>;
			interrupt-parent = <&plic0>;
			status = "disabled";
		};

		uart1: serial@f0300020 {
			compatible = "ns16550";
			label = "UART_1";
			reg = <0xf0300020 0x1000>;
			reg-shift = <2>;
			interrupts = <9 1>;
			interrupt-parent = <&plic0>;
			status = "disabled";
		};

		pit0: pit@f0400000 {
			compatible = "andestech,atcpit100";
			label = "PIT_0";
			reg = <0xf0400000 0x1000>;
			interrupts = <3 1>;
			interrupt-parent = <&plic0>;
			clock-frequency = <60000000>;
			status = "disabled";
		};

		rtc0: rtc@f0600000 {
			compatible = "andestech,atcrtc100";
			reg = <0xf0600000 0x1000>;
			interrupts = <1 1>, <2 1>;
			interrupt-parent = <&plic0>;
			wakeup-source;
			status = "disabled";
		};

		gpio0: gpio@f0700000 {
			compatible = "andestech,atcgpio100";
			label = "GPIO_0";
			reg = <0xf0700000 0x1000>;
			interrupts = <7 1>;
			interrupt-parent = <&plic0>;
			gpio-controller;
			ngpios = <32>;
			#gpio-cells = <2>;
			status = "disabled";
		};

		i2c0: i2c@f0a00000 {
			compatible = "andestech,atciic100";
			label = "I2C_0";
			reg = <0xf0a00000 0x1000>;
			interrupts = <6 1>;
			interrupt-parent = <&plic0>;
			#address-cells = <1>;
			#size-cells = <0>;
			status = "disabled";
		};

		spi0: spi@f0b00000 {
			compatible = "andestech,atcspi200";
			label = "SPI_0";
			reg = <0xf0b00000 0x1000
			       0x80000000 DT_SIZE_K(1024)>;
			reg-names = "control", "mem";
			interrupts = <4 1>;
			interrupt-parent = <&plic0>;
			#address-cells = <1>;
			#size-cells = <0>;
			num-cs = <1>;
			clock-frequency = <66000000>;
			status = "disabled";
		};

		spi1: spi@f0f00000 {
			compatible = "andestech,atcspi200";
			label = "SPI_1";
			reg = <0xf0f00000 0x1000>;
			reg-names = "control";
			interrupts = <5 1>;
			interrupt-parent = <&plic0>;
			#address-cells = <1>;
			#size-cells = <0>;
			num-cs = <1>;
			clock-frequency = <66000000>;
			status = "disabled";
		};

		dma0: dma@f0c00000 {
			compatible = "andestech,atcdmac300";
			reg = <0xf0c00000 0x1000>;
			interrupts = <10 1>;
			interrupt-parent = <&plic0>;
			dma-channels = <8>;
		};

		eth0: eth@e0100000 {
			compatible = "andestech,atfmac100";
			label = "ETH_0";
			reg = <0xe0100000 0x1000>;
			interrupts = <19 2>;
			interrupt-parent = <&plic0>;
			local-mac-address = [FC 8C EB 9B A6 51];
			status = "disabled";
		};

		lcd0: lcd@e0200000 {
			compatible = "andestech,atflcdc100";
			label = "LCD_0";
			reg = <0xe0200000 0x1000>;
			interrupts = <20 1>;
			interrupt-parent = <&plic0>;
			clock-frequency = <30000000>;
			status = "disabled";
		};

		smc0: smc@e0400000 {
			compatible = "andestech,atfsmc020";
			reg = <0xe0400000 0x1000>;
			status = "disabled";
		};

		snd0: snd@f0d00000 {
			compatible = "andestech,atfac97";
			reg = <0xf0d00000 0x1000>;
			interrupts = <17 1>;
			interrupt-parent = <&plic0>;
			status = "disabled";
		};

		mmc0: mmc@f0e00000 {
			compatible = "andestech,atfsdc010";
			reg = <0xf0e00000 0x1000>;
			interrupts = <18 1>;
			interrupt-parent = <&plic0>;
			cap-sd-highspeed;
			max-frequency = <100000000>;
			clock-freq-min-max = <400000 100000000>;
			fifo-depth = <0x10>;
			status = "disabled";
		};
	};
};
