From 32d2b2c4bf6db4b7ac96f885b4f7713fe5ed2a4f Mon Sep 17 00:00:00 2001 From: Uwe Bonnes Date: Tue, 5 Mar 2019 15:35:19 +0100 Subject: [PATCH] jtag: Move device list to it's own file to allow reuse. --- src/Makefile | 1 + src/target/jtag_devs.c | 59 ++++++++++++++++++++++++++++++++++++++++++ src/target/jtag_devs.h | 28 ++++++++++++++++++++ src/target/jtag_scan.c | 41 +---------------------------- src/target/jtag_scan.h | 6 +++-- 5 files changed, 93 insertions(+), 42 deletions(-) create mode 100644 src/target/jtag_devs.c create mode 100644 src/target/jtag_devs.h diff --git a/src/Makefile b/src/Makefile index 27d03ec6..396bfecb 100644 --- a/src/Makefile +++ b/src/Makefile @@ -34,6 +34,7 @@ SRC = \ gdb_hostio.c \ gdb_packet.c \ hex_utils.c \ + jtag_devs.c \ lmi.c \ lpc_common.c \ lpc11xx.c \ diff --git a/src/target/jtag_devs.c b/src/target/jtag_devs.c new file mode 100644 index 00000000..b835e1f1 --- /dev/null +++ b/src/target/jtag_devs.c @@ -0,0 +1,59 @@ +/* + * This file is part of the Black Magic Debug project. + * + * Copyright (C) 2011 Black Sphere Technologies Ltd. + * Written by Gareth McMullin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "general.h" +#include "jtag_scan.h" +#include "adiv5.h" +#include "jtag_devs.h" + +jtag_dev_descr_t dev_descr[] = { + {.idcode = 0x0BA00477, .idmask = 0x0FFF0FFF, + .descr = "ARM Limited: ADIv5 JTAG-DP port.", + .handler = adiv5_jtag_dp_handler}, + {.idcode = 0x06410041, .idmask = 0x0FFFFFFF, + .descr = "ST Microelectronics: STM32, Medium density."}, + {.idcode = 0x06412041, .idmask = 0x0FFFFFFF, + .descr = "ST Microelectronics: STM32, Low density."}, + {.idcode = 0x06414041, .idmask = 0x0FFFFFFF, + .descr = "ST Microelectronics: STM32, High density."}, + {.idcode = 0x06416041, .idmask = 0x0FFFFFFF, + .descr = "ST Microelectronics: STM32L."}, + {.idcode = 0x06418041, .idmask = 0x0FFFFFFF, + .descr = "ST Microelectronics: STM32, Connectivity Line."}, + {.idcode = 0x06420041, .idmask = 0x0FFFFFFF, + .descr = "ST Microelectronics: STM32, Value Line."}, + {.idcode = 0x06428041, .idmask = 0x0FFFFFFF, + .descr = "ST Microelectronics: STM32, Value Line, High density."}, + {.idcode = 0x06411041, .idmask = 0xFFFFFFFF, + .descr = "ST Microelectronics: STM32F2xx."}, + {.idcode = 0x06413041 , .idmask = 0xFFFFFFFF, + .descr = "ST Microelectronics: STM32F4xx."}, + {.idcode = 0x0BB11477 , .idmask = 0xFFFFFFFF, + .descr = "NPX: LPC11C24."}, + {.idcode = 0x4BA00477 , .idmask = 0xFFFFFFFF, + .descr = "NXP: LPC17xx family."}, +/* Just for fun, unsupported */ + {.idcode = 0x8940303F, .idmask = 0xFFFFFFFF, .descr = "ATMEL: ATMega16."}, + {.idcode = 0x0792603F, .idmask = 0xFFFFFFFF, .descr = "ATMEL: AT91SAM9261."}, + {.idcode = 0x20270013, .idmask = 0xFFFFFFFF, .descr = "Intel: i80386ex."}, + {.idcode = 0x07B7617F, .idmask = 0xFFFFFFFF, .descr = "Broadcom: BCM2835."}, + {.idcode = 0x4BA00477, .idmask = 0xFFFFFFFF, .descr = "Broadcom: BCM2836."}, + {.idcode = 0, .idmask = 0, .descr = "Unknown"}, +}; diff --git a/src/target/jtag_devs.h b/src/target/jtag_devs.h new file mode 100644 index 00000000..47d17d0b --- /dev/null +++ b/src/target/jtag_devs.h @@ -0,0 +1,28 @@ +/* + * This file is part of the Black Magic Debug project. + * + * Copyright (C) 2011 Black Sphere Technologies Ltd. + * Written by Gareth McMullin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +typedef const struct jtag_dev_descr_s { + const uint32_t idcode; + const uint32_t idmask; + const char * const descr; + void (*const handler)(jtag_dev_t *dev); +} jtag_dev_descr_t; +extern jtag_dev_descr_t dev_descr[]; + diff --git a/src/target/jtag_scan.c b/src/target/jtag_scan.c index 5487efc0..91935ad7 100644 --- a/src/target/jtag_scan.c +++ b/src/target/jtag_scan.c @@ -28,50 +28,11 @@ #include "jtag_scan.h" #include "target.h" #include "adiv5.h" +#include "jtag_devs.h" struct jtag_dev_s jtag_devs[JTAG_MAX_DEVS+1]; int jtag_dev_count; -static const struct jtag_dev_descr_s { - const uint32_t idcode; - const uint32_t idmask; - const char * const descr; - void (*const handler)(jtag_dev_t *dev); -} dev_descr[] = { - {.idcode = 0x0BA00477, .idmask = 0x0FFF0FFF, - .descr = "ARM Limited: ADIv5 JTAG-DP port.", - .handler = adiv5_jtag_dp_handler}, - {.idcode = 0x06410041, .idmask = 0x0FFFFFFF, - .descr = "ST Microelectronics: STM32, Medium density."}, - {.idcode = 0x06412041, .idmask = 0x0FFFFFFF, - .descr = "ST Microelectronics: STM32, Low density."}, - {.idcode = 0x06414041, .idmask = 0x0FFFFFFF, - .descr = "ST Microelectronics: STM32, High density."}, - {.idcode = 0x06416041, .idmask = 0x0FFFFFFF, - .descr = "ST Microelectronics: STM32L."}, - {.idcode = 0x06418041, .idmask = 0x0FFFFFFF, - .descr = "ST Microelectronics: STM32, Connectivity Line."}, - {.idcode = 0x06420041, .idmask = 0x0FFFFFFF, - .descr = "ST Microelectronics: STM32, Value Line."}, - {.idcode = 0x06428041, .idmask = 0x0FFFFFFF, - .descr = "ST Microelectronics: STM32, Value Line, High density."}, - {.idcode = 0x06411041, .idmask = 0xFFFFFFFF, - .descr = "ST Microelectronics: STM32F2xx."}, - {.idcode = 0x06413041 , .idmask = 0xFFFFFFFF, - .descr = "ST Microelectronics: STM32F4xx."}, - {.idcode = 0x0BB11477 , .idmask = 0xFFFFFFFF, - .descr = "NPX: LPC11C24."}, - {.idcode = 0x4BA00477 , .idmask = 0xFFFFFFFF, - .descr = "NXP: LPC17xx family."}, -/* Just for fun, unsupported */ - {.idcode = 0x8940303F, .idmask = 0xFFFFFFFF, .descr = "ATMEL: ATMega16."}, - {.idcode = 0x0792603F, .idmask = 0xFFFFFFFF, .descr = "ATMEL: AT91SAM9261."}, - {.idcode = 0x20270013, .idmask = 0xFFFFFFFF, .descr = "Intel: i80386ex."}, - {.idcode = 0x07B7617F, .idmask = 0xFFFFFFFF, .descr = "Broadcom: BCM2835."}, - {.idcode = 0x4BA00477, .idmask = 0xFFFFFFFF, .descr = "Broadcom: BCM2836."}, - {.idcode = 0, .idmask = 0, .descr = "Unknown"}, -}; - /* bucket of ones for don't care TDI */ static const uint8_t ones[] = "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"; diff --git a/src/target/jtag_scan.h b/src/target/jtag_scan.h index 3c723f4a..cd468018 100644 --- a/src/target/jtag_scan.h +++ b/src/target/jtag_scan.h @@ -25,6 +25,7 @@ #define JTAG_MAX_IR_LEN 16 typedef struct jtag_dev_s { +#if !defined(JTAG_HL) union { uint8_t dev; uint8_t dr_prescan; @@ -34,11 +35,12 @@ typedef struct jtag_dev_s { uint8_t ir_len; uint8_t ir_prescan; uint8_t ir_postscan; - +#endif uint32_t idcode; const char *descr; - +#if !defined(JTAG_HL) uint32_t current_ir; +#endif } jtag_dev_t;