1*36ca3c8cSAdam Ford// SPDX-License-Identifier: (GPL-2.0 OR MIT)
2*36ca3c8cSAdam Ford/*
3*36ca3c8cSAdam Ford * Copyright 2020 Compass Electronics Group, LLC
4*36ca3c8cSAdam Ford */
5*36ca3c8cSAdam Ford
6*36ca3c8cSAdam Ford/ {
7*36ca3c8cSAdam Ford	leds {
8*36ca3c8cSAdam Ford		compatible = "gpio-leds";
9*36ca3c8cSAdam Ford
10*36ca3c8cSAdam Ford		led-0 {
11*36ca3c8cSAdam Ford			label = "gen_led0";
12*36ca3c8cSAdam Ford			gpios = <&pca6416_1 4 GPIO_ACTIVE_HIGH>;
13*36ca3c8cSAdam Ford			default-state = "off";
14*36ca3c8cSAdam Ford		};
15*36ca3c8cSAdam Ford
16*36ca3c8cSAdam Ford		led-1 {
17*36ca3c8cSAdam Ford			label = "gen_led1";
18*36ca3c8cSAdam Ford			gpios = <&pca6416_1 5 GPIO_ACTIVE_HIGH>;
19*36ca3c8cSAdam Ford			default-state = "off";
20*36ca3c8cSAdam Ford		};
21*36ca3c8cSAdam Ford
22*36ca3c8cSAdam Ford		led-2 {
23*36ca3c8cSAdam Ford			label = "gen_led2";
24*36ca3c8cSAdam Ford			gpios = <&pca6416_1 6 GPIO_ACTIVE_HIGH>;
25*36ca3c8cSAdam Ford			default-state = "off";
26*36ca3c8cSAdam Ford		};
27*36ca3c8cSAdam Ford
28*36ca3c8cSAdam Ford		led-3 {
29*36ca3c8cSAdam Ford			pinctrl-names = "default";
30*36ca3c8cSAdam Ford			pinctrl-0 = <&pinctrl_led3>;
31*36ca3c8cSAdam Ford			label = "heartbeat";
32*36ca3c8cSAdam Ford			gpios = <&gpio4 28 GPIO_ACTIVE_HIGH>;
33*36ca3c8cSAdam Ford			linux,default-trigger = "heartbeat";
34*36ca3c8cSAdam Ford		};
35*36ca3c8cSAdam Ford	};
36*36ca3c8cSAdam Ford
37*36ca3c8cSAdam Ford	reg_audio: regulator-audio {
38*36ca3c8cSAdam Ford		compatible = "regulator-fixed";
39*36ca3c8cSAdam Ford		regulator-name = "3v3_aud";
40*36ca3c8cSAdam Ford		regulator-min-microvolt = <3300000>;
41*36ca3c8cSAdam Ford		regulator-max-microvolt = <3300000>;
42*36ca3c8cSAdam Ford		gpio = <&pca6416_1 11 GPIO_ACTIVE_HIGH>;
43*36ca3c8cSAdam Ford		enable-active-high;
44*36ca3c8cSAdam Ford	};
45*36ca3c8cSAdam Ford
46*36ca3c8cSAdam Ford	reg_usdhc2_vmmc: regulator-usdhc2 {
47*36ca3c8cSAdam Ford		compatible = "regulator-fixed";
48*36ca3c8cSAdam Ford		regulator-name = "vsd_3v3";
49*36ca3c8cSAdam Ford		regulator-min-microvolt = <3300000>;
50*36ca3c8cSAdam Ford		regulator-max-microvolt = <3300000>;
51*36ca3c8cSAdam Ford		gpio = <&gpio2 19 GPIO_ACTIVE_HIGH>;
52*36ca3c8cSAdam Ford		enable-active-high;
53*36ca3c8cSAdam Ford	};
54*36ca3c8cSAdam Ford
55*36ca3c8cSAdam Ford	reg_usb_otg_vbus: regulator-usb {
56*36ca3c8cSAdam Ford		compatible = "regulator-fixed";
57*36ca3c8cSAdam Ford		pinctrl-names = "default";
58*36ca3c8cSAdam Ford		pinctrl-0 = <&pinctrl_reg_usb_otg>;
59*36ca3c8cSAdam Ford		regulator-name = "usb_otg_vbus";
60*36ca3c8cSAdam Ford		regulator-min-microvolt = <5000000>;
61*36ca3c8cSAdam Ford		regulator-max-microvolt = <5000000>;
62*36ca3c8cSAdam Ford		gpio = <&gpio4 29 GPIO_ACTIVE_HIGH>;
63*36ca3c8cSAdam Ford		enable-active-high;
64*36ca3c8cSAdam Ford	};
65*36ca3c8cSAdam Ford
66*36ca3c8cSAdam Ford	sound {
67*36ca3c8cSAdam Ford		compatible = "fsl,imx-audio-wm8962";
68*36ca3c8cSAdam Ford		model = "wm8962-audio";
69*36ca3c8cSAdam Ford		audio-cpu = <&sai3>;
70*36ca3c8cSAdam Ford		audio-codec = <&wm8962>;
71*36ca3c8cSAdam Ford		audio-routing =
72*36ca3c8cSAdam Ford			"Headphone Jack", "HPOUTL",
73*36ca3c8cSAdam Ford			"Headphone Jack", "HPOUTR",
74*36ca3c8cSAdam Ford			"Ext Spk", "SPKOUTL",
75*36ca3c8cSAdam Ford			"Ext Spk", "SPKOUTR",
76*36ca3c8cSAdam Ford			"AMIC", "MICBIAS",
77*36ca3c8cSAdam Ford			"IN3R", "AMIC";
78*36ca3c8cSAdam Ford	};
79*36ca3c8cSAdam Ford};
80*36ca3c8cSAdam Ford
81*36ca3c8cSAdam Ford&ecspi2 {
82*36ca3c8cSAdam Ford	pinctrl-names = "default";
83*36ca3c8cSAdam Ford	pinctrl-0 = <&pinctrl_espi2>;
84*36ca3c8cSAdam Ford	cs-gpios = <&gpio5 9 GPIO_ACTIVE_LOW>;
85*36ca3c8cSAdam Ford	status = "okay";
86*36ca3c8cSAdam Ford
87*36ca3c8cSAdam Ford	eeprom@0 {
88*36ca3c8cSAdam Ford		compatible = "microchip,at25160bn", "atmel,at25";
89*36ca3c8cSAdam Ford		reg = <0>;
90*36ca3c8cSAdam Ford		spi-max-frequency = <5000000>;
91*36ca3c8cSAdam Ford		spi-cpha;
92*36ca3c8cSAdam Ford		spi-cpol;
93*36ca3c8cSAdam Ford		pagesize = <32>;
94*36ca3c8cSAdam Ford		size = <2048>;
95*36ca3c8cSAdam Ford		address-width = <16>;
96*36ca3c8cSAdam Ford	};
97*36ca3c8cSAdam Ford};
98*36ca3c8cSAdam Ford
99*36ca3c8cSAdam Ford&i2c4 {
100*36ca3c8cSAdam Ford	clock-frequency = <400000>;
101*36ca3c8cSAdam Ford	pinctrl-names = "default";
102*36ca3c8cSAdam Ford	pinctrl-0 = <&pinctrl_i2c4>;
103*36ca3c8cSAdam Ford	status = "okay";
104*36ca3c8cSAdam Ford
105*36ca3c8cSAdam Ford	pca6416_0: gpio@20 {
106*36ca3c8cSAdam Ford		compatible = "nxp,pcal6416";
107*36ca3c8cSAdam Ford		reg = <0x20>;
108*36ca3c8cSAdam Ford		pinctrl-names = "default";
109*36ca3c8cSAdam Ford		pinctrl-0 = <&pinctrl_pcal6414>;
110*36ca3c8cSAdam Ford		gpio-controller;
111*36ca3c8cSAdam Ford		#gpio-cells = <2>;
112*36ca3c8cSAdam Ford		interrupt-parent = <&gpio4>;
113*36ca3c8cSAdam Ford		interrupts = <27 IRQ_TYPE_LEVEL_LOW>;
114*36ca3c8cSAdam Ford	};
115*36ca3c8cSAdam Ford
116*36ca3c8cSAdam Ford	pca6416_1: gpio@21 {
117*36ca3c8cSAdam Ford		compatible = "nxp,pcal6416";
118*36ca3c8cSAdam Ford		reg = <0x21>;
119*36ca3c8cSAdam Ford		gpio-controller;
120*36ca3c8cSAdam Ford		#gpio-cells = <2>;
121*36ca3c8cSAdam Ford		interrupt-parent = <&gpio4>;
122*36ca3c8cSAdam Ford		interrupts = <27 IRQ_TYPE_LEVEL_LOW>;
123*36ca3c8cSAdam Ford	};
124*36ca3c8cSAdam Ford
125*36ca3c8cSAdam Ford	wm8962: audio-codec@1a {
126*36ca3c8cSAdam Ford		compatible = "wlf,wm8962";
127*36ca3c8cSAdam Ford		reg = <0x1a>;
128*36ca3c8cSAdam Ford		clocks = <&clk IMX8MN_CLK_SAI3_ROOT>;
129*36ca3c8cSAdam Ford		clock-names = "xclk";
130*36ca3c8cSAdam Ford		DCVDD-supply = <&reg_audio>;
131*36ca3c8cSAdam Ford		DBVDD-supply = <&reg_audio>;
132*36ca3c8cSAdam Ford		AVDD-supply = <&reg_audio>;
133*36ca3c8cSAdam Ford		CPVDD-supply = <&reg_audio>;
134*36ca3c8cSAdam Ford		MICVDD-supply = <&reg_audio>;
135*36ca3c8cSAdam Ford		PLLVDD-supply = <&reg_audio>;
136*36ca3c8cSAdam Ford		SPKVDD1-supply = <&reg_audio>;
137*36ca3c8cSAdam Ford		SPKVDD2-supply = <&reg_audio>;
138*36ca3c8cSAdam Ford		gpio-cfg = <
139*36ca3c8cSAdam Ford			0x0000 /* 0:Default */
140*36ca3c8cSAdam Ford			0x0000 /* 1:Default */
141*36ca3c8cSAdam Ford			0x0000 /* 2:FN_DMICCLK */
142*36ca3c8cSAdam Ford			0x0000 /* 3:Default */
143*36ca3c8cSAdam Ford			0x0000 /* 4:FN_DMICCDAT */
144*36ca3c8cSAdam Ford			0x0000 /* 5:Default */
145*36ca3c8cSAdam Ford		>;
146*36ca3c8cSAdam Ford	};
147*36ca3c8cSAdam Ford};
148*36ca3c8cSAdam Ford
149*36ca3c8cSAdam Ford&easrc {
150*36ca3c8cSAdam Ford	fsl,asrc-rate  = <48000>;
151*36ca3c8cSAdam Ford	status = "okay";
152*36ca3c8cSAdam Ford};
153*36ca3c8cSAdam Ford
154*36ca3c8cSAdam Ford&sai3 {
155*36ca3c8cSAdam Ford	pinctrl-names = "default";
156*36ca3c8cSAdam Ford	pinctrl-0 = <&pinctrl_sai3>;
157*36ca3c8cSAdam Ford	assigned-clocks = <&clk IMX8MN_CLK_SAI3>;
158*36ca3c8cSAdam Ford	assigned-clock-parents = <&clk IMX8MN_AUDIO_PLL1_OUT>;
159*36ca3c8cSAdam Ford	assigned-clock-rates = <24576000>;
160*36ca3c8cSAdam Ford	fsl,sai-mclk-direction-output;
161*36ca3c8cSAdam Ford	status = "okay";
162*36ca3c8cSAdam Ford};
163*36ca3c8cSAdam Ford
164*36ca3c8cSAdam Ford&snvs_pwrkey {
165*36ca3c8cSAdam Ford	status = "okay";
166*36ca3c8cSAdam Ford};
167*36ca3c8cSAdam Ford
168*36ca3c8cSAdam Ford&uart2 { /* console */
169*36ca3c8cSAdam Ford	pinctrl-names = "default";
170*36ca3c8cSAdam Ford	pinctrl-0 = <&pinctrl_uart2>;
171*36ca3c8cSAdam Ford	status = "okay";
172*36ca3c8cSAdam Ford};
173*36ca3c8cSAdam Ford
174*36ca3c8cSAdam Ford&uart3 {
175*36ca3c8cSAdam Ford	pinctrl-names = "default";
176*36ca3c8cSAdam Ford	pinctrl-0 = <&pinctrl_uart3>;
177*36ca3c8cSAdam Ford	assigned-clocks = <&clk IMX8MN_CLK_UART3>;
178*36ca3c8cSAdam Ford	assigned-clock-parents = <&clk IMX8MN_SYS_PLL1_80M>;
179*36ca3c8cSAdam Ford	status = "okay";
180*36ca3c8cSAdam Ford};
181*36ca3c8cSAdam Ford
182*36ca3c8cSAdam Ford&usbotg1 {
183*36ca3c8cSAdam Ford	vbus-supply = <&reg_usb_otg_vbus>;
184*36ca3c8cSAdam Ford	disable-over-current;
185*36ca3c8cSAdam Ford	dr_mode="otg";
186*36ca3c8cSAdam Ford	status = "okay";
187*36ca3c8cSAdam Ford};
188*36ca3c8cSAdam Ford
189*36ca3c8cSAdam Ford&usdhc2 {
190*36ca3c8cSAdam Ford	pinctrl-names = "default", "state_100mhz", "state_200mhz";
191*36ca3c8cSAdam Ford	pinctrl-0 = <&pinctrl_usdhc2>, <&pinctrl_usdhc2_gpio>;
192*36ca3c8cSAdam Ford	pinctrl-1 = <&pinctrl_usdhc2_100mhz>;
193*36ca3c8cSAdam Ford	pinctrl-2 = <&pinctrl_usdhc2_200mhz>;
194*36ca3c8cSAdam Ford	bus-width = <4>;
195*36ca3c8cSAdam Ford	vmmc-supply = <&reg_usdhc2_vmmc>;
196*36ca3c8cSAdam Ford	status = "okay";
197*36ca3c8cSAdam Ford};
198*36ca3c8cSAdam Ford
199*36ca3c8cSAdam Ford&iomuxc {
200*36ca3c8cSAdam Ford	pinctrl_espi2: espi2grp {
201*36ca3c8cSAdam Ford		fsl,pins = <
202*36ca3c8cSAdam Ford			MX8MN_IOMUXC_ECSPI2_SCLK_ECSPI2_SCLK		0x82
203*36ca3c8cSAdam Ford			MX8MN_IOMUXC_ECSPI2_MOSI_ECSPI2_MOSI		0x82
204*36ca3c8cSAdam Ford			MX8MN_IOMUXC_ECSPI2_MISO_ECSPI2_MISO		0x82
205*36ca3c8cSAdam Ford			MX8MN_IOMUXC_ECSPI1_SS0_GPIO5_IO9		0x41
206*36ca3c8cSAdam Ford		>;
207*36ca3c8cSAdam Ford	};
208*36ca3c8cSAdam Ford
209*36ca3c8cSAdam Ford	pinctrl_i2c2: i2c2grp {
210*36ca3c8cSAdam Ford		fsl,pins = <
211*36ca3c8cSAdam Ford			MX8MN_IOMUXC_I2C2_SCL_I2C2_SCL		0x400001c3
212*36ca3c8cSAdam Ford			MX8MN_IOMUXC_I2C2_SDA_I2C2_SDA		0x400001c3
213*36ca3c8cSAdam Ford		>;
214*36ca3c8cSAdam Ford	};
215*36ca3c8cSAdam Ford
216*36ca3c8cSAdam Ford	pinctrl_i2c4: i2c4grp {
217*36ca3c8cSAdam Ford		fsl,pins = <
218*36ca3c8cSAdam Ford			MX8MN_IOMUXC_I2C4_SCL_I2C4_SCL		0x400001c3
219*36ca3c8cSAdam Ford			MX8MN_IOMUXC_I2C4_SDA_I2C4_SDA		0x400001c3
220*36ca3c8cSAdam Ford		>;
221*36ca3c8cSAdam Ford	};
222*36ca3c8cSAdam Ford
223*36ca3c8cSAdam Ford	pinctrl_led3: led3grp {
224*36ca3c8cSAdam Ford		fsl,pins = <
225*36ca3c8cSAdam Ford			MX8MN_IOMUXC_SAI3_RXFS_GPIO4_IO28	0x41
226*36ca3c8cSAdam Ford		>;
227*36ca3c8cSAdam Ford	};
228*36ca3c8cSAdam Ford
229*36ca3c8cSAdam Ford	pinctrl_pcal6414: pcal6414-gpiogrp {
230*36ca3c8cSAdam Ford		fsl,pins = <
231*36ca3c8cSAdam Ford			MX8MN_IOMUXC_SAI2_MCLK_GPIO4_IO27		0x19
232*36ca3c8cSAdam Ford		>;
233*36ca3c8cSAdam Ford	};
234*36ca3c8cSAdam Ford
235*36ca3c8cSAdam Ford	pinctrl_reg_usb_otg: reg-otggrp {
236*36ca3c8cSAdam Ford		fsl,pins = <
237*36ca3c8cSAdam Ford			MX8MN_IOMUXC_SAI3_RXC_GPIO4_IO29     0x19
238*36ca3c8cSAdam Ford		>;
239*36ca3c8cSAdam Ford	};
240*36ca3c8cSAdam Ford
241*36ca3c8cSAdam Ford	pinctrl_sai3: sai3grp {
242*36ca3c8cSAdam Ford		fsl,pins = <
243*36ca3c8cSAdam Ford			MX8MN_IOMUXC_SAI3_TXFS_SAI3_TX_SYNC     0xd6
244*36ca3c8cSAdam Ford			MX8MN_IOMUXC_SAI3_TXC_SAI3_TX_BCLK      0xd6
245*36ca3c8cSAdam Ford			MX8MN_IOMUXC_SAI3_MCLK_SAI3_MCLK        0xd6
246*36ca3c8cSAdam Ford			MX8MN_IOMUXC_SAI3_TXD_SAI3_TX_DATA0     0xd6
247*36ca3c8cSAdam Ford			MX8MN_IOMUXC_SAI3_RXD_SAI3_RX_DATA0	0xd6
248*36ca3c8cSAdam Ford		>;
249*36ca3c8cSAdam Ford	};
250*36ca3c8cSAdam Ford
251*36ca3c8cSAdam Ford	pinctrl_uart2: uart2grp {
252*36ca3c8cSAdam Ford		fsl,pins = <
253*36ca3c8cSAdam Ford			MX8MN_IOMUXC_UART2_RXD_UART2_DCE_RX	0x140
254*36ca3c8cSAdam Ford			MX8MN_IOMUXC_UART2_TXD_UART2_DCE_TX	0x140
255*36ca3c8cSAdam Ford		>;
256*36ca3c8cSAdam Ford	};
257*36ca3c8cSAdam Ford
258*36ca3c8cSAdam Ford	pinctrl_uart3: uart3grp {
259*36ca3c8cSAdam Ford		fsl,pins = <
260*36ca3c8cSAdam Ford			MX8MN_IOMUXC_ECSPI1_SCLK_UART3_DCE_RX	0x40
261*36ca3c8cSAdam Ford			MX8MN_IOMUXC_ECSPI1_MOSI_UART3_DCE_TX	0x40
262*36ca3c8cSAdam Ford		>;
263*36ca3c8cSAdam Ford	};
264*36ca3c8cSAdam Ford
265*36ca3c8cSAdam Ford	pinctrl_usdhc2_gpio: usdhc2gpiogrp {
266*36ca3c8cSAdam Ford		fsl,pins = <
267*36ca3c8cSAdam Ford			MX8MN_IOMUXC_SD2_CD_B_USDHC2_CD_B	0x41
268*36ca3c8cSAdam Ford			MX8MN_IOMUXC_SD2_RESET_B_GPIO2_IO19	0x41
269*36ca3c8cSAdam Ford		>;
270*36ca3c8cSAdam Ford	};
271*36ca3c8cSAdam Ford
272*36ca3c8cSAdam Ford	pinctrl_usdhc2: usdhc2grp {
273*36ca3c8cSAdam Ford		fsl,pins = <
274*36ca3c8cSAdam Ford			MX8MN_IOMUXC_SD2_CLK_USDHC2_CLK	0x190
275*36ca3c8cSAdam Ford			MX8MN_IOMUXC_SD2_CMD_USDHC2_CMD	0x1d0
276*36ca3c8cSAdam Ford			MX8MN_IOMUXC_SD2_DATA0_USDHC2_DATA0	0x1d0
277*36ca3c8cSAdam Ford			MX8MN_IOMUXC_SD2_DATA1_USDHC2_DATA1	0x1d0
278*36ca3c8cSAdam Ford			MX8MN_IOMUXC_SD2_DATA2_USDHC2_DATA2	0x1d0
279*36ca3c8cSAdam Ford			MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3	0x1d0
280*36ca3c8cSAdam Ford			MX8MN_IOMUXC_GPIO1_IO04_USDHC2_VSELECT	0x1d0
281*36ca3c8cSAdam Ford		>;
282*36ca3c8cSAdam Ford	};
283*36ca3c8cSAdam Ford
284*36ca3c8cSAdam Ford	pinctrl_usdhc2_100mhz: usdhc2-100mhzgrp {
285*36ca3c8cSAdam Ford		fsl,pins = <
286*36ca3c8cSAdam Ford			MX8MN_IOMUXC_SD2_CLK_USDHC2_CLK	0x194
287*36ca3c8cSAdam Ford			MX8MN_IOMUXC_SD2_CMD_USDHC2_CMD	0x1d4
288*36ca3c8cSAdam Ford			MX8MN_IOMUXC_SD2_DATA0_USDHC2_DATA0	0x1d4
289*36ca3c8cSAdam Ford			MX8MN_IOMUXC_SD2_DATA1_USDHC2_DATA1	0x1d4
290*36ca3c8cSAdam Ford			MX8MN_IOMUXC_SD2_DATA2_USDHC2_DATA2	0x1d4
291*36ca3c8cSAdam Ford			MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3	0x1d4
292*36ca3c8cSAdam Ford			MX8MN_IOMUXC_GPIO1_IO04_USDHC2_VSELECT	0x1d0
293*36ca3c8cSAdam Ford		>;
294*36ca3c8cSAdam Ford	};
295*36ca3c8cSAdam Ford
296*36ca3c8cSAdam Ford	pinctrl_usdhc2_200mhz: usdhc2-200mhzgrp {
297*36ca3c8cSAdam Ford		fsl,pins = <
298*36ca3c8cSAdam Ford			MX8MN_IOMUXC_SD2_CLK_USDHC2_CLK	0x196
299*36ca3c8cSAdam Ford			MX8MN_IOMUXC_SD2_CMD_USDHC2_CMD	0x1d6
300*36ca3c8cSAdam Ford			MX8MN_IOMUXC_SD2_DATA0_USDHC2_DATA0	0x1d6
301*36ca3c8cSAdam Ford			MX8MN_IOMUXC_SD2_DATA1_USDHC2_DATA1	0x1d6
302*36ca3c8cSAdam Ford			MX8MN_IOMUXC_SD2_DATA2_USDHC2_DATA2	0x1d6
303*36ca3c8cSAdam Ford			MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3	0x1d6
304*36ca3c8cSAdam Ford			MX8MN_IOMUXC_GPIO1_IO04_USDHC2_VSELECT	0x1d0
305*36ca3c8cSAdam Ford		>;
306*36ca3c8cSAdam Ford	};
307*36ca3c8cSAdam Ford};
308