xref: /openbmc/linux/arch/arm64/boot/dts/freescale/imx8mm-phg.dts (revision 1a931707ad4a46e79d4ecfee56d8f6e8cc8d4f28)
1*77a1a182SFabio Estevam// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2*77a1a182SFabio Estevam/*
3*77a1a182SFabio Estevam * Copyright 2022 Fabio Estevam <festevam@denx.de>
4*77a1a182SFabio Estevam */
5*77a1a182SFabio Estevam
6*77a1a182SFabio Estevam/dts-v1/;
7*77a1a182SFabio Estevam
8*77a1a182SFabio Estevam#include "imx8mm-tqma8mqml.dtsi"
9*77a1a182SFabio Estevam
10*77a1a182SFabio Estevam/ {
11*77a1a182SFabio Estevam	model = "Cloos i.MX8MM PHG board";
12*77a1a182SFabio Estevam	compatible = "cloos,imx8mm-phg", "tq,imx8mm-tqma8mqml", "fsl,imx8mm";
13*77a1a182SFabio Estevam
14*77a1a182SFabio Estevam	aliases {
15*77a1a182SFabio Estevam		mmc0 = &usdhc3;
16*77a1a182SFabio Estevam		mmc1 = &usdhc2;
17*77a1a182SFabio Estevam	};
18*77a1a182SFabio Estevam
19*77a1a182SFabio Estevam	chosen {
20*77a1a182SFabio Estevam		stdout-path = &uart2;
21*77a1a182SFabio Estevam	};
22*77a1a182SFabio Estevam
23*77a1a182SFabio Estevam	beeper {
24*77a1a182SFabio Estevam		compatible = "gpio-beeper";
25*77a1a182SFabio Estevam		pinctrl-0 = <&pinctrl_beeper>;
26*77a1a182SFabio Estevam		gpios = <&gpio1 0 GPIO_ACTIVE_HIGH>;
27*77a1a182SFabio Estevam	};
28*77a1a182SFabio Estevam
29*77a1a182SFabio Estevam	leds {
30*77a1a182SFabio Estevam		compatible = "gpio-leds";
31*77a1a182SFabio Estevam		pinctrl-names = "default";
32*77a1a182SFabio Estevam		pinctrl-0 = <&pinctrl_gpio_led>;
33*77a1a182SFabio Estevam
34*77a1a182SFabio Estevam		led-0 {
35*77a1a182SFabio Estevam			label = "status1";
36*77a1a182SFabio Estevam			gpios = <&gpio1 10 GPIO_ACTIVE_HIGH>;
37*77a1a182SFabio Estevam		};
38*77a1a182SFabio Estevam
39*77a1a182SFabio Estevam		led-1 {
40*77a1a182SFabio Estevam			label = "status2";
41*77a1a182SFabio Estevam			gpios = <&gpio1 3 GPIO_ACTIVE_HIGH>;
42*77a1a182SFabio Estevam		};
43*77a1a182SFabio Estevam
44*77a1a182SFabio Estevam		led-2 {
45*77a1a182SFabio Estevam			label = "status3";
46*77a1a182SFabio Estevam			gpios = <&gpio1 6 GPIO_ACTIVE_HIGH>;
47*77a1a182SFabio Estevam		};
48*77a1a182SFabio Estevam
49*77a1a182SFabio Estevam		led-3 {
50*77a1a182SFabio Estevam			label = "run";
51*77a1a182SFabio Estevam			gpios = <&gpio1 7 GPIO_ACTIVE_HIGH>;
52*77a1a182SFabio Estevam		};
53*77a1a182SFabio Estevam
54*77a1a182SFabio Estevam		led-4 {
55*77a1a182SFabio Estevam			label = "powerled";
56*77a1a182SFabio Estevam			gpios = <&gpio1 1 GPIO_ACTIVE_HIGH>;
57*77a1a182SFabio Estevam		};
58*77a1a182SFabio Estevam	};
59*77a1a182SFabio Estevam
60*77a1a182SFabio Estevam	reg_usb_otg_vbus: regulator-usb-otg-vbus {
61*77a1a182SFabio Estevam		compatible = "regulator-fixed";
62*77a1a182SFabio Estevam		pinctrl-names = "default";
63*77a1a182SFabio Estevam		pinctrl-0 = <&pinctrl_otg_vbus_ctrl>;
64*77a1a182SFabio Estevam		regulator-name = "usb_otg_vbus";
65*77a1a182SFabio Estevam		regulator-min-microvolt = <5000000>;
66*77a1a182SFabio Estevam		regulator-max-microvolt = <5000000>;
67*77a1a182SFabio Estevam		gpio = <&gpio2 2 GPIO_ACTIVE_HIGH>;
68*77a1a182SFabio Estevam		enable-active-high;
69*77a1a182SFabio Estevam	};
70*77a1a182SFabio Estevam
71*77a1a182SFabio Estevam	reg_usdhc2_vmmc: regulator-vmmc {
72*77a1a182SFabio Estevam		compatible = "regulator-fixed";
73*77a1a182SFabio Estevam		pinctrl-names = "default";
74*77a1a182SFabio Estevam		pinctrl-0 = <&pinctrl_reg_usdhc2_vmmc>;
75*77a1a182SFabio Estevam		regulator-name = "VSD_3V3";
76*77a1a182SFabio Estevam		regulator-min-microvolt = <3300000>;
77*77a1a182SFabio Estevam		regulator-max-microvolt = <3300000>;
78*77a1a182SFabio Estevam		gpio = <&gpio2 19 GPIO_ACTIVE_HIGH>;
79*77a1a182SFabio Estevam		enable-active-high;
80*77a1a182SFabio Estevam		startup-delay-us = <100>;
81*77a1a182SFabio Estevam		off-on-delay-us = <12000>;
82*77a1a182SFabio Estevam	};
83*77a1a182SFabio Estevam
84*77a1a182SFabio Estevam	panel {
85*77a1a182SFabio Estevam		compatible = "panel-lvds";
86*77a1a182SFabio Estevam		width-mm = <170>;
87*77a1a182SFabio Estevam		height-mm = <28>;
88*77a1a182SFabio Estevam		data-mapping = "jeida-18";
89*77a1a182SFabio Estevam
90*77a1a182SFabio Estevam		panel-timing {
91*77a1a182SFabio Estevam			clock-frequency = <49500000>;
92*77a1a182SFabio Estevam			hactive = <800>;
93*77a1a182SFabio Estevam			hback-porch = <48>;
94*77a1a182SFabio Estevam			hfront-porch = <312>;
95*77a1a182SFabio Estevam			hsync-len = <40>;
96*77a1a182SFabio Estevam			vactive = <600>;
97*77a1a182SFabio Estevam			vback-porch = <19>;
98*77a1a182SFabio Estevam			vfront-porch = <61>;
99*77a1a182SFabio Estevam			vsync-len = <20>;
100*77a1a182SFabio Estevam			hsync-active = <0>;
101*77a1a182SFabio Estevam			vsync-active = <0>;
102*77a1a182SFabio Estevam			de-active = <1>;
103*77a1a182SFabio Estevam			pixelclk-active = <1>;
104*77a1a182SFabio Estevam		};
105*77a1a182SFabio Estevam
106*77a1a182SFabio Estevam		port {
107*77a1a182SFabio Estevam			panel_out_bridge: endpoint {
108*77a1a182SFabio Estevam				remote-endpoint = <&bridge_out_panel>;
109*77a1a182SFabio Estevam			};
110*77a1a182SFabio Estevam		};
111*77a1a182SFabio Estevam	};
112*77a1a182SFabio Estevam};
113*77a1a182SFabio Estevam
114*77a1a182SFabio Estevam&ecspi1 {
115*77a1a182SFabio Estevam	pinctrl-names = "default";
116*77a1a182SFabio Estevam	pinctrl-0 = <&pinctrl_ecspi1>;
117*77a1a182SFabio Estevam	cs-gpios = <&gpio5 9 GPIO_ACTIVE_LOW>;
118*77a1a182SFabio Estevam	status = "okay";
119*77a1a182SFabio Estevam};
120*77a1a182SFabio Estevam
121*77a1a182SFabio Estevam&fec1 {
122*77a1a182SFabio Estevam	pinctrl-names = "default";
123*77a1a182SFabio Estevam	pinctrl-0 = <&pinctrl_fec1>;
124*77a1a182SFabio Estevam	phy-mode = "rgmii-id";
125*77a1a182SFabio Estevam	phy-handle = <&ethphy0>;
126*77a1a182SFabio Estevam	fsl,magic-packet;
127*77a1a182SFabio Estevam	status = "okay";
128*77a1a182SFabio Estevam
129*77a1a182SFabio Estevam	mdio {
130*77a1a182SFabio Estevam		#address-cells = <1>;
131*77a1a182SFabio Estevam		#size-cells = <0>;
132*77a1a182SFabio Estevam
133*77a1a182SFabio Estevam		ethphy0: ethernet-phy@0 {
134*77a1a182SFabio Estevam			reg = <0>;
135*77a1a182SFabio Estevam			compatible = "ethernet-phy-ieee802.3-c22";
136*77a1a182SFabio Estevam		};
137*77a1a182SFabio Estevam	};
138*77a1a182SFabio Estevam};
139*77a1a182SFabio Estevam
140*77a1a182SFabio Estevam&i2c2 {
141*77a1a182SFabio Estevam	clock-frequency = <100000>;
142*77a1a182SFabio Estevam	pinctrl-names = "default";
143*77a1a182SFabio Estevam	pinctrl-0 = <&pinctrl_i2c2>;
144*77a1a182SFabio Estevam	status = "okay";
145*77a1a182SFabio Estevam
146*77a1a182SFabio Estevam	bridge@2c {
147*77a1a182SFabio Estevam		compatible = "ti,sn65dsi83";
148*77a1a182SFabio Estevam		reg = <0x2c>;
149*77a1a182SFabio Estevam		enable-gpios = <&gpio2 3 GPIO_ACTIVE_HIGH>;
150*77a1a182SFabio Estevam		pinctrl-names = "default";
151*77a1a182SFabio Estevam		pinctrl-0 = <&pinctrl_dsi_bridge>;
152*77a1a182SFabio Estevam
153*77a1a182SFabio Estevam		ports {
154*77a1a182SFabio Estevam			#address-cells = <1>;
155*77a1a182SFabio Estevam			#size-cells = <0>;
156*77a1a182SFabio Estevam
157*77a1a182SFabio Estevam			port@0 {
158*77a1a182SFabio Estevam				reg = <0>;
159*77a1a182SFabio Estevam
160*77a1a182SFabio Estevam				bridge_in_dsi: endpoint {
161*77a1a182SFabio Estevam					remote-endpoint = <&dsi_out_bridge>;
162*77a1a182SFabio Estevam					data-lanes = <1 2 3 4>;
163*77a1a182SFabio Estevam				};
164*77a1a182SFabio Estevam			};
165*77a1a182SFabio Estevam
166*77a1a182SFabio Estevam			port@2 {
167*77a1a182SFabio Estevam				reg = <2>;
168*77a1a182SFabio Estevam
169*77a1a182SFabio Estevam				bridge_out_panel: endpoint {
170*77a1a182SFabio Estevam					remote-endpoint = <&panel_out_bridge>;
171*77a1a182SFabio Estevam				};
172*77a1a182SFabio Estevam			};
173*77a1a182SFabio Estevam		};
174*77a1a182SFabio Estevam	};
175*77a1a182SFabio Estevam};
176*77a1a182SFabio Estevam
177*77a1a182SFabio Estevam&lcdif {
178*77a1a182SFabio Estevam	status = "okay";
179*77a1a182SFabio Estevam};
180*77a1a182SFabio Estevam
181*77a1a182SFabio Estevam&mipi_dsi {
182*77a1a182SFabio Estevam	samsung,esc-clock-frequency = <10000000>;
183*77a1a182SFabio Estevam	status = "okay";
184*77a1a182SFabio Estevam
185*77a1a182SFabio Estevam	ports {
186*77a1a182SFabio Estevam		port@1 {
187*77a1a182SFabio Estevam			reg = <1>;
188*77a1a182SFabio Estevam
189*77a1a182SFabio Estevam			dsi_out_bridge: endpoint {
190*77a1a182SFabio Estevam				data-lanes = <1 2>;
191*77a1a182SFabio Estevam				lane-polarities = <1 0 0 0 0>;
192*77a1a182SFabio Estevam				remote-endpoint = <&bridge_in_dsi>;
193*77a1a182SFabio Estevam			};
194*77a1a182SFabio Estevam		};
195*77a1a182SFabio Estevam	};
196*77a1a182SFabio Estevam};
197*77a1a182SFabio Estevam
198*77a1a182SFabio Estevam
199*77a1a182SFabio Estevam&uart2 {
200*77a1a182SFabio Estevam	pinctrl-names = "default";
201*77a1a182SFabio Estevam	pinctrl-0 = <&pinctrl_uart2>;
202*77a1a182SFabio Estevam	status = "okay";
203*77a1a182SFabio Estevam};
204*77a1a182SFabio Estevam
205*77a1a182SFabio Estevam&usbphynop1 {
206*77a1a182SFabio Estevam	power-domains = <&pgc_otg1>;
207*77a1a182SFabio Estevam};
208*77a1a182SFabio Estevam
209*77a1a182SFabio Estevam&usbphynop2 {
210*77a1a182SFabio Estevam	power-domains = <&pgc_otg2>;
211*77a1a182SFabio Estevam};
212*77a1a182SFabio Estevam
213*77a1a182SFabio Estevam&usbotg1 {
214*77a1a182SFabio Estevam	dr_mode = "host";
215*77a1a182SFabio Estevam	vbus-supply = <&reg_usb_otg_vbus>;
216*77a1a182SFabio Estevam	status = "okay";
217*77a1a182SFabio Estevam};
218*77a1a182SFabio Estevam
219*77a1a182SFabio Estevam&usbotg2 {
220*77a1a182SFabio Estevam	dr_mode = "host";
221*77a1a182SFabio Estevam	status = "okay";
222*77a1a182SFabio Estevam};
223*77a1a182SFabio Estevam
224*77a1a182SFabio Estevam&usdhc2 {
225*77a1a182SFabio Estevam	assigned-clocks = <&clk IMX8MM_CLK_USDHC2>;
226*77a1a182SFabio Estevam	assigned-clock-rates = <400000000>;
227*77a1a182SFabio Estevam	assigned-clock-parents = <&clk IMX8MM_SYS_PLL1_400M>;
228*77a1a182SFabio Estevam	pinctrl-names = "default", "state_100mhz", "state_200mhz";
229*77a1a182SFabio Estevam	pinctrl-0 = <&pinctrl_usdhc2>, <&pinctrl_usdhc2_gpio>;
230*77a1a182SFabio Estevam	pinctrl-1 = <&pinctrl_usdhc2_100mhz>, <&pinctrl_usdhc2_gpio>;
231*77a1a182SFabio Estevam	pinctrl-2 = <&pinctrl_usdhc2_200mhz>, <&pinctrl_usdhc2_gpio>;
232*77a1a182SFabio Estevam	bus-width = <4>;
233*77a1a182SFabio Estevam	cd-gpios = <&gpio2 12 GPIO_ACTIVE_LOW>;
234*77a1a182SFabio Estevam	disable-wp;
235*77a1a182SFabio Estevam	no-mmc;
236*77a1a182SFabio Estevam	no-sdio;
237*77a1a182SFabio Estevam	sd-uhs-sdr104;
238*77a1a182SFabio Estevam	sd-uhs-ddr50;
239*77a1a182SFabio Estevam	vmmc-supply = <&reg_usdhc2_vmmc>;
240*77a1a182SFabio Estevam	status = "okay";
241*77a1a182SFabio Estevam};
242*77a1a182SFabio Estevam
243*77a1a182SFabio Estevam&iomuxc {
244*77a1a182SFabio Estevam	pinctrl_beeper: beepergrp {
245*77a1a182SFabio Estevam		fsl,pins = <
246*77a1a182SFabio Estevam			MX8MM_IOMUXC_GPIO1_IO00_GPIO1_IO0		0x19
247*77a1a182SFabio Estevam		>;
248*77a1a182SFabio Estevam	};
249*77a1a182SFabio Estevam
250*77a1a182SFabio Estevam	pinctrl_dsi_bridge: dsibridgeggrp {
251*77a1a182SFabio Estevam		fsl,pins = <
252*77a1a182SFabio Estevam			MX8MM_IOMUXC_SD1_DATA1_GPIO2_IO3		0x19
253*77a1a182SFabio Estevam		>;
254*77a1a182SFabio Estevam	};
255*77a1a182SFabio Estevam
256*77a1a182SFabio Estevam	pinctrl_ecspi1: ecspi1grp {
257*77a1a182SFabio Estevam		fsl,pins = <
258*77a1a182SFabio Estevam			MX8MM_IOMUXC_ECSPI1_MISO_ECSPI1_MISO		0x82
259*77a1a182SFabio Estevam			MX8MM_IOMUXC_ECSPI1_MOSI_ECSPI1_MOSI		0x82
260*77a1a182SFabio Estevam			MX8MM_IOMUXC_ECSPI1_SCLK_ECSPI1_SCLK		0x82
261*77a1a182SFabio Estevam			MX8MM_IOMUXC_ECSPI1_SS0_GPIO5_IO9		0x19
262*77a1a182SFabio Estevam		>;
263*77a1a182SFabio Estevam	};
264*77a1a182SFabio Estevam
265*77a1a182SFabio Estevam	pinctrl_fec1: fec1grp {
266*77a1a182SFabio Estevam		fsl,pins = <
267			MX8MM_IOMUXC_ENET_MDC_ENET1_MDC		0x40000002
268			MX8MM_IOMUXC_ENET_MDIO_ENET1_MDIO		0x40000002
269			MX8MM_IOMUXC_ENET_TD3_ENET1_RGMII_TD3		0x14
270			MX8MM_IOMUXC_ENET_TD2_ENET1_RGMII_TD2		0x14
271			MX8MM_IOMUXC_ENET_TD1_ENET1_RGMII_TD1		0x14
272			MX8MM_IOMUXC_ENET_TD0_ENET1_RGMII_TD0		0x14
273			MX8MM_IOMUXC_ENET_RD3_ENET1_RGMII_RD3		0x90
274			MX8MM_IOMUXC_ENET_RD2_ENET1_RGMII_RD2		0x90
275			MX8MM_IOMUXC_ENET_RD1_ENET1_RGMII_RD1		0x90
276			MX8MM_IOMUXC_ENET_RD0_ENET1_RGMII_RD0		0x90
277			MX8MM_IOMUXC_ENET_TXC_ENET1_RGMII_TXC		0x14
278			MX8MM_IOMUXC_ENET_RXC_ENET1_RGMII_RXC		0x90
279			MX8MM_IOMUXC_ENET_RX_CTL_ENET1_RGMII_RX_CTL	0x90
280			MX8MM_IOMUXC_ENET_TX_CTL_ENET1_RGMII_TX_CTL	0x14
281			MX8MM_IOMUXC_SAI2_RXC_GPIO4_IO22		0x10
282		>;
283	};
284
285	pinctrl_gpio_led: gpioledgrp {
286		fsl,pins = <
287			MX8MM_IOMUXC_GPIO1_IO10_GPIO1_IO10		0x19
288			MX8MM_IOMUXC_GPIO1_IO03_GPIO1_IO3		0x19
289			MX8MM_IOMUXC_GPIO1_IO06_GPIO1_IO6		0x19
290			MX8MM_IOMUXC_GPIO1_IO07_GPIO1_IO7		0x19
291			MX8MM_IOMUXC_GPIO1_IO01_GPIO1_IO1		0x19
292		>;
293	};
294
295	pinctrl_i2c2: i2c2grp {
296		fsl,pins = <
297			MX8MM_IOMUXC_I2C2_SCL_I2C2_SCL		0x400001c3
298			MX8MM_IOMUXC_I2C2_SDA_I2C2_SDA		0x400001c3
299		>;
300	};
301
302	pinctrl_otg_vbus_ctrl: otgvbusctrlgrp {
303		fsl,pins = <
304			MX8MM_IOMUXC_SD1_DATA0_GPIO2_IO2		0x119
305		>;
306	};
307
308	pinctrl_uart2: uart2grp {
309		fsl,pins = <
310			MX8MM_IOMUXC_UART2_RXD_UART2_DCE_RX		0x140
311			MX8MM_IOMUXC_UART2_TXD_UART2_DCE_TX		0x140
312		>;
313	};
314
315	pinctrl_usdhc2_gpio: usdhc2grpgpiogrp {
316		fsl,pins = <
317			MX8MM_IOMUXC_SD2_CD_B_GPIO2_IO12		0x1c4
318		>;
319	};
320
321	pinctrl_usdhc2: usdhc2grp {
322		fsl,pins = <
323			MX8MM_IOMUXC_SD2_CLK_USDHC2_CLK		0x190
324			MX8MM_IOMUXC_SD2_CMD_USDHC2_CMD		0x1d0
325			MX8MM_IOMUXC_SD2_DATA0_USDHC2_DATA0		0x1d0
326			MX8MM_IOMUXC_SD2_DATA1_USDHC2_DATA1		0x1d0
327			MX8MM_IOMUXC_SD2_DATA2_USDHC2_DATA2		0x1d0
328			MX8MM_IOMUXC_SD2_DATA3_USDHC2_DATA3		0x1d0
329		>;
330	};
331
332	pinctrl_usdhc2_100mhz: usdhc2-100mhzgrp {
333		fsl,pins = <
334			MX8MM_IOMUXC_SD2_CLK_USDHC2_CLK		0x194
335			MX8MM_IOMUXC_SD2_CMD_USDHC2_CMD		0x1d4
336			MX8MM_IOMUXC_SD2_DATA0_USDHC2_DATA0		0x1d4
337			MX8MM_IOMUXC_SD2_DATA1_USDHC2_DATA1		0x1d4
338			MX8MM_IOMUXC_SD2_DATA2_USDHC2_DATA2		0x1d4
339			MX8MM_IOMUXC_SD2_DATA3_USDHC2_DATA3		0x1d4
340		>;
341	};
342
343	pinctrl_usdhc2_200mhz: usdhc2-200mhzgrp {
344		fsl,pins = <
345			MX8MM_IOMUXC_SD2_CLK_USDHC2_CLK		0x196
346			MX8MM_IOMUXC_SD2_CMD_USDHC2_CMD		0x1d6
347			MX8MM_IOMUXC_SD2_DATA0_USDHC2_DATA0		0x1d6
348			MX8MM_IOMUXC_SD2_DATA1_USDHC2_DATA1		0x1d6
349			MX8MM_IOMUXC_SD2_DATA2_USDHC2_DATA2		0x1d6
350			MX8MM_IOMUXC_SD2_DATA3_USDHC2_DATA3		0x1d6
351		>;
352	};
353};
354