adiv6: use struct adiv5_ap->ap_num to contain the AP base address
authorAntonio Borneo <borneo.antonio@gmail.com>
Sat, 14 Aug 2021 21:56:12 +0000 (23:56 +0200)
committerAntonio Borneo <borneo.antonio@gmail.com>
Fri, 24 Jun 2022 21:37:44 +0000 (21:37 +0000)
commit3f4bc6ce7f5c5a619590c3cc05a74d6bff6a124f
tree354f852c639d9cede0d208ccf397e55d245561c8
parent72fb88613f02f2c9336426f78312ec2b1ad6ba3f
adiv6: use struct adiv5_ap->ap_num to contain the AP base address

ADIv5 DAP can only have 256 AP, while ADIv6 can provide till
2**40 (1,099,511,627,776) AP per DAP.

Reuse the field ap_num in struct adiv5_ap, currently used on ADIv5
to hold the ADIv5 AP number (apsel), to contain the ADIv6 AP base
address.

Convert struct adiv5_ap->ap_num to 64 bit and initialize it to
DP_APSEL_INVALID for unused AP.
Restrict dap_find_get_ap() to ADIv5 only. To be enhanced.
On ADIv6, let dap_get_ap() return an already allocated AP, or
allocate and return an unused AP.
Add function is_ap_num_valid() and use it.

Change-Id: Ib2fe8c7ec0d08393cd91c29fdac5d632dfc1e438
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/6461
Reviewed-by: Daniel Goehring <dgoehrin@os.amperecomputing.com>
Tested-by: jenkins
doc/openocd.texi
src/jtag/drivers/stlink_usb.c
src/target/arm_adi_v5.c
src/target/arm_adi_v5.h
src/target/arm_dap.c
src/target/arm_tpiu_swo.c
src/target/cortex_m.h
src/target/hla_target.c
src/target/mem_ap.c