162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Broadcom BCM63138 DSL SoCs Device Tree
462306a36Sopenharmony_ci */
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci#include <dt-bindings/interrupt-controller/arm-gic.h>
762306a36Sopenharmony_ci#include <dt-bindings/interrupt-controller/irq.h>
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci/ {
1062306a36Sopenharmony_ci	#address-cells = <1>;
1162306a36Sopenharmony_ci	#size-cells = <1>;
1262306a36Sopenharmony_ci	compatible = "brcm,bcm63138", "brcm,bcmbca";
1362306a36Sopenharmony_ci	model = "Broadcom BCM963138 Reference Board";
1462306a36Sopenharmony_ci	interrupt-parent = <&gic>;
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ci	aliases {
1762306a36Sopenharmony_ci		uart0 = &serial0;
1862306a36Sopenharmony_ci		uart1 = &serial1;
1962306a36Sopenharmony_ci	};
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ci	cpus {
2262306a36Sopenharmony_ci		#address-cells = <1>;
2362306a36Sopenharmony_ci		#size-cells = <0>;
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ci		cpu@0 {
2662306a36Sopenharmony_ci			device_type = "cpu";
2762306a36Sopenharmony_ci			compatible = "arm,cortex-a9";
2862306a36Sopenharmony_ci			next-level-cache = <&L2>;
2962306a36Sopenharmony_ci			reg = <0>;
3062306a36Sopenharmony_ci			enable-method = "brcm,bcm63138";
3162306a36Sopenharmony_ci		};
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ci		cpu@1 {
3462306a36Sopenharmony_ci			device_type = "cpu";
3562306a36Sopenharmony_ci			compatible = "arm,cortex-a9";
3662306a36Sopenharmony_ci			next-level-cache = <&L2>;
3762306a36Sopenharmony_ci			reg = <1>;
3862306a36Sopenharmony_ci			enable-method = "brcm,bcm63138";
3962306a36Sopenharmony_ci			resets = <&pmb0 4 1>;
4062306a36Sopenharmony_ci		};
4162306a36Sopenharmony_ci	};
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_ci	clocks {
4462306a36Sopenharmony_ci		/* UBUS peripheral clock */
4562306a36Sopenharmony_ci		periph_clk: periph_clk {
4662306a36Sopenharmony_ci			#clock-cells = <0>;
4762306a36Sopenharmony_ci			compatible = "fixed-clock";
4862306a36Sopenharmony_ci			clock-frequency = <50000000>;
4962306a36Sopenharmony_ci			clock-output-names = "periph";
5062306a36Sopenharmony_ci		};
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ci		/* peripheral clock for system timer */
5362306a36Sopenharmony_ci		axi_clk: axi_clk {
5462306a36Sopenharmony_ci			#clock-cells = <0>;
5562306a36Sopenharmony_ci			compatible = "fixed-factor-clock";
5662306a36Sopenharmony_ci			clocks = <&armpll>;
5762306a36Sopenharmony_ci			clock-div = <2>;
5862306a36Sopenharmony_ci			clock-mult = <1>;
5962306a36Sopenharmony_ci		};
6062306a36Sopenharmony_ci
6162306a36Sopenharmony_ci		/* APB bus clock */
6262306a36Sopenharmony_ci		apb_clk: apb_clk {
6362306a36Sopenharmony_ci			#clock-cells = <0>;
6462306a36Sopenharmony_ci			compatible = "fixed-factor-clock";
6562306a36Sopenharmony_ci			clocks = <&armpll>;
6662306a36Sopenharmony_ci			clock-div = <4>;
6762306a36Sopenharmony_ci			clock-mult = <1>;
6862306a36Sopenharmony_ci		};
6962306a36Sopenharmony_ci
7062306a36Sopenharmony_ci		hsspi_pll: hsspi-pll {
7162306a36Sopenharmony_ci			compatible = "fixed-clock";
7262306a36Sopenharmony_ci			#clock-cells = <0>;
7362306a36Sopenharmony_ci			clock-frequency = <400000000>;
7462306a36Sopenharmony_ci		};
7562306a36Sopenharmony_ci	};
7662306a36Sopenharmony_ci
7762306a36Sopenharmony_ci	/* ARM bus */
7862306a36Sopenharmony_ci	axi@80000000 {
7962306a36Sopenharmony_ci		compatible = "simple-bus";
8062306a36Sopenharmony_ci		ranges = <0 0x80000000 0x784000>;
8162306a36Sopenharmony_ci		#address-cells = <1>;
8262306a36Sopenharmony_ci		#size-cells = <1>;
8362306a36Sopenharmony_ci
8462306a36Sopenharmony_ci		L2: cache-controller@1d000 {
8562306a36Sopenharmony_ci			compatible = "arm,pl310-cache";
8662306a36Sopenharmony_ci			reg = <0x1d000 0x1000>;
8762306a36Sopenharmony_ci			cache-unified;
8862306a36Sopenharmony_ci			cache-level = <2>;
8962306a36Sopenharmony_ci			cache-size = <524288>;
9062306a36Sopenharmony_ci			cache-sets = <1024>;
9162306a36Sopenharmony_ci			cache-line-size = <32>;
9262306a36Sopenharmony_ci			interrupts = <GIC_PPI 0 IRQ_TYPE_LEVEL_HIGH>;
9362306a36Sopenharmony_ci		};
9462306a36Sopenharmony_ci
9562306a36Sopenharmony_ci		scu: scu@1e000 {
9662306a36Sopenharmony_ci			compatible = "arm,cortex-a9-scu";
9762306a36Sopenharmony_ci			reg = <0x1e000 0x100>;
9862306a36Sopenharmony_ci		};
9962306a36Sopenharmony_ci
10062306a36Sopenharmony_ci		gic: interrupt-controller@1f000 {
10162306a36Sopenharmony_ci			compatible = "arm,cortex-a9-gic";
10262306a36Sopenharmony_ci			reg = <0x1f000 0x1000
10362306a36Sopenharmony_ci				0x1e100 0x100>;
10462306a36Sopenharmony_ci			#interrupt-cells = <3>;
10562306a36Sopenharmony_ci			#address-cells = <0>;
10662306a36Sopenharmony_ci			interrupt-controller;
10762306a36Sopenharmony_ci		};
10862306a36Sopenharmony_ci
10962306a36Sopenharmony_ci		global_timer: timer@1e200 {
11062306a36Sopenharmony_ci			compatible = "arm,cortex-a9-global-timer";
11162306a36Sopenharmony_ci			reg = <0x1e200 0x20>;
11262306a36Sopenharmony_ci			interrupts = <GIC_PPI 11 IRQ_TYPE_EDGE_RISING>;
11362306a36Sopenharmony_ci			clocks = <&axi_clk>;
11462306a36Sopenharmony_ci		};
11562306a36Sopenharmony_ci
11662306a36Sopenharmony_ci		local_timer: local-timer@1e600 {
11762306a36Sopenharmony_ci			compatible = "arm,cortex-a9-twd-timer";
11862306a36Sopenharmony_ci			reg = <0x1e600 0x20>;
11962306a36Sopenharmony_ci			interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(2) |
12062306a36Sopenharmony_ci						  IRQ_TYPE_EDGE_RISING)>;
12162306a36Sopenharmony_ci			clocks = <&axi_clk>;
12262306a36Sopenharmony_ci		};
12362306a36Sopenharmony_ci
12462306a36Sopenharmony_ci		twd_watchdog: watchdog@1e620 {
12562306a36Sopenharmony_ci			compatible = "arm,cortex-a9-twd-wdt";
12662306a36Sopenharmony_ci			reg = <0x1e620 0x20>;
12762306a36Sopenharmony_ci			interrupts = <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(2) |
12862306a36Sopenharmony_ci						  IRQ_TYPE_LEVEL_HIGH)>;
12962306a36Sopenharmony_ci		};
13062306a36Sopenharmony_ci
13162306a36Sopenharmony_ci		armpll: armpll@20000 {
13262306a36Sopenharmony_ci			#clock-cells = <0>;
13362306a36Sopenharmony_ci			compatible = "brcm,bcm63138-armpll";
13462306a36Sopenharmony_ci			clocks = <&periph_clk>;
13562306a36Sopenharmony_ci			reg = <0x20000 0xf00>;
13662306a36Sopenharmony_ci		};
13762306a36Sopenharmony_ci
13862306a36Sopenharmony_ci		pmb0: reset-controller@4800c0 {
13962306a36Sopenharmony_ci			compatible = "brcm,bcm63138-pmb";
14062306a36Sopenharmony_ci			reg = <0x4800c0 0x10>;
14162306a36Sopenharmony_ci			#reset-cells = <2>;
14262306a36Sopenharmony_ci		};
14362306a36Sopenharmony_ci
14462306a36Sopenharmony_ci		pmb1: reset-controller@4800e0 {
14562306a36Sopenharmony_ci			compatible = "brcm,bcm63138-pmb";
14662306a36Sopenharmony_ci			reg = <0x4800e0 0x10>;
14762306a36Sopenharmony_ci			#reset-cells = <2>;
14862306a36Sopenharmony_ci		};
14962306a36Sopenharmony_ci
15062306a36Sopenharmony_ci		ahci: sata@a000 {
15162306a36Sopenharmony_ci			compatible = "brcm,bcm63138-ahci", "brcm,sata3-ahci";
15262306a36Sopenharmony_ci			reg-names = "ahci", "top-ctrl";
15362306a36Sopenharmony_ci			reg = <0xa000 0x9ac>, <0x8040 0x24>;
15462306a36Sopenharmony_ci			interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
15562306a36Sopenharmony_ci			#address-cells = <1>;
15662306a36Sopenharmony_ci			#size-cells = <0>;
15762306a36Sopenharmony_ci			resets = <&pmb0 3 1>;
15862306a36Sopenharmony_ci			reset-names = "ahci";
15962306a36Sopenharmony_ci			status = "disabled";
16062306a36Sopenharmony_ci
16162306a36Sopenharmony_ci			sata0: sata-port@0 {
16262306a36Sopenharmony_ci				reg = <0>;
16362306a36Sopenharmony_ci				phys = <&sata_phy0>;
16462306a36Sopenharmony_ci			};
16562306a36Sopenharmony_ci		};
16662306a36Sopenharmony_ci
16762306a36Sopenharmony_ci		sata_phy: sata-phy@8100 {
16862306a36Sopenharmony_ci			compatible = "brcm,bcm63138-sata-phy", "brcm,phy-sata3";
16962306a36Sopenharmony_ci			reg = <0x8100 0x1e00>;
17062306a36Sopenharmony_ci			reg-names = "phy";
17162306a36Sopenharmony_ci			#address-cells = <1>;
17262306a36Sopenharmony_ci			#size-cells = <0>;
17362306a36Sopenharmony_ci			status = "disabled";
17462306a36Sopenharmony_ci
17562306a36Sopenharmony_ci			sata_phy0: sata-phy@0 {
17662306a36Sopenharmony_ci				reg = <0>;
17762306a36Sopenharmony_ci				#phy-cells = <0>;
17862306a36Sopenharmony_ci			};
17962306a36Sopenharmony_ci		};
18062306a36Sopenharmony_ci	};
18162306a36Sopenharmony_ci
18262306a36Sopenharmony_ci	/* Legacy UBUS base */
18362306a36Sopenharmony_ci	ubus@fffe8000 {
18462306a36Sopenharmony_ci		compatible = "simple-bus";
18562306a36Sopenharmony_ci		#address-cells = <1>;
18662306a36Sopenharmony_ci		#size-cells = <1>;
18762306a36Sopenharmony_ci		ranges = <0 0xfffe8000 0x8100>;
18862306a36Sopenharmony_ci
18962306a36Sopenharmony_ci		timer: timer@80 {
19062306a36Sopenharmony_ci			compatible = "brcm,bcm6328-timer", "syscon";
19162306a36Sopenharmony_ci			reg = <0x80 0x3c>;
19262306a36Sopenharmony_ci		};
19362306a36Sopenharmony_ci
19462306a36Sopenharmony_ci		serial0: serial@600 {
19562306a36Sopenharmony_ci			compatible = "brcm,bcm6345-uart";
19662306a36Sopenharmony_ci			reg = <0x600 0x1b>;
19762306a36Sopenharmony_ci			interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
19862306a36Sopenharmony_ci			clocks = <&periph_clk>;
19962306a36Sopenharmony_ci			clock-names = "periph";
20062306a36Sopenharmony_ci			status = "disabled";
20162306a36Sopenharmony_ci		};
20262306a36Sopenharmony_ci
20362306a36Sopenharmony_ci		serial1: serial@620 {
20462306a36Sopenharmony_ci			compatible = "brcm,bcm6345-uart";
20562306a36Sopenharmony_ci			reg = <0x620 0x1b>;
20662306a36Sopenharmony_ci			interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
20762306a36Sopenharmony_ci			clocks = <&periph_clk>;
20862306a36Sopenharmony_ci			clock-names = "periph";
20962306a36Sopenharmony_ci			status = "disabled";
21062306a36Sopenharmony_ci		};
21162306a36Sopenharmony_ci
21262306a36Sopenharmony_ci		hsspi: spi@1000 {
21362306a36Sopenharmony_ci			#address-cells = <1>;
21462306a36Sopenharmony_ci			#size-cells = <0>;
21562306a36Sopenharmony_ci			compatible = "brcm,bcm63138-hsspi", "brcm,bcmbca-hsspi-v1.0";
21662306a36Sopenharmony_ci			reg = <0x1000 0x600>;
21762306a36Sopenharmony_ci			interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
21862306a36Sopenharmony_ci			clocks = <&hsspi_pll &hsspi_pll>;
21962306a36Sopenharmony_ci			clock-names = "hsspi", "pll";
22062306a36Sopenharmony_ci			num-cs = <8>;
22162306a36Sopenharmony_ci			status = "disabled";
22262306a36Sopenharmony_ci		};
22362306a36Sopenharmony_ci
22462306a36Sopenharmony_ci		nand_controller: nand-controller@2000 {
22562306a36Sopenharmony_ci			#address-cells = <1>;
22662306a36Sopenharmony_ci			#size-cells = <0>;
22762306a36Sopenharmony_ci			compatible = "brcm,nand-bcm63138", "brcm,brcmnand-v7.0", "brcm,brcmnand";
22862306a36Sopenharmony_ci			reg = <0x2000 0x600>, <0xf0 0x10>;
22962306a36Sopenharmony_ci			reg-names = "nand", "nand-int-base";
23062306a36Sopenharmony_ci			status = "disabled";
23162306a36Sopenharmony_ci			interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
23262306a36Sopenharmony_ci			interrupt-names = "nand";
23362306a36Sopenharmony_ci		};
23462306a36Sopenharmony_ci
23562306a36Sopenharmony_ci		bootlut: bootlut@8000 {
23662306a36Sopenharmony_ci			compatible = "brcm,bcm63138-bootlut";
23762306a36Sopenharmony_ci			reg = <0x8000 0x50>;
23862306a36Sopenharmony_ci		};
23962306a36Sopenharmony_ci
24062306a36Sopenharmony_ci		reboot {
24162306a36Sopenharmony_ci			compatible = "syscon-reboot";
24262306a36Sopenharmony_ci			regmap = <&timer>;
24362306a36Sopenharmony_ci			offset = <0x34>;
24462306a36Sopenharmony_ci			mask = <1>;
24562306a36Sopenharmony_ci		};
24662306a36Sopenharmony_ci	};
24762306a36Sopenharmony_ci};
248