162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * ARM Ltd. Fast Models
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * Versatile Express (VE) system model
662306a36Sopenharmony_ci * Motherboard component
762306a36Sopenharmony_ci *
862306a36Sopenharmony_ci * VEMotherBoard.lisa
962306a36Sopenharmony_ci */
1062306a36Sopenharmony_ci/ {
1162306a36Sopenharmony_ci	v2m_clk24mhz: clk24mhz {
1262306a36Sopenharmony_ci		compatible = "fixed-clock";
1362306a36Sopenharmony_ci		#clock-cells = <0>;
1462306a36Sopenharmony_ci		clock-frequency = <24000000>;
1562306a36Sopenharmony_ci		clock-output-names = "v2m:clk24mhz";
1662306a36Sopenharmony_ci	};
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ci	v2m_refclk1mhz: refclk1mhz {
1962306a36Sopenharmony_ci		compatible = "fixed-clock";
2062306a36Sopenharmony_ci		#clock-cells = <0>;
2162306a36Sopenharmony_ci		clock-frequency = <1000000>;
2262306a36Sopenharmony_ci		clock-output-names = "v2m:refclk1mhz";
2362306a36Sopenharmony_ci	};
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ci	v2m_refclk32khz: refclk32khz {
2662306a36Sopenharmony_ci		compatible = "fixed-clock";
2762306a36Sopenharmony_ci		#clock-cells = <0>;
2862306a36Sopenharmony_ci		clock-frequency = <32768>;
2962306a36Sopenharmony_ci		clock-output-names = "v2m:refclk32khz";
3062306a36Sopenharmony_ci	};
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ci	v2m_fixed_3v3: v2m-3v3 {
3362306a36Sopenharmony_ci		compatible = "regulator-fixed";
3462306a36Sopenharmony_ci		regulator-name = "3V3";
3562306a36Sopenharmony_ci		regulator-min-microvolt = <3300000>;
3662306a36Sopenharmony_ci		regulator-max-microvolt = <3300000>;
3762306a36Sopenharmony_ci		regulator-always-on;
3862306a36Sopenharmony_ci	};
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ci	mcc {
4162306a36Sopenharmony_ci		compatible = "arm,vexpress,config-bus";
4262306a36Sopenharmony_ci		arm,vexpress,config-bridge = <&v2m_sysreg>;
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ci		v2m_oscclk1: oscclk1 {
4562306a36Sopenharmony_ci			/* CLCD clock */
4662306a36Sopenharmony_ci			compatible = "arm,vexpress-osc";
4762306a36Sopenharmony_ci			arm,vexpress-sysreg,func = <1 1>;
4862306a36Sopenharmony_ci			freq-range = <23750000 63500000>;
4962306a36Sopenharmony_ci			#clock-cells = <0>;
5062306a36Sopenharmony_ci			clock-output-names = "v2m:oscclk1";
5162306a36Sopenharmony_ci		};
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_ci		reset {
5462306a36Sopenharmony_ci			compatible = "arm,vexpress-reset";
5562306a36Sopenharmony_ci			arm,vexpress-sysreg,func = <5 0>;
5662306a36Sopenharmony_ci		};
5762306a36Sopenharmony_ci
5862306a36Sopenharmony_ci		muxfpga {
5962306a36Sopenharmony_ci			compatible = "arm,vexpress-muxfpga";
6062306a36Sopenharmony_ci			arm,vexpress-sysreg,func = <7 0>;
6162306a36Sopenharmony_ci		};
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ci		shutdown {
6462306a36Sopenharmony_ci			compatible = "arm,vexpress-shutdown";
6562306a36Sopenharmony_ci			arm,vexpress-sysreg,func = <8 0>;
6662306a36Sopenharmony_ci		};
6762306a36Sopenharmony_ci
6862306a36Sopenharmony_ci		reboot {
6962306a36Sopenharmony_ci			compatible = "arm,vexpress-reboot";
7062306a36Sopenharmony_ci			arm,vexpress-sysreg,func = <9 0>;
7162306a36Sopenharmony_ci		};
7262306a36Sopenharmony_ci
7362306a36Sopenharmony_ci		dvimode {
7462306a36Sopenharmony_ci			compatible = "arm,vexpress-dvimode";
7562306a36Sopenharmony_ci			arm,vexpress-sysreg,func = <11 0>;
7662306a36Sopenharmony_ci		};
7762306a36Sopenharmony_ci	};
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_ci	bus@8000000 {
8062306a36Sopenharmony_ci		compatible = "simple-bus";
8162306a36Sopenharmony_ci		#address-cells = <2>;
8262306a36Sopenharmony_ci		#size-cells = <1>;
8362306a36Sopenharmony_ci		ranges = <0 0x8000000 0 0x8000000 0x18000000>;
8462306a36Sopenharmony_ci
8562306a36Sopenharmony_ci		motherboard-bus@8000000 {
8662306a36Sopenharmony_ci			compatible = "arm,vexpress,v2m-p1", "simple-bus";
8762306a36Sopenharmony_ci			#address-cells = <2>; /* SMB chipselect number and offset */
8862306a36Sopenharmony_ci			#size-cells = <1>;
8962306a36Sopenharmony_ci			ranges = <0 0 0 0x08000000 0x04000000>,
9062306a36Sopenharmony_ci				 <1 0 0 0x14000000 0x04000000>,
9162306a36Sopenharmony_ci				 <2 0 0 0x18000000 0x04000000>,
9262306a36Sopenharmony_ci				 <3 0 0 0x1c000000 0x04000000>,
9362306a36Sopenharmony_ci				 <4 0 0 0x0c000000 0x04000000>,
9462306a36Sopenharmony_ci				 <5 0 0 0x10000000 0x04000000>;
9562306a36Sopenharmony_ci
9662306a36Sopenharmony_ci			flash@0 {
9762306a36Sopenharmony_ci				compatible = "arm,vexpress-flash", "cfi-flash";
9862306a36Sopenharmony_ci				reg = <0 0x00000000 0x04000000>,
9962306a36Sopenharmony_ci				      <4 0x00000000 0x04000000>;
10062306a36Sopenharmony_ci				bank-width = <4>;
10162306a36Sopenharmony_ci			};
10262306a36Sopenharmony_ci
10362306a36Sopenharmony_ci			ethernet@202000000 {
10462306a36Sopenharmony_ci				compatible = "smsc,lan91c111";
10562306a36Sopenharmony_ci				reg = <2 0x02000000 0x10000>;
10662306a36Sopenharmony_ci				interrupts = <15>;
10762306a36Sopenharmony_ci			};
10862306a36Sopenharmony_ci
10962306a36Sopenharmony_ci			iofpga-bus@300000000 {
11062306a36Sopenharmony_ci				compatible = "simple-bus";
11162306a36Sopenharmony_ci				#address-cells = <1>;
11262306a36Sopenharmony_ci				#size-cells = <1>;
11362306a36Sopenharmony_ci				ranges = <0 3 0 0x210000>;
11462306a36Sopenharmony_ci
11562306a36Sopenharmony_ci				v2m_sysreg: sysreg@10000 {
11662306a36Sopenharmony_ci					compatible = "arm,vexpress-sysreg";
11762306a36Sopenharmony_ci					reg = <0x010000 0x1000>;
11862306a36Sopenharmony_ci					gpio-controller;
11962306a36Sopenharmony_ci					#gpio-cells = <2>;
12062306a36Sopenharmony_ci				};
12162306a36Sopenharmony_ci
12262306a36Sopenharmony_ci				v2m_sysctl: sysctl@20000 {
12362306a36Sopenharmony_ci					compatible = "arm,sp810", "arm,primecell";
12462306a36Sopenharmony_ci					reg = <0x020000 0x1000>;
12562306a36Sopenharmony_ci					clocks = <&v2m_refclk32khz>, <&v2m_refclk1mhz>, <&v2m_clk24mhz>;
12662306a36Sopenharmony_ci					clock-names = "refclk", "timclk", "apb_pclk";
12762306a36Sopenharmony_ci					#clock-cells = <1>;
12862306a36Sopenharmony_ci					clock-output-names = "timerclken0", "timerclken1", "timerclken2", "timerclken3";
12962306a36Sopenharmony_ci					assigned-clocks = <&v2m_sysctl 0>, <&v2m_sysctl 1>, <&v2m_sysctl 3>, <&v2m_sysctl 3>;
13062306a36Sopenharmony_ci					assigned-clock-parents = <&v2m_refclk1mhz>, <&v2m_refclk1mhz>, <&v2m_refclk1mhz>, <&v2m_refclk1mhz>;
13162306a36Sopenharmony_ci				};
13262306a36Sopenharmony_ci
13362306a36Sopenharmony_ci				aaci@40000 {
13462306a36Sopenharmony_ci					compatible = "arm,pl041", "arm,primecell";
13562306a36Sopenharmony_ci					reg = <0x040000 0x1000>;
13662306a36Sopenharmony_ci					interrupts = <11>;
13762306a36Sopenharmony_ci					clocks = <&v2m_clk24mhz>;
13862306a36Sopenharmony_ci					clock-names = "apb_pclk";
13962306a36Sopenharmony_ci				};
14062306a36Sopenharmony_ci
14162306a36Sopenharmony_ci				mmc@50000 {
14262306a36Sopenharmony_ci					compatible = "arm,pl180", "arm,primecell";
14362306a36Sopenharmony_ci					reg = <0x050000 0x1000>;
14462306a36Sopenharmony_ci					interrupts = <9>, <10>;
14562306a36Sopenharmony_ci					cd-gpios = <&v2m_sysreg 0 0>;
14662306a36Sopenharmony_ci					wp-gpios = <&v2m_sysreg 1 0>;
14762306a36Sopenharmony_ci					max-frequency = <12000000>;
14862306a36Sopenharmony_ci					vmmc-supply = <&v2m_fixed_3v3>;
14962306a36Sopenharmony_ci					clocks = <&v2m_clk24mhz>, <&v2m_clk24mhz>;
15062306a36Sopenharmony_ci					clock-names = "mclk", "apb_pclk";
15162306a36Sopenharmony_ci				};
15262306a36Sopenharmony_ci
15362306a36Sopenharmony_ci				kmi@60000 {
15462306a36Sopenharmony_ci					compatible = "arm,pl050", "arm,primecell";
15562306a36Sopenharmony_ci					reg = <0x060000 0x1000>;
15662306a36Sopenharmony_ci					interrupts = <12>;
15762306a36Sopenharmony_ci					clocks = <&v2m_clk24mhz>, <&v2m_clk24mhz>;
15862306a36Sopenharmony_ci					clock-names = "KMIREFCLK", "apb_pclk";
15962306a36Sopenharmony_ci				};
16062306a36Sopenharmony_ci
16162306a36Sopenharmony_ci				kmi@70000 {
16262306a36Sopenharmony_ci					compatible = "arm,pl050", "arm,primecell";
16362306a36Sopenharmony_ci					reg = <0x070000 0x1000>;
16462306a36Sopenharmony_ci					interrupts = <13>;
16562306a36Sopenharmony_ci					clocks = <&v2m_clk24mhz>, <&v2m_clk24mhz>;
16662306a36Sopenharmony_ci					clock-names = "KMIREFCLK", "apb_pclk";
16762306a36Sopenharmony_ci				};
16862306a36Sopenharmony_ci
16962306a36Sopenharmony_ci				v2m_serial0: serial@90000 {
17062306a36Sopenharmony_ci					compatible = "arm,pl011", "arm,primecell";
17162306a36Sopenharmony_ci					reg = <0x090000 0x1000>;
17262306a36Sopenharmony_ci					interrupts = <5>;
17362306a36Sopenharmony_ci					clocks = <&v2m_clk24mhz>, <&v2m_clk24mhz>;
17462306a36Sopenharmony_ci					clock-names = "uartclk", "apb_pclk";
17562306a36Sopenharmony_ci				};
17662306a36Sopenharmony_ci
17762306a36Sopenharmony_ci				v2m_serial1: serial@a0000 {
17862306a36Sopenharmony_ci					compatible = "arm,pl011", "arm,primecell";
17962306a36Sopenharmony_ci					reg = <0x0a0000 0x1000>;
18062306a36Sopenharmony_ci					interrupts = <6>;
18162306a36Sopenharmony_ci					clocks = <&v2m_clk24mhz>, <&v2m_clk24mhz>;
18262306a36Sopenharmony_ci					clock-names = "uartclk", "apb_pclk";
18362306a36Sopenharmony_ci				};
18462306a36Sopenharmony_ci
18562306a36Sopenharmony_ci				v2m_serial2: serial@b0000 {
18662306a36Sopenharmony_ci					compatible = "arm,pl011", "arm,primecell";
18762306a36Sopenharmony_ci					reg = <0x0b0000 0x1000>;
18862306a36Sopenharmony_ci					interrupts = <7>;
18962306a36Sopenharmony_ci					clocks = <&v2m_clk24mhz>, <&v2m_clk24mhz>;
19062306a36Sopenharmony_ci					clock-names = "uartclk", "apb_pclk";
19162306a36Sopenharmony_ci				};
19262306a36Sopenharmony_ci
19362306a36Sopenharmony_ci				v2m_serial3: serial@c0000 {
19462306a36Sopenharmony_ci					compatible = "arm,pl011", "arm,primecell";
19562306a36Sopenharmony_ci					reg = <0x0c0000 0x1000>;
19662306a36Sopenharmony_ci					interrupts = <8>;
19762306a36Sopenharmony_ci					clocks = <&v2m_clk24mhz>, <&v2m_clk24mhz>;
19862306a36Sopenharmony_ci					clock-names = "uartclk", "apb_pclk";
19962306a36Sopenharmony_ci				};
20062306a36Sopenharmony_ci
20162306a36Sopenharmony_ci				watchdog@f0000 {
20262306a36Sopenharmony_ci					compatible = "arm,sp805", "arm,primecell";
20362306a36Sopenharmony_ci					reg = <0x0f0000 0x1000>;
20462306a36Sopenharmony_ci					interrupts = <0>;
20562306a36Sopenharmony_ci					clocks = <&v2m_refclk32khz>, <&v2m_clk24mhz>;
20662306a36Sopenharmony_ci					clock-names = "wdog_clk", "apb_pclk";
20762306a36Sopenharmony_ci				};
20862306a36Sopenharmony_ci
20962306a36Sopenharmony_ci				v2m_timer01: timer@110000 {
21062306a36Sopenharmony_ci					compatible = "arm,sp804", "arm,primecell";
21162306a36Sopenharmony_ci					reg = <0x110000 0x1000>;
21262306a36Sopenharmony_ci					interrupts = <2>;
21362306a36Sopenharmony_ci					clocks = <&v2m_sysctl 0>, <&v2m_sysctl 1>, <&v2m_clk24mhz>;
21462306a36Sopenharmony_ci					clock-names = "timclken1", "timclken2", "apb_pclk";
21562306a36Sopenharmony_ci				};
21662306a36Sopenharmony_ci
21762306a36Sopenharmony_ci				v2m_timer23: timer@120000 {
21862306a36Sopenharmony_ci					compatible = "arm,sp804", "arm,primecell";
21962306a36Sopenharmony_ci					reg = <0x120000 0x1000>;
22062306a36Sopenharmony_ci					interrupts = <3>;
22162306a36Sopenharmony_ci					clocks = <&v2m_sysctl 2>, <&v2m_sysctl 3>, <&v2m_clk24mhz>;
22262306a36Sopenharmony_ci					clock-names = "timclken1", "timclken2", "apb_pclk";
22362306a36Sopenharmony_ci				};
22462306a36Sopenharmony_ci
22562306a36Sopenharmony_ci				virtio@130000 {
22662306a36Sopenharmony_ci					compatible = "virtio,mmio";
22762306a36Sopenharmony_ci					reg = <0x130000 0x200>;
22862306a36Sopenharmony_ci					interrupts = <42>;
22962306a36Sopenharmony_ci				};
23062306a36Sopenharmony_ci
23162306a36Sopenharmony_ci				rtc@170000 {
23262306a36Sopenharmony_ci					compatible = "arm,pl031", "arm,primecell";
23362306a36Sopenharmony_ci					reg = <0x170000 0x1000>;
23462306a36Sopenharmony_ci					interrupts = <4>;
23562306a36Sopenharmony_ci					clocks = <&v2m_clk24mhz>;
23662306a36Sopenharmony_ci					clock-names = "apb_pclk";
23762306a36Sopenharmony_ci				};
23862306a36Sopenharmony_ci
23962306a36Sopenharmony_ci				clcd@1f0000 {
24062306a36Sopenharmony_ci					compatible = "arm,pl111", "arm,primecell";
24162306a36Sopenharmony_ci					reg = <0x1f0000 0x1000>;
24262306a36Sopenharmony_ci					interrupt-names = "combined";
24362306a36Sopenharmony_ci					interrupts = <14>;
24462306a36Sopenharmony_ci					clocks = <&v2m_oscclk1>, <&v2m_clk24mhz>;
24562306a36Sopenharmony_ci					clock-names = "clcdclk", "apb_pclk";
24662306a36Sopenharmony_ci					memory-region = <&vram>;
24762306a36Sopenharmony_ci
24862306a36Sopenharmony_ci					port {
24962306a36Sopenharmony_ci						clcd_pads: endpoint {
25062306a36Sopenharmony_ci							remote-endpoint = <&panel_in>;
25162306a36Sopenharmony_ci							arm,pl11x,tft-r0g0b0-pads = <0 8 16>;
25262306a36Sopenharmony_ci						};
25362306a36Sopenharmony_ci					};
25462306a36Sopenharmony_ci				};
25562306a36Sopenharmony_ci			};
25662306a36Sopenharmony_ci		};
25762306a36Sopenharmony_ci	};
25862306a36Sopenharmony_ci};
259