Linux Audio

Check our new training course

Linux kernel drivers training

May 6-19, 2025
Register
Loading...
Note: File does not exist in v4.17.
  1// SPDX-License-Identifier: GPL-2.0+
  2//
  3// Copyright 2021 Dillon Min <dillon.minfei@gmail.com>
  4//
  5// Based on imx6qdl-sabresd.dtsi which is:
  6// Copyright 2012 Freescale Semiconductor, Inc.
  7// Copyright 2011 Linaro Ltd.
  8
  9#include <dt-bindings/clock/imx6qdl-clock.h>
 10#include <dt-bindings/gpio/gpio.h>
 11#include <dt-bindings/input/input.h>
 12
 13/ {
 14	chosen {
 15		stdout-path = &uart4;
 16	};
 17
 18	memory@10000000 {
 19		device_type = "memory";
 20		reg = <0x10000000 0x80000000>;
 21	};
 22
 23	reg_usb_otg_vbus: regulator-usb-otg-vbus {
 24		compatible = "regulator-fixed";
 25		regulator-name = "usb_otg_vbus";
 26		regulator-min-microvolt = <5000000>;
 27		regulator-max-microvolt = <5000000>;
 28	};
 29
 30	reg_usb_h1_vbus: regulator-usb-h1-vbus {
 31		compatible = "regulator-fixed";
 32		regulator-name = "usb_h1_vbus";
 33		regulator-min-microvolt = <5000000>;
 34		regulator-max-microvolt = <5000000>;
 35	};
 36
 37	leds {
 38		compatible = "gpio-leds";
 39		pinctrl-names = "default";
 40		pinctrl-0 = <&pinctrl_gpio_leds>;
 41
 42		led-0 {
 43			gpios = <&gpio4 8 GPIO_ACTIVE_HIGH>;
 44			default-state = "on";
 45			linux,default-trigger = "heartbeat";
 46		};
 47	};
 48};
 49
 50&ipu1_csi0_from_ipu1_csi0_mux {
 51	bus-width = <8>;
 52	data-shift = <12>; /* Lines 19:12 used */
 53	hsync-active = <1>;
 54	vsync-active = <1>;
 55};
 56
 57&ipu1_csi0_mux_from_parallel_sensor {
 58	remote-endpoint = <&ov2659_to_ipu1_csi0_mux>;
 59};
 60
 61&ipu1_csi0 {
 62	pinctrl-names = "default";
 63	pinctrl-0 = <&pinctrl_ipu1_csi0>;
 64	status = "okay";
 65};
 66
 67&ecspi1 {
 68	cs-gpios = <&gpio4 9 GPIO_ACTIVE_LOW>;
 69	pinctrl-names = "default";
 70	pinctrl-0 = <&pinctrl_ecspi1>, <&pinctrl_ecspi1_gpio>;
 71	status = "okay";
 72
 73	m25p80: flash@0 {
 74		#address-cells = <1>;
 75		#size-cells = <1>;
 76		compatible = "st,m25p80", "jedec,spi-nor";
 77		spi-max-frequency = <20000000>;
 78		reg = <0>;
 79	};
 80};
 81
 82&fec {
 83	pinctrl-names = "default";
 84	pinctrl-0 = <&pinctrl_enet>;
 85	phy-mode = "rgmii-id";
 86	phy-handle = <&phy>;
 87	fsl,magic-packet;
 88	status = "okay";
 89
 90	mdio {
 91		#address-cells = <1>;
 92		#size-cells = <0>;
 93
 94		phy: ethernet-phy@1 {
 95			reg = <1>;
 96			qca,clk-out-frequency = <125000000>;
 97			reset-gpios = <&gpio4 10 GPIO_ACTIVE_LOW>;
 98			reset-assert-us = <10000>;
 99		};
100	};
101};
102
103&hdmi {
104	pinctrl-names = "default";
105	pinctrl-0 = <&pinctrl_hdmi_cec>;
106	ddc-i2c-bus = <&i2c3>;
107	status = "okay";
108};
109
110&i2c2 {
111	clock-frequency = <100000>;
112	pinctrl-names = "default";
113	pinctrl-0 = <&pinctrl_i2c2>;
114	status = "okay";
115
116	pfuze100: pmic@8 {
117		compatible = "fsl,pfuze100";
118		reg = <0x08>;
119
120		regulators {
121			sw1a_reg: sw1ab {
122				regulator-min-microvolt = <300000>;
123				regulator-max-microvolt = <1875000>;
124				regulator-boot-on;
125				regulator-always-on;
126				regulator-ramp-delay = <6250>;
127			};
128
129			sw1c_reg: sw1c {
130				regulator-min-microvolt = <300000>;
131				regulator-max-microvolt = <1875000>;
132				regulator-boot-on;
133				regulator-always-on;
134				regulator-ramp-delay = <6250>;
135			};
136
137			sw2_reg: sw2 {
138				regulator-min-microvolt = <800000>;
139				regulator-max-microvolt = <3300000>;
140				regulator-boot-on;
141				regulator-always-on;
142				regulator-ramp-delay = <6250>;
143			};
144
145			sw3a_reg: sw3a {
146				regulator-min-microvolt = <400000>;
147				regulator-max-microvolt = <1975000>;
148				regulator-boot-on;
149				regulator-always-on;
150			};
151
152			sw3b_reg: sw3b {
153				regulator-min-microvolt = <400000>;
154				regulator-max-microvolt = <1975000>;
155				regulator-boot-on;
156				regulator-always-on;
157			};
158
159			sw4_reg: sw4 {
160				regulator-min-microvolt = <800000>;
161				regulator-max-microvolt = <3300000>;
162				regulator-always-on;
163			};
164
165			swbst_reg: swbst {
166				regulator-min-microvolt = <5000000>;
167				regulator-max-microvolt = <5150000>;
168			};
169
170			snvs_reg: vsnvs {
171				regulator-min-microvolt = <1000000>;
172				regulator-max-microvolt = <3000000>;
173				regulator-boot-on;
174				regulator-always-on;
175			};
176
177			vref_reg: vrefddr {
178				regulator-boot-on;
179				regulator-always-on;
180			};
181
182			vgen1_reg: vgen1 {
183				regulator-min-microvolt = <800000>;
184				regulator-max-microvolt = <1550000>;
185			};
186
187			vgen2_reg: vgen2 {
188				regulator-min-microvolt = <800000>;
189				regulator-max-microvolt = <1550000>;
190			};
191
192			vgen3_reg: vgen3 {
193				regulator-min-microvolt = <1800000>;
194				regulator-max-microvolt = <3300000>;
195			};
196
197			vgen4_reg: vgen4 {
198				regulator-min-microvolt = <1800000>;
199				regulator-max-microvolt = <3300000>;
200				regulator-always-on;
201			};
202
203			vgen5_reg: vgen5 {
204				regulator-min-microvolt = <1800000>;
205				regulator-max-microvolt = <3300000>;
206				regulator-always-on;
207			};
208
209			vgen6_reg: vgen6 {
210				regulator-min-microvolt = <1800000>;
211				regulator-max-microvolt = <3300000>;
212				regulator-always-on;
213			};
214		};
215	};
216};
217
218&i2c3 {
219	clock-frequency = <100000>;
220	pinctrl-names = "default";
221	pinctrl-0 = <&pinctrl_i2c3>;
222	status = "okay";
223
224	ov2659: camera@30 {
225		compatible = "ovti,ov2659";
226		pinctrl-names = "default";
227		pinctrl-0 = <&pinctrl_ov2659>;
228		clocks = <&clks IMX6QDL_CLK_CKO>;
229		clock-names = "xvclk";
230		reg = <0x30>;
231		powerdown-gpios = <&gpio7 11 GPIO_ACTIVE_HIGH>;
232		reset-gpios = <&gpio1 7 GPIO_ACTIVE_LOW>;
233		status = "okay";
234
235		port {
236			ov2659_to_ipu1_csi0_mux: endpoint {
237				remote-endpoint = <&ipu1_csi0_mux_from_parallel_sensor>;
238				link-frequencies = /bits/ 64 <70000000>;
239				bus-width = <8>;
240				hsync-active = <1>;
241				vsync-active = <1>;
242			};
243		};
244	};
245};
246
247&iomuxc {
248	pinctrl_ecspi1: ecspi1grp {
249		fsl,pins = <
250			MX6QDL_PAD_EIM_D16__ECSPI1_SCLK		0x100b1
251			MX6QDL_PAD_EIM_D18__ECSPI1_MOSI		0x100b1
252			MX6QDL_PAD_EIM_D17__ECSPI1_MISO		0x100b1
253		>;
254	};
255
256	pinctrl_ecspi1_gpio: ecspi1grpgpiogrp {
257		fsl,pins = <
258			MX6QDL_PAD_KEY_ROW1__GPIO4_IO09		0x1b0b0
259			MX6QDL_PAD_ENET_RXD0__GPIO1_IO27	0x1b0b0
260		>;
261	};
262
263	pinctrl_enet: enetgrp {
264		fsl,pins = <
265			MX6QDL_PAD_ENET_MDIO__ENET_MDIO		0x1b0b0
266			MX6QDL_PAD_ENET_MDC__ENET_MDC		0x1b0b0
267			MX6QDL_PAD_RGMII_TXC__RGMII_TXC		0x1b030
268			MX6QDL_PAD_RGMII_TD0__RGMII_TD0		0x1b030
269			MX6QDL_PAD_RGMII_TD1__RGMII_TD1		0x1b030
270			MX6QDL_PAD_RGMII_TD2__RGMII_TD2		0x1b030
271			MX6QDL_PAD_RGMII_TD3__RGMII_TD3		0x1b030
272			MX6QDL_PAD_RGMII_TX_CTL__RGMII_TX_CTL	0x1b030
273			MX6QDL_PAD_ENET_REF_CLK__ENET_TX_CLK	0x1b0b0
274			MX6QDL_PAD_RGMII_RXC__RGMII_RXC		0x1b030
275			MX6QDL_PAD_RGMII_RD0__RGMII_RD0		0x1b030
276			MX6QDL_PAD_RGMII_RD1__RGMII_RD1		0x1b030
277			MX6QDL_PAD_RGMII_RD2__RGMII_RD2		0x1b030
278			MX6QDL_PAD_RGMII_RD3__RGMII_RD3		0x1b030
279			MX6QDL_PAD_RGMII_RX_CTL__RGMII_RX_CTL	0x1b030
280			MX6QDL_PAD_KEY_COL2__GPIO4_IO10         0x1b0b0
281		>;
282	};
283
284	pinctrl_hdmi_cec: hdmicecgrp {
285		fsl,pins = <
286			MX6QDL_PAD_EIM_A25__HDMI_TX_CEC_LINE	0x1f8b0
287		>;
288	};
289
290	pinctrl_i2c2: i2c2grp {
291		fsl,pins = <
292			MX6QDL_PAD_EIM_EB2__I2C2_SCL		0x4001b8b1
293			MX6QDL_PAD_KEY_ROW3__I2C2_SDA		0x4001b8b1
294		>;
295	};
296
297	pinctrl_i2c3: i2c3grp {
298		fsl,pins = <
299			MX6QDL_PAD_GPIO_5__I2C3_SCL		0x4001b8b1
300			MX6QDL_PAD_GPIO_6__I2C3_SDA		0x4001b8b1
301		>;
302	};
303
304	pinctrl_ipu1_csi0: ipu1csi0grp {
305		fsl,pins = <
306			MX6QDL_PAD_CSI0_DAT12__IPU1_CSI0_DATA12    0x1b0b0
307			MX6QDL_PAD_CSI0_DAT13__IPU1_CSI0_DATA13    0x1b0b0
308			MX6QDL_PAD_CSI0_DAT14__IPU1_CSI0_DATA14    0x1b0b0
309			MX6QDL_PAD_CSI0_DAT15__IPU1_CSI0_DATA15    0x1b0b0
310			MX6QDL_PAD_CSI0_DAT16__IPU1_CSI0_DATA16    0x1b0b0
311			MX6QDL_PAD_CSI0_DAT17__IPU1_CSI0_DATA17    0x1b0b0
312			MX6QDL_PAD_CSI0_DAT18__IPU1_CSI0_DATA18    0x1b0b0
313			MX6QDL_PAD_CSI0_DAT19__IPU1_CSI0_DATA19    0x1b0b0
314			MX6QDL_PAD_CSI0_PIXCLK__IPU1_CSI0_PIXCLK   0x1b0b0
315			MX6QDL_PAD_CSI0_MCLK__IPU1_CSI0_HSYNC      0x1b0b0
316			MX6QDL_PAD_CSI0_VSYNC__IPU1_CSI0_VSYNC     0x1b0b0
317		>;
318	};
319
320	pinctrl_ov2659: ov2659grp {
321		fsl,pins = <
322			MX6QDL_PAD_GPIO_16__GPIO7_IO11		0x1b0b0
323			MX6QDL_PAD_GPIO_7__GPIO1_IO07		0x1b0b0
324			MX6QDL_PAD_GPIO_0__CCM_CLKO1		0x130b0
325		>;
326	};
327
328	pinctrl_uart4: uart4grp {
329		fsl,pins = <
330			MX6QDL_PAD_KEY_COL0__UART4_TX_DATA	0x1b0b1
331			MX6QDL_PAD_KEY_ROW0__UART4_RX_DATA	0x1b0b1
332		>;
333	};
334
335	pinctrl_usbotg: usbotggrp {
336		fsl,pins = <
337			MX6QDL_PAD_ENET_RX_ER__USB_OTG_ID	0x17059
338		>;
339	};
340
341	pinctrl_usdhc1: usdhc1grp {
342		fsl,pins = <
343			MX6QDL_PAD_SD1_CMD__SD1_CMD		0x17059
344			MX6QDL_PAD_SD1_CLK__SD1_CLK		0x10059
345			MX6QDL_PAD_SD1_DAT0__SD1_DATA0		0x17059
346			MX6QDL_PAD_SD1_DAT1__SD1_DATA1		0x17059
347			MX6QDL_PAD_SD1_DAT2__SD1_DATA2		0x17059
348			MX6QDL_PAD_SD1_DAT3__SD1_DATA3		0x17059
349		>;
350	};
351
352	pinctrl_usdhc1_gpio: usdhc1grpgpiogrp {
353		fsl,pins = <
354			MX6QDL_PAD_ENET_TX_EN__GPIO1_IO28	0x1b0b0
355		>;
356	};
357
358	pinctrl_usdhc2: usdhc2grp {
359		fsl,pins = <
360			MX6QDL_PAD_SD2_CMD__SD2_CMD		0x17059
361			MX6QDL_PAD_SD2_CLK__SD2_CLK		0x10059
362			MX6QDL_PAD_SD2_DAT0__SD2_DATA0		0x17059
363			MX6QDL_PAD_SD2_DAT1__SD2_DATA1		0x17059
364			MX6QDL_PAD_SD2_DAT2__SD2_DATA2		0x17059
365			MX6QDL_PAD_SD2_DAT3__SD2_DATA3		0x17059
366		>;
367	};
368
369	pinctrl_usdhc2_gpio: usdhc2grpgpiogrp {
370		fsl,pins = <
371			MX6QDL_PAD_NANDF_D0__GPIO2_IO00		0x1b0b0
372			MX6QDL_PAD_NANDF_D1__GPIO2_IO01		0x1b0b0
373		>;
374	};
375
376	pinctrl_usdhc3: usdhc3grp {
377		fsl,pins = <
378			MX6QDL_PAD_SD3_CMD__SD3_CMD		0x17059
379			MX6QDL_PAD_SD3_CLK__SD3_CLK		0x10059
380			MX6QDL_PAD_SD3_DAT0__SD3_DATA0		0x17059
381			MX6QDL_PAD_SD3_DAT1__SD3_DATA1		0x17059
382			MX6QDL_PAD_SD3_DAT2__SD3_DATA2		0x17059
383			MX6QDL_PAD_SD3_DAT3__SD3_DATA3		0x17059
384			MX6QDL_PAD_SD3_DAT4__SD3_DATA4		0x17059
385			MX6QDL_PAD_SD3_DAT5__SD3_DATA5		0x17059
386			MX6QDL_PAD_SD3_DAT6__SD3_DATA6		0x17059
387			MX6QDL_PAD_SD3_DAT7__SD3_DATA7		0x17059
388		>;
389	};
390
391	pinctrl_wdog: wdoggrp {
392		fsl,pins = <
393			MX6QDL_PAD_GPIO_1__WDOG2_B		0x1b0b0
394		>;
395	};
396
397	pinctrl_gpio_leds: gpioledsgrp {
398		fsl,pins = <
399			MX6QDL_PAD_KEY_COL1__GPIO4_IO08 0x1b0b0
400		>;
401	};
402};
403
404&uart4 {
405	pinctrl-names = "default";
406	pinctrl-0 = <&pinctrl_uart4>;
407	status = "okay";
408};
409
410&usbh1 {
411	vbus-supply = <&reg_usb_h1_vbus>;
412	status = "okay";
413};
414
415&usbotg {
416	vbus-supply = <&reg_usb_otg_vbus>;
417	pinctrl-names = "default";
418	pinctrl-0 = <&pinctrl_usbotg>;
419	disable-over-current;
420	status = "okay";
421};
422
423&usdhc1 {
424	pinctrl-names = "default";
425	pinctrl-0 = <&pinctrl_usdhc1>, <&pinctrl_usdhc1_gpio>;
426	bus-width = <4>;
427	cd-gpios = <&gpio1 28 GPIO_ACTIVE_LOW>;
428	status = "okay";
429};
430
431&usdhc2 {
432	pinctrl-names = "default";
433	pinctrl-0 = <&pinctrl_usdhc2>, <&pinctrl_usdhc2_gpio>;
434	bus-width = <4>;
435	cd-gpios = <&gpio2 0 GPIO_ACTIVE_LOW>;
436	wp-gpios = <&gpio2 1 GPIO_ACTIVE_HIGH>;
437	status = "disabled";
438};
439
440&usdhc3 {
441	pinctrl-names = "default";
442	pinctrl-0 = <&pinctrl_usdhc3>;
443	bus-width = <8>;
444	non-removable;
445	no-1-8-v;
446	status = "okay";
447};
448
449&wdog1 {
450	status = "disabled";
451};
452
453&wdog2 {
454	pinctrl-names = "default";
455	pinctrl-0 = <&pinctrl_wdog>;
456	fsl,ext-reset-output;
457	status = "okay";
458};