xref: /openbmc/linux/arch/arm64/boot/dts/freescale/imx8mp-verdin-dev.dtsi (revision c900529f3d9161bfde5cca0754f83b4d3c3e0220)
1a39ed23bSMarcel Ziswiler// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
2a39ed23bSMarcel Ziswiler/*
3a39ed23bSMarcel Ziswiler * Copyright 2022 Toradex
4a39ed23bSMarcel Ziswiler */
5a39ed23bSMarcel Ziswiler
6a39ed23bSMarcel Ziswiler/ {
7a39ed23bSMarcel Ziswiler	reg_eth2phy: regulator-eth2phy {
8a39ed23bSMarcel Ziswiler		compatible = "regulator-fixed";
9a39ed23bSMarcel Ziswiler		enable-active-high;
10a39ed23bSMarcel Ziswiler		gpio = <&gpio_expander_21 4 GPIO_ACTIVE_HIGH>; /* ETH_PWR_EN */
1102c447a0SPeng Fan		off-on-delay-us = <500000>;
12a39ed23bSMarcel Ziswiler		regulator-max-microvolt = <3300000>;
13a39ed23bSMarcel Ziswiler		regulator-min-microvolt = <3300000>;
14a39ed23bSMarcel Ziswiler		regulator-name = "+V3.3_ETH";
15a39ed23bSMarcel Ziswiler		startup-delay-us = <200000>;
16a39ed23bSMarcel Ziswiler		vin-supply = <&reg_3p3v>;
17a39ed23bSMarcel Ziswiler	};
18*b8e4498fSFrancesco Dolcini
19*b8e4498fSFrancesco Dolcini	sound {
20*b8e4498fSFrancesco Dolcini		compatible = "simple-audio-card";
21*b8e4498fSFrancesco Dolcini		simple-audio-card,bitclock-master = <&codec_dai>;
22*b8e4498fSFrancesco Dolcini		simple-audio-card,format = "i2s";
23*b8e4498fSFrancesco Dolcini		simple-audio-card,frame-master = <&codec_dai>;
24*b8e4498fSFrancesco Dolcini		simple-audio-card,mclk-fs = <256>;
25*b8e4498fSFrancesco Dolcini		simple-audio-card,name = "imx8mp-nau8822";
26*b8e4498fSFrancesco Dolcini		simple-audio-card,routing =
27*b8e4498fSFrancesco Dolcini			"Headphones", "LHP",
28*b8e4498fSFrancesco Dolcini			"Headphones", "RHP",
29*b8e4498fSFrancesco Dolcini			"Speaker", "LSPK",
30*b8e4498fSFrancesco Dolcini			"Speaker", "RSPK",
31*b8e4498fSFrancesco Dolcini			"Line Out", "AUXOUT1",
32*b8e4498fSFrancesco Dolcini			"Line Out", "AUXOUT2",
33*b8e4498fSFrancesco Dolcini			"LAUX", "Line In",
34*b8e4498fSFrancesco Dolcini			"RAUX", "Line In",
35*b8e4498fSFrancesco Dolcini			"LMICP", "Mic In",
36*b8e4498fSFrancesco Dolcini			"RMICP", "Mic In";
37*b8e4498fSFrancesco Dolcini		simple-audio-card,widgets =
38*b8e4498fSFrancesco Dolcini			"Headphones", "Headphones",
39*b8e4498fSFrancesco Dolcini			"Line Out", "Line Out",
40*b8e4498fSFrancesco Dolcini			"Speaker", "Speaker",
41*b8e4498fSFrancesco Dolcini			"Microphone", "Mic In",
42*b8e4498fSFrancesco Dolcini			"Line", "Line In";
43*b8e4498fSFrancesco Dolcini
44*b8e4498fSFrancesco Dolcini		codec_dai: simple-audio-card,codec {
45*b8e4498fSFrancesco Dolcini			clocks = <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI1_MCLK1>;
46*b8e4498fSFrancesco Dolcini			sound-dai = <&nau8822_1a>;
47*b8e4498fSFrancesco Dolcini		};
48*b8e4498fSFrancesco Dolcini
49*b8e4498fSFrancesco Dolcini		simple-audio-card,cpu {
50*b8e4498fSFrancesco Dolcini			sound-dai = <&sai1>;
51*b8e4498fSFrancesco Dolcini		};
52*b8e4498fSFrancesco Dolcini	};
53a39ed23bSMarcel Ziswiler};
54a39ed23bSMarcel Ziswiler
5564a59c39SPhilippe Schenker&backlight {
5664a59c39SPhilippe Schenker	power-supply = <&reg_3p3v>;
5764a59c39SPhilippe Schenker};
5864a59c39SPhilippe Schenker
5964a59c39SPhilippe Schenker/* Verdin SPI_1 */
6064a59c39SPhilippe Schenker&ecspi1 {
6164a59c39SPhilippe Schenker	status = "okay";
6264a59c39SPhilippe Schenker};
6364a59c39SPhilippe Schenker
6464a59c39SPhilippe Schenker/* EEPROM on display adapter boards */
6564a59c39SPhilippe Schenker&eeprom_display_adapter {
6664a59c39SPhilippe Schenker	status = "okay";
6764a59c39SPhilippe Schenker};
6864a59c39SPhilippe Schenker
6964a59c39SPhilippe Schenker/* EEPROM on Verdin Development board */
7064a59c39SPhilippe Schenker&eeprom_carrier_board {
7164a59c39SPhilippe Schenker	status = "okay";
7264a59c39SPhilippe Schenker};
7364a59c39SPhilippe Schenker
7464a59c39SPhilippe Schenker&eqos {
7564a59c39SPhilippe Schenker	status = "okay";
7664a59c39SPhilippe Schenker};
7764a59c39SPhilippe Schenker
78a39ed23bSMarcel Ziswiler&fec {
79a39ed23bSMarcel Ziswiler	phy-supply = <&reg_eth2phy>;
80a39ed23bSMarcel Ziswiler	status = "okay";
81a39ed23bSMarcel Ziswiler};
82a39ed23bSMarcel Ziswiler
8364a59c39SPhilippe Schenker&flexcan1 {
8464a59c39SPhilippe Schenker	status = "okay";
8564a59c39SPhilippe Schenker};
8664a59c39SPhilippe Schenker
8764a59c39SPhilippe Schenker&flexcan2 {
8864a59c39SPhilippe Schenker	status = "okay";
8964a59c39SPhilippe Schenker};
9064a59c39SPhilippe Schenker
9164a59c39SPhilippe Schenker/* Verdin QSPI_1 */
9264a59c39SPhilippe Schenker&flexspi {
9364a59c39SPhilippe Schenker	status = "okay";
9464a59c39SPhilippe Schenker};
9564a59c39SPhilippe Schenker
96a39ed23bSMarcel Ziswiler&gpio_expander_21 {
97a39ed23bSMarcel Ziswiler	status = "okay";
98a39ed23bSMarcel Ziswiler	vcc-supply = <&reg_1p8v>;
99a39ed23bSMarcel Ziswiler};
100a39ed23bSMarcel Ziswiler
10164a59c39SPhilippe Schenker/* Current measurement into module VCC */
10264a59c39SPhilippe Schenker&hwmon {
10364a59c39SPhilippe Schenker	status = "okay";
10464a59c39SPhilippe Schenker};
10564a59c39SPhilippe Schenker
10664a59c39SPhilippe Schenker&hwmon_temp {
10764a59c39SPhilippe Schenker	vs-supply = <&reg_1p8v>;
10864a59c39SPhilippe Schenker	status = "okay";
10964a59c39SPhilippe Schenker};
11064a59c39SPhilippe Schenker
11164a59c39SPhilippe Schenker/* Verdin I2C_2_DSI */
11264a59c39SPhilippe Schenker&i2c2 {
11364a59c39SPhilippe Schenker	status = "okay";
11464a59c39SPhilippe Schenker};
11564a59c39SPhilippe Schenker
11664a59c39SPhilippe Schenker&i2c3 {
11764a59c39SPhilippe Schenker	status = "okay";
11864a59c39SPhilippe Schenker};
11964a59c39SPhilippe Schenker
12064a59c39SPhilippe Schenker/* Verdin I2C_1 */
12164a59c39SPhilippe Schenker&i2c4 {
12264a59c39SPhilippe Schenker	status = "okay";
12364a59c39SPhilippe Schenker
124*b8e4498fSFrancesco Dolcini	/* Audio Codec */
125*b8e4498fSFrancesco Dolcini	nau8822_1a: audio-codec@1a {
126*b8e4498fSFrancesco Dolcini		compatible = "nuvoton,nau8822";
127*b8e4498fSFrancesco Dolcini		reg = <0x1a>;
128*b8e4498fSFrancesco Dolcini		pinctrl-names = "default";
129*b8e4498fSFrancesco Dolcini		pinctrl-0 = <&pinctrl_sai1>;
130*b8e4498fSFrancesco Dolcini		#sound-dai-cells = <0>;
131*b8e4498fSFrancesco Dolcini	};
13264a59c39SPhilippe Schenker};
13364a59c39SPhilippe Schenker
13493ba667dSMarcel Ziswiler/* Verdin PCIE_1 */
13593ba667dSMarcel Ziswiler&pcie {
13693ba667dSMarcel Ziswiler	status = "okay";
13793ba667dSMarcel Ziswiler};
13893ba667dSMarcel Ziswiler
13993ba667dSMarcel Ziswiler&pcie_phy {
14093ba667dSMarcel Ziswiler	status = "okay";
14193ba667dSMarcel Ziswiler};
14264a59c39SPhilippe Schenker
14364a59c39SPhilippe Schenker/* Verdin PWM_1 */
14464a59c39SPhilippe Schenker&pwm1 {
14564a59c39SPhilippe Schenker	status = "okay";
14664a59c39SPhilippe Schenker};
14764a59c39SPhilippe Schenker
14864a59c39SPhilippe Schenker/* Verdin PWM_2 */
14964a59c39SPhilippe Schenker&pwm2 {
15064a59c39SPhilippe Schenker	status = "okay";
15164a59c39SPhilippe Schenker};
15264a59c39SPhilippe Schenker
15364a59c39SPhilippe Schenker/* Verdin PWM_3_DSI */
15464a59c39SPhilippe Schenker&pwm3 {
15564a59c39SPhilippe Schenker	status = "okay";
15664a59c39SPhilippe Schenker};
15764a59c39SPhilippe Schenker
15864a59c39SPhilippe Schenker&reg_usdhc2_vmmc {
15964a59c39SPhilippe Schenker	vin-supply = <&reg_3p3v>;
16064a59c39SPhilippe Schenker};
16164a59c39SPhilippe Schenker
162*b8e4498fSFrancesco Dolcini/* Verdin I2S_1 */
163*b8e4498fSFrancesco Dolcini&sai1 {
164*b8e4498fSFrancesco Dolcini	assigned-clocks = <&clk IMX8MP_CLK_SAI1>;
165*b8e4498fSFrancesco Dolcini	assigned-clock-parents = <&clk IMX8MP_AUDIO_PLL1_OUT>;
166*b8e4498fSFrancesco Dolcini	assigned-clock-rates = <24576000>;
167*b8e4498fSFrancesco Dolcini	fsl,sai-mclk-direction-output;
168*b8e4498fSFrancesco Dolcini	status = "okay";
169*b8e4498fSFrancesco Dolcini};
170a39ed23bSMarcel Ziswiler
171a39ed23bSMarcel Ziswiler/* Verdin UART_1, connector X50 through RS485 transceiver */
172a39ed23bSMarcel Ziswiler&uart1 {
173a39ed23bSMarcel Ziswiler	linux,rs485-enabled-at-boot-time;
174a39ed23bSMarcel Ziswiler	rs485-rts-active-low;
175a39ed23bSMarcel Ziswiler	rs485-rx-during-tx;
17664a59c39SPhilippe Schenker	status = "okay";
17764a59c39SPhilippe Schenker};
17864a59c39SPhilippe Schenker
17964a59c39SPhilippe Schenker/* Verdin UART_2 */
18064a59c39SPhilippe Schenker&uart2 {
18164a59c39SPhilippe Schenker	status = "okay";
18264a59c39SPhilippe Schenker};
18364a59c39SPhilippe Schenker
18464a59c39SPhilippe Schenker/* Verdin UART_3, used as the Linux Console */
18564a59c39SPhilippe Schenker&uart3 {
18664a59c39SPhilippe Schenker	status = "okay";
18764a59c39SPhilippe Schenker};
18864a59c39SPhilippe Schenker
18964a59c39SPhilippe Schenker/* Verdin USB_1 */
19064a59c39SPhilippe Schenker&usb3_0 {
19164a59c39SPhilippe Schenker	status = "okay";
19264a59c39SPhilippe Schenker};
19364a59c39SPhilippe Schenker
19464a59c39SPhilippe Schenker&usb3_phy0 {
19564a59c39SPhilippe Schenker	status = "okay";
19664a59c39SPhilippe Schenker};
19764a59c39SPhilippe Schenker
19864a59c39SPhilippe Schenker/* Verdin USB_2 */
19964a59c39SPhilippe Schenker&usb3_1 {
20064a59c39SPhilippe Schenker	fsl,permanently-attached;
20164a59c39SPhilippe Schenker	status = "okay";
20264a59c39SPhilippe Schenker};
20364a59c39SPhilippe Schenker
20464a59c39SPhilippe Schenker&usb3_phy1 {
20564a59c39SPhilippe Schenker	status = "okay";
206a39ed23bSMarcel Ziswiler};
207a39ed23bSMarcel Ziswiler
208a39ed23bSMarcel Ziswiler/* Limit frequency on dev board due to long traces and bad signal integrity */
209a39ed23bSMarcel Ziswiler&usdhc2 {
210a39ed23bSMarcel Ziswiler	max-frequency = <100000000>;
21164a59c39SPhilippe Schenker	status = "okay";
212a39ed23bSMarcel Ziswiler};
213