# SPDX-License-Identifier: GPL-2.0-or-later
-# Renesas RZ/G2 SOCs
+# Renesas RZ SOCs
# - There are a combination of Cortex-A57s, Cortex-A53s, Cortex-A55, Cortex-R7
# and Cortex-M33 for each SOC
-# - Each SOC can boot through the Cortex-A5x cores
+# - Each SOC can boot through the Cortex-A5x cores or the Cortex-M33
-# Supported RZ/G2 SOCs and their cores:
+# Supported RZ SOCs and their cores:
# RZ/G2H: Cortex-A57 x4, Cortex-A53 x4, Cortex-R7
# RZ/G2M: Cortex-A57 x2, Cortex-A53 x4, Cortex-R7
# RZ/G2N: Cortex-A57 x2, Cortex-R7
# RZ/G2E: Cortex-A53 x2, Cortex-R7
# RZ/G2L: Cortex-A55 x2, Cortex-M33
+# RZ/V2L: Cortex-A55 x2, Cortex-M33
# RZ/G2LC: Cortex-A55 x2, Cortex-M33
# RZ/G2UL: Cortex-A55 x1, Cortex-M33
+# RZ/G3S: Cortex-A55 x1, Cortex-M33 x2
# Usage:
# There are 2 configuration options:
# SOC: Selects the supported SOC. (Default 'G2L')
-# BOOT_CORE: Selects the booting core. 'CA57', 'CA53' or 'CA55'
+# BOOT_CORE: Selects the booting core. 'CA57', 'CA53', 'CA55' or CM33
transport select jtag
reset_config trst_and_srst srst_gates_jtag
set _boot_core CA55
set _ap_num 0
}
+ V2L {
+ set _CHIPNAME r9a07g054l
+ set _num_ca55 2
+ set _num_cm33 1
+ set _boot_core CA55
+ set _ap_num 0
+ }
G2LC {
set _CHIPNAME r9a07g044c
set _num_ca55 2
set _boot_core CA55
set _ap_num 0
}
+ G3S {
+ set _CHIPNAME r9a08g045s
+ set _num_ca55 1
+ set _num_cm33 2
+ set _boot_core CA55
+ set _ap_num 0
+ }
default {
error "'$_soc' is invalid!"
}
set _DAP_TAPID 0x6ba00477
}
-echo "\t$_soc - $_num_ca57 CA57(s), $_num_ca55 CA55(s), $_num_ca53 CA53(s), $_num_cr7 CR7(s), \
- $_num_cm33 CM33(s)"
+echo "\t$_soc - $_num_ca57 CA57(s), $_num_ca55 CA55(s), $_num_ca53 CA53(s), \
+ $_num_cr7 CR7(s), $_num_cm33 CM33(s)"
echo "\tBoot Core - $_boot_core\n"
set _DAPNAME $_CHIPNAME.dap
# TAP and DAP
-jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_DAP_TAPID \
- -ignore-version
+jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf \
+ -expected-id $_DAP_TAPID -ignore-version
dap create $_DAPNAME -chain-position $_CHIPNAME.cpu
echo "$_CHIPNAME.cpu"
set CA53_CTIBASE {0x80C20000 0x80D20000 0x80E20000 0x80F20000}
set CR7_DBGBASE 0x80910000
set CR7_CTIBASE 0x80918000
-set CM33_DBGBASE 0xE000E000
-set CM33_CTIBASE 0xE0042000
+set CM33_DBGBASE {0xE000E000 0xE010E000}
+set CM33_CTIBASE {0xE0042000 0xE0142000}
set smp_targets ""
cti create $_CTINAME -dap $::_DAPNAME -ap-num $::_ap_num \
-baseaddr [lindex $ctibase $_core]
target create $_TARGETNAME aarch64 -dap $::_DAPNAME \
- -ap-num $::_ap_num -dbgbase [lindex $dbgbase $_core] -cti $_CTINAME
+ -ap-num $::_ap_num -dbgbase [lindex $dbgbase $_core] \
+ -cti $_CTINAME
if { $_core > 0 || $boot == 0 } {
$_TARGETNAME configure -defer-examine
}
target create $_TARGETNAME cortex_r4 -dap $::_DAPNAME \
-ap-num 1 -dbgbase $dbgbase -defer-examine
}
-
-proc setup_cm33 {dbgbase ctibase} {
- set _TARGETNAME $::_CHIPNAME.m33
- set _CTINAME $_TARGETNAME.cti
- cti create $_CTINAME -dap $::_DAPNAME -ap-num 2 -baseaddr $ctibase
- target create $_TARGETNAME cortex_m -dap $::_DAPNAME \
- -ap-num 2 -dbgbase $dbgbase -defer-examine
+proc setup_cm33 {dbgbase ctibase num boot} {
+ if { $::_soc == "G2L" || $::_soc == "V2L" \
+ || $::_soc == "G2LC" || $::_soc == "G2UL" } {
+ set _ap_num 2
+ } elseif { $::_soc == "G3S" } {
+ set _ap_num 3
+ }
+ for { set _core 0 } { $_core < $num } { incr _core } {
+ if { $num <= 1 } {
+ set _TARGETNAME $::_CHIPNAME.m33
+ } else {
+ set _TARGETNAME $::_CHIPNAME.m33.$_core
+ }
+ set _CTINAME $_TARGETNAME.cti
+ cti create $_CTINAME -dap $::_DAPNAME -ap-num $_ap_num \
+ -baseaddr [lindex $ctibase $_core]
+ target create $_TARGETNAME cortex_m -dap $::_DAPNAME \
+ -ap-num $_ap_num -dbgbase [lindex $dbgbase $_core]
+ if { $boot == 0 } {
+ $_TARGETNAME configure -defer-examine
+ }
+ incr $_ap_num
+ }
}
# Organize target list based on the boot core
setup_cr7 $CR7_DBGBASE $CR7_CTIBASE
} elseif { $_boot_core == "CA55" } {
setup_a5x a55 $CA55_DBGBASE $CA55_CTIBASE $_num_ca55 1
- setup_cm33 $CM33_DBGBASE $CM33_CTIBASE
+ setup_cm33 $CM33_DBGBASE $CM33_CTIBASE $_num_cm33 0
+} elseif { $_boot_core == "CM33" } {
+ setup_a5x a55 $CA55_DBGBASE $CA55_CTIBASE $_num_ca55 0
+ setup_cm33 $CM33_DBGBASE $CM33_CTIBASE $_num_cm33 1
}
+
echo "SMP targets:$smp_targets"
eval "target smp $smp_targets"
-if { $_soc == "G2L" || $_soc == "G2LC" || $_soc == "G2UL" } {
+if { $_soc == "G2L" || $_soc == "V2L" || $_soc == "G2LC" \
+|| $_soc == "G2UL" || $_soc == "G3S"} {
target create $_CHIPNAME.axi_ap mem_ap -dap $_DAPNAME -ap-num 1
}