diff mbox series

[v4,09/19] arm: mach-k3: j7200: Add support for SOC detection

Message ID 20200808105303.1513-10-lokeshvutla@ti.com
State Accepted
Commit 30de1ba0d375e418e94628037f3a1e30ec58f9aa
Delegated to: Lokesh Vutla
Headers show
Series arm: mach-k3: Initial support for Texas Instrument's J7200 Platform | expand

Commit Message

Lokesh Vutla Aug. 8, 2020, 10:52 a.m. UTC
The J7200 SoC is a part of the K3 Multicore SoC architecture platform.
It is targeted for automotive gateway, vehicle compute systems,
Vehicle-to-Vehicle (V2V) and Vehicle-to-Everything (V2X) applications.
The SoC aims to meet the complex processing needs of modern embedded

Some highlights of this SoC are:
* Dual Cortex-A72s in a single cluster, two clusters of lockstep
  capable dual Cortex-R5F MCUs and a Centralized Device Management and
  Security Controller (DMSC).
* Configurable L3 Cache and IO-coherent architecture with high data
  throughput capable distributed DMA architecture under NAVSS.
* Integrated Ethernet switch supporting up to a total of 4 external ports
  in addition to legacy Ethernet switch of up to 2 ports.
* Upto 1 PCIe-GEN3 controller, 1 USB3.0 Dual-role device subsystems,
  20 MCANs, 3 McASP, eMMC and SD, OSPI/HyperBus memory controller, I3C and
  I2C, eCAP/eQEP, eHRPWM among other peripherals.
* One hardware accelerator block containing AES/DES/SHA/MD5 called SA2UL

See J7200 Technical Reference Manual (SPRUIU1, June 2020)
for further details: https://www.ti.com/lit/pdf/spruiu1

Add support for detection J7200 SoC

Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Signed-off-by: Suman Anna <s-anna@ti.com>
 arch/arm/mach-k3/common.c                 | 10 ++++++++++
 arch/arm/mach-k3/common.h                 |  1 +
 arch/arm/mach-k3/include/mach/sys_proto.h |  1 +
 3 files changed, 12 insertions(+)
diff mbox series


diff --git a/arch/arm/mach-k3/common.c b/arch/arm/mach-k3/common.c
index 4e366f8fff..f4d7c3d71e 100644
--- a/arch/arm/mach-k3/common.c
+++ b/arch/arm/mach-k3/common.c
@@ -355,6 +355,16 @@  bool soc_is_j721e(void)
 	return soc == J721E;
+bool soc_is_j7200(void)
+	u32 soc;
+	soc = (readl(CTRLMMR_WKUP_JTAG_ID) &
+	return soc == J7200;
 #ifdef CONFIG_ARM64
 void board_prep_linux(bootm_headers_t *images)
diff --git a/arch/arm/mach-k3/common.h b/arch/arm/mach-k3/common.h
index 9c6c3595a2..32d07340bf 100644
--- a/arch/arm/mach-k3/common.h
+++ b/arch/arm/mach-k3/common.h
@@ -9,6 +9,7 @@ 
 #include <asm/armv7_mpu.h>
 #define J721E  0xbb64
+#define J7200  0xbb6d
 struct fwl_data {
 	const char *name;
diff --git a/arch/arm/mach-k3/include/mach/sys_proto.h b/arch/arm/mach-k3/include/mach/sys_proto.h
index 48b11178c3..60287b261c 100644
--- a/arch/arm/mach-k3/include/mach/sys_proto.h
+++ b/arch/arm/mach-k3/include/mach/sys_proto.h
@@ -17,5 +17,6 @@  void release_resources_for_core_shutdown(void);
 int fdt_disable_node(void *blob, char *node_path);
 bool soc_is_j721e(void);
+bool soc_is_j7200(void);