162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci/* Copyright 2016-2018 NXP Semiconductors
362306a36Sopenharmony_ci * Copyright 2019 Vladimir Oltean <olteanv@gmail.com>
462306a36Sopenharmony_ci */
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci/dts-v1/;
762306a36Sopenharmony_ci#include "ls1021a.dtsi"
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci/ {
1062306a36Sopenharmony_ci	model = "NXP LS1021A-TSN Board";
1162306a36Sopenharmony_ci	compatible = "fsl,ls1021a-tsn", "fsl,ls1021a";
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ci	sys_mclk: clock-mclk {
1462306a36Sopenharmony_ci		compatible = "fixed-clock";
1562306a36Sopenharmony_ci		#clock-cells = <0>;
1662306a36Sopenharmony_ci		clock-frequency = <24576000>;
1762306a36Sopenharmony_ci	};
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ci	reg_vdda_codec: regulator-3V3 {
2062306a36Sopenharmony_ci		compatible = "regulator-fixed";
2162306a36Sopenharmony_ci		regulator-name = "3P3V";
2262306a36Sopenharmony_ci		regulator-min-microvolt = <3300000>;
2362306a36Sopenharmony_ci		regulator-max-microvolt = <3300000>;
2462306a36Sopenharmony_ci		regulator-always-on;
2562306a36Sopenharmony_ci	};
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_ci	reg_vddio_codec: regulator-2V5 {
2862306a36Sopenharmony_ci		compatible = "regulator-fixed";
2962306a36Sopenharmony_ci		regulator-name = "2P5V";
3062306a36Sopenharmony_ci		regulator-min-microvolt = <2500000>;
3162306a36Sopenharmony_ci		regulator-max-microvolt = <2500000>;
3262306a36Sopenharmony_ci		regulator-always-on;
3362306a36Sopenharmony_ci	};
3462306a36Sopenharmony_ci};
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ci&dspi0 {
3762306a36Sopenharmony_ci	bus-num = <0>;
3862306a36Sopenharmony_ci	status = "okay";
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ci	/* ADG704BRMZ 1:4 SPI mux/demux */
4162306a36Sopenharmony_ci	sja1105: ethernet-switch@1 {
4262306a36Sopenharmony_ci		reg = <0x1>;
4362306a36Sopenharmony_ci		#address-cells = <1>;
4462306a36Sopenharmony_ci		#size-cells = <0>;
4562306a36Sopenharmony_ci		compatible = "nxp,sja1105t";
4662306a36Sopenharmony_ci		/* 12 MHz */
4762306a36Sopenharmony_ci		spi-max-frequency = <12000000>;
4862306a36Sopenharmony_ci		/* Sample data on trailing clock edge */
4962306a36Sopenharmony_ci		spi-cpha;
5062306a36Sopenharmony_ci		/* SPI controller settings for SJA1105 timing requirements */
5162306a36Sopenharmony_ci		fsl,spi-cs-sck-delay = <1000>;
5262306a36Sopenharmony_ci		fsl,spi-sck-cs-delay = <1000>;
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ci		ports {
5562306a36Sopenharmony_ci			#address-cells = <1>;
5662306a36Sopenharmony_ci			#size-cells = <0>;
5762306a36Sopenharmony_ci
5862306a36Sopenharmony_ci			port@0 {
5962306a36Sopenharmony_ci				/* ETH5 written on chassis */
6062306a36Sopenharmony_ci				label = "swp5";
6162306a36Sopenharmony_ci				phy-handle = <&rgmii_phy6>;
6262306a36Sopenharmony_ci				phy-mode = "rgmii-id";
6362306a36Sopenharmony_ci				reg = <0>;
6462306a36Sopenharmony_ci			};
6562306a36Sopenharmony_ci
6662306a36Sopenharmony_ci			port@1 {
6762306a36Sopenharmony_ci				/* ETH2 written on chassis */
6862306a36Sopenharmony_ci				label = "swp2";
6962306a36Sopenharmony_ci				phy-handle = <&rgmii_phy3>;
7062306a36Sopenharmony_ci				phy-mode = "rgmii-id";
7162306a36Sopenharmony_ci				reg = <1>;
7262306a36Sopenharmony_ci			};
7362306a36Sopenharmony_ci
7462306a36Sopenharmony_ci			port@2 {
7562306a36Sopenharmony_ci				/* ETH3 written on chassis */
7662306a36Sopenharmony_ci				label = "swp3";
7762306a36Sopenharmony_ci				phy-handle = <&rgmii_phy4>;
7862306a36Sopenharmony_ci				phy-mode = "rgmii-id";
7962306a36Sopenharmony_ci				reg = <2>;
8062306a36Sopenharmony_ci			};
8162306a36Sopenharmony_ci
8262306a36Sopenharmony_ci			port@3 {
8362306a36Sopenharmony_ci				/* ETH4 written on chassis */
8462306a36Sopenharmony_ci				label = "swp4";
8562306a36Sopenharmony_ci				phy-handle = <&rgmii_phy5>;
8662306a36Sopenharmony_ci				phy-mode = "rgmii-id";
8762306a36Sopenharmony_ci				reg = <3>;
8862306a36Sopenharmony_ci			};
8962306a36Sopenharmony_ci
9062306a36Sopenharmony_ci			port@4 {
9162306a36Sopenharmony_ci				/* Internal port connected to eth2 */
9262306a36Sopenharmony_ci				ethernet = <&enet2>;
9362306a36Sopenharmony_ci				phy-mode = "rgmii";
9462306a36Sopenharmony_ci				rx-internal-delay-ps = <0>;
9562306a36Sopenharmony_ci				tx-internal-delay-ps = <0>;
9662306a36Sopenharmony_ci				reg = <4>;
9762306a36Sopenharmony_ci
9862306a36Sopenharmony_ci				fixed-link {
9962306a36Sopenharmony_ci					speed = <1000>;
10062306a36Sopenharmony_ci					full-duplex;
10162306a36Sopenharmony_ci				};
10262306a36Sopenharmony_ci			};
10362306a36Sopenharmony_ci		};
10462306a36Sopenharmony_ci	};
10562306a36Sopenharmony_ci};
10662306a36Sopenharmony_ci
10762306a36Sopenharmony_ci&enet0 {
10862306a36Sopenharmony_ci	tbi-handle = <&tbi0>;
10962306a36Sopenharmony_ci	phy-handle = <&sgmii_phy2>;
11062306a36Sopenharmony_ci	phy-mode = "sgmii";
11162306a36Sopenharmony_ci	status = "okay";
11262306a36Sopenharmony_ci};
11362306a36Sopenharmony_ci
11462306a36Sopenharmony_ci&enet1 {
11562306a36Sopenharmony_ci	tbi-handle = <&tbi1>;
11662306a36Sopenharmony_ci	phy-handle = <&sgmii_phy1>;
11762306a36Sopenharmony_ci	phy-mode = "sgmii";
11862306a36Sopenharmony_ci	status = "okay";
11962306a36Sopenharmony_ci};
12062306a36Sopenharmony_ci
12162306a36Sopenharmony_ci/* RGMII delays added via PCB traces */
12262306a36Sopenharmony_ci&enet2 {
12362306a36Sopenharmony_ci	phy-mode = "rgmii";
12462306a36Sopenharmony_ci	status = "okay";
12562306a36Sopenharmony_ci
12662306a36Sopenharmony_ci	fixed-link {
12762306a36Sopenharmony_ci		speed = <1000>;
12862306a36Sopenharmony_ci		full-duplex;
12962306a36Sopenharmony_ci	};
13062306a36Sopenharmony_ci};
13162306a36Sopenharmony_ci
13262306a36Sopenharmony_ci&esdhc {
13362306a36Sopenharmony_ci	status = "okay";
13462306a36Sopenharmony_ci};
13562306a36Sopenharmony_ci
13662306a36Sopenharmony_ci&i2c0 {
13762306a36Sopenharmony_ci	status = "okay";
13862306a36Sopenharmony_ci
13962306a36Sopenharmony_ci	/* 3 axis accelerometer */
14062306a36Sopenharmony_ci	accelerometer@1e {
14162306a36Sopenharmony_ci		compatible = "fsl,fxls8471";
14262306a36Sopenharmony_ci		reg = <0x1e>;
14362306a36Sopenharmony_ci	};
14462306a36Sopenharmony_ci
14562306a36Sopenharmony_ci	/* Audio codec (SAI2) */
14662306a36Sopenharmony_ci	audio-codec@2a {
14762306a36Sopenharmony_ci		compatible = "fsl,sgtl5000";
14862306a36Sopenharmony_ci		VDDIO-supply = <&reg_vddio_codec>;
14962306a36Sopenharmony_ci		VDDA-supply = <&reg_vdda_codec>;
15062306a36Sopenharmony_ci		#sound-dai-cells = <0>;
15162306a36Sopenharmony_ci		clocks = <&sys_mclk>;
15262306a36Sopenharmony_ci		reg = <0x2a>;
15362306a36Sopenharmony_ci	};
15462306a36Sopenharmony_ci
15562306a36Sopenharmony_ci	/* Current sensing circuit for 1V VDDCORE PMIC rail */
15662306a36Sopenharmony_ci	current-sensor@44 {
15762306a36Sopenharmony_ci		compatible = "ti,ina220";
15862306a36Sopenharmony_ci		shunt-resistor = <1000>;
15962306a36Sopenharmony_ci		reg = <0x44>;
16062306a36Sopenharmony_ci	};
16162306a36Sopenharmony_ci
16262306a36Sopenharmony_ci	/* Current sensing circuit for 12V VCC rail */
16362306a36Sopenharmony_ci	current-sensor@45 {
16462306a36Sopenharmony_ci		compatible = "ti,ina220";
16562306a36Sopenharmony_ci		shunt-resistor = <1000>;
16662306a36Sopenharmony_ci		reg = <0x45>;
16762306a36Sopenharmony_ci	};
16862306a36Sopenharmony_ci
16962306a36Sopenharmony_ci	/* Thermal monitor - case */
17062306a36Sopenharmony_ci	temperature-sensor@48 {
17162306a36Sopenharmony_ci		compatible = "national,lm75";
17262306a36Sopenharmony_ci		reg = <0x48>;
17362306a36Sopenharmony_ci	};
17462306a36Sopenharmony_ci
17562306a36Sopenharmony_ci	/* Thermal monitor - chip */
17662306a36Sopenharmony_ci	temperature-sensor@4c {
17762306a36Sopenharmony_ci		compatible = "ti,tmp451";
17862306a36Sopenharmony_ci		reg = <0x4c>;
17962306a36Sopenharmony_ci	};
18062306a36Sopenharmony_ci
18162306a36Sopenharmony_ci	eeprom@51 {
18262306a36Sopenharmony_ci		compatible = "atmel,24c32";
18362306a36Sopenharmony_ci		reg = <0x51>;
18462306a36Sopenharmony_ci	};
18562306a36Sopenharmony_ci
18662306a36Sopenharmony_ci	/* Unsupported devices:
18762306a36Sopenharmony_ci	 * - FXAS21002C Gyroscope at 0x20
18862306a36Sopenharmony_ci	 * - TI ADS7924 4-channel ADC at 0x49
18962306a36Sopenharmony_ci	 */
19062306a36Sopenharmony_ci};
19162306a36Sopenharmony_ci
19262306a36Sopenharmony_ci&ifc {
19362306a36Sopenharmony_ci	status = "disabled";
19462306a36Sopenharmony_ci};
19562306a36Sopenharmony_ci
19662306a36Sopenharmony_ci&lpuart0 {
19762306a36Sopenharmony_ci	status = "okay";
19862306a36Sopenharmony_ci};
19962306a36Sopenharmony_ci
20062306a36Sopenharmony_ci&lpuart3 {
20162306a36Sopenharmony_ci	status = "okay";
20262306a36Sopenharmony_ci};
20362306a36Sopenharmony_ci
20462306a36Sopenharmony_ci&mdio0 {
20562306a36Sopenharmony_ci	/* AR8031 */
20662306a36Sopenharmony_ci	sgmii_phy1: ethernet-phy@1 {
20762306a36Sopenharmony_ci		reg = <0x1>;
20862306a36Sopenharmony_ci		/* SGMII1_PHY_INT_B: connected to IRQ2, active low */
20962306a36Sopenharmony_ci		interrupts-extended = <&extirq 2 IRQ_TYPE_LEVEL_LOW>;
21062306a36Sopenharmony_ci	};
21162306a36Sopenharmony_ci
21262306a36Sopenharmony_ci	/* AR8031 */
21362306a36Sopenharmony_ci	sgmii_phy2: ethernet-phy@2 {
21462306a36Sopenharmony_ci		reg = <0x2>;
21562306a36Sopenharmony_ci		/* SGMII2_PHY_INT_B: connected to IRQ2, active low */
21662306a36Sopenharmony_ci		interrupts-extended = <&extirq 2 IRQ_TYPE_LEVEL_LOW>;
21762306a36Sopenharmony_ci	};
21862306a36Sopenharmony_ci
21962306a36Sopenharmony_ci	/* BCM5464 quad PHY */
22062306a36Sopenharmony_ci	rgmii_phy3: ethernet-phy@3 {
22162306a36Sopenharmony_ci		reg = <0x3>;
22262306a36Sopenharmony_ci	};
22362306a36Sopenharmony_ci
22462306a36Sopenharmony_ci	rgmii_phy4: ethernet-phy@4 {
22562306a36Sopenharmony_ci		reg = <0x4>;
22662306a36Sopenharmony_ci	};
22762306a36Sopenharmony_ci
22862306a36Sopenharmony_ci	rgmii_phy5: ethernet-phy@5 {
22962306a36Sopenharmony_ci		reg = <0x5>;
23062306a36Sopenharmony_ci	};
23162306a36Sopenharmony_ci
23262306a36Sopenharmony_ci	rgmii_phy6: ethernet-phy@6 {
23362306a36Sopenharmony_ci		reg = <0x6>;
23462306a36Sopenharmony_ci	};
23562306a36Sopenharmony_ci
23662306a36Sopenharmony_ci	/* SGMII PCS for enet0 */
23762306a36Sopenharmony_ci	tbi0: tbi-phy@1f {
23862306a36Sopenharmony_ci		reg = <0x1f>;
23962306a36Sopenharmony_ci		device_type = "tbi-phy";
24062306a36Sopenharmony_ci	};
24162306a36Sopenharmony_ci};
24262306a36Sopenharmony_ci
24362306a36Sopenharmony_ci&mdio1 {
24462306a36Sopenharmony_ci	/* SGMII PCS for enet1 */
24562306a36Sopenharmony_ci	tbi1: tbi-phy@1f {
24662306a36Sopenharmony_ci		reg = <0x1f>;
24762306a36Sopenharmony_ci		device_type = "tbi-phy";
24862306a36Sopenharmony_ci	};
24962306a36Sopenharmony_ci};
25062306a36Sopenharmony_ci
25162306a36Sopenharmony_ci&qspi {
25262306a36Sopenharmony_ci	status = "okay";
25362306a36Sopenharmony_ci
25462306a36Sopenharmony_ci	flash@0 {
25562306a36Sopenharmony_ci		/* Rev. A uses 64MB flash, Rev. B & C use 32MB flash */
25662306a36Sopenharmony_ci		compatible = "jedec,spi-nor";
25762306a36Sopenharmony_ci		spi-max-frequency = <20000000>;
25862306a36Sopenharmony_ci		#address-cells = <1>;
25962306a36Sopenharmony_ci		#size-cells = <1>;
26062306a36Sopenharmony_ci		reg = <0>;
26162306a36Sopenharmony_ci
26262306a36Sopenharmony_ci		partitions {
26362306a36Sopenharmony_ci			compatible = "fixed-partitions";
26462306a36Sopenharmony_ci			#address-cells = <1>;
26562306a36Sopenharmony_ci			#size-cells = <1>;
26662306a36Sopenharmony_ci
26762306a36Sopenharmony_ci			partition@0 {
26862306a36Sopenharmony_ci				label = "RCW";
26962306a36Sopenharmony_ci				reg = <0x0 0x40000>;
27062306a36Sopenharmony_ci			};
27162306a36Sopenharmony_ci
27262306a36Sopenharmony_ci			partition@40000 {
27362306a36Sopenharmony_ci				label = "U-Boot";
27462306a36Sopenharmony_ci				reg = <0x40000 0x300000>;
27562306a36Sopenharmony_ci			};
27662306a36Sopenharmony_ci
27762306a36Sopenharmony_ci			partition@340000 {
27862306a36Sopenharmony_ci				label = "U-Boot Env";
27962306a36Sopenharmony_ci				reg = <0x340000 0x100000>;
28062306a36Sopenharmony_ci			};
28162306a36Sopenharmony_ci		};
28262306a36Sopenharmony_ci	};
28362306a36Sopenharmony_ci};
28462306a36Sopenharmony_ci
28562306a36Sopenharmony_ci&sai2 {
28662306a36Sopenharmony_ci	status = "okay";
28762306a36Sopenharmony_ci};
28862306a36Sopenharmony_ci
28962306a36Sopenharmony_ci&sata {
29062306a36Sopenharmony_ci	status = "okay";
29162306a36Sopenharmony_ci};
29262306a36Sopenharmony_ci
29362306a36Sopenharmony_ci&uart0 {
29462306a36Sopenharmony_ci	status = "okay";
29562306a36Sopenharmony_ci};
296