162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0 OR MIT
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright (C) 2021 StarFive Technology Co., Ltd.
462306a36Sopenharmony_ci * Copyright (C) 2021 Emil Renner Berthing <kernel@esmil.dk>
562306a36Sopenharmony_ci */
662306a36Sopenharmony_ci
762306a36Sopenharmony_ci/dts-v1/;
862306a36Sopenharmony_ci#include <dt-bindings/clock/starfive-jh7100.h>
962306a36Sopenharmony_ci#include <dt-bindings/reset/starfive-jh7100.h>
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci/ {
1262306a36Sopenharmony_ci	compatible = "starfive,jh7100";
1362306a36Sopenharmony_ci	#address-cells = <2>;
1462306a36Sopenharmony_ci	#size-cells = <2>;
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ci	cpus {
1762306a36Sopenharmony_ci		#address-cells = <1>;
1862306a36Sopenharmony_ci		#size-cells = <0>;
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ci		U74_0: cpu@0 {
2162306a36Sopenharmony_ci			compatible = "sifive,u74-mc", "riscv";
2262306a36Sopenharmony_ci			reg = <0>;
2362306a36Sopenharmony_ci			d-cache-block-size = <64>;
2462306a36Sopenharmony_ci			d-cache-sets = <64>;
2562306a36Sopenharmony_ci			d-cache-size = <32768>;
2662306a36Sopenharmony_ci			d-tlb-sets = <1>;
2762306a36Sopenharmony_ci			d-tlb-size = <32>;
2862306a36Sopenharmony_ci			device_type = "cpu";
2962306a36Sopenharmony_ci			i-cache-block-size = <64>;
3062306a36Sopenharmony_ci			i-cache-sets = <64>;
3162306a36Sopenharmony_ci			i-cache-size = <32768>;
3262306a36Sopenharmony_ci			i-tlb-sets = <1>;
3362306a36Sopenharmony_ci			i-tlb-size = <32>;
3462306a36Sopenharmony_ci			mmu-type = "riscv,sv39";
3562306a36Sopenharmony_ci			riscv,isa = "rv64imafdc";
3662306a36Sopenharmony_ci			tlb-split;
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ci			cpu0_intc: interrupt-controller {
3962306a36Sopenharmony_ci				compatible = "riscv,cpu-intc";
4062306a36Sopenharmony_ci				interrupt-controller;
4162306a36Sopenharmony_ci				#interrupt-cells = <1>;
4262306a36Sopenharmony_ci			};
4362306a36Sopenharmony_ci		};
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_ci		U74_1: cpu@1 {
4662306a36Sopenharmony_ci			compatible = "sifive,u74-mc", "riscv";
4762306a36Sopenharmony_ci			reg = <1>;
4862306a36Sopenharmony_ci			d-cache-block-size = <64>;
4962306a36Sopenharmony_ci			d-cache-sets = <64>;
5062306a36Sopenharmony_ci			d-cache-size = <32768>;
5162306a36Sopenharmony_ci			d-tlb-sets = <1>;
5262306a36Sopenharmony_ci			d-tlb-size = <32>;
5362306a36Sopenharmony_ci			device_type = "cpu";
5462306a36Sopenharmony_ci			i-cache-block-size = <64>;
5562306a36Sopenharmony_ci			i-cache-sets = <64>;
5662306a36Sopenharmony_ci			i-cache-size = <32768>;
5762306a36Sopenharmony_ci			i-tlb-sets = <1>;
5862306a36Sopenharmony_ci			i-tlb-size = <32>;
5962306a36Sopenharmony_ci			mmu-type = "riscv,sv39";
6062306a36Sopenharmony_ci			riscv,isa = "rv64imafdc";
6162306a36Sopenharmony_ci			tlb-split;
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ci			cpu1_intc: interrupt-controller {
6462306a36Sopenharmony_ci				compatible = "riscv,cpu-intc";
6562306a36Sopenharmony_ci				interrupt-controller;
6662306a36Sopenharmony_ci				#interrupt-cells = <1>;
6762306a36Sopenharmony_ci			};
6862306a36Sopenharmony_ci		};
6962306a36Sopenharmony_ci
7062306a36Sopenharmony_ci		cpu-map {
7162306a36Sopenharmony_ci			cluster0 {
7262306a36Sopenharmony_ci				core0 {
7362306a36Sopenharmony_ci					cpu = <&U74_0>;
7462306a36Sopenharmony_ci				};
7562306a36Sopenharmony_ci
7662306a36Sopenharmony_ci				core1 {
7762306a36Sopenharmony_ci					cpu = <&U74_1>;
7862306a36Sopenharmony_ci				};
7962306a36Sopenharmony_ci			};
8062306a36Sopenharmony_ci		};
8162306a36Sopenharmony_ci	};
8262306a36Sopenharmony_ci
8362306a36Sopenharmony_ci	thermal-zones {
8462306a36Sopenharmony_ci		cpu-thermal {
8562306a36Sopenharmony_ci			polling-delay-passive = <250>;
8662306a36Sopenharmony_ci			polling-delay = <15000>;
8762306a36Sopenharmony_ci
8862306a36Sopenharmony_ci			thermal-sensors = <&sfctemp>;
8962306a36Sopenharmony_ci
9062306a36Sopenharmony_ci			trips {
9162306a36Sopenharmony_ci				cpu_alert0 {
9262306a36Sopenharmony_ci					/* milliCelsius */
9362306a36Sopenharmony_ci					temperature = <75000>;
9462306a36Sopenharmony_ci					hysteresis = <2000>;
9562306a36Sopenharmony_ci					type = "passive";
9662306a36Sopenharmony_ci				};
9762306a36Sopenharmony_ci
9862306a36Sopenharmony_ci				cpu_crit {
9962306a36Sopenharmony_ci					/* milliCelsius */
10062306a36Sopenharmony_ci					temperature = <90000>;
10162306a36Sopenharmony_ci					hysteresis = <2000>;
10262306a36Sopenharmony_ci					type = "critical";
10362306a36Sopenharmony_ci				};
10462306a36Sopenharmony_ci			};
10562306a36Sopenharmony_ci		};
10662306a36Sopenharmony_ci	};
10762306a36Sopenharmony_ci
10862306a36Sopenharmony_ci	osc_sys: osc_sys {
10962306a36Sopenharmony_ci		compatible = "fixed-clock";
11062306a36Sopenharmony_ci		#clock-cells = <0>;
11162306a36Sopenharmony_ci		/* This value must be overridden by the board */
11262306a36Sopenharmony_ci		clock-frequency = <0>;
11362306a36Sopenharmony_ci	};
11462306a36Sopenharmony_ci
11562306a36Sopenharmony_ci	osc_aud: osc_aud {
11662306a36Sopenharmony_ci		compatible = "fixed-clock";
11762306a36Sopenharmony_ci		#clock-cells = <0>;
11862306a36Sopenharmony_ci		/* This value must be overridden by the board */
11962306a36Sopenharmony_ci		clock-frequency = <0>;
12062306a36Sopenharmony_ci	};
12162306a36Sopenharmony_ci
12262306a36Sopenharmony_ci	gmac_rmii_ref: gmac_rmii_ref {
12362306a36Sopenharmony_ci		compatible = "fixed-clock";
12462306a36Sopenharmony_ci		#clock-cells = <0>;
12562306a36Sopenharmony_ci		/* Should be overridden by the board when needed */
12662306a36Sopenharmony_ci		clock-frequency = <0>;
12762306a36Sopenharmony_ci	};
12862306a36Sopenharmony_ci
12962306a36Sopenharmony_ci	gmac_gr_mii_rxclk: gmac_gr_mii_rxclk {
13062306a36Sopenharmony_ci		compatible = "fixed-clock";
13162306a36Sopenharmony_ci		#clock-cells = <0>;
13262306a36Sopenharmony_ci		/* Should be overridden by the board when needed */
13362306a36Sopenharmony_ci		clock-frequency = <0>;
13462306a36Sopenharmony_ci	};
13562306a36Sopenharmony_ci
13662306a36Sopenharmony_ci	soc {
13762306a36Sopenharmony_ci		compatible = "simple-bus";
13862306a36Sopenharmony_ci		interrupt-parent = <&plic>;
13962306a36Sopenharmony_ci		#address-cells = <2>;
14062306a36Sopenharmony_ci		#size-cells = <2>;
14162306a36Sopenharmony_ci		ranges;
14262306a36Sopenharmony_ci
14362306a36Sopenharmony_ci		clint: clint@2000000 {
14462306a36Sopenharmony_ci			compatible = "starfive,jh7100-clint", "sifive,clint0";
14562306a36Sopenharmony_ci			reg = <0x0 0x2000000 0x0 0x10000>;
14662306a36Sopenharmony_ci			interrupts-extended = <&cpu0_intc 3 &cpu0_intc 7
14762306a36Sopenharmony_ci					       &cpu1_intc 3 &cpu1_intc 7>;
14862306a36Sopenharmony_ci		};
14962306a36Sopenharmony_ci
15062306a36Sopenharmony_ci		plic: interrupt-controller@c000000 {
15162306a36Sopenharmony_ci			compatible = "starfive,jh7100-plic", "sifive,plic-1.0.0";
15262306a36Sopenharmony_ci			reg = <0x0 0xc000000 0x0 0x4000000>;
15362306a36Sopenharmony_ci			interrupts-extended = <&cpu0_intc 11 &cpu0_intc 9
15462306a36Sopenharmony_ci					       &cpu1_intc 11 &cpu1_intc 9>;
15562306a36Sopenharmony_ci			interrupt-controller;
15662306a36Sopenharmony_ci			#address-cells = <0>;
15762306a36Sopenharmony_ci			#interrupt-cells = <1>;
15862306a36Sopenharmony_ci			riscv,ndev = <133>;
15962306a36Sopenharmony_ci		};
16062306a36Sopenharmony_ci
16162306a36Sopenharmony_ci		clkgen: clock-controller@11800000 {
16262306a36Sopenharmony_ci			compatible = "starfive,jh7100-clkgen";
16362306a36Sopenharmony_ci			reg = <0x0 0x11800000 0x0 0x10000>;
16462306a36Sopenharmony_ci			clocks = <&osc_sys>, <&osc_aud>, <&gmac_rmii_ref>, <&gmac_gr_mii_rxclk>;
16562306a36Sopenharmony_ci			clock-names = "osc_sys", "osc_aud", "gmac_rmii_ref", "gmac_gr_mii_rxclk";
16662306a36Sopenharmony_ci			#clock-cells = <1>;
16762306a36Sopenharmony_ci		};
16862306a36Sopenharmony_ci
16962306a36Sopenharmony_ci		rstgen: reset-controller@11840000 {
17062306a36Sopenharmony_ci			compatible = "starfive,jh7100-reset";
17162306a36Sopenharmony_ci			reg = <0x0 0x11840000 0x0 0x10000>;
17262306a36Sopenharmony_ci			#reset-cells = <1>;
17362306a36Sopenharmony_ci		};
17462306a36Sopenharmony_ci
17562306a36Sopenharmony_ci		i2c0: i2c@118b0000 {
17662306a36Sopenharmony_ci			compatible = "snps,designware-i2c";
17762306a36Sopenharmony_ci			reg = <0x0 0x118b0000 0x0 0x10000>;
17862306a36Sopenharmony_ci			clocks = <&clkgen JH7100_CLK_I2C0_CORE>,
17962306a36Sopenharmony_ci				 <&clkgen JH7100_CLK_I2C0_APB>;
18062306a36Sopenharmony_ci			clock-names = "ref", "pclk";
18162306a36Sopenharmony_ci			resets = <&rstgen JH7100_RSTN_I2C0_APB>;
18262306a36Sopenharmony_ci			interrupts = <96>;
18362306a36Sopenharmony_ci			#address-cells = <1>;
18462306a36Sopenharmony_ci			#size-cells = <0>;
18562306a36Sopenharmony_ci			status = "disabled";
18662306a36Sopenharmony_ci		};
18762306a36Sopenharmony_ci
18862306a36Sopenharmony_ci		i2c1: i2c@118c0000 {
18962306a36Sopenharmony_ci			compatible = "snps,designware-i2c";
19062306a36Sopenharmony_ci			reg = <0x0 0x118c0000 0x0 0x10000>;
19162306a36Sopenharmony_ci			clocks = <&clkgen JH7100_CLK_I2C1_CORE>,
19262306a36Sopenharmony_ci				 <&clkgen JH7100_CLK_I2C1_APB>;
19362306a36Sopenharmony_ci			clock-names = "ref", "pclk";
19462306a36Sopenharmony_ci			resets = <&rstgen JH7100_RSTN_I2C1_APB>;
19562306a36Sopenharmony_ci			interrupts = <97>;
19662306a36Sopenharmony_ci			#address-cells = <1>;
19762306a36Sopenharmony_ci			#size-cells = <0>;
19862306a36Sopenharmony_ci			status = "disabled";
19962306a36Sopenharmony_ci		};
20062306a36Sopenharmony_ci
20162306a36Sopenharmony_ci		gpio: pinctrl@11910000 {
20262306a36Sopenharmony_ci			compatible = "starfive,jh7100-pinctrl";
20362306a36Sopenharmony_ci			reg = <0x0 0x11910000 0x0 0x10000>,
20462306a36Sopenharmony_ci			      <0x0 0x11858000 0x0 0x1000>;
20562306a36Sopenharmony_ci			reg-names = "gpio", "padctl";
20662306a36Sopenharmony_ci			clocks = <&clkgen JH7100_CLK_GPIO_APB>;
20762306a36Sopenharmony_ci			resets = <&rstgen JH7100_RSTN_GPIO_APB>;
20862306a36Sopenharmony_ci			interrupts = <32>;
20962306a36Sopenharmony_ci			gpio-controller;
21062306a36Sopenharmony_ci			#gpio-cells = <2>;
21162306a36Sopenharmony_ci			interrupt-controller;
21262306a36Sopenharmony_ci			#interrupt-cells = <2>;
21362306a36Sopenharmony_ci		};
21462306a36Sopenharmony_ci
21562306a36Sopenharmony_ci		uart2: serial@12430000 {
21662306a36Sopenharmony_ci			compatible = "starfive,jh7100-uart", "snps,dw-apb-uart";
21762306a36Sopenharmony_ci			reg = <0x0 0x12430000 0x0 0x10000>;
21862306a36Sopenharmony_ci			clocks = <&clkgen JH7100_CLK_UART2_CORE>,
21962306a36Sopenharmony_ci				 <&clkgen JH7100_CLK_UART2_APB>;
22062306a36Sopenharmony_ci			clock-names = "baudclk", "apb_pclk";
22162306a36Sopenharmony_ci			resets = <&rstgen JH7100_RSTN_UART2_APB>;
22262306a36Sopenharmony_ci			interrupts = <72>;
22362306a36Sopenharmony_ci			reg-io-width = <4>;
22462306a36Sopenharmony_ci			reg-shift = <2>;
22562306a36Sopenharmony_ci			status = "disabled";
22662306a36Sopenharmony_ci		};
22762306a36Sopenharmony_ci
22862306a36Sopenharmony_ci		uart3: serial@12440000 {
22962306a36Sopenharmony_ci			compatible = "starfive,jh7100-uart", "snps,dw-apb-uart";
23062306a36Sopenharmony_ci			reg = <0x0 0x12440000 0x0 0x10000>;
23162306a36Sopenharmony_ci			clocks = <&clkgen JH7100_CLK_UART3_CORE>,
23262306a36Sopenharmony_ci				 <&clkgen JH7100_CLK_UART3_APB>;
23362306a36Sopenharmony_ci			clock-names = "baudclk", "apb_pclk";
23462306a36Sopenharmony_ci			resets = <&rstgen JH7100_RSTN_UART3_APB>;
23562306a36Sopenharmony_ci			interrupts = <73>;
23662306a36Sopenharmony_ci			reg-io-width = <4>;
23762306a36Sopenharmony_ci			reg-shift = <2>;
23862306a36Sopenharmony_ci			status = "disabled";
23962306a36Sopenharmony_ci		};
24062306a36Sopenharmony_ci
24162306a36Sopenharmony_ci		i2c2: i2c@12450000 {
24262306a36Sopenharmony_ci			compatible = "snps,designware-i2c";
24362306a36Sopenharmony_ci			reg = <0x0 0x12450000 0x0 0x10000>;
24462306a36Sopenharmony_ci			clocks = <&clkgen JH7100_CLK_I2C2_CORE>,
24562306a36Sopenharmony_ci				 <&clkgen JH7100_CLK_I2C2_APB>;
24662306a36Sopenharmony_ci			clock-names = "ref", "pclk";
24762306a36Sopenharmony_ci			resets = <&rstgen JH7100_RSTN_I2C2_APB>;
24862306a36Sopenharmony_ci			interrupts = <74>;
24962306a36Sopenharmony_ci			#address-cells = <1>;
25062306a36Sopenharmony_ci			#size-cells = <0>;
25162306a36Sopenharmony_ci			status = "disabled";
25262306a36Sopenharmony_ci		};
25362306a36Sopenharmony_ci
25462306a36Sopenharmony_ci		i2c3: i2c@12460000 {
25562306a36Sopenharmony_ci			compatible = "snps,designware-i2c";
25662306a36Sopenharmony_ci			reg = <0x0 0x12460000 0x0 0x10000>;
25762306a36Sopenharmony_ci			clocks = <&clkgen JH7100_CLK_I2C3_CORE>,
25862306a36Sopenharmony_ci				 <&clkgen JH7100_CLK_I2C3_APB>;
25962306a36Sopenharmony_ci			clock-names = "ref", "pclk";
26062306a36Sopenharmony_ci			resets = <&rstgen JH7100_RSTN_I2C3_APB>;
26162306a36Sopenharmony_ci			interrupts = <75>;
26262306a36Sopenharmony_ci			#address-cells = <1>;
26362306a36Sopenharmony_ci			#size-cells = <0>;
26462306a36Sopenharmony_ci			status = "disabled";
26562306a36Sopenharmony_ci		};
26662306a36Sopenharmony_ci
26762306a36Sopenharmony_ci		watchdog@12480000 {
26862306a36Sopenharmony_ci			compatible = "starfive,jh7100-wdt";
26962306a36Sopenharmony_ci			reg = <0x0 0x12480000 0x0 0x10000>;
27062306a36Sopenharmony_ci			clocks = <&clkgen JH7100_CLK_WDTIMER_APB>,
27162306a36Sopenharmony_ci				 <&clkgen JH7100_CLK_WDT_CORE>;
27262306a36Sopenharmony_ci			clock-names = "apb", "core";
27362306a36Sopenharmony_ci			resets = <&rstgen JH7100_RSTN_WDTIMER_APB>,
27462306a36Sopenharmony_ci				 <&rstgen JH7100_RSTN_WDT>;
27562306a36Sopenharmony_ci		};
27662306a36Sopenharmony_ci
27762306a36Sopenharmony_ci		sfctemp: temperature-sensor@124a0000 {
27862306a36Sopenharmony_ci			compatible = "starfive,jh7100-temp";
27962306a36Sopenharmony_ci			reg = <0x0 0x124a0000 0x0 0x10000>;
28062306a36Sopenharmony_ci			clocks = <&clkgen JH7100_CLK_TEMP_SENSE>,
28162306a36Sopenharmony_ci				 <&clkgen JH7100_CLK_TEMP_APB>;
28262306a36Sopenharmony_ci			clock-names = "sense", "bus";
28362306a36Sopenharmony_ci			resets = <&rstgen JH7100_RSTN_TEMP_SENSE>,
28462306a36Sopenharmony_ci				 <&rstgen JH7100_RSTN_TEMP_APB>;
28562306a36Sopenharmony_ci			reset-names = "sense", "bus";
28662306a36Sopenharmony_ci			#thermal-sensor-cells = <0>;
28762306a36Sopenharmony_ci		};
28862306a36Sopenharmony_ci	};
28962306a36Sopenharmony_ci};
290