/* SPDX-License-Identifier: Apache-2.0 */

#include <xtensa/xtensa.dtsi>
#include <dt-bindings/i2c/i2c.h>
#include <dt-bindings/gpio/gpio.h>
#include <mem.h>
#include <dt-bindings/interrupt-controller/intel-ioapic.h>


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

		cpu0: cpu@0 {
			device_type = "cpu";
			compatible = "cdns,tensilica-xtensa-lx6";
			reg = <0>;
		};

		cpu1: cpu@1 {
			device_type = "cpu";
			compatible = "cdns,tensilica-xtensa-lx6";
			reg = <1>;
		};
	};

	sram0: memory@be000000 {
		compatible = "mmio-sram";
		reg = <0xbe000000 DT_SIZE_M(4)>;
	};

	sram1: memory@be800000 {
		compatible = "mmio-sram";
		reg = <0xbe800000 DT_SIZE_K(64)>;
	};

	sysclk: system-clock {
		compatible = "fixed-clock";
		clock-frequency = <400000000>;
		#clock-cells = <0>;
	};

	soc {
		core_intc: core_intc@0 {
			compatible = "cdns,xtensa-core-intc";
			reg = <0x00 0x400>;
			interrupt-controller;
			#interrupt-cells = <3>;
		};

		shim: shim@71f00 {
			compatible = "intel,cavs-shim";
			reg = <0x71f00 0x100>;
		};

		cavs0: cavs@78800  {
			compatible = "intel,cavs-intc";
			reg = <0x78800 0x10>;
			interrupt-controller;
			#interrupt-cells = <3>;
			interrupts = <6 0 0>;
			interrupt-parent = <&core_intc>;
			label = "CAVS_0";
		};

		cavs1: cavs@78810  {
			compatible = "intel,cavs-intc";
			reg = <0x78810 0x10>;
			interrupt-controller;
			#interrupt-cells = <3>;
			interrupts = <0xA 0 0>;
			interrupt-parent = <&core_intc>;
			label = "CAVS_1";
		};

		cavs2: cavs@78820  {
			compatible = "intel,cavs-intc";
			reg = <0x78820 0x10>;
			interrupt-controller;
			#interrupt-cells = <3>;
			interrupts = <0XD 0 0>;
			interrupt-parent = <&core_intc>;
			label = "CAVS_2";
		};

		cavs3: cavs@78830  {
			compatible = "intel,cavs-intc";
			reg = <0x78830 0x10>;
			interrupt-controller;
			#interrupt-cells = <3>;
			interrupts = <0x10 0 0>;
			interrupt-parent = <&core_intc>;
			label = "CAVS_3";
		};

		idc: idc@1200 {
			compatible = "intel,cavs-idc";
			label = "CAVS_IDC";
			reg = <0x1200 0x80>;
			interrupts = <8 0 0>;
			interrupt-parent = <&cavs0>;
		};

		dw_intc: intc@81800  {
			compatible = "snps,designware-intc";
			reg = <0x00081800 0x400>;
			interrupt-controller;
			#interrupt-cells = <3>;
			interrupts = <6 0 0>;
			num-irqs = <9>;
			interrupt-parent = <&cavs0>;
			label = "DW_INTC";
		};

		gpio0: gpio@80c00 {
			compatible = "snps,designware-gpio";
			reg = <0x00080c00 0x400>;
			ngpios = <32>;
			label = "GPIO";
			interrupts = <3 1 0>;
			interrupt-parent = <&dw_intc>;

			gpio-controller;
			#gpio-cells = <2>;
		};

		pinmux: pinmux@81c30 {
			compatible = "intel,s1000-pinmux";
			reg = <0x00081c30 0xC>;
		};

		uart0: uart@80800 {
			compatible = "ns16550";
			reg = <0x80800 0x400>;
			label = "UART_0";
			clock-frequency = <38400000>;
			interrupts = <2 0 0>;
			interrupt-parent = <&dw_intc>;


			status = "disabled";
		};

		i2c0: i2c@80400 {
			compatible = "snps,designware-i2c";
			clock-frequency = <I2C_BITRATE_STANDARD>;
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <0x80400 0x400>;
			interrupts = <1 0 0>;
			interrupt-parent = <&dw_intc>;
			label = "I2C_0";

			status = "disabled";
		};

		spi0: spi@e000 {
			compatible = "snps,designware-spi";
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <0x0000E000 0x400>;
			clocks = <&sysclk>;
			interrupts = <6 0 0>;
			interrupt-parent = <&dw_intc>;
			label = "SPI_0";
		};

		dma0: dma@7c000 {
			compatible = "snps,designware-dma";
			#dma-cells = <1>;
			reg = <0x0007C000 0x1000>;
			interrupts = <0x10 0 0>;
			interrupt-parent = <&cavs3>;
			label = "DMA_0";

			status = "okay";
		};

		dma1: dma@7d000 {
			compatible = "snps,designware-dma";
			#dma-cells = <1>;
			reg = <0x0007D000 0x1000>;
			interrupts = <0x00 0 0>;
			interrupt-parent = <&cavs1>;
			label = "DMA_1";

			status = "disabled";
		};

		dma2: dma@7e000 {
			compatible = "snps,designware-dma";
			#dma-cells = <1>;
			reg = <0x0007E000 0x1000>;
			interrupts = <0x00 0 0>;
			interrupt-parent = <&cavs2>;
			label = "DMA_2";

			status = "disabled";
		};

		usb: usb@a0000 {
			compatible = "snps,designware-usb";
			reg = <0x000A0000 0x1000>;
			interrupts = <0x07 IRQ_TYPE_LOWEST_EDGE_RISING 3>;
			interrupt-parent = <&cavs0>;
			num-bidir-endpoints = <6>;
			label = "USB_0";

			status = "disabled";
		};

		i2s1: i2s@77200 {
			compatible = "intel,cavs-i2s";
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <0x00077200 0x200
			       0x00078D08 0x008>;
			interrupts = <0x01 0 0>;
			interrupt-parent = <&cavs3>;
			dmas = <&dma0 2
				&dma0 3>;
			dma-names = "tx", "rx";
			label = "I2S_1";

			status = "okay";
		};

		i2s2: i2s@77400 {
			compatible = "intel,cavs-i2s";
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <0x00077400 0x200
			       0x00078D10 0x008>;
			interrupts = <0x02 0 0>;
			interrupt-parent = <&cavs3>;
			dmas = <&dma0 4
				&dma0 5>;
			dma-names = "tx", "rx";
			label = "I2S_2";

			status = "okay";
		};

		i2s3: i2s@77600 {
			compatible = "intel,cavs-i2s";
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <0x00077600 0x200
			       0x00078D18 0x008>;
			interrupts = <0x03 0 0>;
			interrupt-parent = <&cavs3>;
			dmas = <&dma0 6
				&dma0 7>;
			dma-names = "tx", "rx";
			label = "I2S_3";

			status = "okay";
		};

		gna: gna@e800 {
			compatible = "intel,gna";
			reg = <0x0000E800 0x100>;
			interrupt-controller;
			interrupts = <5 0 0>;
			interrupt-parent = <&cavs0>;
			label = "GNA0";
		};
	};
};
