1// SPDX-License-Identifier: GPL-2.0-only
2/*
3 * Copyright (C) 2014-2016 Texas Instruments Incorporated - https://www.ti.com/
4 */
5/dts-v1/;
6
7#include "am5728.dtsi"
8#include "am57xx-commercial-grade.dtsi"
9#include "dra74x-mmc-iodelay.dtsi"
10#include "dra74-ipu-dsp-common.dtsi"
11#include <dt-bindings/gpio/gpio.h>
12#include <dt-bindings/interrupt-controller/irq.h>
13
14/ {
15	compatible = "ti,am572x-beagle-x15", "ti,am5728", "ti,dra742", "ti,dra74", "ti,dra7";
16
17	aliases {
18		rtc0 = &mcp_rtc;
19		rtc1 = &tps659038_rtc;
20		rtc2 = &rtc;
21		display0 = &hdmi0;
22	};
23
24	chosen {
25		stdout-path = &uart3;
26	};
27
28	memory@0 {
29		device_type = "memory";
30		reg = <0x0 0x80000000 0x0 0x80000000>;
31	};
32
33	main_12v0: fixedregulator-main_12v0 {
34		/* main supply */
35		compatible = "regulator-fixed";
36		regulator-name = "main_12v0";
37		regulator-min-microvolt = <12000000>;
38		regulator-max-microvolt = <12000000>;
39		regulator-always-on;
40		regulator-boot-on;
41	};
42
43	evm_5v0: fixedregulator-evm_5v0 {
44		/* Output of TPS54531D */
45		compatible = "regulator-fixed";
46		regulator-name = "evm_5v0";
47		regulator-min-microvolt = <5000000>;
48		regulator-max-microvolt = <5000000>;
49		vin-supply = <&main_12v0>;
50		regulator-always-on;
51		regulator-boot-on;
52	};
53
54	reserved-memory {
55		#address-cells = <2>;
56		#size-cells = <2>;
57		ranges;
58
59		ipu2_memory_region: ipu2-memory@95800000 {
60			compatible = "shared-dma-pool";
61			reg = <0x0 0x95800000 0x0 0x3800000>;
62			reusable;
63			status = "okay";
64		};
65
66		dsp1_memory_region: dsp1-memory@99000000 {
67			compatible = "shared-dma-pool";
68			reg = <0x0 0x99000000 0x0 0x4000000>;
69			reusable;
70			status = "okay";
71		};
72
73		ipu1_memory_region: ipu1-memory@9d000000 {
74			compatible = "shared-dma-pool";
75			reg = <0x0 0x9d000000 0x0 0x2000000>;
76			reusable;
77			status = "okay";
78		};
79
80		dsp2_memory_region: dsp2-memory@9f000000 {
81			compatible = "shared-dma-pool";
82			reg = <0x0 0x9f000000 0x0 0x800000>;
83			reusable;
84			status = "okay";
85		};
86	};
87
88	vdd_3v3: fixedregulator-vdd_3v3 {
89		compatible = "regulator-fixed";
90		regulator-name = "vdd_3v3";
91		vin-supply = <&regen1>;
92		regulator-min-microvolt = <3300000>;
93		regulator-max-microvolt = <3300000>;
94	};
95
96	aic_dvdd: fixedregulator-aic_dvdd {
97		compatible = "regulator-fixed";
98		regulator-name = "aic_dvdd_fixed";
99		vin-supply = <&vdd_3v3>;
100		regulator-min-microvolt = <1800000>;
101		regulator-max-microvolt = <1800000>;
102	};
103
104	vtt_fixed: fixedregulator-vtt {
105		/* TPS51200 */
106		compatible = "regulator-fixed";
107		regulator-name = "vtt_fixed";
108		vin-supply = <&smps3_reg>;
109		regulator-min-microvolt = <3300000>;
110		regulator-max-microvolt = <3300000>;
111		regulator-always-on;
112		regulator-boot-on;
113		enable-active-high;
114		gpio = <&gpio7 11 GPIO_ACTIVE_HIGH>;
115	};
116
117	leds {
118		compatible = "gpio-leds";
119
120		led0 {
121			label = "beagle-x15:usr0";
122			gpios = <&gpio7 9 GPIO_ACTIVE_HIGH>;
123			linux,default-trigger = "heartbeat";
124			default-state = "off";
125		};
126
127		led1 {
128			label = "beagle-x15:usr1";
129			gpios = <&gpio7 8 GPIO_ACTIVE_HIGH>;
130			linux,default-trigger = "cpu0";
131			default-state = "off";
132		};
133
134		led2 {
135			label = "beagle-x15:usr2";
136			gpios = <&gpio7 14 GPIO_ACTIVE_HIGH>;
137			linux,default-trigger = "mmc0";
138			default-state = "off";
139		};
140
141		led3 {
142			label = "beagle-x15:usr3";
143			gpios = <&gpio7 15 GPIO_ACTIVE_HIGH>;
144			linux,default-trigger = "disk-activity";
145			default-state = "off";
146		};
147	};
148
149	gpio_fan: gpio_fan {
150		/* Based on 5v 500mA AFB02505HHB */
151		compatible = "gpio-fan";
152		gpios =  <&tps659038_gpio 2 GPIO_ACTIVE_HIGH>;
153		gpio-fan,speed-map = <0     0>,
154				     <13000 1>;
155		#cooling-cells = <2>;
156	};
157
158	hdmi0: connector {
159		compatible = "hdmi-connector";
160		label = "hdmi";
161
162		type = "a";
163
164		port {
165			hdmi_connector_in: endpoint {
166				remote-endpoint = <&tpd12s015_out>;
167			};
168		};
169	};
170
171	tpd12s015: encoder {
172		compatible = "ti,tpd12s015";
173
174		ports {
175			#address-cells = <1>;
176			#size-cells = <0>;
177
178			port@0 {
179				reg = <0>;
180
181				tpd12s015_in: endpoint {
182					remote-endpoint = <&hdmi_out>;
183				};
184			};
185
186			port@1 {
187				reg = <1>;
188
189				tpd12s015_out: endpoint {
190					remote-endpoint = <&hdmi_connector_in>;
191				};
192			};
193		};
194	};
195
196	sound0: sound0 {
197		compatible = "simple-audio-card";
198		simple-audio-card,name = "BeagleBoard-X15";
199		simple-audio-card,widgets =
200			"Line", "Line Out",
201			"Line", "Line In";
202		simple-audio-card,routing =
203			"Line Out",	"LLOUT",
204			"Line Out",	"RLOUT",
205			"MIC2L",	"Line In",
206			"MIC2R",	"Line In";
207		simple-audio-card,format = "dsp_b";
208		simple-audio-card,bitclock-master = <&sound0_master>;
209		simple-audio-card,frame-master = <&sound0_master>;
210		simple-audio-card,bitclock-inversion;
211
212		simple-audio-card,cpu {
213			sound-dai = <&mcasp3>;
214		};
215
216		sound0_master: simple-audio-card,codec {
217			sound-dai = <&tlv320aic3104>;
218			clocks = <&clkout2_clk>;
219		};
220	};
221};
222
223&i2c1 {
224	status = "okay";
225	clock-frequency = <400000>;
226
227	tps659038: tps659038@58 {
228		compatible = "ti,tps659038";
229		reg = <0x58>;
230		interrupt-parent = <&gpio1>;
231		interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
232
233		#interrupt-cells = <2>;
234		interrupt-controller;
235
236		ti,system-power-controller;
237		ti,palmas-override-powerhold;
238
239		tps659038_pmic {
240			compatible = "ti,tps659038-pmic";
241
242			regulators {
243				smps12_reg: smps12 {
244					/* VDD_MPU */
245					regulator-name = "smps12";
246					regulator-min-microvolt = < 850000>;
247					regulator-max-microvolt = <1250000>;
248					regulator-always-on;
249					regulator-boot-on;
250				};
251
252				smps3_reg: smps3 {
253					/* VDD_DDR */
254					regulator-name = "smps3";
255					regulator-min-microvolt = <1350000>;
256					regulator-max-microvolt = <1350000>;
257					regulator-always-on;
258					regulator-boot-on;
259				};
260
261				smps45_reg: smps45 {
262					/* VDD_DSPEVE, VDD_IVA, VDD_GPU */
263					regulator-name = "smps45";
264					regulator-min-microvolt = < 850000>;
265					regulator-max-microvolt = <1250000>;
266					regulator-always-on;
267					regulator-boot-on;
268				};
269
270				smps6_reg: smps6 {
271					/* VDD_CORE */
272					regulator-name = "smps6";
273					regulator-min-microvolt = <850000>;
274					regulator-max-microvolt = <1150000>;
275					regulator-always-on;
276					regulator-boot-on;
277				};
278
279				/* SMPS7 unused */
280
281				smps8_reg: smps8 {
282					/* VDD_1V8 */
283					regulator-name = "smps8";
284					regulator-min-microvolt = <1800000>;
285					regulator-max-microvolt = <1800000>;
286					regulator-always-on;
287					regulator-boot-on;
288				};
289
290				/* SMPS9 unused */
291
292				ldo1_reg: ldo1 {
293					/* VDD_SD / VDDSHV8  */
294					regulator-name = "ldo1";
295					regulator-min-microvolt = <1800000>;
296					regulator-max-microvolt = <3300000>;
297					regulator-boot-on;
298					regulator-always-on;
299				};
300
301				ldo2_reg: ldo2 {
302					/* VDD_SHV5 */
303					regulator-name = "ldo2";
304					regulator-min-microvolt = <3300000>;
305					regulator-max-microvolt = <3300000>;
306					regulator-always-on;
307					regulator-boot-on;
308				};
309
310				ldo3_reg: ldo3 {
311					/* VDDA_1V8_PHYA */
312					regulator-name = "ldo3";
313					regulator-min-microvolt = <1800000>;
314					regulator-max-microvolt = <1800000>;
315					regulator-always-on;
316					regulator-boot-on;
317				};
318
319				ldo4_reg: ldo4 {
320					/* VDDA_1V8_PHYB */
321					regulator-name = "ldo4";
322					regulator-min-microvolt = <1800000>;
323					regulator-max-microvolt = <1800000>;
324					regulator-always-on;
325					regulator-boot-on;
326				};
327
328				ldo9_reg: ldo9 {
329					/* VDD_RTC */
330					regulator-name = "ldo9";
331					regulator-min-microvolt = <1050000>;
332					regulator-max-microvolt = <1050000>;
333					regulator-always-on;
334					regulator-boot-on;
335				};
336
337				ldoln_reg: ldoln {
338					/* VDDA_1V8_PLL */
339					regulator-name = "ldoln";
340					regulator-min-microvolt = <1800000>;
341					regulator-max-microvolt = <1800000>;
342					regulator-always-on;
343					regulator-boot-on;
344				};
345
346				ldousb_reg: ldousb {
347					/* VDDA_3V_USB: VDDA_USBHS33 */
348					regulator-name = "ldousb";
349					regulator-min-microvolt = <3300000>;
350					regulator-max-microvolt = <3300000>;
351					regulator-boot-on;
352				};
353
354				regen1: regen1 {
355					/* VDD_3V3_ON */
356					regulator-name = "regen1";
357					regulator-boot-on;
358					regulator-always-on;
359				};
360			};
361		};
362
363		tps659038_rtc: tps659038_rtc {
364			compatible = "ti,palmas-rtc";
365			interrupt-parent = <&tps659038>;
366			interrupts = <8 IRQ_TYPE_EDGE_FALLING>;
367			wakeup-source;
368		};
369
370		tps659038_pwr_button: tps659038_pwr_button {
371			compatible = "ti,palmas-pwrbutton";
372			interrupt-parent = <&tps659038>;
373			interrupts = <1 IRQ_TYPE_EDGE_FALLING>;
374			wakeup-source;
375			ti,palmas-long-press-seconds = <12>;
376		};
377
378		tps659038_gpio: tps659038_gpio {
379			compatible = "ti,palmas-gpio";
380			gpio-controller;
381			#gpio-cells = <2>;
382		};
383
384		extcon_usb2: tps659038_usb {
385			compatible = "ti,palmas-usb-vid";
386			ti,enable-vbus-detection;
387			vbus-gpio = <&gpio4 21 GPIO_ACTIVE_HIGH>;
388		};
389
390	};
391
392	tmp102: tmp102@48 {
393		compatible = "ti,tmp102";
394		reg = <0x48>;
395		interrupt-parent = <&gpio7>;
396		interrupts = <16 IRQ_TYPE_LEVEL_LOW>;
397		#thermal-sensor-cells = <1>;
398	};
399
400	tlv320aic3104: tlv320aic3104@18 {
401		#sound-dai-cells = <0>;
402		compatible = "ti,tlv320aic3104";
403		reg = <0x18>;
404		assigned-clocks = <&clkoutmux2_clk_mux>;
405		assigned-clock-parents = <&sys_clk2_dclk_div>;
406
407		status = "okay";
408		adc-settle-ms = <40>;
409
410		AVDD-supply = <&vdd_3v3>;
411		IOVDD-supply = <&vdd_3v3>;
412		DRVDD-supply = <&vdd_3v3>;
413		DVDD-supply = <&aic_dvdd>;
414	};
415
416	eeprom: eeprom@50 {
417		compatible = "atmel,24c32";
418		reg = <0x50>;
419	};
420};
421
422&i2c3 {
423	status = "okay";
424	clock-frequency = <400000>;
425
426	mcp_rtc: rtc@6f {
427		compatible = "microchip,mcp7941x";
428		reg = <0x6f>;
429		interrupts-extended = <&crossbar_mpu GIC_SPI 2 IRQ_TYPE_EDGE_RISING>,
430				      <&dra7_pmx_core 0x424>;
431		interrupt-names = "irq", "wakeup";
432
433		vcc-supply = <&vdd_3v3>;
434		wakeup-source;
435	};
436};
437
438&gpio7_target {
439	ti,no-reset-on-init;
440	ti,no-idle-on-init;
441};
442
443&cpu0 {
444	vdd-supply = <&smps12_reg>;
445	voltage-tolerance = <1>;
446};
447
448&uart3 {
449	status = "okay";
450	interrupts-extended = <&crossbar_mpu GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>,
451			      <&dra7_pmx_core 0x3f8>;
452};
453
454&davinci_mdio_sw {
455	phy0: ethernet-phy@1 {
456		reg = <1>;
457	};
458
459	phy1: ethernet-phy@2 {
460		reg = <2>;
461	};
462};
463
464&mac_sw {
465	status = "okay";
466};
467
468&cpsw_port1 {
469	phy-handle = <&phy0>;
470	phy-mode = "rgmii-rxid";
471	ti,dual-emac-pvid = <1>;
472};
473
474&cpsw_port2 {
475	phy-handle = <&phy1>;
476	phy-mode = "rgmii-rxid";
477	ti,dual-emac-pvid = <2>;
478};
479
480&mmc1 {
481	status = "okay";
482
483	pinctrl-names = "default";
484	pinctrl-0 = <&mmc1_pins_default>;
485
486	bus-width = <4>;
487	cd-gpios = <&gpio6 27 GPIO_ACTIVE_LOW>; /* gpio 219 */
488	no-1-8-v;
489};
490
491&mmc2 {
492	status = "okay";
493
494	pinctrl-names = "default";
495	pinctrl-0 = <&mmc2_pins_default>;
496
497	vmmc-supply = <&vdd_3v3>;
498	vqmmc-supply = <&vdd_3v3>;
499	bus-width = <8>;
500	non-removable;
501	no-1-8-v;
502};
503
504&sata {
505	status = "okay";
506};
507
508&usb2_phy1 {
509	phy-supply = <&ldousb_reg>;
510};
511
512&usb2_phy2 {
513	phy-supply = <&ldousb_reg>;
514};
515
516&usb1 {
517	dr_mode = "host";
518};
519
520&omap_dwc3_2 {
521	extcon = <&extcon_usb2>;
522};
523
524&usb2 {
525	/*
526	 * Stand alone usage is peripheral only.
527	 * However, with some resistor modifications
528	 * this port can be used via expansion connectors
529	 * as "host" or "dual-role". If so, provide
530	 * the necessary dr_mode override in the expansion
531	 * board's DT.
532	 */
533	dr_mode = "peripheral";
534};
535
536&cpu_trips {
537	cpu_alert1: cpu_alert1 {
538		temperature = <50000>; /* millicelsius */
539		hysteresis = <2000>; /* millicelsius */
540		type = "active";
541	};
542};
543
544&cpu_cooling_maps {
545	map1 {
546		trip = <&cpu_alert1>;
547		cooling-device = <&gpio_fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
548	};
549};
550
551&thermal_zones {
552	board_thermal: board_thermal {
553		polling-delay-passive = <1250>; /* milliseconds */
554		polling-delay = <1500>; /* milliseconds */
555
556				/* sensor       ID */
557		thermal-sensors = <&tmp102     0>;
558
559		board_trips: trips {
560			board_alert0: board_alert {
561				temperature = <40000>; /* millicelsius */
562				hysteresis = <2000>; /* millicelsius */
563				type = "active";
564			};
565
566			board_crit: board_crit {
567				temperature = <105000>; /* millicelsius */
568				hysteresis = <0>; /* millicelsius */
569				type = "critical";
570			};
571		};
572
573		board_cooling_maps: cooling-maps {
574			map0 {
575				trip = <&board_alert0>;
576				cooling-device =
577				  <&gpio_fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
578			};
579		};
580       };
581};
582
583&dss {
584	status = "okay";
585
586	vdda_video-supply = <&ldoln_reg>;
587};
588
589&hdmi {
590	status = "okay";
591	vdda-supply = <&ldo4_reg>;
592
593	port {
594		hdmi_out: endpoint {
595			remote-endpoint = <&tpd12s015_in>;
596		};
597	};
598};
599
600&pcie1_rc {
601	status = "okay";
602	gpios = <&gpio2 8 GPIO_ACTIVE_LOW>;
603};
604
605&mcasp3 {
606	#sound-dai-cells = <0>;
607	assigned-clocks = <&l4per2_clkctrl DRA7_L4PER2_MCASP3_CLKCTRL 24>;
608	assigned-clock-parents = <&sys_clkin2>;
609	status = "okay";
610
611	op-mode = <0>;	/* MCASP_IIS_MODE */
612	tdm-slots = <2>;
613	/* 4 serializers */
614	serial-dir = <	/* 0: INACTIVE, 1: TX, 2: RX */
615		1 2 0 0
616	>;
617	tx-num-evt = <32>;
618	rx-num-evt = <32>;
619};
620
621&ipu2 {
622	status = "okay";
623	memory-region = <&ipu2_memory_region>;
624};
625
626&ipu1 {
627	status = "okay";
628	memory-region = <&ipu1_memory_region>;
629};
630
631&dsp1 {
632	status = "okay";
633	memory-region = <&dsp1_memory_region>;
634};
635
636&dsp2 {
637	status = "okay";
638	memory-region = <&dsp2_memory_region>;
639};
640