This is an automated email from Gerrit.

"Ryan QIAN <jianghao.q...@outlook.com>" just uploaded a new patch set to 
Gerrit, which you can find at https://review.openocd.org/c/openocd/+/6986

-- gerrit

commit 432d904edc0be234248577e03388805094da0eed
Author: Ryan QIAN <jianghao.q...@hpmicro.com>
Date:   Sun May 22 20:03:11 2022 +0800

    tcl: add config files for hpmicro devices and boards
    
    - add config files for hpm6360, hpm6750
    
    Signed-off-by: Ryan QIAN <jianghao.q...@hpmicro.com>
    Change-Id: I5842e04f9a772a85df8c733ac03975c1c892f50a

diff --git a/tcl/board/hpm6360evk.cfg b/tcl/board/hpm6360evk.cfg
new file mode 100644
index 0000000000..bca3b8dc16
--- /dev/null
+++ b/tcl/board/hpm6360evk.cfg
@@ -0,0 +1,253 @@
+# Copyright 2021 hpmicro
+# SPDX-License-Identifier: BSD-3-Clause
+
+flash bank xpi0 hpm_xpi 0x80000000 0x1000000 1 1 $_TARGET0 0xF3040000
+
+proc init_clock {} {
+    $::_TARGET0 riscv dmi_write 0x39 0xF4002000
+    $::_TARGET0 riscv dmi_write 0x3C 0x1
+
+    $::_TARGET0 riscv dmi_write 0x39 0xF4002000
+    $::_TARGET0 riscv dmi_write 0x3C 0x2
+
+    $::_TARGET0 riscv dmi_write 0x39 0xF4000800
+    $::_TARGET0 riscv dmi_write 0x3C 0xFFFFFFFF
+
+    $::_TARGET0 riscv dmi_write 0x39 0xF4000810
+    $::_TARGET0 riscv dmi_write 0x3C 0xFFFFFFFF
+
+    $::_TARGET0 riscv dmi_write 0x39 0xF4000820
+    $::_TARGET0 riscv dmi_write 0x3C 0xFFFFFFFF
+
+    $::_TARGET0 riscv dmi_write 0x39 0xF4000830
+    $::_TARGET0 riscv dmi_write 0x3C 0xFFFFFFFF
+    echo "clocks has been enabled!"
+}
+
+proc init_sdram { } {
+# configure dram frequency
+# 133Mhz pll1_clk0: 266Mhz divide by 2
+    #$::_TARGET0 riscv dmi_write 0x39 0xF4001820
+    $::_TARGET0 riscv dmi_write 0x3C 0x201
+# 166Mhz pll2_clk0: 333Mhz divide by 2
+    $::_TARGET0 riscv dmi_write 0x39 0xF4001820
+    $::_TARGET0 riscv dmi_write 0x3C 0x401
+
+    # PD13
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040368
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PD12
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040360
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PD10
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040350
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PD09
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040348
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PD08
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040340
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PD07
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040338
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PD06
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040330
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PD05
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040328
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PD04
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040320
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PD03
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040318
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PD02
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040310
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PD01
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040308
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PD00
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040300
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC29
+    $::_TARGET0 riscv dmi_write 0x39 0xF40402E8
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC28
+    $::_TARGET0 riscv dmi_write 0x39 0xF40402E0
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC27
+    $::_TARGET0 riscv dmi_write 0x39 0xF40402D8
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+
+    # PC22
+    $::_TARGET0 riscv dmi_write 0x39 0xF40402B0
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC21
+    $::_TARGET0 riscv dmi_write 0x39 0xF40402A8
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC17
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040288
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC15
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040278
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC12
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040260
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC11
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040258
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC10
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040250
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC09
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040248
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC08
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040240
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC07
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040238
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC06
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040230
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC05
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040228
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC04
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040220
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+
+    # PC14
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040270
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC13
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040268
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC16
+    # $::_TARGET0 riscv dmi_write 0x39 0xF4040280
+    $::_TARGET0 riscv dmi_write 0x3C 0x1000C
+    # PC26
+    $::_TARGET0 riscv dmi_write 0x39 0xF40402D0
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC25
+    $::_TARGET0 riscv dmi_write 0x39 0xF40402C8
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC19
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040298
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC18
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040290
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC23
+    $::_TARGET0 riscv dmi_write 0x39 0xF40402B8
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC24
+    $::_TARGET0 riscv dmi_write 0x39 0xF40402C0
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC30
+    $::_TARGET0 riscv dmi_write 0x39 0xF40402F0
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC31
+    $::_TARGET0 riscv dmi_write 0x39 0xF40402F8
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC02
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040210
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC03
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040218
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+
+    # dramc configuration
+    $::_TARGET0 riscv dmi_write 0x39 0xF3050000
+    $::_TARGET0 riscv dmi_write 0x3C 0x1
+    sleep 10
+    $::_TARGET0 riscv dmi_write 0x39 0xF3050000
+    $::_TARGET0 riscv dmi_write 0x3C 0x2
+    $::_TARGET0 riscv dmi_write 0x39 0xF3050008
+    $::_TARGET0 riscv dmi_write 0x3C 0x30524
+    $::_TARGET0 riscv dmi_write 0x39 0xF305000C
+    $::_TARGET0 riscv dmi_write 0x3C 0x6030524
+    $::_TARGET0 riscv dmi_write 0x39 0xF3050000
+    $::_TARGET0 riscv dmi_write 0x3C 0x10000000
+
+    # 32MB
+    $::_TARGET0 riscv dmi_write 0x39 0xF3050010
+    $::_TARGET0 riscv dmi_write 0x3C 0x4000001b
+    $::_TARGET0 riscv dmi_write 0x39 0xF3050014
+    $::_TARGET0 riscv dmi_write 0x3C 0
+    # 16-bit
+    $::_TARGET0 riscv dmi_write 0x39 0xF3050040
+    $::_TARGET0 riscv dmi_write 0x3C 0xf31
+
+    # 133Mhz configuration
+    #$::_TARGET0 riscv dmi_write 0x39 0xF3050044
+    $::_TARGET0 riscv dmi_write 0x3C 0x884e22
+    # 166Mhz configuration
+    $::_TARGET0 riscv dmi_write 0x39 0xF3050044
+    $::_TARGET0 riscv dmi_write 0x3C 0x884e33
+
+    $::_TARGET0 riscv dmi_write 0x39 0xF3050048
+    $::_TARGET0 riscv dmi_write 0x3C 0x1020d0d
+    $::_TARGET0 riscv dmi_write 0x39 0xF3050048
+    $::_TARGET0 riscv dmi_write 0x3C 0x1020d0d
+    $::_TARGET0 riscv dmi_write 0x39 0xF305004C
+    $::_TARGET0 riscv dmi_write 0x3C 0x2020300
+
+    # config delay cell
+    $::_TARGET0 riscv dmi_write 0x39 0xF3050150
+    $::_TARGET0 riscv dmi_write 0x3C 0x3b
+    $::_TARGET0 riscv dmi_write 0x39 0xF3050150
+    $::_TARGET0 riscv dmi_write 0x3C 0x203b
+
+    $::_TARGET0 riscv dmi_write 0x39 0xF3050094
+    $::_TARGET0 riscv dmi_write 0x3C 0
+    $::_TARGET0 riscv dmi_write 0x39 0xF3050098
+    $::_TARGET0 riscv dmi_write 0x3C 0
+
+    # precharge all
+    $::_TARGET0 riscv dmi_write 0x39 0xF3050090
+    $::_TARGET0 riscv dmi_write 0x3C 0x40000000
+    $::_TARGET0 riscv dmi_write 0x39 0xF305009C
+    $::_TARGET0 riscv dmi_write 0x3C 0xA55A000F
+    sleep 500
+    $::_TARGET0 riscv dmi_write 0x39 0xF305003C
+    $::_TARGET0 riscv dmi_write 0x3C 0x3
+    # auto refresh
+    $::_TARGET0 riscv dmi_write 0x39 0xF305009C
+    $::_TARGET0 riscv dmi_write 0x3C 0xA55A000C
+    sleep 500
+    $::_TARGET0 riscv dmi_write 0x39 0xF305003C
+    $::_TARGET0 riscv dmi_write 0x3C 0x3
+    $::_TARGET0 riscv dmi_write 0x39 0xF305009C
+    $::_TARGET0 riscv dmi_write 0x3C 0xA55A000C
+    sleep 500
+    $::_TARGET0 riscv dmi_write 0x39 0xF305003C
+    $::_TARGET0 riscv dmi_write 0x3C 0x3
+
+    # set mode
+    $::_TARGET0 riscv dmi_write 0x39 0xF30500A0
+    $::_TARGET0 riscv dmi_write 0x3C 0x33
+    $::_TARGET0 riscv dmi_write 0x39 0xF305009C
+    $::_TARGET0 riscv dmi_write 0x3C 0xA55A000A
+    sleep 500
+    $::_TARGET0 riscv dmi_write 0x39 0xF305003C
+    $::_TARGET0 riscv dmi_write 0x3C 0x3
+
+    $::_TARGET0 riscv dmi_write 0x39 0xF305004C
+    $::_TARGET0 riscv dmi_write 0x3C 0x2020301
+    echo "SDRAM has been initialized"
+}
+
+$_TARGET0 configure -event reset-init {
+    init_clock
+    init_sdram
+}
+
+$_TARGET0 configure -event gdb-attach {
+    reset halt
+}
diff --git a/tcl/board/hpm6750evk.cfg b/tcl/board/hpm6750evk.cfg
new file mode 100644
index 0000000000..9f15d4c2ec
--- /dev/null
+++ b/tcl/board/hpm6750evk.cfg
@@ -0,0 +1,345 @@
+# Copyright 2021 hpmicro
+# SPDX-License-Identifier: BSD-3-Clause
+
+# openocd flash driver argument:
+#   - option0:
+#       [31:28] Flash probe type
+#         0 - SFDP SDR / 1 - SFDP DDR
+#         2 - 1-4-4 Read (0xEB, 24-bit address) / 3 - 1-2-2 Read(0xBB, 24-bit 
address)
+#         4 - HyperFLASH 1.8V / 5 - HyperFLASH 3V
+#         6 - OctaBus DDR (SPI -> OPI DDR)
+#         8 - Xccela DDR (SPI -> OPI DDR)
+#         10 - EcoXiP DDR (SPI -> OPI DDR)
+#       [27:24] Command Pads after Power-on Reset
+#         0 - SPI / 1 - DPI / 2 - QPI / 3 - OPI
+#       [23:20] Command Pads after Configuring FLASH
+#         0 - SPI / 1 - DPI / 2 - QPI / 3 - OPI
+#       [19:16] Quad Enable Sequence (for the device support SFDP 1.0 only)
+#         0 - Not needed
+#         1 - QE bit is at bit 6 in Status Register 1
+#         2 - QE bit is at bit1 in Status Register 2
+#         3 - QE bit is at bit7 in Status Register 2
+#         4 - QE bit is at bit1 in Status Register 2 and should be programmed 
by 0x31
+#       [15:8] Dummy cycles
+#         0 - Auto-probed / detected / default value
+#         Others - User specified value, for DDR read, the dummy cycles should 
be 2 * cycles on FLASH datasheet
+#       [7:4] Misc.
+#         0 - Not used
+#         1 - SPI mode
+#         2 - Internal loopback
+#         3 - External DQS
+#       [3:0] Frequency option
+#         1 - 30MHz / 2 - 50MHz / 3 - 66MHz / 4 - 80MHz / 5 - 100MHz / 6 - 
120MHz / 7 - 133MHz / 8 - 166MHz
+#   - option1:
+#       [31:20]  Reserved
+#       [19:16] IO voltage
+#         0 - 3V / 1 - 1.8V
+#       [15:12] Pin group
+#         0 - 1st group / 1 - 2nd group
+#       [11:8] Connection selection
+#         0 - CA_CS0 / 1 - CB_CS0 / 2 - CA_CS0 + CB_CS0 (Two FLASH connected 
to CA and CB respectively)
+#       [7:0] Drive Strength
+#         0 - Default value
+
+# xpi0 configs
+#   - flash driver:     hpm_xpi
+#   - flash ctrl index: 0xF3040000
+#   - base address:     0x80000000
+#   - flash size:       0x2000000
+#   - flash option0:    0x7
+flash bank xpi0 hpm_xpi 0x80000000 0x2000000 1 1 $_TARGET0 0xF3040000 0x7
+
+proc init_clock {} {
+    $::_TARGET0 riscv dmi_write 0x39 0xF4002000
+    $::_TARGET0 riscv dmi_write 0x3C 0x1
+
+    $::_TARGET0 riscv dmi_write 0x39 0xF4002000
+    $::_TARGET0 riscv dmi_write 0x3C 0x2
+
+    $::_TARGET0 riscv dmi_write 0x39 0xF4000800
+    $::_TARGET0 riscv dmi_write 0x3C 0xFFFFFFFF
+
+    $::_TARGET0 riscv dmi_write 0x39 0xF4000810
+    $::_TARGET0 riscv dmi_write 0x3C 0xFFFFFFFF
+
+    $::_TARGET0 riscv dmi_write 0x39 0xF4000820
+    $::_TARGET0 riscv dmi_write 0x3C 0xFFFFFFFF
+
+    $::_TARGET0 riscv dmi_write 0x39 0xF4000830
+    $::_TARGET0 riscv dmi_write 0x3C 0xFFFFFFFF
+    echo "clocks has been enabled!"
+}
+
+proc init_sdram { } {
+# configure dram frequency
+# 133Mhz pll1_clk0: 266Mhz divide by 2
+    #$::_TARGET0 riscv dmi_write 0x39 0xF4001820
+    $::_TARGET0 riscv dmi_write 0x3C 0x201
+# 166Mhz pll2_clk0: 333Mhz divide by 2
+    $::_TARGET0 riscv dmi_write 0x39 0xF4001820
+    $::_TARGET0 riscv dmi_write 0x3C 0x401
+    # PC01
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040208
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC00
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040200
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PB31
+    $::_TARGET0 riscv dmi_write 0x39 0xF40401F8
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PB30
+    $::_TARGET0 riscv dmi_write 0x39 0xF40401F0
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PB29
+    $::_TARGET0 riscv dmi_write 0x39 0xF40401E8
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PB28
+    $::_TARGET0 riscv dmi_write 0x39 0xF40401E0
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PB27
+    $::_TARGET0 riscv dmi_write 0x39 0xF40401D8
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PB26
+    $::_TARGET0 riscv dmi_write 0x39 0xF40401D0
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PB25
+    $::_TARGET0 riscv dmi_write 0x39 0xF40401C8
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PB24
+    $::_TARGET0 riscv dmi_write 0x39 0xF40401C0
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PB23
+    $::_TARGET0 riscv dmi_write 0x39 0xF40401B8
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PB22
+    $::_TARGET0 riscv dmi_write 0x39 0xF40401B0
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PB21
+    $::_TARGET0 riscv dmi_write 0x39 0xF40401A8
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PB20
+    $::_TARGET0 riscv dmi_write 0x39 0xF40401A0
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PB19
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040198
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PB18
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040190
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+
+    # PD13
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040368
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PD12
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040360
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PD10
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040350
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PD09
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040348
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PD08
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040340
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PD07
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040338
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PD06
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040330
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PD05
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040328
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PD04
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040320
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PD03
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040318
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PD02
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040310
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PD01
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040308
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PD00
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040300
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC29
+    $::_TARGET0 riscv dmi_write 0x39 0xF40402E8
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC28
+    $::_TARGET0 riscv dmi_write 0x39 0xF40402E0
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC27
+    $::_TARGET0 riscv dmi_write 0x39 0xF40402D8
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+
+    # PC22
+    $::_TARGET0 riscv dmi_write 0x39 0xF40402B0
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC21
+    $::_TARGET0 riscv dmi_write 0x39 0xF40402A8
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC17
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040288
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC15
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040278
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC12
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040260
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC11
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040258
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC10
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040250
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC09
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040248
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC08
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040240
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC07
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040238
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC06
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040230
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC05
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040228
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC04
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040220
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+
+    # PC14
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040270
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC13
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040268
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC16
+    # $::_TARGET0 riscv dmi_write 0x39 0xF4040280
+    $::_TARGET0 riscv dmi_write 0x3C 0x1000C
+    # PC26
+    $::_TARGET0 riscv dmi_write 0x39 0xF40402D0
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC25
+    $::_TARGET0 riscv dmi_write 0x39 0xF40402C8
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC19
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040298
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC18
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040290
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC23
+    $::_TARGET0 riscv dmi_write 0x39 0xF40402B8
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC24
+    $::_TARGET0 riscv dmi_write 0x39 0xF40402C0
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC30
+    $::_TARGET0 riscv dmi_write 0x39 0xF40402F0
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC31
+    $::_TARGET0 riscv dmi_write 0x39 0xF40402F8
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC02
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040210
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC03
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040218
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+
+    # dramc configuration
+    $::_TARGET0 riscv dmi_write 0x39 0xF3050000
+    $::_TARGET0 riscv dmi_write 0x3C 0x1
+    sleep 10
+    $::_TARGET0 riscv dmi_write 0x39 0xF3050000
+    $::_TARGET0 riscv dmi_write 0x3C 0x2
+    $::_TARGET0 riscv dmi_write 0x39 0xF3050008
+    $::_TARGET0 riscv dmi_write 0x3C 0x30524
+    $::_TARGET0 riscv dmi_write 0x39 0xF305000C
+    $::_TARGET0 riscv dmi_write 0x3C 0x6030524
+    $::_TARGET0 riscv dmi_write 0x39 0xF3050000
+    $::_TARGET0 riscv dmi_write 0x3C 0x10000000
+
+    $::_TARGET0 riscv dmi_write 0x39 0xF3050010
+    $::_TARGET0 riscv dmi_write 0x3C 0x4000001b
+    $::_TARGET0 riscv dmi_write 0x39 0xF3050014
+    $::_TARGET0 riscv dmi_write 0x3C 0
+    $::_TARGET0 riscv dmi_write 0x39 0xF3050040
+    $::_TARGET0 riscv dmi_write 0x3C 0xf32
+
+    # 133Mhz configuration
+    #$::_TARGET0 riscv dmi_write 0x39 0xF3050044
+    $::_TARGET0 riscv dmi_write 0x3C 0x884e22
+    # 166Mhz configuration
+    $::_TARGET0 riscv dmi_write 0x39 0xF3050044
+    $::_TARGET0 riscv dmi_write 0x3C 0x884e33
+
+    $::_TARGET0 riscv dmi_write 0x39 0xF3050048
+    $::_TARGET0 riscv dmi_write 0x3C 0x1020d0d
+    $::_TARGET0 riscv dmi_write 0x39 0xF3050048
+    $::_TARGET0 riscv dmi_write 0x3C 0x1020d0d
+    $::_TARGET0 riscv dmi_write 0x39 0xF305004C
+    $::_TARGET0 riscv dmi_write 0x3C 0x2020300
+
+    # config delay cell
+    $::_TARGET0 riscv dmi_write 0x39 0xF3050150
+    $::_TARGET0 riscv dmi_write 0x3C 0x3b
+    $::_TARGET0 riscv dmi_write 0x39 0xF3050150
+    $::_TARGET0 riscv dmi_write 0x3C 0x203b
+
+    $::_TARGET0 riscv dmi_write 0x39 0xF3050094
+    $::_TARGET0 riscv dmi_write 0x3C 0
+    $::_TARGET0 riscv dmi_write 0x39 0xF3050098
+    $::_TARGET0 riscv dmi_write 0x3C 0
+
+    # precharge all
+    $::_TARGET0 riscv dmi_write 0x39 0xF3050090
+    $::_TARGET0 riscv dmi_write 0x3C 0x40000000
+    $::_TARGET0 riscv dmi_write 0x39 0xF305009C
+    $::_TARGET0 riscv dmi_write 0x3C 0xA55A000F
+    sleep 500
+    $::_TARGET0 riscv dmi_write 0x39 0xF305003C
+    $::_TARGET0 riscv dmi_write 0x3C 0x3
+    # auto refresh
+    $::_TARGET0 riscv dmi_write 0x39 0xF305009C
+    $::_TARGET0 riscv dmi_write 0x3C 0xA55A000C
+    sleep 500
+    $::_TARGET0 riscv dmi_write 0x39 0xF305003C
+    $::_TARGET0 riscv dmi_write 0x3C 0x3
+    $::_TARGET0 riscv dmi_write 0x39 0xF305009C
+    $::_TARGET0 riscv dmi_write 0x3C 0xA55A000C
+    sleep 500
+    $::_TARGET0 riscv dmi_write 0x39 0xF305003C
+    $::_TARGET0 riscv dmi_write 0x3C 0x3
+
+    # set mode
+    $::_TARGET0 riscv dmi_write 0x39 0xF30500A0
+    $::_TARGET0 riscv dmi_write 0x3C 0x33
+    $::_TARGET0 riscv dmi_write 0x39 0xF305009C
+    $::_TARGET0 riscv dmi_write 0x3C 0xA55A000A
+    sleep 500
+    $::_TARGET0 riscv dmi_write 0x39 0xF305003C
+    $::_TARGET0 riscv dmi_write 0x3C 0x3
+
+    $::_TARGET0 riscv dmi_write 0x39 0xF305004C
+    $::_TARGET0 riscv dmi_write 0x3C 0x2020301
+    echo "SDRAM has been initialized"
+}
+
+$_TARGET0 configure -event reset-init {
+    init_clock
+    init_sdram
+}
+
+$_TARGET0 configure -event gdb-attach {
+    reset halt
+}
diff --git a/tcl/board/hpm6750evkmini.cfg b/tcl/board/hpm6750evkmini.cfg
new file mode 100644
index 0000000000..686495c1a9
--- /dev/null
+++ b/tcl/board/hpm6750evkmini.cfg
@@ -0,0 +1,299 @@
+# Copyright 2021 hpmicro
+# SPDX-License-Identifier: BSD-3-Clause
+#
+# openocd flash driver argument:
+#   - ARG7:
+#       [31:28] Flash probe type
+#         0 - SFDP SDR / 1 - SFDP DDR
+#         2 - 1-4-4 Read (0xEB, 24-bit address) / 3 - 1-2-2 Read(0xBB, 24-bit 
address)
+#         4 - HyperFLASH 1.8V / 5 - HyperFLASH 3V
+#         6 - OctaBus DDR (SPI -> OPI DDR)
+#         8 - Xccela DDR (SPI -> OPI DDR)
+#         10 - EcoXiP DDR (SPI -> OPI DDR)
+#       [27:24] Command Pads after Power-on Reset
+#         0 - SPI / 1 - DPI / 2 - QPI / 3 - OPI
+#       [23:20] Command Pads after Configuring FLASH
+#         0 - SPI / 1 - DPI / 2 - QPI / 3 - OPI
+#       [19:16] Quad Enable Sequence (for the device support SFDP 1.0 only)
+#         0 - Not needed
+#         1 - QE bit is at bit 6 in Status Register 1
+#         2 - QE bit is at bit1 in Status Register 2
+#         3 - QE bit is at bit7 in Status Register 2
+#         4 - QE bit is at bit1 in Status Register 2 and should be programmed 
by 0x31
+#       [15:8] Dummy cycles
+#         0 - Auto-probed / detected / default value
+#         Others - User specified value, for DDR read, the dummy cycles should 
be 2 * cycles on FLASH datasheet
+#       [7:4] Misc.
+#         0 - Not used
+#         1 - SPI mode
+#         2 - Internal loopback
+#         3 - External DQS
+#       [3:0] Frequency option
+#         1 - 30MHz / 2 - 50MHz / 3 - 66MHz / 4 - 80MHz / 5 - 100MHz / 6 - 
120MHz / 7 - 133MHz / 8 - 166MHz
+#   - ARG8:
+#       [31:20]  Reserved
+#       [19:16] IO voltage
+#         0 - 3V / 1 - 1.8V
+#       [15:12] Pin group
+#         0 - 1st group / 1 - 2nd group
+#       [11:8] Connection selection
+#         0 - CA_CS0 / 1 - CB_CS0 / 2 - CA_CS0 + CB_CS0 (Two FLASH connected 
to CA and CB respectively)
+#       [7:0] Drive Strength
+#         0 - Default value
+
+# xpi0 configs
+#   - flash driver:     hpm_xpi
+#   - flash ctrl index: 0xF3040000
+#   - base address:     0x80000000
+#   - flash size:       0x1000000
+#   - flash option0:    0x7
+flash bank xpi0 hpm_xpi 0x80000000 0x1000000 1 1 $_TARGET0 0xF3040000 0x7
+
+proc init_clock {} {
+    $::_TARGET0 riscv dmi_write 0x39 0xF4002000
+    $::_TARGET0 riscv dmi_write 0x3C 0x1
+
+    $::_TARGET0 riscv dmi_write 0x39 0xF4002000
+    $::_TARGET0 riscv dmi_write 0x3C 0x2
+
+    $::_TARGET0 riscv dmi_write 0x39 0xF4000800
+    $::_TARGET0 riscv dmi_write 0x3C 0xFFFFFFFF
+
+    $::_TARGET0 riscv dmi_write 0x39 0xF4000810
+    $::_TARGET0 riscv dmi_write 0x3C 0xFFFFFFFF
+
+    $::_TARGET0 riscv dmi_write 0x39 0xF4000820
+    $::_TARGET0 riscv dmi_write 0x3C 0xFFFFFFFF
+
+    $::_TARGET0 riscv dmi_write 0x39 0xF4000830
+    $::_TARGET0 riscv dmi_write 0x3C 0xFFFFFFFF
+    echo "clocks has been enabled!"
+}
+
+proc init_sdram { } {
+# configure dram frequency
+# 133Mhz pll1_clk0: 266Mhz divide by 2
+    #$::_TARGET0 riscv dmi_write 0x39 0xF4001820
+    $::_TARGET0 riscv dmi_write 0x3C 0x201
+# 166Mhz pll2_clk0: 333Mhz divide by 2
+    $::_TARGET0 riscv dmi_write 0x39 0xF4001820
+    $::_TARGET0 riscv dmi_write 0x3C 0x401
+
+    # PD13
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040368
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PD12
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040360
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PD10
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040350
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PD09
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040348
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PD08
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040340
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PD07
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040338
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PD06
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040330
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PD05
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040328
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PD04
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040320
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PD03
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040318
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PD02
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040310
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PD01
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040308
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PD00
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040300
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC29
+    $::_TARGET0 riscv dmi_write 0x39 0xF40402E8
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC28
+    $::_TARGET0 riscv dmi_write 0x39 0xF40402E0
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC27
+    $::_TARGET0 riscv dmi_write 0x39 0xF40402D8
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+
+    # PC22
+    $::_TARGET0 riscv dmi_write 0x39 0xF40402B0
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC21
+    $::_TARGET0 riscv dmi_write 0x39 0xF40402A8
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC17
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040288
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC15
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040278
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC12
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040260
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC11
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040258
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC10
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040250
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC09
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040248
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC08
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040240
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC07
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040238
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC06
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040230
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC05
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040228
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC04
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040220
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+
+    # PC14
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040270
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC13
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040268
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC16
+    # $::_TARGET0 riscv dmi_write 0x39 0xF4040280
+    $::_TARGET0 riscv dmi_write 0x3C 0x1000C
+    # PC26
+    $::_TARGET0 riscv dmi_write 0x39 0xF40402D0
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC25
+    $::_TARGET0 riscv dmi_write 0x39 0xF40402C8
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC19
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040298
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC18
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040290
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC23
+    $::_TARGET0 riscv dmi_write 0x39 0xF40402B8
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC24
+    $::_TARGET0 riscv dmi_write 0x39 0xF40402C0
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC30
+    $::_TARGET0 riscv dmi_write 0x39 0xF40402F0
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC31
+    $::_TARGET0 riscv dmi_write 0x39 0xF40402F8
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC02
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040210
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+    # PC03
+    $::_TARGET0 riscv dmi_write 0x39 0xF4040218
+    $::_TARGET0 riscv dmi_write 0x3C 0xC
+
+    # dramc configuration
+    $::_TARGET0 riscv dmi_write 0x39 0xF3050000
+    $::_TARGET0 riscv dmi_write 0x3C 0x1
+    sleep 10
+    $::_TARGET0 riscv dmi_write 0x39 0xF3050000
+    $::_TARGET0 riscv dmi_write 0x3C 0x2
+    $::_TARGET0 riscv dmi_write 0x39 0xF3050008
+    $::_TARGET0 riscv dmi_write 0x3C 0x30524
+    $::_TARGET0 riscv dmi_write 0x39 0xF305000C
+    $::_TARGET0 riscv dmi_write 0x3C 0x6030524
+    $::_TARGET0 riscv dmi_write 0x39 0xF3050000
+    $::_TARGET0 riscv dmi_write 0x3C 0x10000000
+
+    # 16MB
+    $::_TARGET0 riscv dmi_write 0x39 0xF3050010
+    $::_TARGET0 riscv dmi_write 0x3C 0x40000019
+    $::_TARGET0 riscv dmi_write 0x39 0xF3050014
+    $::_TARGET0 riscv dmi_write 0x3C 0
+    # 16-bit
+    $::_TARGET0 riscv dmi_write 0x39 0xF3050040
+    $::_TARGET0 riscv dmi_write 0x3C 0xf31
+
+    # 133Mhz configuration
+    #$::_TARGET0 riscv dmi_write 0x39 0xF3050044
+    $::_TARGET0 riscv dmi_write 0x3C 0x884e22
+    # 166Mhz configuration
+    $::_TARGET0 riscv dmi_write 0x39 0xF3050044
+    $::_TARGET0 riscv dmi_write 0x3C 0x884e33
+
+    $::_TARGET0 riscv dmi_write 0x39 0xF3050048
+    $::_TARGET0 riscv dmi_write 0x3C 0x1020d0d
+    $::_TARGET0 riscv dmi_write 0x39 0xF3050048
+    $::_TARGET0 riscv dmi_write 0x3C 0x1020d0d
+    $::_TARGET0 riscv dmi_write 0x39 0xF305004C
+    $::_TARGET0 riscv dmi_write 0x3C 0x2020300
+
+    # config delay cell
+    $::_TARGET0 riscv dmi_write 0x39 0xF3050150
+    $::_TARGET0 riscv dmi_write 0x3C 0x3b
+    $::_TARGET0 riscv dmi_write 0x39 0xF3050150
+    $::_TARGET0 riscv dmi_write 0x3C 0x203b
+
+    $::_TARGET0 riscv dmi_write 0x39 0xF3050094
+    $::_TARGET0 riscv dmi_write 0x3C 0
+    $::_TARGET0 riscv dmi_write 0x39 0xF3050098
+    $::_TARGET0 riscv dmi_write 0x3C 0
+
+    # precharge all
+    $::_TARGET0 riscv dmi_write 0x39 0xF3050090
+    $::_TARGET0 riscv dmi_write 0x3C 0x40000000
+    $::_TARGET0 riscv dmi_write 0x39 0xF305009C
+    $::_TARGET0 riscv dmi_write 0x3C 0xA55A000F
+    sleep 500
+    $::_TARGET0 riscv dmi_write 0x39 0xF305003C
+    $::_TARGET0 riscv dmi_write 0x3C 0x3
+    # auto refresh
+    $::_TARGET0 riscv dmi_write 0x39 0xF305009C
+    $::_TARGET0 riscv dmi_write 0x3C 0xA55A000C
+    sleep 500
+    $::_TARGET0 riscv dmi_write 0x39 0xF305003C
+    $::_TARGET0 riscv dmi_write 0x3C 0x3
+    $::_TARGET0 riscv dmi_write 0x39 0xF305009C
+    $::_TARGET0 riscv dmi_write 0x3C 0xA55A000C
+    sleep 500
+    $::_TARGET0 riscv dmi_write 0x39 0xF305003C
+    $::_TARGET0 riscv dmi_write 0x3C 0x3
+
+    # set mode
+    $::_TARGET0 riscv dmi_write 0x39 0xF30500A0
+    $::_TARGET0 riscv dmi_write 0x3C 0x33
+    $::_TARGET0 riscv dmi_write 0x39 0xF305009C
+    $::_TARGET0 riscv dmi_write 0x3C 0xA55A000A
+    sleep 500
+    $::_TARGET0 riscv dmi_write 0x39 0xF305003C
+    $::_TARGET0 riscv dmi_write 0x3C 0x3
+
+    $::_TARGET0 riscv dmi_write 0x39 0xF305004C
+    $::_TARGET0 riscv dmi_write 0x3C 0x2020301
+    echo "SDRAM has been initialized"
+}
+
+$_TARGET0 configure -event reset-init {
+    init_clock
+    init_sdram
+}
+
+$_TARGET0 configure -event gdb-attach {
+    reset halt
+}
diff --git a/tcl/interface/ftdi/hpmicro_evk_ft2232.cfg 
b/tcl/interface/ftdi/hpmicro_evk_ft2232.cfg
new file mode 100644
index 0000000000..580d98ef85
--- /dev/null
+++ b/tcl/interface/ftdi/hpmicro_evk_ft2232.cfg
@@ -0,0 +1,15 @@
+# Copyright 2021 hpmicro
+# SPDX-License-Identifier: BSD-3-Clause
+
+bindto 0.0.0.0
+adapter speed 10000
+reset_config trst_and_srst
+adapter srst delay 50
+
+adapter driver ftdi
+ftdi_vid_pid 0x0403 0x6010
+
+ftdi_layout_init 0x0208 0x020b
+ftdi_layout_signal nTRST -data 0x0200 -noe 0x0400
+ftdi_layout_signal nSRST -data 0x0100 -noe 0x0800
+
diff --git a/tcl/target/hpmicro/hpm6360.cfg b/tcl/target/hpmicro/hpm6360.cfg
new file mode 100644
index 0000000000..bfce20c208
--- /dev/null
+++ b/tcl/target/hpmicro/hpm6360.cfg
@@ -0,0 +1,13 @@
+# Copyright 2021 hpmicro
+# SPDX-License-Identifier: BSD-3-Clause
+
+set _CHIP hpm6360
+set _CPUTAPID 0x1000563D
+jtag newtap $_CHIP cpu -irlen 5 -expected-id $_CPUTAPID
+
+set _TARGET0 $_CHIP.cpu0
+target create $_TARGET0 riscv -chain-position $_CHIP.cpu -coreid 0
+
+$_TARGET0 configure -work-area-phys 0x00000000 -work-area-size 0x20000 
-work-area-backup 0
+
+targets $_TARGET0
diff --git a/tcl/target/hpmicro/hpm6750-dual-core.cfg 
b/tcl/target/hpmicro/hpm6750-dual-core.cfg
new file mode 100644
index 0000000000..601b680951
--- /dev/null
+++ b/tcl/target/hpmicro/hpm6750-dual-core.cfg
@@ -0,0 +1,61 @@
+# Copyright 2021 hpmicro
+# SPDX-License-Identifier: BSD-3-Clause
+#
+
+
+set _CHIP hpm6750
+set _CPUTAPID 0x1000563D
+jtag newtap $_CHIP cpu -irlen 5 -expected-id $_CPUTAPID
+
+set _TARGET0 $_CHIP.cpu0
+target create $_TARGET0 riscv -chain-position $_CHIP.cpu -coreid 0
+
+$_TARGET0 configure -work-area-phys 0x00000000 -work-area-size 0x20000 
-work-area-backup 0
+
+targets $_TARGET0
+
+proc dmi_write {reg value} {
+    $::_TARGET0 riscv dmi_write ${reg} ${value}
+}
+
+proc dmi_read {reg} {
+    set v [$::_TARGET0 riscv dmi_read ${reg}]
+    return ${v}
+}
+proc dmi_write_memory {addr value} {
+    dmi_write 0x39 ${addr}
+    dmi_write 0x3C ${value}
+}
+
+proc dmi_read_memory {addr} {
+    set sbcs [expr 0x100000 | [dmi_read 0x38]]
+    dmi_write 0x38 ${sbcs}
+    dmi_write 0x39 ${addr}
+    set value [dmi_read 0x3C]
+    return ${value}
+}
+
+proc release_core1 {} {
+    # set start point for core1
+    dmi_write_memory 0xF4002C08 0x20016284
+
+    # set boot flag for core1
+    dmi_write_memory 0xF4002C0C 0xC1BEF1A9
+
+    # release core1
+    dmi_write_memory 0xF4002C00 0x1000
+}
+
+$_TARGET0 configure -event examine-end {
+    release_core1
+}
+
+set _TARGET1 $_CHIP.cpu1
+target create $_TARGET1 riscv -chain-position $_CHIP.cpu -coreid 1
+$_TARGET1 configure -work-area-phys 0x00000000 -work-area-size 0x20000 
-work-area-backup 0
+
+$_TARGET1 configure -event reset-deassert-pre {
+    $::_TARGET1 arp_poll
+    release_core1
+}
+
diff --git a/tcl/target/hpmicro/hpm6750-single-core.cfg 
b/tcl/target/hpmicro/hpm6750-single-core.cfg
new file mode 100644
index 0000000000..8e2bbe5f19
--- /dev/null
+++ b/tcl/target/hpmicro/hpm6750-single-core.cfg
@@ -0,0 +1,13 @@
+# Copyright 2021 hpmicro
+# SPDX-License-Identifier: BSD-3-Clause
+
+set _CHIP hpm6750
+set _CPUTAPID 0x1000563D
+jtag newtap $_CHIP cpu -irlen 5 -expected-id $_CPUTAPID
+
+set _TARGET0 $_CHIP.cpu0
+target create $_TARGET0 riscv -chain-position $_CHIP.cpu -coreid 0
+
+$_TARGET0 configure -work-area-phys 0x00000000 -work-area-size 0x20000 
-work-area-backup 0
+
+targets $_TARGET0

-- 

Reply via email to