1# Copyright (c) 2024 HPMicro
2# SPDX-License-Identifier: BSD-3-Clause
3#
4
5
6set _CHIP hpm6e00
7set _CPUTAPID 0x1000563D
8jtag newtap $_CHIP cpu -irlen 5 -expected-id $_CPUTAPID
9
10set _TARGET0 $_CHIP.cpu0
11target create $_TARGET0 riscv -chain-position $_CHIP.cpu -coreid 0
12
13$_TARGET0 configure -work-area-phys 0x00000000 -work-area-size 0x20000 -work-area-backup 0
14
15targets $_TARGET0
16
17proc dmi_write {reg value} {
18    $::_TARGET0 riscv dmi_write ${reg} ${value}
19}
20
21proc dmi_read {reg} {
22    set v [$::_TARGET0 riscv dmi_read ${reg}]
23    return ${v}
24}
25proc dmi_write_memory {addr value} {
26    dmi_write 0x39 ${addr}
27    dmi_write 0x3C ${value}
28}
29
30proc dmi_read_memory {addr} {
31    set sbcs [expr { 0x100000 | [dmi_read 0x38] }]
32    dmi_write 0x38 ${sbcs}
33    dmi_write 0x39 ${addr}
34    set value [dmi_read 0x3C]
35    return ${value}
36}
37
38proc release_core1 {} {
39    dmi_write_memory 0xF4002C00 0x1000
40}
41
42set _TARGET1 $_CHIP.cpu1
43target create $_TARGET1 riscv -chain-position $_CHIP.cpu -coreid 1
44$_TARGET1 configure -work-area-phys 0x00000000 -work-area-size 0x20000 -work-area-backup 0
45
46$_TARGET1 configure -event examine-start {
47    release_core1
48}
49
50$_TARGET1 configure -event reset-deassert-pre {
51    $::_TARGET0 arp_poll
52    release_core1
53}
54
55$_TARGET0 configure -event reset-end {
56    $::_TARGET0 riscv dmi_write 0x39 0xF4002010
57    $::_TARGET0 riscv dmi_write 0x3C 0x2
58}
59
60proc reset_soc {} {
61    $::_TARGET0 riscv dmi_write 0x39 0xF410001C
62    $::_TARGET0 riscv dmi_write 0x3C 24000000
63}
64