162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ci// Copyright (C) 2014 Broadcom Corporation
362306a36Sopenharmony_ci
462306a36Sopenharmony_ci#include <dt-bindings/clock/bcm21664.h>
562306a36Sopenharmony_ci#include <dt-bindings/interrupt-controller/arm-gic.h>
662306a36Sopenharmony_ci#include <dt-bindings/interrupt-controller/irq.h>
762306a36Sopenharmony_ci
862306a36Sopenharmony_ci/ {
962306a36Sopenharmony_ci	#address-cells = <1>;
1062306a36Sopenharmony_ci	#size-cells = <1>;
1162306a36Sopenharmony_ci	model = "BCM21664 SoC";
1262306a36Sopenharmony_ci	compatible = "brcm,bcm21664";
1362306a36Sopenharmony_ci	interrupt-parent = <&gic>;
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ci	chosen {
1662306a36Sopenharmony_ci		bootargs = "console=ttyS0,115200n8";
1762306a36Sopenharmony_ci	};
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ci	cpus {
2062306a36Sopenharmony_ci		#address-cells = <1>;
2162306a36Sopenharmony_ci		#size-cells = <0>;
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ci		cpu0: cpu@0 {
2462306a36Sopenharmony_ci			device_type = "cpu";
2562306a36Sopenharmony_ci			compatible = "arm,cortex-a9";
2662306a36Sopenharmony_ci			reg = <0>;
2762306a36Sopenharmony_ci		};
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ci		cpu1: cpu@1 {
3062306a36Sopenharmony_ci			device_type = "cpu";
3162306a36Sopenharmony_ci			compatible = "arm,cortex-a9";
3262306a36Sopenharmony_ci			enable-method = "brcm,bcm11351-cpu-method";
3362306a36Sopenharmony_ci			secondary-boot-reg = <0x35004178>;
3462306a36Sopenharmony_ci			reg = <1>;
3562306a36Sopenharmony_ci		};
3662306a36Sopenharmony_ci	};
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ci	gic: interrupt-controller@3ff00100 {
3962306a36Sopenharmony_ci		compatible = "arm,cortex-a9-gic";
4062306a36Sopenharmony_ci		#interrupt-cells = <3>;
4162306a36Sopenharmony_ci		#address-cells = <0>;
4262306a36Sopenharmony_ci		interrupt-controller;
4362306a36Sopenharmony_ci		reg = <0x3ff01000 0x1000>,
4462306a36Sopenharmony_ci		      <0x3ff00100 0x100>;
4562306a36Sopenharmony_ci	};
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_ci	smc@3404e000 {
4862306a36Sopenharmony_ci		compatible = "brcm,bcm21664-smc", "brcm,kona-smc";
4962306a36Sopenharmony_ci		reg = <0x3404e000 0x400>; /* 1 KiB in SRAM */
5062306a36Sopenharmony_ci	};
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ci	uartb: serial@3e000000 {
5362306a36Sopenharmony_ci		compatible = "brcm,bcm21664-dw-apb-uart", "snps,dw-apb-uart";
5462306a36Sopenharmony_ci		reg = <0x3e000000 0x118>;
5562306a36Sopenharmony_ci		clocks = <&slave_ccu BCM21664_SLAVE_CCU_UARTB>;
5662306a36Sopenharmony_ci		interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
5762306a36Sopenharmony_ci		reg-shift = <2>;
5862306a36Sopenharmony_ci		reg-io-width = <4>;
5962306a36Sopenharmony_ci		status = "disabled";
6062306a36Sopenharmony_ci	};
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_ci	uartb2: serial@3e001000 {
6362306a36Sopenharmony_ci		compatible = "brcm,bcm21664-dw-apb-uart", "snps,dw-apb-uart";
6462306a36Sopenharmony_ci		reg = <0x3e001000 0x118>;
6562306a36Sopenharmony_ci		clocks = <&slave_ccu BCM21664_SLAVE_CCU_UARTB2>;
6662306a36Sopenharmony_ci		interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>;
6762306a36Sopenharmony_ci		reg-shift = <2>;
6862306a36Sopenharmony_ci		reg-io-width = <4>;
6962306a36Sopenharmony_ci		status = "disabled";
7062306a36Sopenharmony_ci	};
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_ci	uartb3: serial@3e002000 {
7362306a36Sopenharmony_ci		compatible = "brcm,bcm21664-dw-apb-uart", "snps,dw-apb-uart";
7462306a36Sopenharmony_ci		reg = <0x3e002000 0x118>;
7562306a36Sopenharmony_ci		clocks = <&slave_ccu BCM21664_SLAVE_CCU_UARTB3>;
7662306a36Sopenharmony_ci		interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
7762306a36Sopenharmony_ci		reg-shift = <2>;
7862306a36Sopenharmony_ci		reg-io-width = <4>;
7962306a36Sopenharmony_ci		status = "disabled";
8062306a36Sopenharmony_ci	};
8162306a36Sopenharmony_ci
8262306a36Sopenharmony_ci	L2: cache-controller@3ff20000 {
8362306a36Sopenharmony_ci		compatible = "arm,pl310-cache";
8462306a36Sopenharmony_ci		reg = <0x3ff20000 0x1000>;
8562306a36Sopenharmony_ci		cache-unified;
8662306a36Sopenharmony_ci		cache-level = <2>;
8762306a36Sopenharmony_ci	};
8862306a36Sopenharmony_ci
8962306a36Sopenharmony_ci	brcm,resetmgr@35001f00 {
9062306a36Sopenharmony_ci		compatible = "brcm,bcm21664-resetmgr";
9162306a36Sopenharmony_ci		reg = <0x35001f00 0x24>;
9262306a36Sopenharmony_ci	};
9362306a36Sopenharmony_ci
9462306a36Sopenharmony_ci	timer@35006000 {
9562306a36Sopenharmony_ci		compatible = "brcm,kona-timer";
9662306a36Sopenharmony_ci		reg = <0x35006000 0x1c>;
9762306a36Sopenharmony_ci		interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
9862306a36Sopenharmony_ci		clocks = <&aon_ccu BCM21664_AON_CCU_HUB_TIMER>;
9962306a36Sopenharmony_ci	};
10062306a36Sopenharmony_ci
10162306a36Sopenharmony_ci	gpio: gpio@35003000 {
10262306a36Sopenharmony_ci		compatible = "brcm,bcm21664-gpio", "brcm,kona-gpio";
10362306a36Sopenharmony_ci		reg = <0x35003000 0x524>;
10462306a36Sopenharmony_ci		interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>,
10562306a36Sopenharmony_ci			     <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>,
10662306a36Sopenharmony_ci			     <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>,
10762306a36Sopenharmony_ci			     <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>;
10862306a36Sopenharmony_ci		#gpio-cells = <2>;
10962306a36Sopenharmony_ci		#interrupt-cells = <2>;
11062306a36Sopenharmony_ci		gpio-controller;
11162306a36Sopenharmony_ci		interrupt-controller;
11262306a36Sopenharmony_ci	};
11362306a36Sopenharmony_ci
11462306a36Sopenharmony_ci	sdio1: mmc@3f180000 {
11562306a36Sopenharmony_ci		compatible = "brcm,kona-sdhci";
11662306a36Sopenharmony_ci		reg = <0x3f180000 0x801c>;
11762306a36Sopenharmony_ci		interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
11862306a36Sopenharmony_ci		clocks = <&master_ccu BCM21664_MASTER_CCU_SDIO1>;
11962306a36Sopenharmony_ci		status = "disabled";
12062306a36Sopenharmony_ci	};
12162306a36Sopenharmony_ci
12262306a36Sopenharmony_ci	sdio2: mmc@3f190000 {
12362306a36Sopenharmony_ci		compatible = "brcm,kona-sdhci";
12462306a36Sopenharmony_ci		reg = <0x3f190000 0x801c>;
12562306a36Sopenharmony_ci		interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
12662306a36Sopenharmony_ci		clocks = <&master_ccu BCM21664_MASTER_CCU_SDIO2>;
12762306a36Sopenharmony_ci		status = "disabled";
12862306a36Sopenharmony_ci	};
12962306a36Sopenharmony_ci
13062306a36Sopenharmony_ci	sdio3: mmc@3f1a0000 {
13162306a36Sopenharmony_ci		compatible = "brcm,kona-sdhci";
13262306a36Sopenharmony_ci		reg = <0x3f1a0000 0x801c>;
13362306a36Sopenharmony_ci		interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
13462306a36Sopenharmony_ci		clocks = <&master_ccu BCM21664_MASTER_CCU_SDIO3>;
13562306a36Sopenharmony_ci		status = "disabled";
13662306a36Sopenharmony_ci	};
13762306a36Sopenharmony_ci
13862306a36Sopenharmony_ci	sdio4: mmc@3f1b0000 {
13962306a36Sopenharmony_ci		compatible = "brcm,kona-sdhci";
14062306a36Sopenharmony_ci		reg = <0x3f1b0000 0x801c>;
14162306a36Sopenharmony_ci		interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
14262306a36Sopenharmony_ci		clocks = <&master_ccu BCM21664_MASTER_CCU_SDIO4>;
14362306a36Sopenharmony_ci		status = "disabled";
14462306a36Sopenharmony_ci	};
14562306a36Sopenharmony_ci
14662306a36Sopenharmony_ci	bsc1: i2c@3e016000 {
14762306a36Sopenharmony_ci		compatible = "brcm,bcm21664-i2c", "brcm,kona-i2c";
14862306a36Sopenharmony_ci		reg = <0x3e016000 0x70>;
14962306a36Sopenharmony_ci		interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
15062306a36Sopenharmony_ci		#address-cells = <1>;
15162306a36Sopenharmony_ci		#size-cells = <0>;
15262306a36Sopenharmony_ci		clocks = <&slave_ccu BCM21664_SLAVE_CCU_BSC1>;
15362306a36Sopenharmony_ci		status = "disabled";
15462306a36Sopenharmony_ci	};
15562306a36Sopenharmony_ci
15662306a36Sopenharmony_ci	bsc2: i2c@3e017000 {
15762306a36Sopenharmony_ci		compatible = "brcm,bcm21664-i2c", "brcm,kona-i2c";
15862306a36Sopenharmony_ci		reg = <0x3e017000 0x70>;
15962306a36Sopenharmony_ci		interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>;
16062306a36Sopenharmony_ci		#address-cells = <1>;
16162306a36Sopenharmony_ci		#size-cells = <0>;
16262306a36Sopenharmony_ci		clocks = <&slave_ccu BCM21664_SLAVE_CCU_BSC2>;
16362306a36Sopenharmony_ci		status = "disabled";
16462306a36Sopenharmony_ci	};
16562306a36Sopenharmony_ci
16662306a36Sopenharmony_ci	bsc3: i2c@3e018000 {
16762306a36Sopenharmony_ci		compatible = "brcm,bcm21664-i2c", "brcm,kona-i2c";
16862306a36Sopenharmony_ci		reg = <0x3e018000 0x70>;
16962306a36Sopenharmony_ci		interrupts = <GIC_SPI 169 IRQ_TYPE_LEVEL_HIGH>;
17062306a36Sopenharmony_ci		#address-cells = <1>;
17162306a36Sopenharmony_ci		#size-cells = <0>;
17262306a36Sopenharmony_ci		clocks = <&slave_ccu BCM21664_SLAVE_CCU_BSC3>;
17362306a36Sopenharmony_ci		status = "disabled";
17462306a36Sopenharmony_ci	};
17562306a36Sopenharmony_ci
17662306a36Sopenharmony_ci	bsc4: i2c@3e01c000 {
17762306a36Sopenharmony_ci		compatible = "brcm,bcm21664-i2c", "brcm,kona-i2c";
17862306a36Sopenharmony_ci		reg = <0x3e01c000 0x70>;
17962306a36Sopenharmony_ci		interrupts = <GIC_SPI 170 IRQ_TYPE_LEVEL_HIGH>;
18062306a36Sopenharmony_ci		#address-cells = <1>;
18162306a36Sopenharmony_ci		#size-cells = <0>;
18262306a36Sopenharmony_ci		clocks = <&slave_ccu BCM21664_SLAVE_CCU_BSC4>;
18362306a36Sopenharmony_ci		status = "disabled";
18462306a36Sopenharmony_ci	};
18562306a36Sopenharmony_ci
18662306a36Sopenharmony_ci	clocks {
18762306a36Sopenharmony_ci		#address-cells = <1>;
18862306a36Sopenharmony_ci		#size-cells = <1>;
18962306a36Sopenharmony_ci		ranges;
19062306a36Sopenharmony_ci
19162306a36Sopenharmony_ci		/*
19262306a36Sopenharmony_ci		 * Fixed clocks are defined before CCUs whose
19362306a36Sopenharmony_ci		 * clocks may depend on them.
19462306a36Sopenharmony_ci		 */
19562306a36Sopenharmony_ci
19662306a36Sopenharmony_ci		ref_32k_clk: ref_32k {
19762306a36Sopenharmony_ci			#clock-cells = <0>;
19862306a36Sopenharmony_ci			compatible = "fixed-clock";
19962306a36Sopenharmony_ci			clock-frequency = <32768>;
20062306a36Sopenharmony_ci		};
20162306a36Sopenharmony_ci
20262306a36Sopenharmony_ci		bbl_32k_clk: bbl_32k {
20362306a36Sopenharmony_ci			#clock-cells = <0>;
20462306a36Sopenharmony_ci			compatible = "fixed-clock";
20562306a36Sopenharmony_ci			clock-frequency = <32768>;
20662306a36Sopenharmony_ci		};
20762306a36Sopenharmony_ci
20862306a36Sopenharmony_ci		ref_13m_clk: ref_13m {
20962306a36Sopenharmony_ci			#clock-cells = <0>;
21062306a36Sopenharmony_ci			compatible = "fixed-clock";
21162306a36Sopenharmony_ci			clock-frequency = <13000000>;
21262306a36Sopenharmony_ci		};
21362306a36Sopenharmony_ci
21462306a36Sopenharmony_ci		var_13m_clk: var_13m {
21562306a36Sopenharmony_ci			#clock-cells = <0>;
21662306a36Sopenharmony_ci			compatible = "fixed-clock";
21762306a36Sopenharmony_ci			clock-frequency = <13000000>;
21862306a36Sopenharmony_ci		};
21962306a36Sopenharmony_ci
22062306a36Sopenharmony_ci		dft_19_5m_clk: dft_19_5m {
22162306a36Sopenharmony_ci			#clock-cells = <0>;
22262306a36Sopenharmony_ci			compatible = "fixed-clock";
22362306a36Sopenharmony_ci			clock-frequency = <19500000>;
22462306a36Sopenharmony_ci		};
22562306a36Sopenharmony_ci
22662306a36Sopenharmony_ci		ref_crystal_clk: ref_crystal {
22762306a36Sopenharmony_ci			#clock-cells = <0>;
22862306a36Sopenharmony_ci			compatible = "fixed-clock";
22962306a36Sopenharmony_ci			clock-frequency = <26000000>;
23062306a36Sopenharmony_ci		};
23162306a36Sopenharmony_ci
23262306a36Sopenharmony_ci		ref_52m_clk: ref_52m {
23362306a36Sopenharmony_ci			#clock-cells = <0>;
23462306a36Sopenharmony_ci			compatible = "fixed-clock";
23562306a36Sopenharmony_ci			clock-frequency = <52000000>;
23662306a36Sopenharmony_ci		};
23762306a36Sopenharmony_ci
23862306a36Sopenharmony_ci		var_52m_clk: var_52m {
23962306a36Sopenharmony_ci			#clock-cells = <0>;
24062306a36Sopenharmony_ci			compatible = "fixed-clock";
24162306a36Sopenharmony_ci			clock-frequency = <52000000>;
24262306a36Sopenharmony_ci		};
24362306a36Sopenharmony_ci
24462306a36Sopenharmony_ci		usb_otg_ahb_clk: usb_otg_ahb {
24562306a36Sopenharmony_ci			#clock-cells = <0>;
24662306a36Sopenharmony_ci			compatible = "fixed-clock";
24762306a36Sopenharmony_ci			clock-frequency = <52000000>;
24862306a36Sopenharmony_ci		};
24962306a36Sopenharmony_ci
25062306a36Sopenharmony_ci		ref_96m_clk: ref_96m {
25162306a36Sopenharmony_ci			#clock-cells = <0>;
25262306a36Sopenharmony_ci			compatible = "fixed-clock";
25362306a36Sopenharmony_ci			clock-frequency = <96000000>;
25462306a36Sopenharmony_ci		};
25562306a36Sopenharmony_ci
25662306a36Sopenharmony_ci		var_96m_clk: var_96m {
25762306a36Sopenharmony_ci			#clock-cells = <0>;
25862306a36Sopenharmony_ci			compatible = "fixed-clock";
25962306a36Sopenharmony_ci			clock-frequency = <96000000>;
26062306a36Sopenharmony_ci		};
26162306a36Sopenharmony_ci
26262306a36Sopenharmony_ci		ref_104m_clk: ref_104m {
26362306a36Sopenharmony_ci			#clock-cells = <0>;
26462306a36Sopenharmony_ci			compatible = "fixed-clock";
26562306a36Sopenharmony_ci			clock-frequency = <104000000>;
26662306a36Sopenharmony_ci		};
26762306a36Sopenharmony_ci
26862306a36Sopenharmony_ci		var_104m_clk: var_104m {
26962306a36Sopenharmony_ci			#clock-cells = <0>;
27062306a36Sopenharmony_ci			compatible = "fixed-clock";
27162306a36Sopenharmony_ci			clock-frequency = <104000000>;
27262306a36Sopenharmony_ci		};
27362306a36Sopenharmony_ci
27462306a36Sopenharmony_ci		ref_156m_clk: ref_156m {
27562306a36Sopenharmony_ci			#clock-cells = <0>;
27662306a36Sopenharmony_ci			compatible = "fixed-clock";
27762306a36Sopenharmony_ci			clock-frequency = <156000000>;
27862306a36Sopenharmony_ci		};
27962306a36Sopenharmony_ci
28062306a36Sopenharmony_ci		var_156m_clk: var_156m {
28162306a36Sopenharmony_ci			#clock-cells = <0>;
28262306a36Sopenharmony_ci			compatible = "fixed-clock";
28362306a36Sopenharmony_ci			clock-frequency = <156000000>;
28462306a36Sopenharmony_ci		};
28562306a36Sopenharmony_ci
28662306a36Sopenharmony_ci		root_ccu: root_ccu@35001000 {
28762306a36Sopenharmony_ci			compatible = "brcm,bcm21664-root-ccu";
28862306a36Sopenharmony_ci			reg = <0x35001000 0x0f00>;
28962306a36Sopenharmony_ci			#clock-cells = <1>;
29062306a36Sopenharmony_ci			clock-output-names = "frac_1m";
29162306a36Sopenharmony_ci		};
29262306a36Sopenharmony_ci
29362306a36Sopenharmony_ci		aon_ccu: aon_ccu@35002000 {
29462306a36Sopenharmony_ci			compatible = "brcm,bcm21664-aon-ccu";
29562306a36Sopenharmony_ci			reg = <0x35002000 0x0f00>;
29662306a36Sopenharmony_ci			#clock-cells = <1>;
29762306a36Sopenharmony_ci			clock-output-names = "hub_timer";
29862306a36Sopenharmony_ci		};
29962306a36Sopenharmony_ci
30062306a36Sopenharmony_ci		master_ccu: master_ccu@3f001000 {
30162306a36Sopenharmony_ci			compatible = "brcm,bcm21664-master-ccu";
30262306a36Sopenharmony_ci			reg = <0x3f001000 0x0f00>;
30362306a36Sopenharmony_ci			#clock-cells = <1>;
30462306a36Sopenharmony_ci			clock-output-names = "sdio1",
30562306a36Sopenharmony_ci					     "sdio2",
30662306a36Sopenharmony_ci					     "sdio3",
30762306a36Sopenharmony_ci					     "sdio4",
30862306a36Sopenharmony_ci					     "sdio1_sleep",
30962306a36Sopenharmony_ci					     "sdio2_sleep",
31062306a36Sopenharmony_ci					     "sdio3_sleep",
31162306a36Sopenharmony_ci					     "sdio4_sleep";
31262306a36Sopenharmony_ci		};
31362306a36Sopenharmony_ci
31462306a36Sopenharmony_ci		slave_ccu: slave_ccu@3e011000 {
31562306a36Sopenharmony_ci			compatible = "brcm,bcm21664-slave-ccu";
31662306a36Sopenharmony_ci			reg = <0x3e011000 0x0f00>;
31762306a36Sopenharmony_ci			#clock-cells = <1>;
31862306a36Sopenharmony_ci			clock-output-names = "uartb",
31962306a36Sopenharmony_ci					     "uartb2",
32062306a36Sopenharmony_ci					     "uartb3",
32162306a36Sopenharmony_ci					     "bsc1",
32262306a36Sopenharmony_ci					     "bsc2",
32362306a36Sopenharmony_ci					     "bsc3",
32462306a36Sopenharmony_ci					     "bsc4";
32562306a36Sopenharmony_ci		};
32662306a36Sopenharmony_ci	};
32762306a36Sopenharmony_ci
32862306a36Sopenharmony_ci	usbotg: usb@3f120000 {
32962306a36Sopenharmony_ci		compatible = "snps,dwc2";
33062306a36Sopenharmony_ci		reg = <0x3f120000 0x10000>;
33162306a36Sopenharmony_ci		interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
33262306a36Sopenharmony_ci		clocks = <&usb_otg_ahb_clk>;
33362306a36Sopenharmony_ci		clock-names = "otg";
33462306a36Sopenharmony_ci		phys = <&usbphy>;
33562306a36Sopenharmony_ci		phy-names = "usb2-phy";
33662306a36Sopenharmony_ci		status = "disabled";
33762306a36Sopenharmony_ci	};
33862306a36Sopenharmony_ci
33962306a36Sopenharmony_ci	usbphy: usb-phy@3f130000 {
34062306a36Sopenharmony_ci		compatible = "brcm,kona-usb2-phy";
34162306a36Sopenharmony_ci		reg = <0x3f130000 0x28>;
34262306a36Sopenharmony_ci		#phy-cells = <0>;
34362306a36Sopenharmony_ci		status = "disabled";
34462306a36Sopenharmony_ci	};
34562306a36Sopenharmony_ci};
346