Skip to content

Commit 29075cc

Browse files
bryanbrattlofnmenon
authored andcommitted
arm64: dts: ti: Introduce AM62P5 family of SoCs
The AM62Px is an extension of the existing Sitara AM62x low-cost family of application processors built for Automotive and Linux Application development. Scalable Arm Cortex-A53 performance and embedded features, such as: multi high-definition display support, 3D-graphics acceleration, 4K video acceleration, and extensive peripherals make the AM62Px well-suited for a broad range of automation and industrial application, including automotive digital instrumentation, automotive displays, industrial HMI, and more. Some highlights of AM62P SoC are: * Quad-Cortex-A53s (running up to 1.4GHz) in a single cluster. Dual/Single core variants are provided in the same package to allow HW compatible designs. * One Device manager Cortext-R5F for system power and resource management, and one Cortex-R5F for Functional Safety or general-purpose usage. * One 3D GPU up to 50 GLFOPS * H.264/H.265 Video Encode/Decode. * Display support: 3x display support over OLDI/LVDS (1x OLDI-DL, 1x or 2x OLDI-SL), DSI, or DPI. Up to 3840x1080@60fps resolution * Integrated Giga-bit Ethernet switch supporting up to a total of two external ports (TSN capable). * 9xUARTs, 5xSPI, 6xI2C, 2xUSB2, 3xCAN-FD, 3xMMC and SD, GPMC for NAND/FPGA connection, OSPI memory controller, 3xMcASP for audio, 1xCSI-RX-4L for Camera, eCAP/eQEP, ePWM, among other peripherals. * Dedicated Centralized Hardware Security Module with support for secure boot, debug security and crypto acceleration and trusted execution environment. * One 32-bit DDR Subsystem that supports LPDDR4, DDR4 memory types. * Multiple low power modes support, ex: Deep sleep, Standby, MCU-only, enabling battery powered system design. For those interested, more details about this SoC can be found in the Technical Reference Manual here: https://www.ti.com/lit/pdf/spruj83 Signed-off-by: Bryan Brattlof <[email protected]> Acked-by: Andrew Davis <[email protected]> Reviewed-by: Dhruva Gole <[email protected]> Signed-off-by: Vignesh Raghavendra <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Nishanth Menon <[email protected]>
1 parent b57fc5c commit 29075cc

File tree

6 files changed

+415
-0
lines changed

6 files changed

+415
-0
lines changed
Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
// SPDX-License-Identifier: GPL-2.0
2+
/*
3+
* Device Tree file for the AM62P main domain peripherals
4+
* Copyright (C) 2023 Texas Instruments Incorporated - https://www.ti.com/
5+
*/
6+
7+
&cbass_main {
8+
oc_sram: sram@70000000 {
9+
compatible = "mmio-sram";
10+
reg = <0x00 0x70000000 0x00 0x10000>;
11+
#address-cells = <1>;
12+
#size-cells = <1>;
13+
ranges = <0x00 0x00 0x70000000 0x10000>;
14+
};
15+
16+
gic500: interrupt-controller@1800000 {
17+
compatible = "arm,gic-v3";
18+
#address-cells = <2>;
19+
#size-cells = <2>;
20+
ranges;
21+
#interrupt-cells = <3>;
22+
interrupt-controller;
23+
reg = <0x00 0x01800000 0x00 0x10000>, /* GICD */
24+
<0x00 0x01880000 0x00 0xc0000>, /* GICR */
25+
<0x01 0x00000000 0x00 0x2000>, /* GICC */
26+
<0x01 0x00010000 0x00 0x1000>, /* GICH */
27+
<0x01 0x00020000 0x00 0x2000>; /* GICV */
28+
/*
29+
* vcpumntirq:
30+
* virtual CPU interface maintenance interrupt
31+
*/
32+
interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
33+
34+
gic_its: msi-controller@1820000 {
35+
compatible = "arm,gic-v3-its";
36+
reg = <0x00 0x01820000 0x00 0x10000>;
37+
socionext,synquacer-pre-its = <0x1000000 0x400000>;
38+
msi-controller;
39+
#msi-cells = <1>;
40+
};
41+
};
42+
43+
dmss: bus@48000000 {
44+
bootph-all;
45+
compatible = "simple-mfd";
46+
#address-cells = <2>;
47+
#size-cells = <2>;
48+
dma-ranges;
49+
ranges = <0x00 0x48000000 0x00 0x48000000 0x00 0x06400000>;
50+
51+
ti,sci-dev-id = <25>;
52+
53+
secure_proxy_main: mailbox@4d000000 {
54+
bootph-all;
55+
compatible = "ti,am654-secure-proxy";
56+
#mbox-cells = <1>;
57+
reg-names = "target_data", "rt", "scfg";
58+
reg = <0x00 0x4d000000 0x00 0x80000>,
59+
<0x00 0x4a600000 0x00 0x80000>,
60+
<0x00 0x4a400000 0x00 0x80000>;
61+
interrupt-names = "rx_012";
62+
interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
63+
};
64+
};
65+
66+
dmsc: system-controller@44043000 {
67+
bootph-all;
68+
compatible = "ti,k2g-sci";
69+
ti,host-id = <12>;
70+
mbox-names = "rx", "tx";
71+
mboxes = <&secure_proxy_main 12>,
72+
<&secure_proxy_main 13>;
73+
reg-names = "debug_messages";
74+
reg = <0x00 0x44043000 0x00 0xfe0>;
75+
76+
k3_pds: power-controller {
77+
bootph-all;
78+
compatible = "ti,sci-pm-domain";
79+
#power-domain-cells = <2>;
80+
};
81+
82+
k3_clks: clock-controller {
83+
bootph-all;
84+
compatible = "ti,k2g-sci-clk";
85+
#clock-cells = <2>;
86+
};
87+
88+
k3_reset: reset-controller {
89+
bootph-all;
90+
compatible = "ti,sci-reset";
91+
#reset-cells = <2>;
92+
};
93+
};
94+
95+
main_pmx0: pinctrl@f4000 {
96+
bootph-all;
97+
compatible = "pinctrl-single";
98+
reg = <0x00 0xf4000 0x00 0x2ac>;
99+
#pinctrl-cells = <1>;
100+
pinctrl-single,register-width = <32>;
101+
pinctrl-single,function-mask = <0xffffffff>;
102+
};
103+
104+
main_timer0: timer@2400000 {
105+
bootph-all;
106+
compatible = "ti,am654-timer";
107+
reg = <0x00 0x2400000 0x00 0x400>;
108+
interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
109+
clocks = <&k3_clks 36 2>;
110+
clock-names = "fck";
111+
assigned-clocks = <&k3_clks 36 2>;
112+
assigned-clock-parents = <&k3_clks 36 3>;
113+
power-domains = <&k3_pds 36 TI_SCI_PD_EXCLUSIVE>;
114+
ti,timer-pwm;
115+
};
116+
117+
main_uart0: serial@2800000 {
118+
compatible = "ti,am64-uart", "ti,am654-uart";
119+
reg = <0x00 0x02800000 0x00 0x100>;
120+
interrupts = <GIC_SPI 178 IRQ_TYPE_LEVEL_HIGH>;
121+
power-domains = <&k3_pds 146 TI_SCI_PD_EXCLUSIVE>;
122+
clocks = <&k3_clks 146 0>;
123+
clock-names = "fclk";
124+
status = "disabled";
125+
};
126+
127+
main_uart1: serial@2810000 {
128+
compatible = "ti,am64-uart", "ti,am654-uart";
129+
reg = <0x00 0x02810000 0x00 0x100>;
130+
interrupts = <GIC_SPI 179 IRQ_TYPE_LEVEL_HIGH>;
131+
power-domains = <&k3_pds 152 TI_SCI_PD_EXCLUSIVE>;
132+
clocks = <&k3_clks 152 0>;
133+
clock-names = "fclk";
134+
status = "disabled";
135+
};
136+
};
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
// SPDX-License-Identifier: GPL-2.0
2+
/*
3+
* Device Tree file for the AM62P MCU domain peripherals
4+
* Copyright (C) 2023 Texas Instruments Incorporated - https://www.ti.com/
5+
*/
6+
7+
&cbass_mcu {
8+
mcu_pmx0: pinctrl@4084000 {
9+
compatible = "pinctrl-single";
10+
reg = <0x00 0x04084000 0x00 0x88>;
11+
#pinctrl-cells = <1>;
12+
pinctrl-single,register-width = <32>;
13+
pinctrl-single,function-mask = <0xffffffff>;
14+
};
15+
};
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
// SPDX-License-Identifier: GPL-2.0
2+
/*
3+
* Device Tree file for the AM62P wakeup domain peripherals
4+
* Copyright (C) 2023 Texas Instruments Incorporated - https://www.ti.com/
5+
*/
6+
7+
&cbass_wakeup {
8+
wkup_conf: bus@43000000 {
9+
bootph-all;
10+
compatible = "simple-bus";
11+
reg = <0x00 0x43000000 0x00 0x20000>;
12+
#address-cells = <1>;
13+
#size-cells = <1>;
14+
ranges = <0x00 0x00 0x43000000 0x20000>;
15+
16+
chipid: chipid@14 {
17+
bootph-all;
18+
compatible = "ti,am654-chipid";
19+
reg = <0x14 0x4>;
20+
};
21+
};
22+
23+
wkup_uart0: serial@2b300000 {
24+
compatible = "ti,am64-uart", "ti,am654-uart";
25+
reg = <0x00 0x2b300000 0x00 0x100>;
26+
interrupts = <GIC_SPI 186 IRQ_TYPE_LEVEL_HIGH>;
27+
power-domains = <&k3_pds 114 TI_SCI_PD_EXCLUSIVE>;
28+
clocks = <&k3_clks 114 0>;
29+
clock-names = "fclk";
30+
status = "disabled";
31+
};
32+
};

arch/arm64/boot/dts/ti/k3-am62p.dtsi

Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
// SPDX-License-Identifier: GPL-2.0
2+
/*
3+
* Device Tree Source for AM62P SoC Family
4+
*
5+
* Copyright (C) 2023 Texas Instruments Incorporated - https://www.ti.com/
6+
*/
7+
8+
#include <dt-bindings/gpio/gpio.h>
9+
#include <dt-bindings/interrupt-controller/irq.h>
10+
#include <dt-bindings/interrupt-controller/arm-gic.h>
11+
#include <dt-bindings/soc/ti,sci_pm_domain.h>
12+
13+
#include "k3-pinctrl.h"
14+
15+
/ {
16+
model = "Texas Instruments K3 AM62P5 SoC";
17+
compatible = "ti,am62p5";
18+
interrupt-parent = <&gic500>;
19+
#address-cells = <2>;
20+
#size-cells = <2>;
21+
22+
firmware {
23+
optee {
24+
compatible = "linaro,optee-tz";
25+
method = "smc";
26+
};
27+
28+
psci: psci {
29+
compatible = "arm,psci-1.0";
30+
method = "smc";
31+
};
32+
};
33+
34+
a53_timer0: timer-cl0-cpu0 {
35+
compatible = "arm,armv8-timer";
36+
interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>, /* cntpsirq */
37+
<GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>, /* cntpnsirq */
38+
<GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>, /* cntvirq */
39+
<GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>; /* cnthpirq */
40+
};
41+
42+
pmu: pmu {
43+
compatible = "arm,cortex-a53-pmu";
44+
interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH>;
45+
};
46+
47+
cbass_main: bus@f0000 {
48+
bootph-all;
49+
compatible = "simple-bus";
50+
#address-cells = <2>;
51+
#size-cells = <2>;
52+
53+
ranges = <0x00 0x000f0000 0x00 0x000f0000 0x00 0x00030000>, /* Main MMRs */
54+
<0x00 0x00420000 0x00 0x00420000 0x00 0x00001000>, /* ESM0 */
55+
<0x00 0x00600000 0x00 0x00600000 0x00 0x00001100>, /* GPIO */
56+
<0x00 0x00703000 0x00 0x00703000 0x00 0x00000200>, /* USB0 debug trace */
57+
<0x00 0x0070c000 0x00 0x0070c000 0x00 0x00000200>, /* USB1 debug trace */
58+
<0x00 0x00a40000 0x00 0x00a40000 0x00 0x00000800>, /* Timesync router */
59+
<0x00 0x01000000 0x00 0x01000000 0x00 0x01b28400>, /* First peripheral window */
60+
<0x00 0x08000000 0x00 0x08000000 0x00 0x00200000>, /* Main CPSW */
61+
<0x00 0x0e000000 0x00 0x0e000000 0x00 0x01d20000>, /* Second peripheral window */
62+
<0x00 0x0fd00000 0x00 0x0fd00000 0x00 0x00020000>, /* GPU */
63+
<0x00 0x20000000 0x00 0x20000000 0x00 0x0a008000>, /* Third peripheral window */
64+
<0x00 0x30040000 0x00 0x30040000 0x00 0x00080000>, /* PRUSS-M */
65+
<0x00 0x30101000 0x00 0x30101000 0x00 0x00010100>, /* CSI window */
66+
<0x00 0x30200000 0x00 0x30200000 0x00 0x00010000>, /* DSS */
67+
<0x00 0x30210000 0x00 0x30210000 0x00 0x00010000>, /* VPU */
68+
<0x00 0x31000000 0x00 0x31000000 0x00 0x00050000>, /* USB0 DWC3 Core window */
69+
<0x00 0x31100000 0x00 0x31100000 0x00 0x00050000>, /* USB1 DWC3 Core window */
70+
<0x00 0x40900000 0x00 0x40900000 0x00 0x00030000>, /* SA3UL */
71+
<0x00 0x43600000 0x00 0x43600000 0x00 0x00010000>, /* SA3 sproxy data */
72+
<0x00 0x44043000 0x00 0x44043000 0x00 0x00000fe0>, /* TI SCI DEBUG */
73+
<0x00 0x44860000 0x00 0x44860000 0x00 0x00040000>, /* SA3 sproxy config */
74+
<0x00 0x48000000 0x00 0x48000000 0x00 0x06400000>, /* DMSS */
75+
<0x00 0x60000000 0x00 0x60000000 0x00 0x08000000>, /* FSS0 DAT1 */
76+
<0x00 0x70000000 0x00 0x70000000 0x00 0x00010000>, /* OCSRAM */
77+
<0x01 0x00000000 0x01 0x00000000 0x00 0x00310000>, /* A53 PERIPHBASE */
78+
<0x05 0x00000000 0x05 0x00000000 0x01 0x00000000>, /* FSS0 DAT3 */
79+
80+
/* MCU Domain Range */
81+
<0x00 0x04000000 0x00 0x04000000 0x00 0x01ff1400>,
82+
<0x00 0x79000000 0x00 0x79000000 0x00 0x00008000>,
83+
<0x00 0x79020000 0x00 0x79020000 0x00 0x00008000>,
84+
<0x00 0x79100000 0x00 0x79100000 0x00 0x00040000>,
85+
<0x00 0x79140000 0x00 0x79140000 0x00 0x00040000>,
86+
87+
/* Wakeup Domain Range */
88+
<0x00 0x00b00000 0x00 0x00b00000 0x00 0x00002400>,
89+
<0x00 0x2b000000 0x00 0x2b000000 0x00 0x00300400>,
90+
<0x00 0x43000000 0x00 0x43000000 0x00 0x00020000>,
91+
<0x00 0x78000000 0x00 0x78000000 0x00 0x00008000>,
92+
<0x00 0x78100000 0x00 0x78100000 0x00 0x00008000>;
93+
94+
cbass_mcu: bus@4000000 {
95+
compatible = "simple-bus";
96+
#address-cells = <2>;
97+
#size-cells = <2>;
98+
ranges = <0x00 0x04000000 0x00 0x04000000 0x00 0x01ff1400>, /* Peripheral window */
99+
<0x00 0x79000000 0x00 0x79000000 0x00 0x00008000>, /* MCU R5 ATCM */
100+
<0x00 0x79020000 0x00 0x79020000 0x00 0x00008000>, /* MCU R5 BTCM */
101+
<0x00 0x79100000 0x00 0x79100000 0x00 0x00040000>, /* MCU IRAM0 */
102+
<0x00 0x79140000 0x00 0x79140000 0x00 0x00040000>; /* MCU IRAM1 */
103+
};
104+
105+
cbass_wakeup: bus@b00000 {
106+
bootph-all;
107+
compatible = "simple-bus";
108+
#address-cells = <2>;
109+
#size-cells = <2>;
110+
ranges = <0x00 0x00b00000 0x00 0x00b00000 0x00 0x00002400>, /* VTM */
111+
<0x00 0x2b000000 0x00 0x2b000000 0x00 0x00300400>, /* Peripheral Window */
112+
<0x00 0x43000000 0x00 0x43000000 0x00 0x00020000>, /* WKUP CTRL MMR */
113+
<0x00 0x78000000 0x00 0x78000000 0x00 0x00008000>, /* DM R5 ATCM*/
114+
<0x00 0x78100000 0x00 0x78100000 0x00 0x00008000>; /* DM R5 BTCM*/
115+
};
116+
};
117+
};
118+
119+
/* Now include peripherals for each bus segment */
120+
#include "k3-am62p-main.dtsi"
121+
#include "k3-am62p-mcu.dtsi"
122+
#include "k3-am62p-wakeup.dtsi"

0 commit comments

Comments
 (0)