xref: /linux/arch/arm64/boot/dts/ti/k3-am62a-phycore-som.dtsi (revision a1ff5a7d78a036d6c2178ee5acd6ba4946243800)
1// SPDX-License-Identifier: GPL-2.0-only OR MIT
2/*
3 * Copyright (C) 2023 - 2024 PHYTEC America LLC
4 * Author: Garrett Giordano <ggiordano@phytec.com>
5 *
6 * Product homepage:
7 * https://www.phytec.com/product/phycore-am62a
8 */
9
10#include <dt-bindings/gpio/gpio.h>
11#include <dt-bindings/leds/common.h>
12#include <dt-bindings/net/ti-dp83867.h>
13
14/ {
15	model = "PHYTEC phyCORE-AM62Ax";
16	compatible = "phytec,am62a-phycore-som", "ti,am62a7";
17
18	aliases {
19		ethernet0 = &cpsw_port1;
20		gpio0 = &main_gpio0;
21		gpio1 = &main_gpio1;
22		i2c0 = &main_i2c0;
23		mmc0 = &sdhci0;
24		rtc0 = &i2c_som_rtc;
25		spi0 = &ospi0;
26	};
27
28	leds {
29		compatible = "gpio-leds";
30		pinctrl-names = "default";
31		pinctrl-0 = <&leds_pins_default>;
32
33		led-0 {
34			color = <LED_COLOR_ID_GREEN>;
35			gpios = <&main_gpio0 13 GPIO_ACTIVE_HIGH>;
36			linux,default-trigger = "heartbeat";
37			function = LED_FUNCTION_HEARTBEAT;
38		};
39	};
40
41	memory@80000000 {
42		device_type = "memory";
43		/* 2G RAM */
44		reg = <0x00000000 0x80000000 0x00000000 0x80000000>;
45	};
46
47	reserved-memory {
48		#address-cells = <2>;
49		#size-cells = <2>;
50		ranges;
51
52		/* global cma region */
53		linux,cma {
54			compatible = "shared-dma-pool";
55			reusable;
56			size = <0x00 0x24000000>;
57			alloc-ranges = <0x00 0xc0000000 0x00 0x24000000>;
58			linux,cma-default;
59		};
60
61		secure_tfa_ddr: tfa@9e780000 {
62			reg = <0x00 0x9e780000 0x00 0x80000>;
63			alignment = <0x1000>;
64			no-map;
65		};
66
67		secure_ddr: optee@9e800000 {
68			reg = <0x00 0x9e800000 0x00 0x01800000>; /* for OP-TEE */
69			alignment = <0x1000>;
70			no-map;
71		};
72
73		wkup_r5fss0_core0_memory_region: r5f-dma-memory@9c900000 {
74			compatible = "shared-dma-pool";
75			reg = <0x00 0x9c900000 0x00 0x01e00000>;
76			no-map;
77		};
78	};
79
80	vcc_5v0_som: regulator-vcc-5v0-som {
81		compatible = "regulator-fixed";
82		regulator-name = "VCC_5V0_SOM";
83		regulator-min-microvolt = <5000000>;
84		regulator-max-microvolt = <5000000>;
85		regulator-always-on;
86		regulator-boot-on;
87	};
88};
89
90&main_pmx0 {
91	leds_pins_default: leds-default-pins {
92		pinctrl-single,pins = <
93			AM62AX_IOPAD(0x034, PIN_OUTPUT, 7) /* (K20) OSPI0_CSN2.GPIO0_13 */
94		>;
95	};
96
97	main_i2c0_pins_default: main-i2c0-default-pins {
98		pinctrl-single,pins = <
99			AM62AX_IOPAD(0x1e0, PIN_INPUT_PULLUP, 0) /* (D17) I2C0_SCL */
100			AM62AX_IOPAD(0x1e4, PIN_INPUT_PULLUP, 0) /* (E16) I2C0_SDA */
101		>;
102	};
103
104	main_mdio1_pins_default: main-mdio1-default-pins {
105		pinctrl-single,pins = <
106			AM62AX_IOPAD(0x160, PIN_OUTPUT, 0) /* (V12) MDIO0_MDC */
107			AM62AX_IOPAD(0x15c, PIN_INPUT, 0) /* (V13) MDIO0_MDIO */
108		>;
109	};
110
111	main_mmc0_pins_default: main-mmc0-default-pins {
112		pinctrl-single,pins = <
113			AM62AX_IOPAD(0x220, PIN_INPUT_PULLUP, 0) /* (Y6) MMC0_CMD */
114			AM62AX_IOPAD(0x218, PIN_INPUT_PULLDOWN, 0) /* (AB7) MMC0_CLK */
115			AM62AX_IOPAD(0x214, PIN_INPUT_PULLUP, 0) /* (AA6) MMC0_DAT0 */
116			AM62AX_IOPAD(0x210, PIN_INPUT_PULLUP, 0) /* (AB6) MMC0_DAT1 */
117			AM62AX_IOPAD(0x20c, PIN_INPUT_PULLUP, 0) /* (Y7) MMC0_DAT2 */
118			AM62AX_IOPAD(0x208, PIN_INPUT_PULLUP, 0) /* (AA7) MMC0_DAT3 */
119			AM62AX_IOPAD(0x204, PIN_INPUT_PULLUP, 0) /* (Y8) MMC0_DAT4 */
120			AM62AX_IOPAD(0x200, PIN_INPUT_PULLUP, 0) /* (W7) MMC0_DAT5 */
121			AM62AX_IOPAD(0x1fc, PIN_INPUT_PULLUP, 0) /* (W9) MMC0_DAT6 */
122			AM62AX_IOPAD(0x1f8, PIN_INPUT_PULLUP, 0) /* (AB8) MMC0_DAT7 */
123		>;
124	};
125
126	main_rgmii1_pins_default: main-rgmii1-default-pins {
127		pinctrl-single,pins = <
128			AM62AX_IOPAD(0x14c, PIN_INPUT, 0) /* (AB16) RGMII1_RD0 */
129			AM62AX_IOPAD(0x150, PIN_INPUT, 0) /* (V15) RGMII1_RD1 */
130			AM62AX_IOPAD(0x154, PIN_INPUT, 0) /* (W15) RGMII1_RD2 */
131			AM62AX_IOPAD(0x158, PIN_INPUT, 0) /* (V14) RGMII1_RD3 */
132			AM62AX_IOPAD(0x148, PIN_INPUT, 0) /* (AA16) RGMII1_RXC */
133			AM62AX_IOPAD(0x144, PIN_INPUT, 0) /* (AA15) RGMII1_RX_CTL */
134			AM62AX_IOPAD(0x134, PIN_OUTPUT, 0) /* (Y17) RGMII1_TD0 */
135			AM62AX_IOPAD(0x138, PIN_OUTPUT, 0) /* (V16) RGMII1_TD1 */
136			AM62AX_IOPAD(0x13c, PIN_OUTPUT, 0) /* (Y16) RGMII1_TD2 */
137			AM62AX_IOPAD(0x140, PIN_OUTPUT, 0) /* (AA17) RGMII1_TD3 */
138			AM62AX_IOPAD(0x130, PIN_OUTPUT, 0) /* (AB17) RGMII1_TXC */
139			AM62AX_IOPAD(0x12c, PIN_OUTPUT, 0) /* (W16) RGMII1_TX_CTL */
140		>;
141	};
142
143	ospi0_pins_default: ospi0-default-pins {
144		pinctrl-single,pins = <
145			AM62AX_IOPAD(0x000, PIN_OUTPUT, 0) /* (L22) OSPI0_CLK */
146			AM62AX_IOPAD(0x02c, PIN_OUTPUT, 0) /* (H21) OSPI0_CSn0 */
147			AM62AX_IOPAD(0x038, PIN_OUTPUT, 0) /* (G20) OSPI0_CSn3 */
148			AM62AX_IOPAD(0x00c, PIN_INPUT, 0) /* (J21) OSPI0_D0 */
149			AM62AX_IOPAD(0x010, PIN_INPUT, 0) /* (J18) OSPI0_D1 */
150			AM62AX_IOPAD(0x014, PIN_INPUT, 0) /* (J19) OSPI0_D2 */
151			AM62AX_IOPAD(0x018, PIN_INPUT, 0) /* (H18) OSPI0_D3 */
152			AM62AX_IOPAD(0x01c, PIN_INPUT, 0) /* (K21) OSPI0_D4 */
153			AM62AX_IOPAD(0x020, PIN_INPUT, 0) /* (H19) OSPI0_D5 */
154			AM62AX_IOPAD(0x024, PIN_INPUT, 0) /* (J20) OSPI0_D6 */
155			AM62AX_IOPAD(0x028, PIN_INPUT, 0) /* (J22) OSPI0_D7 */
156			AM62AX_IOPAD(0x008, PIN_INPUT, 0) /* (L21) OSPI0_DQS */
157		>;
158	};
159
160	pmic_irq_pins_default: pmic-irq-default-pins {
161		pinctrl-single,pins = <
162			AM62AX_IOPAD(0x1f4, PIN_INPUT, 0) /* (D16) EXTINTn */
163		>;
164	};
165};
166
167&cpsw3g {
168	status = "okay";
169	pinctrl-names = "default";
170	pinctrl-0 = <&main_rgmii1_pins_default>;
171};
172
173&cpsw_port1 {
174	phy-mode = "rgmii-rxid";
175	phy-handle = <&cpsw3g_phy1>;
176};
177
178&cpsw3g_mdio {
179	pinctrl-names = "default";
180	pinctrl-0 = <&main_mdio1_pins_default>;
181
182	cpsw3g_phy1: ethernet-phy@1 {
183		compatible = "ethernet-phy-id2000.a231", "ethernet-phy-ieee802.3-c22";
184		reg = <1>;
185		ti,clk-output-sel = <DP83867_CLK_O_SEL_OFF>;
186		ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
187		ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
188	};
189};
190
191&fss {
192	status = "okay";
193};
194
195&main_i2c0 {
196	pinctrl-names = "default";
197	pinctrl-0 = <&main_i2c0_pins_default>;
198	clock-frequency = <400000>;
199	status = "okay";
200
201	pmic@30 {
202		compatible = "ti,tps65219";
203		reg = <0x30>;
204		buck1-supply = <&vcc_5v0_som>;
205		buck2-supply = <&vcc_5v0_som>;
206		buck3-supply = <&vcc_5v0_som>;
207		ldo1-supply = <&vdd_3v3>;
208		ldo2-supply = <&vdd_1v8>;
209		ldo3-supply = <&vcc_5v0_som>;
210		ldo4-supply = <&vcc_5v0_som>;
211
212		pinctrl-names = "default";
213		pinctrl-0 = <&pmic_irq_pins_default>;
214		interrupt-parent = <&gic500>;
215		interrupts = <GIC_SPI 224 IRQ_TYPE_LEVEL_HIGH>;
216		interrupt-controller;
217		#interrupt-cells = <1>;
218		ti,power-button;
219		system-power-controller;
220
221		regulators {
222			vdd_3v3: buck1 {
223				regulator-name = "VDD_3V3";
224				regulator-min-microvolt = <3300000>;
225				regulator-max-microvolt = <3300000>;
226				regulator-boot-on;
227				regulator-always-on;
228			};
229
230			vdd_1v8: buck2 {
231				regulator-name = "VDD_1V8";
232				regulator-min-microvolt = <1800000>;
233				regulator-max-microvolt = <1800000>;
234				regulator-boot-on;
235				regulator-always-on;
236			};
237
238			vdd_lpddr4: buck3 {
239				regulator-name = "VDD_LPDDR4";
240				regulator-min-microvolt = <1100000>;
241				regulator-max-microvolt = <1100000>;
242				regulator-boot-on;
243				regulator-always-on;
244			};
245
246			vddshv5_sdio: ldo1 {
247				regulator-name = "VDDSHV5_SDIO";
248				regulator-min-microvolt = <3300000>;
249				regulator-max-microvolt = <3300000>;
250				regulator-allow-bypass;
251				regulator-boot-on;
252				regulator-always-on;
253			};
254
255			vddr_core: ldo2 {
256				regulator-name = "VDDR_CORE";
257				regulator-min-microvolt = <850000>;
258				regulator-max-microvolt = <850000>;
259				regulator-boot-on;
260				regulator-always-on;
261			};
262
263			vdda_1v8: ldo3 {
264				regulator-name = "VDDA_1V8";
265				regulator-min-microvolt = <1800000>;
266				regulator-max-microvolt = <1800000>;
267				regulator-boot-on;
268				regulator-always-on;
269			};
270
271			vdd_2v5: ldo4 {
272				regulator-name = "VDD_2V5";
273				regulator-min-microvolt = <2500000>;
274				regulator-max-microvolt = <2500000>;
275				regulator-boot-on;
276				regulator-always-on;
277			};
278		};
279	};
280
281	eeprom@50 {
282		compatible = "atmel,24c32";
283		pagesize = <32>;
284		reg = <0x50>;
285	};
286
287	i2c_som_rtc: rtc@52 {
288		compatible = "microcrystal,rv3028";
289		reg = <0x52>;
290	};
291};
292
293&main_gpio0 {
294	status = "okay";
295};
296
297&main_gpio1 {
298	status = "okay";
299};
300
301&main_gpio_intr {
302	status = "okay";
303};
304
305&ospi0 {
306	pinctrl-names = "default";
307	pinctrl-0 = <&ospi0_pins_default>;
308	status = "okay";
309
310	serial_flash: flash@0 {
311		compatible = "jedec,spi-nor";
312		reg = <0x0>;
313		spi-tx-bus-width = <8>;
314		spi-rx-bus-width = <8>;
315		spi-max-frequency = <25000000>;
316		cdns,tshsl-ns = <60>;
317		cdns,tsd2d-ns = <60>;
318		cdns,tchsh-ns = <60>;
319		cdns,tslch-ns = <60>;
320		cdns,read-delay = <0>;
321	};
322};
323
324&sdhci0 {
325	pinctrl-names = "default";
326	pinctrl-0 = <&main_mmc0_pins_default>;
327	disable-wp;
328	non-removable;
329	status = "okay";
330};
331