Skip to content

Commit d693838

Browse files
ggiordano32r-vignesh
authored andcommitted
arm64: dts: ti: Add basic support for phyBOARD-Lyra-AM62Ax
The phyCORE-AM62Ax [1] is a SoM (System on Module) featuring TI's AM62Ax SoC. It can be used in combination with different carrier boards. This module can come with different sizes and models for DDR, eMMC, SPI NOR Flash and various SoCs from the AM62Ax family. A development Kit, called phyBOARD-Lyra [2] is used as a carrier board reference design with a mapper board being used to allow the phyCORE-AM62Ax to fit the phyBOARD-Lyra. Supported features: * Debug UART * SPI NOR Flash * eMMC * 2x Ethernet * Micro SD card * I2C EEPROM * I2C RTC * GPIO Expander * LEDs * USB * HDMI * USB-C * Audio For more details, see: [1] Product page SoM: https://www.phytec.com/product/phycore-am62a [2] Product page CB: https://www.phytec.com/product/phyboard-am62a Signed-off-by: Garrett Giordano <ggiordano@phytec.com> Reviewed-by: Wadim Egorov <w.egorov@phytec.de> Link: https://lore.kernel.org/r/20240626155244.3311436-4-ggiordano@phytec.com Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
1 parent 567c373 commit d693838

3 files changed

Lines changed: 350 additions & 0 deletions

File tree

arch/arm64/boot/dts/ti/Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ dtb-$(CONFIG_ARCH_K3) += k3-am62-lp-sk-nand.dtbo
2929

3030
# Boards with AM62Ax SoC
3131
dtb-$(CONFIG_ARCH_K3) += k3-am62a7-sk.dtb
32+
dtb-$(CONFIG_ARCH_K3) += k3-am62a7-phyboard-lyra-rdk.dtb
3233

3334
# Boards with AM62Px SoC
3435
dtb-$(CONFIG_ARCH_K3) += k3-am62p5-sk.dtb
@@ -224,6 +225,7 @@ dtb- += k3-am625-beagleplay-csi2-ov5640.dtb \
224225
# Enable support for device-tree overlays
225226
DTC_FLAGS_k3-am625-beagleplay += -@
226227
DTC_FLAGS_k3-am625-phyboard-lyra-rdk += -@
228+
DTC_FLAGS_k3-am62a7-phyboard-lyra-rdk += -@
227229
DTC_FLAGS_k3-am625-sk += -@
228230
DTC_FLAGS_k3-am62-lp-sk += -@
229231
DTC_FLAGS_k3-am62a7-sk += -@
Lines changed: 330 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,330 @@
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+
};
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
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/phyboard-am62a
8+
*/
9+
10+
#include "k3-am62a7.dtsi"
11+
#include "k3-am62a-phycore-som.dtsi"
12+
#include "k3-am62x-phyboard-lyra.dtsi"
13+
14+
/ {
15+
compatible = "phytec,am62a7-phyboard-lyra-rdk",
16+
"phytec,am62a-phycore-som", "ti,am62a7";
17+
model = "PHYTEC phyBOARD-Lyra AM62A7";
18+
};

0 commit comments

Comments
 (0)