1// SPDX-License-Identifier: GPL-2.0-only OR MIT
2/*
3 * https://beagley-ai.org/
4 *
5 * Copyright (C) 2024 Texas Instruments Incorporated - https://www.ti.com/
6 * Copyright (C) 2024 Robert Nelson, BeagleBoard.org Foundation
7 */
8
9/dts-v1/;
10
11#include <dt-bindings/leds/common.h>
12#include <dt-bindings/net/ti-dp83867.h>
13#include "k3-j722s.dtsi"
14
15/ {
16	compatible = "beagle,am67a-beagley-ai", "ti,j722s";
17	model = "BeagleBoard.org BeagleY-AI";
18
19	aliases {
20		serial0 = &wkup_uart0;
21		serial2 = &main_uart0;
22		mmc1 = &sdhci1;
23		rtc0 = &rtc;
24	};
25
26	chosen {
27		stdout-path = &main_uart0;
28	};
29
30	memory@80000000 {
31		/* 4G RAM */
32		reg = <0x00000000 0x80000000 0x00000000 0x80000000>,
33		      <0x00000008 0x80000000 0x00000000 0x80000000>;
34		device_type = "memory";
35		bootph-pre-ram;
36	};
37
38	reserved_memory: reserved-memory {
39		#address-cells = <2>;
40		#size-cells = <2>;
41		ranges;
42
43		secure_tfa_ddr: tfa@9e780000 {
44			reg = <0x00 0x9e780000 0x00 0x80000>;
45			no-map;
46		};
47
48		secure_ddr: optee@9e800000 {
49			reg = <0x00 0x9e800000 0x00 0x01800000>;
50			no-map;
51		};
52
53		wkup_r5fss0_core0_dma_memory_region: r5f-dma-memory@a0000000 {
54			compatible = "shared-dma-pool";
55			reg = <0x00 0xa0000000 0x00 0x100000>;
56			no-map;
57		};
58
59		wkup_r5fss0_core0_memory_region: r5f-memory@a0100000 {
60			compatible = "shared-dma-pool";
61			reg = <0x00 0xa0100000 0x00 0xf00000>;
62			no-map;
63		};
64
65		mcu_r5fss0_core0_dma_memory_region: mcu-r5fss-dma-memory-region@a1000000 {
66			compatible = "shared-dma-pool";
67			reg = <0x00 0xa1000000 0x00 0x100000>;
68			no-map;
69		};
70
71		mcu_r5fss0_core0_memory_region: mcu-r5fss-memory-region@a1100000 {
72			compatible = "shared-dma-pool";
73			reg = <0x00 0xa1100000 0x00 0xf00000>;
74			no-map;
75		};
76
77		main_r5fss0_core0_dma_memory_region: main-r5fss-dma-memory-region@a2000000 {
78			compatible = "shared-dma-pool";
79			reg = <0x00 0xa2000000 0x00 0x100000>;
80			no-map;
81		};
82
83		main_r5fss0_core0_memory_region: main-r5fss-memory-region@a2100000 {
84			compatible = "shared-dma-pool";
85			reg = <0x00 0xa2100000 0x00 0xf00000>;
86			no-map;
87		};
88
89		c7x_0_dma_memory_region: c7x-dma-memory@a3000000 {
90			compatible = "shared-dma-pool";
91			reg = <0x00 0xa3000000 0x00 0x100000>;
92			no-map;
93		};
94
95		c7x_0_memory_region: c7x-memory@a3100000 {
96			compatible = "shared-dma-pool";
97			reg = <0x00 0xa3100000 0x00 0xf00000>;
98			no-map;
99		};
100
101		c7x_1_dma_memory_region: c7x-dma-memory@a4000000 {
102			compatible = "shared-dma-pool";
103			reg = <0x00 0xa4000000 0x00 0x100000>;
104			no-map;
105		};
106
107		c7x_1_memory_region: c7x-memory@a4100000 {
108			compatible = "shared-dma-pool";
109			reg = <0x00 0xa4100000 0x00 0xf00000>;
110			no-map;
111		};
112
113		rtos_ipc_memory_region: ipc-memories@a5000000 {
114			reg = <0x00 0xa5000000 0x00 0x1c00000>;
115			alignment = <0x1000>;
116			no-map;
117		};
118	};
119
120	vsys_5v0: regulator-1 {
121		compatible = "regulator-fixed";
122		regulator-name = "vsys_5v0";
123		regulator-min-microvolt = <5000000>;
124		regulator-max-microvolt = <5000000>;
125		regulator-always-on;
126		regulator-boot-on;
127		bootph-all;
128	};
129
130	vdd_3v3: regulator-2 {
131		compatible = "regulator-fixed";
132		regulator-name = "vdd_3v3";
133		regulator-min-microvolt = <3300000>;
134		regulator-max-microvolt = <3300000>;
135		vin-supply = <&vsys_5v0>;
136		regulator-always-on;
137		regulator-boot-on;
138	};
139
140	vdd_mmc1: regulator-3 {
141		compatible = "regulator-fixed";
142		regulator-name = "vdd_mmc1";
143		pinctrl-names = "default";
144		pinctrl-0 = <&vdd_3v3_sd_pins_default>;
145		regulator-min-microvolt = <3300000>;
146		regulator-max-microvolt = <3300000>;
147		regulator-boot-on;
148		enable-active-high;
149		gpio = <&main_gpio1 50 GPIO_ACTIVE_HIGH>;
150		bootph-all;
151	};
152
153	vdd_sd_dv: regulator-4 {
154		compatible = "regulator-gpio";
155		regulator-name = "tlv71033";
156		pinctrl-names = "default";
157		pinctrl-0 = <&vdd_sd_dv_pins_default>;
158		regulator-min-microvolt = <1800000>;
159		regulator-max-microvolt = <3300000>;
160		regulator-boot-on;
161		vin-supply = <&vsys_5v0>;
162		gpios = <&main_gpio1 49 GPIO_ACTIVE_HIGH>;
163		states = <1800000 0x0>,
164			 <3300000 0x1>;
165		bootph-all;
166	};
167
168	vsys_io_1v8: regulator-5 {
169		compatible = "regulator-fixed";
170		regulator-name = "vsys_io_1v8";
171		regulator-min-microvolt = <1800000>;
172		regulator-max-microvolt = <1800000>;
173		regulator-always-on;
174		regulator-boot-on;
175	};
176
177	vsys_io_1v2: regulator-6 {
178		compatible = "regulator-fixed";
179		regulator-name = "vsys_io_1v2";
180		regulator-min-microvolt = <1200000>;
181		regulator-max-microvolt = <1200000>;
182		regulator-always-on;
183		regulator-boot-on;
184	};
185
186	leds {
187		compatible = "gpio-leds";
188		pinctrl-names = "default";
189		pinctrl-0 = <&led_pins_default>;
190
191		led-0 {
192			gpios = <&main_gpio0 11 GPIO_ACTIVE_LOW>;
193			default-state = "off";
194		};
195
196		led-1 {
197			gpios = <&main_gpio0 12 GPIO_ACTIVE_HIGH>;
198			linux,default-trigger = "heartbeat";
199			function = LED_FUNCTION_HEARTBEAT;
200			default-state = "on";
201		};
202	};
203};
204
205&main_pmx0 {
206	main_i2c0_pins_default: main-i2c0-default-pins {
207		pinctrl-single,pins = <
208			J722S_IOPAD(0x01e0, PIN_INPUT_PULLUP, 0) /* (D23) I2C0_SCL */
209			J722S_IOPAD(0x01e4, PIN_INPUT_PULLUP, 0) /* (B22) I2C0_SDA */
210		>;
211		bootph-all;
212	};
213
214	main_uart0_pins_default: main-uart0-default-pins {
215		pinctrl-single,pins = <
216			J722S_IOPAD(0x01c8, PIN_INPUT, 0)	/* (A22) UART0_RXD */
217			J722S_IOPAD(0x01cc, PIN_OUTPUT, 0)	/* (B22) UART0_TXD */
218		>;
219		bootph-all;
220	};
221
222	vdd_sd_dv_pins_default: vdd-sd-dv-default-pins {
223		pinctrl-single,pins = <
224			J722S_IOPAD(0x0244, PIN_OUTPUT, 7) /* (A24) MMC1_SDWP.GPIO1_49 */
225		>;
226		bootph-all;
227	};
228
229	main_mmc1_pins_default: main-mmc1-default-pins {
230		pinctrl-single,pins = <
231			J722S_IOPAD(0x023c, PIN_INPUT, 0) /* (H22) MMC1_CMD */
232			J722S_IOPAD(0x0234, PIN_OUTPUT, 0) /* (H24) MMC1_CLK */
233			J722S_IOPAD(0x0230, PIN_INPUT, 0) /* (H23) MMC1_DAT0 */
234			J722S_IOPAD(0x022c, PIN_INPUT_PULLUP, 0) /* (H20) MMC1_DAT1 */
235			J722S_IOPAD(0x0228, PIN_INPUT_PULLUP, 0) /* (J23) MMC1_DAT2 */
236			J722S_IOPAD(0x0224, PIN_INPUT_PULLUP, 0) /* (H25) MMC1_DAT3 */
237			J722S_IOPAD(0x0240, PIN_INPUT, 7) /* (B24) MMC1_SDCD.GPIO1_48 */
238		>;
239		bootph-all;
240	};
241
242	mdio_pins_default: mdio-default-pins {
243		pinctrl-single,pins = <
244			J722S_IOPAD(0x0160, PIN_OUTPUT, 0) /* (AC24) MDIO0_MDC */
245			J722S_IOPAD(0x015c, PIN_INPUT, 0) /* (AD25) MDIO0_MDIO */
246		>;
247	};
248
249	rgmii1_pins_default: rgmii1-default-pins {
250		pinctrl-single,pins = <
251			J722S_IOPAD(0x014c, PIN_INPUT, 0) /* (AC25) RGMII1_RD0 */
252			J722S_IOPAD(0x0150, PIN_INPUT, 0) /* (AD27) RGMII1_RD1 */
253			J722S_IOPAD(0x0154, PIN_INPUT, 0) /* (AE24) RGMII1_RD2 */
254			J722S_IOPAD(0x0158, PIN_INPUT, 0) /* (AE26) RGMII1_RD3 */
255			J722S_IOPAD(0x0148, PIN_INPUT, 0) /* (AE27) RGMII1_RXC */
256			J722S_IOPAD(0x0144, PIN_INPUT, 0) /* (AD23) RGMII1_RX_CTL */
257			J722S_IOPAD(0x0134, PIN_OUTPUT, 0) /* (AF27) RGMII1_TD0 */
258			J722S_IOPAD(0x0138, PIN_OUTPUT, 0) /* (AE23) RGMII1_TD1 */
259			J722S_IOPAD(0x013c, PIN_OUTPUT, 0) /* (AG25) RGMII1_TD2 */
260			J722S_IOPAD(0x0140, PIN_OUTPUT, 0) /* (AF24) RGMII1_TD3 */
261			J722S_IOPAD(0x0130, PIN_OUTPUT, 0) /* (AG26) RGMII1_TXC */
262			J722S_IOPAD(0x012c, PIN_OUTPUT, 0) /* (AF25) RGMII1_TX_CTL */
263		>;
264	};
265
266	led_pins_default: led-default-pins {
267		pinctrl-single,pins = <
268			J722S_IOPAD(0x002c, PIN_OUTPUT, 7) /* (K26) OSPI0_CSn0.GPIO0_11 */
269			J722S_IOPAD(0x0030, PIN_OUTPUT, 7) /* (K23) OSPI0_CSn1.GPIO0_12 */
270		>;
271	};
272
273	pmic_irq_pins_default: pmic-irq-default-pins {
274		pinctrl-single,pins = <
275			J722S_IOPAD(0x01f4, PIN_INPUT_PULLUP, 0) /* (B23) EXTINTn */
276		>;
277	};
278
279	vdd_3v3_sd_pins_default: vdd-3v3-sd-default-pins {
280		pinctrl-single,pins = <
281			J722S_IOPAD(0x0254, PIN_OUTPUT, 7) /* (E25) USB0_DRVVBUS.GPIO1_50 */
282		>;
283	};
284};
285
286&cpsw3g {
287	pinctrl-names = "default";
288	pinctrl-0 = <&rgmii1_pins_default>;
289	status = "okay";
290};
291
292&cpsw3g_mdio {
293	pinctrl-names = "default";
294	pinctrl-0 = <&mdio_pins_default>;
295	status = "okay";
296
297	cpsw3g_phy0: ethernet-phy@0 {
298		reg = <0>;
299		ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
300		ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
301		ti,min-output-impedance;
302	};
303};
304
305&cpsw_port1 {
306	phy-mode = "rgmii-rxid";
307	phy-handle = <&cpsw3g_phy0>;
308	status = "okay";
309};
310
311&main_gpio1 {
312	status = "okay";
313};
314
315&main_uart0 {
316	pinctrl-names = "default";
317	pinctrl-0 = <&main_uart0_pins_default>;
318	bootph-all;
319	status = "okay";
320};
321
322&mcu_pmx0 {
323	wkup_uart0_pins_default: wkup-uart0-default-pins {
324		pinctrl-single,pins = <
325			J722S_MCU_IOPAD(0x02c, PIN_INPUT, 0)	/* (C7) WKUP_UART0_CTSn */
326			J722S_MCU_IOPAD(0x030, PIN_OUTPUT, 0)	/* (C6) WKUP_UART0_RTSn */
327			J722S_MCU_IOPAD(0x024, PIN_INPUT, 0)	/* (D8) WKUP_UART0_RXD */
328			J722S_MCU_IOPAD(0x028, PIN_OUTPUT, 0)	/* (D7) WKUP_UART0_TXD */
329		>;
330		bootph-all;
331	};
332
333	wkup_i2c0_pins_default: wkup-i2c0-default-pins {
334		pinctrl-single,pins = <
335			J722S_MCU_IOPAD(0x04c, PIN_INPUT_PULLUP, 0)	/* (C7) WKUP_I2C0_SCL */
336			J722S_MCU_IOPAD(0x050, PIN_INPUT_PULLUP, 0)	/* (C6) WKUP_I2C1_SDA */
337		>;
338		bootph-all;
339	};
340};
341
342&wkup_uart0 {
343	/* WKUP UART0 is used by Device Manager firmware */
344	pinctrl-names = "default";
345	pinctrl-0 = <&wkup_uart0_pins_default>;
346	bootph-all;
347	status = "reserved";
348};
349
350&wkup_i2c0 {
351	pinctrl-names = "default";
352	pinctrl-0 = <&wkup_i2c0_pins_default>;
353	clock-frequency = <100000>;
354	bootph-all;
355	status = "okay";
356
357	tps65219: pmic@30 {
358		compatible = "ti,tps65219";
359		reg = <0x30>;
360		buck1-supply = <&vsys_5v0>;
361		buck2-supply = <&vsys_5v0>;
362		buck3-supply = <&vsys_5v0>;
363		ldo1-supply = <&vdd_3v3>;
364		ldo3-supply = <&vdd_3v3>;
365		ldo4-supply = <&vdd_3v3>;
366
367		pinctrl-names = "default";
368		pinctrl-0 = <&pmic_irq_pins_default>;
369		interrupt-parent = <&gic500>;
370		interrupts = <GIC_SPI 224 IRQ_TYPE_LEVEL_HIGH>;
371		interrupt-controller;
372		#interrupt-cells = <1>;
373
374		bootph-all;
375		system-power-controller;
376		ti,power-button;
377
378		regulators {
379			buck1_reg: buck1 {
380				regulator-name = "VDD_3V3";
381				regulator-min-microvolt = <3300000>;
382				regulator-max-microvolt = <3300000>;
383				regulator-boot-on;
384				regulator-always-on;
385			};
386
387			buck2_reg: buck2 {
388				regulator-name = "VDD_1V8";
389				regulator-min-microvolt = <1800000>;
390				regulator-max-microvolt = <1800000>;
391				regulator-boot-on;
392				regulator-always-on;
393			};
394
395			ldo1_reg: ldo1 {
396				regulator-name = "VDDSHV5_SDIO";
397				regulator-min-microvolt = <3300000>;
398				regulator-max-microvolt = <3300000>;
399				regulator-allow-bypass;
400				regulator-boot-on;
401				regulator-always-on;
402			};
403
404			ldo2_reg: ldo2 {
405				regulator-name = "VDD_1V2";
406				regulator-min-microvolt = <1200000>;
407				regulator-max-microvolt = <1200000>;
408				regulator-boot-on;
409				regulator-always-on;
410			};
411
412			ldo3_reg: ldo3 {
413				regulator-name = "VDDA_PHY_1V8";
414				regulator-min-microvolt = <1800000>;
415				regulator-max-microvolt = <1800000>;
416				regulator-boot-on;
417				regulator-always-on;
418			};
419
420			ldo4_reg: ldo4 {
421				regulator-name = "VDDA_PLL_1V8";
422				regulator-min-microvolt = <1800000>;
423				regulator-max-microvolt = <1800000>;
424				regulator-boot-on;
425				regulator-always-on;
426			};
427		};
428	};
429
430	eeprom@50 {
431		compatible = "atmel,24c32";
432		reg = <0x50>;
433	};
434
435	rtc: rtc@68 {
436		compatible = "dallas,ds1340";
437		reg = <0x68>;
438	};
439};
440
441&sdhci1 {
442	/* SD/MMC */
443	vmmc-supply = <&vdd_mmc1>;
444	vqmmc-supply = <&vdd_sd_dv>;
445	pinctrl-names = "default";
446	pinctrl-0 = <&main_mmc1_pins_default>;
447	disable-wp;
448	cd-gpios = <&main_gpio1 48 GPIO_ACTIVE_LOW>;
449	cd-debounce-delay-ms = <100>;
450	bootph-all;
451	ti,fails-without-test-cd;
452	status = "okay";
453};
454
455&mailbox0_cluster0 {
456	status = "okay";
457
458	mbox_wkup_r5_0: mbox-wkup-r5-0 {
459		ti,mbox-rx = <0 0 0>;
460		ti,mbox-tx = <1 0 0>;
461	};
462};
463
464&mailbox0_cluster1 {
465	status = "okay";
466
467	mbox_mcu_r5_0: mbox-mcu-r5-0 {
468		ti,mbox-rx = <0 0 0>;
469		ti,mbox-tx = <1 0 0>;
470	};
471};
472
473&mailbox0_cluster2 {
474	status = "okay";
475
476	mbox_c7x_0: mbox-c7x-0 {
477		ti,mbox-rx = <0 0 0>;
478		ti,mbox-tx = <1 0 0>;
479	};
480};
481
482&mailbox0_cluster3 {
483	status = "okay";
484
485	mbox_main_r5_0: mbox-main-r5-0 {
486		ti,mbox-rx = <0 0 0>;
487		ti,mbox-tx = <1 0 0>;
488	};
489
490	mbox_c7x_1: mbox-c7x-1 {
491		ti,mbox-rx = <2 0 0>;
492		ti,mbox-tx = <3 0 0>;
493	};
494};
495
496/* Timers are used by Remoteproc firmware */
497&main_timer0 {
498	status = "reserved";
499};
500
501&main_timer1 {
502	status = "reserved";
503};
504
505&main_timer2 {
506	status = "reserved";
507};
508
509&wkup_r5fss0 {
510	status = "okay";
511};
512
513&wkup_r5fss0_core0 {
514	mboxes = <&mailbox0_cluster0 &mbox_wkup_r5_0>;
515	memory-region = <&wkup_r5fss0_core0_dma_memory_region>,
516			<&wkup_r5fss0_core0_memory_region>;
517};
518
519&mcu_r5fss0 {
520	status = "okay";
521};
522
523&mcu_r5fss0_core0 {
524	mboxes = <&mailbox0_cluster1 &mbox_mcu_r5_0>;
525	memory-region = <&mcu_r5fss0_core0_dma_memory_region>,
526			<&mcu_r5fss0_core0_memory_region>;
527};
528
529&main_r5fss0 {
530	status = "okay";
531};
532
533&main_r5fss0_core0 {
534	mboxes = <&mailbox0_cluster3 &mbox_main_r5_0>;
535	memory-region = <&main_r5fss0_core0_dma_memory_region>,
536			<&main_r5fss0_core0_memory_region>;
537};
538
539&c7x_0 {
540	mboxes = <&mailbox0_cluster2 &mbox_c7x_0>;
541	memory-region = <&c7x_0_dma_memory_region>,
542			<&c7x_0_memory_region>;
543	status = "okay";
544};
545
546&c7x_1 {
547	mboxes = <&mailbox0_cluster3 &mbox_c7x_1>;
548	memory-region = <&c7x_1_dma_memory_region>,
549			<&c7x_1_memory_region>;
550	status = "okay";
551};
552