// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
 * Copyright (c) 2019 Linaro Ltd.
 * Author: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
 */

#include <dt-bindings/clock/bm1880-clock.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/reset/bitmain,bm1880-reset.h>

/ {
	compatible = "bitmain,bm1880";
	interrupt-parent = <&gic>;
	#address-cells = <2>;
	#size-cells = <2>;

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

		cpu0: cpu@0 {
			device_type = "cpu";
			compatible = "arm,cortex-a53";
			reg = <0x0>;
			enable-method = "psci";
		};

		cpu1: cpu@1 {
			device_type = "cpu";
			compatible = "arm,cortex-a53";
			reg = <0x1>;
			enable-method = "psci";
		};
	};

	reserved-memory {
		#address-cells = <2>;
		#size-cells = <2>;
		ranges;

		secmon@100000000 {
			reg = <0x1 0x00000000 0x0 0x20000>;
			no-map;
		};

		jpu@130000000 {
			reg = <0x1 0x30000000 0x0 0x08000000>; // 128M
			no-map;
		};

		vpu@138000000 {
			reg = <0x1 0x38000000 0x0 0x08000000>; // 128M
			no-map;
		};
	};

	psci {
		compatible = "arm,psci-0.2";
		method = "smc";
	};

	timer {
		compatible = "arm,armv8-timer";
		interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
			     <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
			     <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
			     <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
	};

	osc: osc {
		compatible = "fixed-clock";
		clock-frequency = <25000000>;
		#clock-cells = <0>;
	};

	soc {
		compatible = "simple-bus";
		#address-cells = <2>;
		#size-cells = <2>;
		ranges;

		gic: interrupt-controller@50001000 {
			compatible = "arm,gic-400";
			reg = <0x0 0x50001000 0x0 0x1000>,
			      <0x0 0x50002000 0x0 0x2000>;
			interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_LOW>;
			interrupt-controller;
			#interrupt-cells = <3>;
		};

		sctrl: system-controller@50010000 {
			compatible = "bitmain,bm1880-sctrl", "syscon",
				     "simple-mfd";
			reg = <0x0 0x50010000 0x0 0x1000>;
			#address-cells = <1>;
			#size-cells = <1>;
			ranges = <0x0 0x0 0x50010000 0x1000>;

			pinctrl: pinctrl@400 {
				compatible = "bitmain,bm1880-pinctrl";
				reg = <0x400 0x120>;
			};

			clk: clock-controller@e8 {
				compatible = "bitmain,bm1880-clk";
				reg = <0xe8 0x0c>, <0x800 0xb0>;
				reg-names = "pll", "sys";
				clocks = <&osc>;
				clock-names = "osc";
				#clock-cells = <1>;
			};

			rst: reset-controller@c00 {
				compatible = "bitmain,bm1880-reset";
				reg = <0xc00 0x8>;
				#reset-cells = <1>;
			};
		};

		gpio0: gpio@50027000 {
			#address-cells = <1>;
			#size-cells = <0>;
			compatible = "snps,dw-apb-gpio";
			reg = <0x0 0x50027000 0x0 0x400>;

			porta: gpio-controller@0 {
				compatible = "snps,dw-apb-gpio-port";
				gpio-controller;
				#gpio-cells = <2>;
				ngpios = <32>;
				reg = <0>;
				interrupt-controller;
				#interrupt-cells = <2>;
				interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>;
			};
		};

		gpio1: gpio@50027400 {
			#address-cells = <1>;
			#size-cells = <0>;
			compatible = "snps,dw-apb-gpio";
			reg = <0x0 0x50027400 0x0 0x400>;

			portb: gpio-controller@0 {
				compatible = "snps,dw-apb-gpio-port";
				gpio-controller;
				#gpio-cells = <2>;
				ngpios = <32>;
				reg = <0>;
				interrupt-controller;
				#interrupt-cells = <2>;
				interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
			};
		};

		gpio2: gpio@50027800 {
			#address-cells = <1>;
			#size-cells = <0>;
			compatible = "snps,dw-apb-gpio";
			reg = <0x0 0x50027800 0x0 0x400>;

			portc: gpio-controller@0 {
				compatible = "snps,dw-apb-gpio-port";
				gpio-controller;
				#gpio-cells = <2>;
				ngpios = <8>;
				reg = <0>;
				interrupt-controller;
				#interrupt-cells = <2>;
				interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>;
			};
		};

		uart0: serial@58018000 {
			compatible = "snps,dw-apb-uart";
			reg = <0x0 0x58018000 0x0 0x2000>;
			clocks = <&clk BM1880_CLK_UART_500M>,
				 <&clk BM1880_CLK_APB_UART>;
			clock-names = "baudclk", "apb_pclk";
			interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
			reg-shift = <2>;
			reg-io-width = <4>;
			resets = <&rst BM1880_RST_UART0_1_CLK>;
			status = "disabled";
		};

		uart1: serial@5801A000 {
			compatible = "snps,dw-apb-uart";
			reg = <0x0 0x5801a000 0x0 0x2000>;
			clocks = <&clk BM1880_CLK_UART_500M>,
				 <&clk BM1880_CLK_APB_UART>;
			clock-names = "baudclk", "apb_pclk";
			interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
			reg-shift = <2>;
			reg-io-width = <4>;
			resets = <&rst BM1880_RST_UART0_1_ACLK>;
			status = "disabled";
		};

		uart2: serial@5801C000 {
			compatible = "snps,dw-apb-uart";
			reg = <0x0 0x5801c000 0x0 0x2000>;
			clocks = <&clk BM1880_CLK_UART_500M>,
				 <&clk BM1880_CLK_APB_UART>;
			clock-names = "baudclk", "apb_pclk";
			interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
			reg-shift = <2>;
			reg-io-width = <4>;
			resets = <&rst BM1880_RST_UART2_3_CLK>;
			status = "disabled";
		};

		uart3: serial@5801E000 {
			compatible = "snps,dw-apb-uart";
			reg = <0x0 0x5801e000 0x0 0x2000>;
			clocks = <&clk BM1880_CLK_UART_500M>,
				 <&clk BM1880_CLK_APB_UART>;
			clock-names = "baudclk", "apb_pclk";
			interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>;
			reg-shift = <2>;
			reg-io-width = <4>;
			resets = <&rst BM1880_RST_UART2_3_ACLK>;
			status = "disabled";
		};
	};
};
