# SPDX-License-Identifier: GPL-2.0-or-later

# This is the config for an Allwinner V3/V3s (sun8iw8).
#
# Notes:
# - Single core ARM Cortex-A7 with a maximum frequency of 1.2 GHz.
# - Thumb-2 Technology
# - Support NEON Advanced SIMD(Single Instruction Multiple Data)instruction
#   for acceleration of media and signal processing functions
# - Support Large Physical Address Extensions(LPAE)
# - VFPv4 Floating Point Unit
# - 32KB L1 Instruction cache and 32KB L1 Data cache
# - 128KB L2 cache
# - has some integrated DDR2 RAM.
#
# Pins related for debug and bootstrap:
#   JTAG
# JTAG_TMS	PF0, SDC0_D1
# JTAG_TDI	PF1, SDC0_D0
# JTAG_TDO	PF3, SDC0_CMD
# JTAG_TCK	PF5, SDC0_D2
#   UART
# None of UART ports seems to be enabled by ROM.
# UART0_TX	PF2, SDC0_CLK		Per default disabled
# UART0_RX	PF4, SDC0_D3 		Per default disabled
# UART1_TX	PE21			Per default disabled
# UART1_RX	PE22	 		Per default disabled
# UART2_TX	PB0			Per default disabled
# UART2_RX	PB1	 		Per default disabled
#
# JTAG is enabled by default after power on on listed JTAG_* pins. So far the
# boot sequence is:
# Time		Action
# 0000ms	Power ON
# 0200ms	JTAG enabled
# 0220ms	JTAG pins switched to SD mode
#
# The time frame of 20ms can be not enough to init and halt the CPU. In this
# case I would recommend to set: "adapter speed 15000"
# To get more or less precise timings, the board should provide reset pin,
# or some bench power supply with remote function. In my case I used
# EEZ H24005 with this command to power on and halt the target:
# "exec  echo "*TRG" > /dev/ttyACM0; sleep 220; reset halt"
# After this it is possible to enable JTAG mode again from boot loader or OS.
# Following DAPs are available:
# dap[0]->MEM-AP AHB
# dap[1]->MEM-AP APB->CA7[0]
#

if { [info exists CHIPNAME] } {
   set  _CHIPNAME $CHIPNAME
} else {
   set  _CHIPNAME v3s
}

if { [info exists DAP_TAPID] } {
        set _DAP_TAPID $DAP_TAPID
} else {
        set _DAP_TAPID 0x5ba00477
}

# No NRST or SRST is present on the SoC. Boards may provide
# some sort of Power cycle reset for complete board or SoC.
# For this case we provide srst_pulls_trst so the board config
# only needs to set srst_only.
reset_config none srst_pulls_trst

jtag newtap $_CHIPNAME dap -irlen 4 -ircapture 0x01 -irmask 0x0f \
        -expected-id $_DAP_TAPID

# Add Cortex A7 core
set _TARGETNAME $_CHIPNAME.cpu
target create $_TARGETNAME cortex_a -chain-position $_CHIPNAME.dap
