xref: /freebsd-src/sys/contrib/device-tree/src/arm64/freescale/imx8mp-dhcom-pdk2.dts (revision 0e8011faf58b743cc652e3b2ad0f7671227610df)
1b97ee269SEmmanuel Vadot// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2b97ee269SEmmanuel Vadot/*
3b97ee269SEmmanuel Vadot * Copyright (C) 2022 Marek Vasut <marex@denx.de>
47ef62cebSEmmanuel Vadot *
57ef62cebSEmmanuel Vadot * DHCOM iMX8MP variant:
67ef62cebSEmmanuel Vadot * DHCM-iMX8ML8-C160-R409-F1638-SPI16-GE-CAN2-SD-RTC-WBTA-ADC-T-RGB-CSI2-HS-I-01D2
77ef62cebSEmmanuel Vadot * DHCOM PCB number: 660-100 or newer
87ef62cebSEmmanuel Vadot * PDK2 PCB number: 516-400 or newer
9b97ee269SEmmanuel Vadot */
10b97ee269SEmmanuel Vadot
11b97ee269SEmmanuel Vadot/dts-v1/;
12b97ee269SEmmanuel Vadot
13b97ee269SEmmanuel Vadot#include <dt-bindings/leds/common.h>
14b97ee269SEmmanuel Vadot#include <dt-bindings/phy/phy-imx8-pcie.h>
15b97ee269SEmmanuel Vadot#include "imx8mp-dhcom-som.dtsi"
16b97ee269SEmmanuel Vadot
17b97ee269SEmmanuel Vadot/ {
18b97ee269SEmmanuel Vadot	model = "DH electronics i.MX8M Plus DHCOM Premium Developer Kit (2)";
197ef62cebSEmmanuel Vadot	compatible = "dh,imx8mp-dhcom-pdk2", "dh,imx8mp-dhcom-som",
207ef62cebSEmmanuel Vadot		     "fsl,imx8mp";
21b97ee269SEmmanuel Vadot
22b97ee269SEmmanuel Vadot	chosen {
23b97ee269SEmmanuel Vadot		stdout-path = &uart1;
24b97ee269SEmmanuel Vadot	};
25b97ee269SEmmanuel Vadot
26f126890aSEmmanuel Vadot	clk_ext_audio_codec: clock-codec {
27f126890aSEmmanuel Vadot		compatible = "fixed-clock";
28f126890aSEmmanuel Vadot		#clock-cells = <0>;
29f126890aSEmmanuel Vadot		clock-frequency = <24000000>;
30f126890aSEmmanuel Vadot	};
31f126890aSEmmanuel Vadot
32b97ee269SEmmanuel Vadot	gpio-keys {
33b97ee269SEmmanuel Vadot		compatible = "gpio-keys";
34b97ee269SEmmanuel Vadot
35b97ee269SEmmanuel Vadot		button-0 {
36b97ee269SEmmanuel Vadot			gpios = <&gpio1 9 GPIO_ACTIVE_LOW>; /* GPIO A */
37b97ee269SEmmanuel Vadot			label = "TA1-GPIO-A";
38b97ee269SEmmanuel Vadot			linux,code = <KEY_A>;
39b97ee269SEmmanuel Vadot			pinctrl-0 = <&pinctrl_dhcom_a>;
40b97ee269SEmmanuel Vadot			pinctrl-names = "default";
41b97ee269SEmmanuel Vadot			wakeup-source;
42b97ee269SEmmanuel Vadot		};
43b97ee269SEmmanuel Vadot
44b97ee269SEmmanuel Vadot		button-1 {
45b97ee269SEmmanuel Vadot			gpios = <&gpio1 8 GPIO_ACTIVE_LOW>; /* GPIO B */
46b97ee269SEmmanuel Vadot			label = "TA2-GPIO-B";
47b97ee269SEmmanuel Vadot			linux,code = <KEY_B>;
48b97ee269SEmmanuel Vadot			pinctrl-0 = <&pinctrl_dhcom_b>;
49b97ee269SEmmanuel Vadot			pinctrl-names = "default";
50b97ee269SEmmanuel Vadot			wakeup-source;
51b97ee269SEmmanuel Vadot		};
52b97ee269SEmmanuel Vadot
53b97ee269SEmmanuel Vadot		button-2 {
54b97ee269SEmmanuel Vadot			gpios = <&gpio5 2 GPIO_ACTIVE_LOW>; /* GPIO C */
55b97ee269SEmmanuel Vadot			label = "TA3-GPIO-C";
56b97ee269SEmmanuel Vadot			linux,code = <KEY_C>;
57b97ee269SEmmanuel Vadot			pinctrl-0 = <&pinctrl_dhcom_c>;
58b97ee269SEmmanuel Vadot			pinctrl-names = "default";
59b97ee269SEmmanuel Vadot			wakeup-source;
60b97ee269SEmmanuel Vadot		};
61b97ee269SEmmanuel Vadot
62b97ee269SEmmanuel Vadot		button-3 {
63b97ee269SEmmanuel Vadot			gpios = <&gpio4 27 GPIO_ACTIVE_LOW>; /* GPIO D */
64b97ee269SEmmanuel Vadot			label = "TA4-GPIO-D";
65b97ee269SEmmanuel Vadot			linux,code = <KEY_D>;
66b97ee269SEmmanuel Vadot			pinctrl-0 = <&pinctrl_dhcom_d>;
67b97ee269SEmmanuel Vadot			pinctrl-names = "default";
68b97ee269SEmmanuel Vadot			wakeup-source;
69b97ee269SEmmanuel Vadot		};
70b97ee269SEmmanuel Vadot	};
71b97ee269SEmmanuel Vadot
72*0e8011faSEmmanuel Vadot	hdmi-connector {
73*0e8011faSEmmanuel Vadot		compatible = "hdmi-connector";
74*0e8011faSEmmanuel Vadot		label = "X38";
75*0e8011faSEmmanuel Vadot		type = "a";
76*0e8011faSEmmanuel Vadot
77*0e8011faSEmmanuel Vadot		port {
78*0e8011faSEmmanuel Vadot			hdmi_connector_in: endpoint {
79*0e8011faSEmmanuel Vadot				remote-endpoint = <&hdmi_tx_out>;
80*0e8011faSEmmanuel Vadot			};
81*0e8011faSEmmanuel Vadot		};
82*0e8011faSEmmanuel Vadot	};
83*0e8011faSEmmanuel Vadot
84b97ee269SEmmanuel Vadot	led {
85b97ee269SEmmanuel Vadot		compatible = "gpio-leds";
86b97ee269SEmmanuel Vadot
87b97ee269SEmmanuel Vadot		led-0 {
88b97ee269SEmmanuel Vadot			color = <LED_COLOR_ID_GREEN>;
89b97ee269SEmmanuel Vadot			default-state = "off";
90b97ee269SEmmanuel Vadot			function = LED_FUNCTION_INDICATOR;
91b97ee269SEmmanuel Vadot			gpios = <&gpio5 22 GPIO_ACTIVE_HIGH>; /* GPIO E */
92b97ee269SEmmanuel Vadot			pinctrl-0 = <&pinctrl_dhcom_e>;
93b97ee269SEmmanuel Vadot			pinctrl-names = "default";
94b97ee269SEmmanuel Vadot		};
95b97ee269SEmmanuel Vadot
96b97ee269SEmmanuel Vadot		led-1 {
97b97ee269SEmmanuel Vadot			color = <LED_COLOR_ID_GREEN>;
98b97ee269SEmmanuel Vadot			default-state = "off";
99b97ee269SEmmanuel Vadot			function = LED_FUNCTION_INDICATOR;
100b97ee269SEmmanuel Vadot			gpios = <&gpio5 23 GPIO_ACTIVE_HIGH>; /* GPIO F */
101b97ee269SEmmanuel Vadot			pinctrl-0 = <&pinctrl_dhcom_f>;
102b97ee269SEmmanuel Vadot			pinctrl-names = "default";
103b97ee269SEmmanuel Vadot		};
104b97ee269SEmmanuel Vadot
105b97ee269SEmmanuel Vadot		led-2 {
106b97ee269SEmmanuel Vadot			color = <LED_COLOR_ID_GREEN>;
107b97ee269SEmmanuel Vadot			default-state = "off";
108b97ee269SEmmanuel Vadot			function = LED_FUNCTION_INDICATOR;
109b97ee269SEmmanuel Vadot			gpios = <&gpio1 11 GPIO_ACTIVE_HIGH>; /* GPIO H */
110b97ee269SEmmanuel Vadot			pinctrl-0 = <&pinctrl_dhcom_h>;
111b97ee269SEmmanuel Vadot			pinctrl-names = "default";
112b97ee269SEmmanuel Vadot		};
113b97ee269SEmmanuel Vadot
114b97ee269SEmmanuel Vadot		led-3 {
115b97ee269SEmmanuel Vadot			color = <LED_COLOR_ID_GREEN>;
116b97ee269SEmmanuel Vadot			default-state = "off";
117b97ee269SEmmanuel Vadot			function = LED_FUNCTION_INDICATOR;
118b97ee269SEmmanuel Vadot			gpios = <&gpio1 5 GPIO_ACTIVE_HIGH>; /* GPIO I */
119b97ee269SEmmanuel Vadot			pinctrl-0 = <&pinctrl_dhcom_i>;
120b97ee269SEmmanuel Vadot			pinctrl-names = "default";
121b97ee269SEmmanuel Vadot		};
122b97ee269SEmmanuel Vadot	};
123f126890aSEmmanuel Vadot
124f126890aSEmmanuel Vadot	reg_3p3vdd: regulator-3p3vdd {	/* 3.3VDD */
125f126890aSEmmanuel Vadot		compatible = "regulator-fixed";
126f126890aSEmmanuel Vadot		regulator-always-on;
127f126890aSEmmanuel Vadot		regulator-min-microvolt = <3300000>;
128f126890aSEmmanuel Vadot		regulator-max-microvolt = <3300000>;
129f126890aSEmmanuel Vadot		regulator-name = "3P3VDD";
130f126890aSEmmanuel Vadot	};
131f126890aSEmmanuel Vadot
132f126890aSEmmanuel Vadot	sound {
133f126890aSEmmanuel Vadot		compatible = "simple-audio-card";
134f126890aSEmmanuel Vadot		simple-audio-card,name = "SGTL5000-Card";
135f126890aSEmmanuel Vadot		simple-audio-card,format = "i2s";
136f126890aSEmmanuel Vadot		simple-audio-card,bitclock-master = <&codec_dai>;
137f126890aSEmmanuel Vadot		simple-audio-card,frame-master = <&codec_dai>;
138f126890aSEmmanuel Vadot		simple-audio-card,widgets = "Headphone", "Headphone Jack";
139f126890aSEmmanuel Vadot		simple-audio-card,routing = "Headphone Jack", "HP_OUT";
140f126890aSEmmanuel Vadot
141f126890aSEmmanuel Vadot		cpu_dai: simple-audio-card,cpu {
142f126890aSEmmanuel Vadot			sound-dai = <&sai3>;
143f126890aSEmmanuel Vadot		};
144f126890aSEmmanuel Vadot
145f126890aSEmmanuel Vadot		codec_dai: simple-audio-card,codec {
146f126890aSEmmanuel Vadot			sound-dai = <&sgtl5000>;
147f126890aSEmmanuel Vadot		};
148f126890aSEmmanuel Vadot	};
149f126890aSEmmanuel Vadot};
150f126890aSEmmanuel Vadot
151f126890aSEmmanuel Vadot&i2c5 {
152f126890aSEmmanuel Vadot	sgtl5000: codec@a {
153f126890aSEmmanuel Vadot		compatible = "fsl,sgtl5000";
154f126890aSEmmanuel Vadot		reg = <0x0a>;
155f126890aSEmmanuel Vadot		#sound-dai-cells = <0>;
156f126890aSEmmanuel Vadot		clocks = <&clk_ext_audio_codec>;
157f126890aSEmmanuel Vadot		VDDA-supply = <&reg_3p3vdd>;
158f126890aSEmmanuel Vadot		VDDIO-supply = <&reg_vdd_3p3v_awo>;
159f126890aSEmmanuel Vadot	};
160b97ee269SEmmanuel Vadot};
161b97ee269SEmmanuel Vadot
162b97ee269SEmmanuel Vadot&fec {	/* Second ethernet */
163fac71e4eSEmmanuel Vadot	pinctrl-0 = <&pinctrl_fec_rgmii>;
164b97ee269SEmmanuel Vadot	phy-handle = <&ethphypdk>;
165fac71e4eSEmmanuel Vadot	phy-mode = "rgmii";
166b97ee269SEmmanuel Vadot
167b97ee269SEmmanuel Vadot	mdio {
168b97ee269SEmmanuel Vadot		ethphypdk: ethernet-phy@7 { /* KSZ 9021 */
169b97ee269SEmmanuel Vadot			compatible = "ethernet-phy-ieee802.3-c22";
170b97ee269SEmmanuel Vadot			pinctrl-0 = <&pinctrl_ethphy1>;
171b97ee269SEmmanuel Vadot			pinctrl-names = "default";
172b97ee269SEmmanuel Vadot			interrupt-parent = <&gpio4>;
173b97ee269SEmmanuel Vadot			interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
174b97ee269SEmmanuel Vadot			max-speed = <100>;
175b97ee269SEmmanuel Vadot			reg = <7>;
176b97ee269SEmmanuel Vadot			reset-assert-us = <1000>;
177b97ee269SEmmanuel Vadot			reset-deassert-us = <1000>;
178b97ee269SEmmanuel Vadot			reset-gpios = <&gpio4 2 GPIO_ACTIVE_LOW>;
179b97ee269SEmmanuel Vadot			rxc-skew-ps = <3000>;
180b97ee269SEmmanuel Vadot			rxd0-skew-ps = <0>;
181b97ee269SEmmanuel Vadot			rxd1-skew-ps = <0>;
182b97ee269SEmmanuel Vadot			rxd2-skew-ps = <0>;
183b97ee269SEmmanuel Vadot			rxd3-skew-ps = <0>;
184b97ee269SEmmanuel Vadot			rxdv-skew-ps = <0>;
185b97ee269SEmmanuel Vadot			txc-skew-ps = <3000>;
186b97ee269SEmmanuel Vadot			txd0-skew-ps = <0>;
187b97ee269SEmmanuel Vadot			txd1-skew-ps = <0>;
188b97ee269SEmmanuel Vadot			txd2-skew-ps = <0>;
189b97ee269SEmmanuel Vadot			txd3-skew-ps = <0>;
190b97ee269SEmmanuel Vadot			txen-skew-ps = <0>;
191b97ee269SEmmanuel Vadot		};
192b97ee269SEmmanuel Vadot	};
193b97ee269SEmmanuel Vadot};
194b97ee269SEmmanuel Vadot
195b97ee269SEmmanuel Vadot&flexcan1 {
196b97ee269SEmmanuel Vadot	status = "okay";
197b97ee269SEmmanuel Vadot};
198b97ee269SEmmanuel Vadot
199*0e8011faSEmmanuel Vadot&hdmi_pvi {
200*0e8011faSEmmanuel Vadot	status = "okay";
201*0e8011faSEmmanuel Vadot};
202*0e8011faSEmmanuel Vadot
203*0e8011faSEmmanuel Vadot&hdmi_tx {
204*0e8011faSEmmanuel Vadot	ddc-i2c-bus = <&i2c5>;
205*0e8011faSEmmanuel Vadot	pinctrl-names = "default";
206*0e8011faSEmmanuel Vadot	pinctrl-0 = <&pinctrl_hdmi>;
207*0e8011faSEmmanuel Vadot	status = "okay";
208*0e8011faSEmmanuel Vadot
209*0e8011faSEmmanuel Vadot	ports {
210*0e8011faSEmmanuel Vadot		port@1 {
211*0e8011faSEmmanuel Vadot			hdmi_tx_out: endpoint {
212*0e8011faSEmmanuel Vadot				remote-endpoint = <&hdmi_connector_in>;
213*0e8011faSEmmanuel Vadot			};
214*0e8011faSEmmanuel Vadot		};
215*0e8011faSEmmanuel Vadot	};
216*0e8011faSEmmanuel Vadot};
217*0e8011faSEmmanuel Vadot
218*0e8011faSEmmanuel Vadot&hdmi_tx_phy {
219*0e8011faSEmmanuel Vadot	status = "okay";
220*0e8011faSEmmanuel Vadot};
221*0e8011faSEmmanuel Vadot
222*0e8011faSEmmanuel Vadot&lcdif3 {
223*0e8011faSEmmanuel Vadot	status = "okay";
224*0e8011faSEmmanuel Vadot};
225*0e8011faSEmmanuel Vadot
226fac71e4eSEmmanuel Vadot&pcie_phy {
227fac71e4eSEmmanuel Vadot	clock-names = "ref";
22884943d6fSEmmanuel Vadot	clocks = <&hsio_blk_ctrl>;
229fac71e4eSEmmanuel Vadot	fsl,clkreq-unsupported;
23084943d6fSEmmanuel Vadot	fsl,refclk-pad-mode = <IMX8_PCIE_REFCLK_PAD_OUTPUT>;
231fac71e4eSEmmanuel Vadot	status = "okay";
232fac71e4eSEmmanuel Vadot};
233fac71e4eSEmmanuel Vadot
234fac71e4eSEmmanuel Vadot&pcie {
235fac71e4eSEmmanuel Vadot	fsl,max-link-speed = <1>;
236fac71e4eSEmmanuel Vadot	reset-gpio = <&gpio1 6 GPIO_ACTIVE_LOW>;	/* GPIO J */
237fac71e4eSEmmanuel Vadot	status = "okay";
238fac71e4eSEmmanuel Vadot};
239fac71e4eSEmmanuel Vadot
240f126890aSEmmanuel Vadot&sai3 {
241f126890aSEmmanuel Vadot	#sound-dai-cells = <0>;
242f126890aSEmmanuel Vadot	pinctrl-names = "default";
243f126890aSEmmanuel Vadot	pinctrl-0 = <&pinctrl_sai3>;
244f126890aSEmmanuel Vadot	assigned-clocks = <&clk IMX8MP_CLK_SAI3>;
245f126890aSEmmanuel Vadot	assigned-clock-parents = <&clk IMX8MP_AUDIO_PLL1_OUT>;
246f126890aSEmmanuel Vadot	assigned-clock-rates = <12288000>;
247f126890aSEmmanuel Vadot	fsl,sai-mclk-direction-output;
248f126890aSEmmanuel Vadot	status = "okay";
249f126890aSEmmanuel Vadot};
250f126890aSEmmanuel Vadot
251b97ee269SEmmanuel Vadot&usb3_1 {
252b97ee269SEmmanuel Vadot	fsl,over-current-active-low;
253b97ee269SEmmanuel Vadot};
254b97ee269SEmmanuel Vadot
255b97ee269SEmmanuel Vadot&iomuxc {
256b97ee269SEmmanuel Vadot	/*
257b97ee269SEmmanuel Vadot	 * GPIO_A,B,C,D are connected to buttons.
258b97ee269SEmmanuel Vadot	 * GPIO_E,F,H,I are connected to LEDs.
259fac71e4eSEmmanuel Vadot	 * GPIO_M is connected to CLKOUT1.
260b97ee269SEmmanuel Vadot	 */
261b97ee269SEmmanuel Vadot	pinctrl-0 = <&pinctrl_hog_base
262b97ee269SEmmanuel Vadot		     &pinctrl_dhcom_g &pinctrl_dhcom_j
263b97ee269SEmmanuel Vadot		     &pinctrl_dhcom_k &pinctrl_dhcom_l
264b97ee269SEmmanuel Vadot		     &pinctrl_dhcom_int>;
265b97ee269SEmmanuel Vadot};
266