xref: /linux/arch/arm64/boot/dts/freescale/imx91-phycore-som.dtsi (revision 0cac5ce06e524755b3dac1e0a060b05992076d93)
1*33583fa5SPrimoz Fiser// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2*33583fa5SPrimoz Fiser/*
3*33583fa5SPrimoz Fiser * Copyright (C) 2025 PHYTEC Messtechnik GmbH
4*33583fa5SPrimoz Fiser * Author: Christoph Stoidner <c.stoidner@phytec.de>
5*33583fa5SPrimoz Fiser *
6*33583fa5SPrimoz Fiser * Product homepage:
7*33583fa5SPrimoz Fiser * https://www.phytec.eu/en/produkte/system-on-modules/phycore-imx-91-93/
8*33583fa5SPrimoz Fiser */
9*33583fa5SPrimoz Fiser
10*33583fa5SPrimoz Fiser#include <dt-bindings/leds/common.h>
11*33583fa5SPrimoz Fiser
12*33583fa5SPrimoz Fiser#include "imx91.dtsi"
13*33583fa5SPrimoz Fiser
14*33583fa5SPrimoz Fiser/ {
15*33583fa5SPrimoz Fiser	model = "PHYTEC phyCORE-i.MX91";
16*33583fa5SPrimoz Fiser	compatible = "phytec,imx91-phycore-som", "fsl,imx91";
17*33583fa5SPrimoz Fiser
18*33583fa5SPrimoz Fiser	aliases {
19*33583fa5SPrimoz Fiser		ethernet0 = &fec;
20*33583fa5SPrimoz Fiser	};
21*33583fa5SPrimoz Fiser
22*33583fa5SPrimoz Fiser	reserved-memory {
23*33583fa5SPrimoz Fiser		ranges;
24*33583fa5SPrimoz Fiser		#address-cells = <2>;
25*33583fa5SPrimoz Fiser		#size-cells = <2>;
26*33583fa5SPrimoz Fiser
27*33583fa5SPrimoz Fiser		linux,cma {
28*33583fa5SPrimoz Fiser			compatible = "shared-dma-pool";
29*33583fa5SPrimoz Fiser			reusable;
30*33583fa5SPrimoz Fiser			alloc-ranges = <0 0x80000000 0 0x40000000>;
31*33583fa5SPrimoz Fiser			size = <0 0x10000000>;
32*33583fa5SPrimoz Fiser			linux,cma-default;
33*33583fa5SPrimoz Fiser		};
34*33583fa5SPrimoz Fiser	};
35*33583fa5SPrimoz Fiser
36*33583fa5SPrimoz Fiser	leds {
37*33583fa5SPrimoz Fiser		compatible = "gpio-leds";
38*33583fa5SPrimoz Fiser		pinctrl-names = "default";
39*33583fa5SPrimoz Fiser		pinctrl-0 = <&pinctrl_leds>;
40*33583fa5SPrimoz Fiser
41*33583fa5SPrimoz Fiser		led-0 {
42*33583fa5SPrimoz Fiser			color = <LED_COLOR_ID_GREEN>;
43*33583fa5SPrimoz Fiser			function = LED_FUNCTION_HEARTBEAT;
44*33583fa5SPrimoz Fiser			gpios = <&gpio1 1 GPIO_ACTIVE_HIGH>;
45*33583fa5SPrimoz Fiser			linux,default-trigger = "heartbeat";
46*33583fa5SPrimoz Fiser		};
47*33583fa5SPrimoz Fiser	};
48*33583fa5SPrimoz Fiser
49*33583fa5SPrimoz Fiser	reg_vdda_1v8: regulator-vdda-1v8 {
50*33583fa5SPrimoz Fiser		compatible = "regulator-fixed";
51*33583fa5SPrimoz Fiser		regulator-name = "VDDA_1V8";
52*33583fa5SPrimoz Fiser		regulator-max-microvolt = <1800000>;
53*33583fa5SPrimoz Fiser		regulator-min-microvolt = <1800000>;
54*33583fa5SPrimoz Fiser		vin-supply = <&buck5>;
55*33583fa5SPrimoz Fiser	};
56*33583fa5SPrimoz Fiser};
57*33583fa5SPrimoz Fiser
58*33583fa5SPrimoz Fiser/* ADC */
59*33583fa5SPrimoz Fiser&adc1 {
60*33583fa5SPrimoz Fiser	vref-supply = <&reg_vdda_1v8>;
61*33583fa5SPrimoz Fiser};
62*33583fa5SPrimoz Fiser
63*33583fa5SPrimoz Fiser/* Ethernet */
64*33583fa5SPrimoz Fiser&fec {
65*33583fa5SPrimoz Fiser	pinctrl-names = "default";
66*33583fa5SPrimoz Fiser	pinctrl-0 = <&pinctrl_fec>;
67*33583fa5SPrimoz Fiser	phy-mode = "rmii";
68*33583fa5SPrimoz Fiser	phy-handle = <&ethphy1>;
69*33583fa5SPrimoz Fiser
70*33583fa5SPrimoz Fiser	assigned-clocks = <&clk IMX91_CLK_ENET_TIMER>,
71*33583fa5SPrimoz Fiser			  <&clk IMX91_CLK_ENET2_REGULAR>;
72*33583fa5SPrimoz Fiser	assigned-clock-parents = <&clk IMX93_CLK_SYS_PLL_PFD1_DIV2>,
73*33583fa5SPrimoz Fiser				 <&clk IMX93_CLK_SYS_PLL_PFD1_DIV2>;
74*33583fa5SPrimoz Fiser	assigned-clock-rates = <100000000>, <50000000>;
75*33583fa5SPrimoz Fiser	status = "okay";
76*33583fa5SPrimoz Fiser
77*33583fa5SPrimoz Fiser	mdio: mdio {
78*33583fa5SPrimoz Fiser		clock-frequency = <5000000>;
79*33583fa5SPrimoz Fiser		#address-cells = <1>;
80*33583fa5SPrimoz Fiser		#size-cells = <0>;
81*33583fa5SPrimoz Fiser
82*33583fa5SPrimoz Fiser		ethphy1: ethernet-phy@1 {
83*33583fa5SPrimoz Fiser			compatible = "ethernet-phy-ieee802.3-c22";
84*33583fa5SPrimoz Fiser			reg = <1>;
85*33583fa5SPrimoz Fiser			reset-gpios = <&gpio4 23 GPIO_ACTIVE_HIGH>;
86*33583fa5SPrimoz Fiser			reset-assert-us = <30>;
87*33583fa5SPrimoz Fiser		};
88*33583fa5SPrimoz Fiser	};
89*33583fa5SPrimoz Fiser};
90*33583fa5SPrimoz Fiser
91*33583fa5SPrimoz Fiser/* I2C3 */
92*33583fa5SPrimoz Fiser&lpi2c3 {
93*33583fa5SPrimoz Fiser	clock-frequency = <400000>;
94*33583fa5SPrimoz Fiser	pinctrl-names = "default", "gpio";
95*33583fa5SPrimoz Fiser	pinctrl-0 = <&pinctrl_lpi2c3>;
96*33583fa5SPrimoz Fiser	pinctrl-1 = <&pinctrl_lpi2c3_gpio>;
97*33583fa5SPrimoz Fiser	scl-gpios = <&gpio2 29 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
98*33583fa5SPrimoz Fiser	sda-gpios = <&gpio2 28 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
99*33583fa5SPrimoz Fiser	status = "okay";
100*33583fa5SPrimoz Fiser
101*33583fa5SPrimoz Fiser	pmic@25 {
102*33583fa5SPrimoz Fiser		compatible = "nxp,pca9451a";
103*33583fa5SPrimoz Fiser		reg = <0x25>;
104*33583fa5SPrimoz Fiser		pinctrl-names = "default";
105*33583fa5SPrimoz Fiser		pinctrl-0 = <&pinctrl_pmic>;
106*33583fa5SPrimoz Fiser		interrupt-parent = <&gpio4>;
107*33583fa5SPrimoz Fiser		interrupts = <27 IRQ_TYPE_LEVEL_LOW>;
108*33583fa5SPrimoz Fiser
109*33583fa5SPrimoz Fiser		regulators {
110*33583fa5SPrimoz Fiser			buck1: BUCK1 {
111*33583fa5SPrimoz Fiser				regulator-name = "VDD_SOC";
112*33583fa5SPrimoz Fiser				regulator-max-microvolt = <950000>;
113*33583fa5SPrimoz Fiser				regulator-min-microvolt = <610000>;
114*33583fa5SPrimoz Fiser				regulator-boot-on;
115*33583fa5SPrimoz Fiser				regulator-always-on;
116*33583fa5SPrimoz Fiser				regulator-ramp-delay = <3125>;
117*33583fa5SPrimoz Fiser			};
118*33583fa5SPrimoz Fiser
119*33583fa5SPrimoz Fiser			buck2: BUCK2 {
120*33583fa5SPrimoz Fiser				regulator-name = "VDDQ_0V6";
121*33583fa5SPrimoz Fiser				regulator-max-microvolt = <600000>;
122*33583fa5SPrimoz Fiser				regulator-min-microvolt = <600000>;
123*33583fa5SPrimoz Fiser				regulator-boot-on;
124*33583fa5SPrimoz Fiser				regulator-always-on;
125*33583fa5SPrimoz Fiser			};
126*33583fa5SPrimoz Fiser
127*33583fa5SPrimoz Fiser			buck4: BUCK4 {
128*33583fa5SPrimoz Fiser				regulator-name = "VDD_3V3_BUCK";
129*33583fa5SPrimoz Fiser				regulator-max-microvolt = <3300000>;
130*33583fa5SPrimoz Fiser				regulator-min-microvolt = <3300000>;
131*33583fa5SPrimoz Fiser				regulator-boot-on;
132*33583fa5SPrimoz Fiser				regulator-always-on;
133*33583fa5SPrimoz Fiser			};
134*33583fa5SPrimoz Fiser
135*33583fa5SPrimoz Fiser			buck5: BUCK5 {
136*33583fa5SPrimoz Fiser				regulator-name = "VDD_1V8";
137*33583fa5SPrimoz Fiser				regulator-max-microvolt = <1800000>;
138*33583fa5SPrimoz Fiser				regulator-min-microvolt = <1800000>;
139*33583fa5SPrimoz Fiser				regulator-boot-on;
140*33583fa5SPrimoz Fiser				regulator-always-on;
141*33583fa5SPrimoz Fiser			};
142*33583fa5SPrimoz Fiser
143*33583fa5SPrimoz Fiser			buck6: BUCK6 {
144*33583fa5SPrimoz Fiser				regulator-name = "VDD_1V1";
145*33583fa5SPrimoz Fiser				regulator-max-microvolt = <1100000>;
146*33583fa5SPrimoz Fiser				regulator-min-microvolt = <1100000>;
147*33583fa5SPrimoz Fiser				regulator-boot-on;
148*33583fa5SPrimoz Fiser				regulator-always-on;
149*33583fa5SPrimoz Fiser			};
150*33583fa5SPrimoz Fiser
151*33583fa5SPrimoz Fiser			ldo1: LDO1 {
152*33583fa5SPrimoz Fiser				regulator-name = "PMIC_SNVS_1V8";
153*33583fa5SPrimoz Fiser				regulator-max-microvolt = <1800000>;
154*33583fa5SPrimoz Fiser				regulator-min-microvolt = <1800000>;
155*33583fa5SPrimoz Fiser				regulator-boot-on;
156*33583fa5SPrimoz Fiser				regulator-always-on;
157*33583fa5SPrimoz Fiser			};
158*33583fa5SPrimoz Fiser
159*33583fa5SPrimoz Fiser			ldo4: LDO4 {
160*33583fa5SPrimoz Fiser				regulator-name = "VDD_0V8";
161*33583fa5SPrimoz Fiser				regulator-max-microvolt = <800000>;
162*33583fa5SPrimoz Fiser				regulator-min-microvolt = <800000>;
163*33583fa5SPrimoz Fiser				regulator-boot-on;
164*33583fa5SPrimoz Fiser				regulator-always-on;
165*33583fa5SPrimoz Fiser			};
166*33583fa5SPrimoz Fiser
167*33583fa5SPrimoz Fiser			ldo5: LDO5 {
168*33583fa5SPrimoz Fiser				regulator-name = "NVCC_SD2";
169*33583fa5SPrimoz Fiser				regulator-max-microvolt = <3300000>;
170*33583fa5SPrimoz Fiser				regulator-min-microvolt = <1800000>;
171*33583fa5SPrimoz Fiser				regulator-boot-on;
172*33583fa5SPrimoz Fiser				regulator-always-on;
173*33583fa5SPrimoz Fiser			};
174*33583fa5SPrimoz Fiser		};
175*33583fa5SPrimoz Fiser	};
176*33583fa5SPrimoz Fiser
177*33583fa5SPrimoz Fiser	/* EEPROM */
178*33583fa5SPrimoz Fiser	eeprom@50 {
179*33583fa5SPrimoz Fiser		compatible = "atmel,24c32";
180*33583fa5SPrimoz Fiser		reg = <0x50>;
181*33583fa5SPrimoz Fiser		pagesize = <32>;
182*33583fa5SPrimoz Fiser		vcc-supply = <&buck4>;
183*33583fa5SPrimoz Fiser	};
184*33583fa5SPrimoz Fiser};
185*33583fa5SPrimoz Fiser
186*33583fa5SPrimoz Fiser/* eMMC */
187*33583fa5SPrimoz Fiser&usdhc1 {
188*33583fa5SPrimoz Fiser	pinctrl-names = "default", "state_100mhz", "state_200mhz";
189*33583fa5SPrimoz Fiser	pinctrl-0 = <&pinctrl_usdhc1>;
190*33583fa5SPrimoz Fiser	pinctrl-1 = <&pinctrl_usdhc1_100mhz>;
191*33583fa5SPrimoz Fiser	pinctrl-2 = <&pinctrl_usdhc1_200mhz>;
192*33583fa5SPrimoz Fiser	bus-width = <8>;
193*33583fa5SPrimoz Fiser	non-removable;
194*33583fa5SPrimoz Fiser	no-1-8-v;
195*33583fa5SPrimoz Fiser	status = "okay";
196*33583fa5SPrimoz Fiser};
197*33583fa5SPrimoz Fiser
198*33583fa5SPrimoz Fiser/* Watchdog */
199*33583fa5SPrimoz Fiser&wdog3 {
200*33583fa5SPrimoz Fiser	pinctrl-names = "default";
201*33583fa5SPrimoz Fiser	pinctrl-0 = <&pinctrl_wdog>;
202*33583fa5SPrimoz Fiser	fsl,ext-reset-output;
203*33583fa5SPrimoz Fiser	status = "okay";
204*33583fa5SPrimoz Fiser};
205*33583fa5SPrimoz Fiser
206*33583fa5SPrimoz Fiser&iomuxc {
207*33583fa5SPrimoz Fiser	pinctrl_fec: fecgrp {
208*33583fa5SPrimoz Fiser		fsl,pins = <
209*33583fa5SPrimoz Fiser			MX91_PAD_ENET2_MDC__ENET2_MDC			0x50e
210*33583fa5SPrimoz Fiser			MX91_PAD_ENET2_MDIO__ENET2_MDIO			0x502
211*33583fa5SPrimoz Fiser			/* the three pins below are connected to PHYs straps,
212*33583fa5SPrimoz Fiser			 * that is what the pull-up/down setting is for.
213*33583fa5SPrimoz Fiser			 */
214*33583fa5SPrimoz Fiser			MX91_PAD_ENET2_RD0__ENET2_RGMII_RD0		0x37e
215*33583fa5SPrimoz Fiser			MX91_PAD_ENET2_RD1__ENET2_RGMII_RD1		0x37e
216*33583fa5SPrimoz Fiser			MX91_PAD_ENET2_RX_CTL__ENET2_RGMII_RX_CTL	0x57e
217*33583fa5SPrimoz Fiser			MX91_PAD_ENET2_TD0__ENET2_RGMII_TD0		0x50e
218*33583fa5SPrimoz Fiser			MX91_PAD_ENET2_TD1__ENET2_RGMII_TD1		0x50e
219*33583fa5SPrimoz Fiser			MX91_PAD_ENET2_TX_CTL__ENET2_RGMII_TX_CTL	0x50e
220*33583fa5SPrimoz Fiser			MX91_PAD_ENET2_TD2__ENET2_TX_CLK2		0x4000050e
221*33583fa5SPrimoz Fiser			MX91_PAD_ENET2_RXC__GPIO4_IO23			0x51e
222*33583fa5SPrimoz Fiser		>;
223*33583fa5SPrimoz Fiser	};
224*33583fa5SPrimoz Fiser
225*33583fa5SPrimoz Fiser	pinctrl_leds: ledsgrp {
226*33583fa5SPrimoz Fiser		fsl,pins = <
227*33583fa5SPrimoz Fiser			MX91_PAD_I2C1_SDA__GPIO1_IO1		0x11e
228*33583fa5SPrimoz Fiser		>;
229*33583fa5SPrimoz Fiser	};
230*33583fa5SPrimoz Fiser
231*33583fa5SPrimoz Fiser	pinctrl_lpi2c3: lpi2c3grp {
232*33583fa5SPrimoz Fiser		fsl,pins = <
233*33583fa5SPrimoz Fiser			MX91_PAD_GPIO_IO28__LPI2C3_SDA		0x40000b9e
234*33583fa5SPrimoz Fiser			MX91_PAD_GPIO_IO29__LPI2C3_SCL		0x40000b9e
235*33583fa5SPrimoz Fiser		>;
236*33583fa5SPrimoz Fiser	};
237*33583fa5SPrimoz Fiser
238*33583fa5SPrimoz Fiser	pinctrl_lpi2c3_gpio: lpi2c3gpiogrp {
239*33583fa5SPrimoz Fiser		fsl,pins = <
240*33583fa5SPrimoz Fiser			MX91_PAD_GPIO_IO28__GPIO2_IO28		0x31e
241*33583fa5SPrimoz Fiser			MX91_PAD_GPIO_IO29__GPIO2_IO29		0x31e
242*33583fa5SPrimoz Fiser		>;
243*33583fa5SPrimoz Fiser	};
244*33583fa5SPrimoz Fiser
245*33583fa5SPrimoz Fiser	pinctrl_pmic: pmicgrp {
246*33583fa5SPrimoz Fiser		fsl,pins = <
247*33583fa5SPrimoz Fiser			MX91_PAD_ENET2_RD3__GPIO4_IO27		0x31e
248*33583fa5SPrimoz Fiser		>;
249*33583fa5SPrimoz Fiser	};
250*33583fa5SPrimoz Fiser
251*33583fa5SPrimoz Fiser	pinctrl_usdhc1: usdhc1grp {
252*33583fa5SPrimoz Fiser		fsl,pins = <
253*33583fa5SPrimoz Fiser			MX91_PAD_SD1_CLK__USDHC1_CLK		0x179e
254*33583fa5SPrimoz Fiser			MX91_PAD_SD1_CMD__USDHC1_CMD		0x1386
255*33583fa5SPrimoz Fiser			MX91_PAD_SD1_DATA0__USDHC1_DATA0	0x138e
256*33583fa5SPrimoz Fiser			MX91_PAD_SD1_DATA1__USDHC1_DATA1	0x1386
257*33583fa5SPrimoz Fiser			MX91_PAD_SD1_DATA2__USDHC1_DATA2	0x138e
258*33583fa5SPrimoz Fiser			MX91_PAD_SD1_DATA3__USDHC1_DATA3	0x1386
259*33583fa5SPrimoz Fiser			MX91_PAD_SD1_DATA4__USDHC1_DATA4	0x1386
260*33583fa5SPrimoz Fiser			MX91_PAD_SD1_DATA5__USDHC1_DATA5	0x1386
261*33583fa5SPrimoz Fiser			MX91_PAD_SD1_DATA6__USDHC1_DATA6	0x1386
262*33583fa5SPrimoz Fiser			MX91_PAD_SD1_DATA7__USDHC1_DATA7	0x1386
263*33583fa5SPrimoz Fiser			MX91_PAD_SD1_STROBE__USDHC1_STROBE	0x179e
264*33583fa5SPrimoz Fiser		>;
265*33583fa5SPrimoz Fiser	};
266*33583fa5SPrimoz Fiser
267*33583fa5SPrimoz Fiser	pinctrl_usdhc1_100mhz: usdhc1-100mhzgrp {
268*33583fa5SPrimoz Fiser		fsl,pins = <
269*33583fa5SPrimoz Fiser			MX91_PAD_SD1_CLK__USDHC1_CLK		0x17be
270*33583fa5SPrimoz Fiser			MX91_PAD_SD1_CMD__USDHC1_CMD		0x139e
271*33583fa5SPrimoz Fiser			MX91_PAD_SD1_DATA0__USDHC1_DATA0	0x138e
272*33583fa5SPrimoz Fiser			MX91_PAD_SD1_DATA1__USDHC1_DATA1	0x139e
273*33583fa5SPrimoz Fiser			MX91_PAD_SD1_DATA2__USDHC1_DATA2	0x13be
274*33583fa5SPrimoz Fiser			MX91_PAD_SD1_DATA3__USDHC1_DATA3	0x139e
275*33583fa5SPrimoz Fiser			MX91_PAD_SD1_DATA4__USDHC1_DATA4	0x139e
276*33583fa5SPrimoz Fiser			MX91_PAD_SD1_DATA5__USDHC1_DATA5	0x139e
277*33583fa5SPrimoz Fiser			MX91_PAD_SD1_DATA6__USDHC1_DATA6	0x139e
278*33583fa5SPrimoz Fiser			MX91_PAD_SD1_DATA7__USDHC1_DATA7	0x139e
279*33583fa5SPrimoz Fiser			MX91_PAD_SD1_STROBE__USDHC1_STROBE	0x179e
280*33583fa5SPrimoz Fiser		>;
281*33583fa5SPrimoz Fiser	};
282*33583fa5SPrimoz Fiser
283*33583fa5SPrimoz Fiser	pinctrl_usdhc1_200mhz: usdhc1-200mhzgrp {
284*33583fa5SPrimoz Fiser		fsl,pins = <
285*33583fa5SPrimoz Fiser			MX91_PAD_SD1_CLK__USDHC1_CLK		0x17be
286*33583fa5SPrimoz Fiser			MX91_PAD_SD1_CMD__USDHC1_CMD		0x139e
287*33583fa5SPrimoz Fiser			MX91_PAD_SD1_DATA0__USDHC1_DATA0	0x139e
288*33583fa5SPrimoz Fiser			MX91_PAD_SD1_DATA1__USDHC1_DATA1	0x13be
289*33583fa5SPrimoz Fiser			MX91_PAD_SD1_DATA2__USDHC1_DATA2	0x13be
290*33583fa5SPrimoz Fiser			MX91_PAD_SD1_DATA3__USDHC1_DATA3	0x13be
291*33583fa5SPrimoz Fiser			MX91_PAD_SD1_DATA4__USDHC1_DATA4	0x13be
292*33583fa5SPrimoz Fiser			MX91_PAD_SD1_DATA5__USDHC1_DATA5	0x13be
293*33583fa5SPrimoz Fiser			MX91_PAD_SD1_DATA6__USDHC1_DATA6	0x13be
294*33583fa5SPrimoz Fiser			MX91_PAD_SD1_DATA7__USDHC1_DATA7	0x13be
295*33583fa5SPrimoz Fiser			MX91_PAD_SD1_STROBE__USDHC1_STROBE	0x179e
296*33583fa5SPrimoz Fiser		>;
297*33583fa5SPrimoz Fiser	};
298*33583fa5SPrimoz Fiser
299*33583fa5SPrimoz Fiser	pinctrl_wdog: wdoggrp {
300*33583fa5SPrimoz Fiser		fsl,pins = <
301*33583fa5SPrimoz Fiser			MX91_PAD_WDOG_ANY__WDOG1_WDOG_ANY	0x31e
302*33583fa5SPrimoz Fiser		>;
303*33583fa5SPrimoz Fiser	};
304*33583fa5SPrimoz Fiser};
305