1/*
2 * Copyright 2023 NXP
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7/dts-v1/;
8
9#include <nxp/nxp_rt11xx_cm7.dtsi>
10#include <zephyr/dt-bindings/led/led.h>
11#include "vmu_rt1170.dtsi"
12#include <zephyr/dt-bindings/input/input-event-codes.h>
13
14/ {
15	model = "NXP VMU RT1170";
16	compatible = "nxp,mimxrt1176";
17
18	aliases {
19		led0 = &green_led;
20		led1 = &red_led;
21		watchdog0 = &wdog1;
22		sdhc0 = &usdhc1;
23		sw0 = &arming_button;
24		pwm-led0 = &buzzer0;
25		mcuboot-button0 = &arming_button;
26	};
27
28	chosen {
29		zephyr,sram = &ocram1; /* TODO Merge with other OCRAM */
30		zephyr,sram1 = &ocram2; /* TODO Merge with other OCRAM */
31		zephyr,dtcm = &dtcm;
32		zephyr,itcm = &itcm;
33		zephyr,console = &lpuart1;
34		zephyr,shell-uart = &lpuart1;
35		zephyr,canbus = &flexcan1;
36		zephyr,flash-controller = &mx25um51345g;
37		zephyr,flash = &mx25um51345g;
38		zephyr,code-partition = &slot0_partition;
39		zephyr,uart-mcumgr = &lpuart1;
40	};
41
42	/* This is the Arming Button on the included GPS module for 10 pin JST-GH */
43	gpio_keys {
44		compatible = "gpio-keys";
45		arming_button: button_0 {
46			label = "Arming Switch";
47			gpios = <&gpio1 24 (GPIO_PULL_DOWN | GPIO_ACTIVE_HIGH)>;
48			zephyr,code = <INPUT_KEY_0>;
49		};
50	};
51
52	/* This regulator controls VDD_5V_PERIPH onboard supply */
53	reg-5v-periph {
54		compatible = "regulator-fixed";
55		regulator-name = "reg-5v-periph";
56		enable-gpios = <&gpio2 2 GPIO_ACTIVE_LOW>;
57		regulator-always-on;
58		status = "okay";
59	};
60
61	/* This regulator controls VDD_5V_HIPOWER onboard supply */
62	reg-5v-hipower {
63		compatible = "regulator-fixed";
64		regulator-name = "reg-5v-hipower";
65		enable-gpios = <&gpio2 5 GPIO_ACTIVE_LOW>;
66		regulator-always-on;
67		status = "okay";
68	};
69
70	/* This regulator controls the VDD_3V3_SENSORS1 onboard supply. */
71	reg-3v3-sensors-1 {
72		compatible = "regulator-fixed";
73		regulator-name = "reg-3v3-sensors-1";
74		enable-gpios = <&gpio2 1 GPIO_ACTIVE_HIGH>;
75		startup-delay-us = <2000>;
76		regulator-always-on;
77		status = "okay";
78	};
79
80	/* This regulator controls the VDD_3V3_SENSORS2 onboard supply. */
81	reg-3v3-sensors-2 {
82		compatible = "regulator-fixed";
83		regulator-name = "reg-3v3-sensors-2";
84		enable-gpios = <&gpio1 22 GPIO_ACTIVE_HIGH>;
85		startup-delay-us = <2000>;
86		regulator-always-on;
87		status = "okay";
88	};
89
90	/* This regulator controls the VDD_3V3_SENSORS3 onboard supply. */
91	reg-3v3-sensors-3 {
92		compatible = "regulator-fixed";
93		regulator-name = "reg-3v3-sensors-3";
94		enable-gpios = <&gpio1 14 GPIO_ACTIVE_HIGH>;
95		startup-delay-us = <2000>;
96		regulator-always-on;
97		status = "okay";
98	};
99
100	/* This regulator controls the VDD_3V3_SENSORS4 onboard supply. */
101	reg-3v3-sensors-4 {
102		compatible = "regulator-fixed";
103		regulator-name = "reg-3v3-sensors-4";
104		enable-gpios = <&gpio2 4 GPIO_ACTIVE_HIGH>;
105		startup-delay-us = <2000>;
106		regulator-always-on;
107		status = "okay";
108	};
109
110	/* This regulator controls VDD_3V3_SPEKTRUM onboard supply */
111	reg-3v3-spektrum {
112		compatible = "regulator-fixed";
113		regulator-name = "reg-3v3-spektrum";
114		enable-gpios = <&gpio2 6 GPIO_ACTIVE_HIGH>;
115		regulator-always-on;
116		status = "okay";
117	};
118
119	/* This regulator controls ETH_VDD_3V3 supply to power up the TJA1103 PHY */
120	reg-eth-power {
121		compatible = "regulator-fixed";
122		regulator-name = "reg-eth-power";
123		enable-gpios = <&gpio5 9 GPIO_ACTIVE_HIGH>;
124		regulator-always-on;
125		status = "okay";
126	};
127
128	pwm_shell: pwm_shell {
129		compatible = "pwm-leds";
130		buzzer0: buzzer0 {
131			pwms = <&qtmr1 0 PWM_HZ(50) PWM_POLARITY_NORMAL>;
132		};
133	};
134};
135
136
137&gpio1 {
138	status = "okay";
139};
140
141&gpio2 {
142	status = "okay";
143};
144
145&gpio3 {
146	status = "okay";
147};
148
149&gpio4 {
150	status = "okay";
151};
152
153&gpio5 {
154	status = "okay";
155};
156
157&gpio6 {
158	status = "okay";
159};
160
161&gpio7 {
162	status = "okay";
163};
164
165&gpio8 {
166	status = "okay";
167};
168
169&gpio9 {
170	status = "okay";
171};
172
173&lpuart1 {
174	status = "okay";
175	current-speed = <115200>;
176};
177
178&lpuart4 {
179	status = "okay";
180	current-speed = <115200>;
181};
182
183&lpuart6 {
184	status = "okay";
185	single-wire;
186	rx-invert;
187
188	sbus {
189		compatible = "futaba,sbus";
190		right_stick_x {
191			channel = <1>;
192			type = <INPUT_EV_ABS>;
193			zephyr,code = <INPUT_ABS_RX>;
194		};
195		right_stick_y {
196			channel = <2>;
197			type = <INPUT_EV_ABS>;
198			zephyr,code = <INPUT_ABS_RY>;
199		};
200		left_stick_y {
201			channel = <3>;
202			type = <INPUT_EV_ABS>;
203			zephyr,code = <INPUT_ABS_Y>;
204		};
205		left_stick_x {
206			channel = <4>;
207			type = <INPUT_EV_ABS>;
208			zephyr,code = <INPUT_ABS_X>;
209		};
210		kill_switch {
211			channel = <5>;
212			type = <INPUT_EV_KEY>;
213			zephyr,code = <INPUT_KEY_0>;
214		};
215	};
216};
217
218
219&flexcan1 {
220	status = "okay";
221	pinctrl-0 = <&pinmux_flexcan1>;
222	pinctrl-names = "default";
223	can-transceiver {
224		max-bitrate = <5000000>;
225	};
226};
227
228&flexcan2 {
229	status = "okay";
230	pinctrl-0 = <&pinmux_flexcan2>;
231	pinctrl-names = "default";
232	can-transceiver {
233		max-bitrate = <5000000>;
234	};
235};
236
237&flexcan3 {
238	status = "okay";
239	pinctrl-0 = <&pinmux_flexcan3>;
240	pinctrl-names = "default";
241	can-transceiver {
242		max-bitrate = <5000000>;
243	};
244};
245
246#include <zephyr/dt-bindings/sensor/icm42688.h>
247
248&lpspi1 {
249	status = "okay";
250	cs-gpios =<&gpio2 11 GPIO_ACTIVE_LOW>;
251
252	icm42688_0: icm42688p0@0 {
253		compatible = "invensense,icm42688";
254		reg = <0>;
255		int-gpios = <&gpio3 19 GPIO_ACTIVE_HIGH>;
256		spi-max-frequency = <24000000>;
257		accel-pwr-mode = <ICM42688_DT_ACCEL_LN>;
258		accel-odr = <ICM42688_DT_ACCEL_ODR_1000>;
259		accel-fs = <ICM42688_DT_ACCEL_FS_16>;
260		gyro-pwr-mode = <ICM42688_DT_GYRO_LN>;
261		gyro-odr = <ICM42688_DT_GYRO_ODR_1000>;
262		gyro-fs = <ICM42688_DT_GYRO_FS_2000>;
263	};
264};
265
266&lpspi2 {
267	status = "okay";
268	cs-gpios =<&gpio3 24 GPIO_ACTIVE_LOW>;
269
270	icm42688_1: icm42688p1@0 {
271		compatible = "invensense,icm42688";
272		reg = <0>;
273		int-gpios = <&gpio2 7 GPIO_ACTIVE_HIGH>;
274		spi-max-frequency = <24000000>;
275		accel-pwr-mode = <ICM42688_DT_ACCEL_LN>;
276		accel-odr = <ICM42688_DT_ACCEL_ODR_1000>;
277		accel-fs = <ICM42688_DT_ACCEL_FS_16>;
278		gyro-pwr-mode = <ICM42688_DT_GYRO_LN>;
279		gyro-odr = <ICM42688_DT_GYRO_ODR_1000>;
280		gyro-fs = <ICM42688_DT_GYRO_FS_2000>;
281	};
282};
283
284&lpspi3 {
285	status = "okay";
286	cs-gpios = <&gpio2 15 GPIO_ACTIVE_LOW>,
287		<&gpio2 18 GPIO_ACTIVE_LOW>;
288
289
290	bmi08x_accel: bmi08x@0 {
291		compatible = "bosch,bmi08x-accel";
292		reg = <0>;
293		int-gpios = <&gpio3 20 GPIO_ACTIVE_HIGH>;
294		spi-max-frequency = <10000000>;
295		int1-map-io = <0x01>;
296		int2-map-io = <0x00>;
297		int1-conf-io = <0x04>;
298		int2-conf-io = <0x00>;
299		accel-hz = "800";
300		accel-fs = <24>;
301	};
302
303	bmi08x_gyro: bmi08x@1 {
304		compatible = "bosch,bmi08x-gyro";
305		reg = <1>;
306		int-gpios = <&gpio2 28 GPIO_ACTIVE_HIGH>;
307		spi-max-frequency = <10000000>;
308		int3-4-map-io = <0x01>;
309		int3-4-conf-io = <0x02>;
310		gyro-hz = "1000_116";
311		gyro-fs = <1000>;
312	};
313};
314
315&lpspi6 {
316	status = "okay";
317};
318
319&lpi2c1 {
320	status = "okay";
321
322	ist8310: ist8310@e {
323		compatible = "isentek,ist8310";
324		reg = <0xe>;
325
326	};
327
328	ncp5623c: ncp5623c@39 {
329		compatible = "onnn,ncp5623c";
330		reg = <0x39>;
331
332		led_0 {
333			label = "GNSS LED";
334			index = <0>;
335			color-mapping =
336				<LED_COLOR_ID_RED>,
337				<LED_COLOR_ID_GREEN>,
338				<LED_COLOR_ID_BLUE>;
339		};
340	};
341};
342
343&lpi2c2 {
344	status = "okay";
345	clock-frequency = <I2C_BITRATE_FAST>;
346
347	bmp388_0: bmp388@76 {
348		compatible = "bosch,bmp388";
349		int-gpios = <&gpio2 3 GPIO_ACTIVE_HIGH>;
350		reg = <0x76>;
351		status = "okay";
352		odr = "50";
353		osr-press = <4>;
354		osr-temp = <2>;
355	};
356};
357
358&lpi2c3 {
359	status = "okay";
360	clock-frequency = <I2C_BITRATE_FAST>;
361
362	bmm150: bmm150@10 {
363		compatible = "bosch,bmm150";
364		status = "okay";
365		reg = <0x10>;
366	};
367
368	bmp388_1: bmp388@77 {
369		compatible = "bosch,bmp388";
370		reg = <0x77>;
371		status = "okay";
372		odr = "50";
373		osr-press = <4>;
374		osr-temp = <2>;
375	};
376};
377
378&lpi2c6 {
379	status = "okay";
380};
381
382&flexpwm1_pwm0 {
383	status = "okay";
384	pinctrl-0 = <&pinmux_flexpwm_vmu_ch1>;
385	pinctrl-names = "default";
386	nxp,prescaler = <64>;
387};
388
389&flexpwm1_pwm1 {
390	status = "okay";
391	pinctrl-0 = <&pinmux_flexpwm_vmu_ch2>;
392	pinctrl-names = "default";
393	nxp,prescaler = <64>;
394};
395
396&flexpwm1_pwm2	{
397	status = "okay";
398	pinctrl-0 = <&pinmux_flexpwm_vmu_ch3>;
399	pinctrl-names = "default";
400	nxp,prescaler = <64>;
401};
402
403&flexpwm2_pwm0	{
404	status = "okay";
405	pinctrl-0 = <&pinmux_flexpwm_vmu_ch4>;
406	pinctrl-names = "default";
407	nxp,prescaler = <64>;
408};
409
410&flexpwm2_pwm1	{
411	status = "okay";
412	pinctrl-0 = <&pinmux_flexpwm_vmu_ch5>;
413	pinctrl-names = "default";
414	nxp,prescaler = <64>;
415};
416
417&flexpwm2_pwm2	{
418	status = "okay";
419	pinctrl-0 = <&pinmux_flexpwm_vmu_ch6>;
420	pinctrl-names = "default";
421	nxp,prescaler = <64>;
422};
423
424&flexpwm2_pwm3	{
425	status = "okay";
426	pinctrl-0 = <&pinmux_flexpwm_vmu_ch7>;
427	pinctrl-names = "default";
428	nxp,prescaler = <64>;
429};
430
431&flexpwm3_pwm0	{
432	status = "okay";
433	pinctrl-0 = <&pinmux_flexpwm_vmu_ch8>;
434	pinctrl-names = "default";
435	nxp,prescaler = <64>;
436};
437
438
439&gpt5 {
440	compatible = "nxp,gpt-ppm-input";
441	pinctrl-0 = <&pinmux_gpt_ppm>;
442	pinctrl-names = "default";
443	capture-channel = <1>;
444};
445
446&qtmr1 {
447	compatible = "nxp,qtmr-pwm";
448	pinctrl-0 = <&pinmux_qtmr_pwm_buzzer>;
449	pinctrl-names = "default";
450	#pwm-cells = <3>;
451	prescaler = <128>;
452	status = "okay";
453};
454
455&usdhc1 {
456	status = "okay";
457	no-1-8-v;
458	pwr-gpios = <&gpio1 1 GPIO_ACTIVE_HIGH>;
459	cd-gpios = <&gpio3 31 (GPIO_ACTIVE_LOW | GPIO_PULL_DOWN)>;
460	sdmmc {
461		compatible = "zephyr,sdmmc-disk";
462		disk-name = "SD";
463		status = "okay";
464	};
465};
466
467&edma0 {
468	status = "okay";
469};
470
471&lpadc1 {
472	status = "okay";
473};
474
475/* GPT and Systick are enabled. If power management is enabled, the GPT
476 * timer will be used instead of systick, as allows the core clock to
477 * be gated.
478 */
479&gpt_hw_timer {
480	status = "disabled";
481};
482
483&systick {
484	status = "okay";
485};
486
487&wdog1 {
488	status = "okay";
489};
490
491&enet1g {
492	status = "okay";
493};
494
495&enet1g_mac {
496	status = "okay";
497};
498
499&enet1g_mdio {
500	status = "okay";
501	enet1g_phy: phy@1 {
502		status = "okay";
503		int-gpios = <&gpio5 10 GPIO_ACTIVE_HIGH>;
504	};
505};
506
507zephyr_udc0: &usb1 {
508	status = "okay";
509};
510