This is an automated email from Gerrit. "Antonio Borneo <borneo.anto...@gmail.com>" just uploaded a new patch set to Gerrit, which you can find at https://review.openocd.org/c/openocd/+/8675
-- gerrit commit 5b6980fd16904397c362ce7a5b9b8792a27cd4e1 Author: Antonio Borneo <borneo.anto...@gmail.com> Date: Sun Dec 22 23:02:33 2024 +0100 adapter: use enum for driver's transports In every driver, replace the array of strings with an array of enums to list the available transports. Actually it would have been easier using a bitfield with a bit per transport, but we would have lost the information of which is the first listed transport. Such first transport is the default when no command 'transport select' is used. Change-Id: I4976583f1a38fdcc1f85045023dc7c629001f743 Signed-off-by: Antonio Borneo <borneo.anto...@gmail.com> diff --git a/src/jtag/adapter.c b/src/jtag/adapter.c index d67e73a8a3..3ce31cedf9 100644 --- a/src/jtag/adapter.c +++ b/src/jtag/adapter.c @@ -24,7 +24,6 @@ */ struct adapter_driver *adapter_driver; -const char * const jtag_only[] = { "jtag", NULL }; enum adapter_clk_mode { CLOCK_MODE_UNSELECTED = 0, @@ -446,7 +445,7 @@ COMMAND_HANDLER(handle_adapter_driver_command) adapter_driver = adapter_drivers[i]; - return allow_transports(CMD_CTX, adapter_driver->transports); + return allow_transports(CMD_CTX, adapter_driver->transports_id); } /* no valid adapter driver is found (i.e. the configuration option diff --git a/src/jtag/drivers/am335xgpio.c b/src/jtag/drivers/am335xgpio.c index 9bb7ea7d13..e530333900 100644 --- a/src/jtag/drivers/am335xgpio.c +++ b/src/jtag/drivers/am335xgpio.c @@ -350,8 +350,6 @@ static const struct command_registration am335xgpio_command_handlers[] = { COMMAND_REGISTRATION_DONE }; -static const char * const am335xgpio_transports[] = { "jtag", "swd", NULL }; - static struct jtag_interface am335xgpio_interface = { .supported = DEBUG_CAP_TMS_SEQ, .execute_queue = bitbang_execute_queue, @@ -494,7 +492,7 @@ static int am335xgpio_quit(void) struct adapter_driver am335xgpio_adapter_driver = { .name = "am335xgpio", - .transports = am335xgpio_transports, + .transports_id = { TRANSPORT_JTAG, TRANSPORT_SWD }, .commands = am335xgpio_command_handlers, .init = am335xgpio_init, diff --git a/src/jtag/drivers/amt_jtagaccel.c b/src/jtag/drivers/amt_jtagaccel.c index 489cb24713..5c0efecfdf 100644 --- a/src/jtag/drivers/amt_jtagaccel.c +++ b/src/jtag/drivers/amt_jtagaccel.c @@ -579,7 +579,7 @@ static struct jtag_interface amt_jtagaccel_interface = { struct adapter_driver amt_jtagaccel_adapter_driver = { .name = "amt_jtagaccel", - .transports = jtag_only, + .transports_id = { TRANSPORT_JTAG }, .commands = amtjtagaccel_command_handlers, .init = amt_jtagaccel_init, diff --git a/src/jtag/drivers/angie.c b/src/jtag/drivers/angie.c index 47628fef74..1f54a2940e 100644 --- a/src/jtag/drivers/angie.c +++ b/src/jtag/drivers/angie.c @@ -2388,7 +2388,7 @@ static struct jtag_interface angie_interface = { struct adapter_driver angie_adapter_driver = { .name = "angie", - .transports = jtag_only, + .transports_id = { TRANSPORT_JTAG }, .init = angie_init, .quit = angie_quit, diff --git a/src/jtag/drivers/arm-jtag-ew.c b/src/jtag/drivers/arm-jtag-ew.c index aaed16db6e..7bdc978717 100644 --- a/src/jtag/drivers/arm-jtag-ew.c +++ b/src/jtag/drivers/arm-jtag-ew.c @@ -486,7 +486,7 @@ static struct jtag_interface armjtagew_interface = { struct adapter_driver armjtagew_adapter_driver = { .name = "arm-jtag-ew", - .transports = jtag_only, + .transports_id = { TRANSPORT_JTAG }, .commands = armjtagew_command_handlers, .init = armjtagew_init, diff --git a/src/jtag/drivers/at91rm9200.c b/src/jtag/drivers/at91rm9200.c index ba9ee5e34d..7b4c93953f 100644 --- a/src/jtag/drivers/at91rm9200.c +++ b/src/jtag/drivers/at91rm9200.c @@ -186,7 +186,7 @@ static struct jtag_interface at91rm9200_interface = { struct adapter_driver at91rm9200_adapter_driver = { .name = "at91rm9200", - .transports = jtag_only, + .transports_id = { TRANSPORT_JTAG }, .commands = at91rm9200_command_handlers, .init = at91rm9200_init, diff --git a/src/jtag/drivers/bcm2835gpio.c b/src/jtag/drivers/bcm2835gpio.c index 2c2061daec..fcdf8c3a6c 100644 --- a/src/jtag/drivers/bcm2835gpio.c +++ b/src/jtag/drivers/bcm2835gpio.c @@ -578,15 +578,13 @@ static int bcm2835gpio_quit(void) } -static const char * const bcm2835_transports[] = { "jtag", "swd", NULL }; - static struct jtag_interface bcm2835gpio_interface = { .supported = DEBUG_CAP_TMS_SEQ, .execute_queue = bitbang_execute_queue, }; struct adapter_driver bcm2835gpio_adapter_driver = { .name = "bcm2835gpio", - .transports = bcm2835_transports, + .transports_id = { TRANSPORT_JTAG, TRANSPORT_SWD }, .commands = bcm2835gpio_command_handlers, .init = bcm2835gpio_init, diff --git a/src/jtag/drivers/buspirate.c b/src/jtag/drivers/buspirate.c index 6f8df5adad..5a509a5222 100644 --- a/src/jtag/drivers/buspirate.c +++ b/src/jtag/drivers/buspirate.c @@ -534,15 +534,13 @@ static const struct swd_driver buspirate_swd = { .run = buspirate_swd_run_queue, }; -static const char * const buspirate_transports[] = { "jtag", "swd", NULL }; - static struct jtag_interface buspirate_interface = { .execute_queue = buspirate_execute_queue, }; struct adapter_driver buspirate_adapter_driver = { .name = "buspirate", - .transports = buspirate_transports, + .transports_id = { TRANSPORT_JTAG, TRANSPORT_SWD }, .commands = buspirate_command_handlers, .init = buspirate_init, diff --git a/src/jtag/drivers/cmsis_dap.c b/src/jtag/drivers/cmsis_dap.c index 2f776cb387..4748d3f3e0 100644 --- a/src/jtag/drivers/cmsis_dap.c +++ b/src/jtag/drivers/cmsis_dap.c @@ -2304,8 +2304,6 @@ static const struct swd_driver cmsis_dap_swd_driver = { .run = cmsis_dap_swd_run_queue, }; -static const char * const cmsis_dap_transport[] = { "swd", "jtag", NULL }; - static struct jtag_interface cmsis_dap_interface = { .supported = DEBUG_CAP_TMS_SEQ, .execute_queue = cmsis_dap_execute_queue, @@ -2313,7 +2311,7 @@ static struct jtag_interface cmsis_dap_interface = { struct adapter_driver cmsis_dap_adapter_driver = { .name = "cmsis-dap", - .transports = cmsis_dap_transport, + .transports_id = { TRANSPORT_SWD, TRANSPORT_JTAG }, .commands = cmsis_dap_command_handlers, .init = cmsis_dap_init, diff --git a/src/jtag/drivers/dmem.c b/src/jtag/drivers/dmem.c index 4dc582115c..6e3cbe4606 100644 --- a/src/jtag/drivers/dmem.c +++ b/src/jtag/drivers/dmem.c @@ -604,11 +604,9 @@ static const struct dap_ops dmem_dap_ops = { .run = dmem_dp_run, }; -static const char *const dmem_dap_transport[] = { "dapdirect_swd", NULL }; - struct adapter_driver dmem_dap_adapter_driver = { .name = "dmem", - .transports = dmem_dap_transport, + .transports_id = { TRANSPORT_DAPDIRECT_SWD }, .commands = dmem_dap_command_handlers, .init = dmem_dap_init, diff --git a/src/jtag/drivers/dummy.c b/src/jtag/drivers/dummy.c index 4fe598fe32..be9b4ac468 100644 --- a/src/jtag/drivers/dummy.c +++ b/src/jtag/drivers/dummy.c @@ -140,7 +140,7 @@ static struct jtag_interface dummy_interface = { struct adapter_driver dummy_adapter_driver = { .name = "dummy", - .transports = jtag_only, + .transports_id = { TRANSPORT_JTAG }, .commands = dummy_command_handlers, .init = &dummy_init, diff --git a/src/jtag/drivers/ep93xx.c b/src/jtag/drivers/ep93xx.c index c3e841d37a..85240bacd2 100644 --- a/src/jtag/drivers/ep93xx.c +++ b/src/jtag/drivers/ep93xx.c @@ -46,7 +46,7 @@ static struct jtag_interface ep93xx_interface = { struct adapter_driver ep93xx_adapter_driver = { .name = "ep93xx", - .transports = jtag_only, + .transports_id = { TRANSPORT_JTAG }, .init = ep93xx_init, .quit = ep93xx_quit, diff --git a/src/jtag/drivers/esp_usb_jtag.c b/src/jtag/drivers/esp_usb_jtag.c index 9504059543..8a64b4f7f8 100644 --- a/src/jtag/drivers/esp_usb_jtag.c +++ b/src/jtag/drivers/esp_usb_jtag.c @@ -784,7 +784,7 @@ static struct jtag_interface esp_usb_jtag_interface = { struct adapter_driver esp_usb_adapter_driver = { .name = "esp_usb_jtag", - .transports = jtag_only, + .transports_id = { TRANSPORT_JTAG }, .commands = esp_usb_jtag_commands, .init = esp_usb_jtag_init, diff --git a/src/jtag/drivers/ft232r.c b/src/jtag/drivers/ft232r.c index 6dc1304930..24eb282479 100644 --- a/src/jtag/drivers/ft232r.c +++ b/src/jtag/drivers/ft232r.c @@ -900,7 +900,7 @@ static struct jtag_interface ft232r_interface = { struct adapter_driver ft232r_adapter_driver = { .name = "ft232r", - .transports = jtag_only, + .transports_id = { TRANSPORT_JTAG }, .commands = ft232r_command_handlers, .init = ft232r_init, diff --git a/src/jtag/drivers/ftdi.c b/src/jtag/drivers/ftdi.c index 42ecda117b..9ad08b342b 100644 --- a/src/jtag/drivers/ftdi.c +++ b/src/jtag/drivers/ftdi.c @@ -1247,8 +1247,6 @@ static const struct swd_driver ftdi_swd = { .run = ftdi_swd_run_queue, }; -static const char * const ftdi_transports[] = { "jtag", "swd", NULL }; - static struct jtag_interface ftdi_interface = { .supported = DEBUG_CAP_TMS_SEQ, .execute_queue = ftdi_execute_queue, @@ -1256,7 +1254,7 @@ static struct jtag_interface ftdi_interface = { struct adapter_driver ftdi_adapter_driver = { .name = "ftdi", - .transports = ftdi_transports, + .transports_id = { TRANSPORT_JTAG, TRANSPORT_SWD }, .commands = ftdi_command_handlers, .init = ftdi_initialize, diff --git a/src/jtag/drivers/gw16012.c b/src/jtag/drivers/gw16012.c index d0fe43fdb1..c2885fa973 100644 --- a/src/jtag/drivers/gw16012.c +++ b/src/jtag/drivers/gw16012.c @@ -514,7 +514,7 @@ static struct jtag_interface gw16012_interface = { struct adapter_driver gw16012_adapter_driver = { .name = "gw16012", - .transports = jtag_only, + .transports_id = { TRANSPORT_JTAG }, .commands = gw16012_command_handlers, .init = gw16012_init, diff --git a/src/jtag/drivers/imx_gpio.c b/src/jtag/drivers/imx_gpio.c index d44b1278c0..7fa658247b 100644 --- a/src/jtag/drivers/imx_gpio.c +++ b/src/jtag/drivers/imx_gpio.c @@ -417,8 +417,6 @@ static const struct command_registration imx_gpio_command_handlers[] = { COMMAND_REGISTRATION_DONE }; -static const char * const imx_gpio_transports[] = { "jtag", "swd", NULL }; - static struct jtag_interface imx_gpio_interface = { .supported = DEBUG_CAP_TMS_SEQ, .execute_queue = bitbang_execute_queue, @@ -426,7 +424,7 @@ static struct jtag_interface imx_gpio_interface = { struct adapter_driver imx_gpio_adapter_driver = { .name = "imx_gpio", - .transports = imx_gpio_transports, + .transports_id = { TRANSPORT_JTAG, TRANSPORT_SWD }, .commands = imx_gpio_command_handlers, .init = imx_gpio_init, diff --git a/src/jtag/drivers/jlink.c b/src/jtag/drivers/jlink.c index 74660744a7..231e127579 100644 --- a/src/jtag/drivers/jlink.c +++ b/src/jtag/drivers/jlink.c @@ -2264,15 +2264,13 @@ static const struct swd_driver jlink_swd = { .run = &jlink_swd_run_queue, }; -static const char * const jlink_transports[] = { "jtag", "swd", NULL }; - static struct jtag_interface jlink_interface = { .execute_queue = &jlink_execute_queue, }; struct adapter_driver jlink_adapter_driver = { .name = "jlink", - .transports = jlink_transports, + .transports_id = { TRANSPORT_JTAG, TRANSPORT_SWD }, .commands = jlink_command_handlers, .init = &jlink_init, diff --git a/src/jtag/drivers/jtag_dpi.c b/src/jtag/drivers/jtag_dpi.c index 046186a619..c848ba0e8c 100644 --- a/src/jtag/drivers/jtag_dpi.c +++ b/src/jtag/drivers/jtag_dpi.c @@ -398,7 +398,7 @@ static struct jtag_interface jtag_dpi_interface = { struct adapter_driver jtag_dpi_adapter_driver = { .name = "jtag_dpi", - .transports = jtag_only, + .transports_id = { TRANSPORT_JTAG }, .commands = jtag_dpi_command_handlers, .init = jtag_dpi_init, .quit = jtag_dpi_quit, diff --git a/src/jtag/drivers/jtag_vpi.c b/src/jtag/drivers/jtag_vpi.c index 079bb1d0a1..66b163c79f 100644 --- a/src/jtag/drivers/jtag_vpi.c +++ b/src/jtag/drivers/jtag_vpi.c @@ -666,7 +666,7 @@ static struct jtag_interface jtag_vpi_interface = { struct adapter_driver jtag_vpi_adapter_driver = { .name = "jtag_vpi", - .transports = jtag_only, + .transports_id = { TRANSPORT_JTAG }, .commands = jtag_vpi_command_handlers, .init = jtag_vpi_init, diff --git a/src/jtag/drivers/kitprog.c b/src/jtag/drivers/kitprog.c index 98b0d16681..ad20c57afc 100644 --- a/src/jtag/drivers/kitprog.c +++ b/src/jtag/drivers/kitprog.c @@ -908,11 +908,9 @@ static const struct swd_driver kitprog_swd = { .run = kitprog_swd_run_queue, }; -static const char * const kitprog_transports[] = { "swd", NULL }; - struct adapter_driver kitprog_adapter_driver = { .name = "kitprog", - .transports = kitprog_transports, + .transports_id = { TRANSPORT_SWD }, .commands = kitprog_command_handlers, .init = kitprog_init, diff --git a/src/jtag/drivers/linuxgpiod.c b/src/jtag/drivers/linuxgpiod.c index fa14e42d6e..64b2801e74 100644 --- a/src/jtag/drivers/linuxgpiod.c +++ b/src/jtag/drivers/linuxgpiod.c @@ -425,8 +425,6 @@ out_error: return ERROR_JTAG_INIT_FAILED; } -static const char *const linuxgpiod_transport[] = { "swd", "jtag", NULL }; - static struct jtag_interface linuxgpiod_interface = { .supported = DEBUG_CAP_TMS_SEQ, .execute_queue = bitbang_execute_queue, @@ -434,7 +432,7 @@ static struct jtag_interface linuxgpiod_interface = { struct adapter_driver linuxgpiod_adapter_driver = { .name = "linuxgpiod", - .transports = linuxgpiod_transport, + .transports_id = { TRANSPORT_SWD, TRANSPORT_JTAG }, .init = linuxgpiod_init, .quit = linuxgpiod_quit, diff --git a/src/jtag/drivers/opendous.c b/src/jtag/drivers/opendous.c index e828d46d04..31ab287c97 100644 --- a/src/jtag/drivers/opendous.c +++ b/src/jtag/drivers/opendous.c @@ -229,7 +229,7 @@ static struct jtag_interface opendous_interface = { struct adapter_driver opendous_adapter_driver = { .name = "opendous", - .transports = jtag_only, + .transports_id = { TRANSPORT_JTAG }, .commands = opendous_command_handlers, .init = opendous_init, diff --git a/src/jtag/drivers/openjtag.c b/src/jtag/drivers/openjtag.c index 0ae885e871..7d538b47c5 100644 --- a/src/jtag/drivers/openjtag.c +++ b/src/jtag/drivers/openjtag.c @@ -931,7 +931,7 @@ static struct jtag_interface openjtag_interface = { struct adapter_driver openjtag_adapter_driver = { .name = "openjtag", - .transports = jtag_only, + .transports_id = { TRANSPORT_JTAG }, .commands = openjtag_command_handlers, .init = openjtag_init, diff --git a/src/jtag/drivers/osbdm.c b/src/jtag/drivers/osbdm.c index c41a0e13c5..26b74ddafd 100644 --- a/src/jtag/drivers/osbdm.c +++ b/src/jtag/drivers/osbdm.c @@ -684,7 +684,7 @@ static struct jtag_interface osbdm_interface = { struct adapter_driver osbdm_adapter_driver = { .name = "osbdm", - .transports = jtag_only, + .transports_id = { TRANSPORT_JTAG }, .init = osbdm_init, .quit = osbdm_quit, diff --git a/src/jtag/drivers/parport.c b/src/jtag/drivers/parport.c index bdd3388955..318d2a4052 100644 --- a/src/jtag/drivers/parport.c +++ b/src/jtag/drivers/parport.c @@ -533,7 +533,7 @@ static struct jtag_interface parport_interface = { struct adapter_driver parport_adapter_driver = { .name = "parport", - .transports = jtag_only, + .transports_id = { TRANSPORT_JTAG }, .commands = parport_command_handlers, .init = parport_init, diff --git a/src/jtag/drivers/presto.c b/src/jtag/drivers/presto.c index f6e13f7eb4..3ddf9b6f6f 100644 --- a/src/jtag/drivers/presto.c +++ b/src/jtag/drivers/presto.c @@ -528,7 +528,7 @@ static struct jtag_interface presto_interface = { struct adapter_driver presto_adapter_driver = { .name = "presto", - .transports = jtag_only, + .transports_id = { TRANSPORT_JTAG }, .init = presto_jtag_init, .quit = presto_jtag_quit, diff --git a/src/jtag/drivers/remote_bitbang.c b/src/jtag/drivers/remote_bitbang.c index 91a8532b79..4d15e9efa5 100644 --- a/src/jtag/drivers/remote_bitbang.c +++ b/src/jtag/drivers/remote_bitbang.c @@ -412,8 +412,6 @@ COMMAND_HANDLER(remote_bitbang_handle_remote_bitbang_host_command) return ERROR_COMMAND_SYNTAX_ERROR; } -static const char * const remote_bitbang_transports[] = { "jtag", "swd", NULL }; - COMMAND_HANDLER(remote_bitbang_handle_remote_bitbang_use_remote_sleep_command) { if (CMD_ARGC != 1) @@ -484,7 +482,7 @@ static struct jtag_interface remote_bitbang_interface = { struct adapter_driver remote_bitbang_adapter_driver = { .name = "remote_bitbang", - .transports = remote_bitbang_transports, + .transports_id = { TRANSPORT_JTAG, TRANSPORT_SWD }, .commands = remote_bitbang_command_handlers, .init = &remote_bitbang_init, diff --git a/src/jtag/drivers/rlink.c b/src/jtag/drivers/rlink.c index f4a4fcba94..7e3b1ebf7b 100644 --- a/src/jtag/drivers/rlink.c +++ b/src/jtag/drivers/rlink.c @@ -1675,7 +1675,7 @@ static struct jtag_interface rlink_interface = { struct adapter_driver rlink_adapter_driver = { .name = "rlink", - .transports = jtag_only, + .transports_id = { TRANSPORT_JTAG }, .init = rlink_init, .quit = rlink_quit, diff --git a/src/jtag/drivers/rshim.c b/src/jtag/drivers/rshim.c index 21fc7fd378..c5c4856ce9 100644 --- a/src/jtag/drivers/rshim.c +++ b/src/jtag/drivers/rshim.c @@ -508,11 +508,9 @@ static const struct dap_ops rshim_dap_ops = { .quit = rshim_disconnect, }; -static const char *const rshim_dap_transport[] = { "dapdirect_swd", NULL }; - struct adapter_driver rshim_dap_adapter_driver = { .name = "rshim", - .transports = rshim_dap_transport, + .transports_id = { TRANSPORT_DAPDIRECT_SWD }, .commands = rshim_dap_command_handlers, .init = rshim_dap_init, diff --git a/src/jtag/drivers/stlink_usb.c b/src/jtag/drivers/stlink_usb.c index d77f28b0f4..09f5e88baf 100644 --- a/src/jtag/drivers/stlink_usb.c +++ b/src/jtag/drivers/stlink_usb.c @@ -5217,11 +5217,9 @@ static const struct swim_driver stlink_swim_ops = { .reconnect = stlink_swim_op_reconnect, }; -static const char *const stlink_dap_transport[] = { "dapdirect_swd", "dapdirect_jtag", "swim", NULL }; - struct adapter_driver stlink_dap_adapter_driver = { .name = "st-link", - .transports = stlink_dap_transport, + .transports_id = { TRANSPORT_DAPDIRECT_SWD, TRANSPORT_DAPDIRECT_JTAG, TRANSPORT_SWIM }, .commands = stlink_dap_command_handlers, .init = stlink_dap_init, diff --git a/src/jtag/drivers/sysfsgpio.c b/src/jtag/drivers/sysfsgpio.c index a5f5fd3ac0..a9261c14bb 100644 --- a/src/jtag/drivers/sysfsgpio.c +++ b/src/jtag/drivers/sysfsgpio.c @@ -545,8 +545,6 @@ static const struct command_registration sysfsgpio_command_handlers[] = { static int sysfsgpio_init(void); static int sysfsgpio_quit(void); -static const char * const sysfsgpio_transports[] = { "jtag", "swd", NULL }; - static struct jtag_interface sysfsgpio_interface = { .supported = DEBUG_CAP_TMS_SEQ, .execute_queue = bitbang_execute_queue, @@ -554,7 +552,7 @@ static struct jtag_interface sysfsgpio_interface = { struct adapter_driver sysfsgpio_adapter_driver = { .name = "sysfsgpio", - .transports = sysfsgpio_transports, + .transports_id = { TRANSPORT_JTAG, TRANSPORT_SWD }, .commands = sysfsgpio_command_handlers, .init = sysfsgpio_init, diff --git a/src/jtag/drivers/ulink.c b/src/jtag/drivers/ulink.c index 3a248e388f..169ede0da1 100644 --- a/src/jtag/drivers/ulink.c +++ b/src/jtag/drivers/ulink.c @@ -2271,7 +2271,7 @@ static struct jtag_interface ulink_interface = { struct adapter_driver ulink_adapter_driver = { .name = "ulink", - .transports = jtag_only, + .transports_id = { TRANSPORT_JTAG }, .commands = ulink_command_handlers, .init = ulink_init, diff --git a/src/jtag/drivers/usb_blaster/usb_blaster.c b/src/jtag/drivers/usb_blaster/usb_blaster.c index 496466ca3d..38b84bee49 100644 --- a/src/jtag/drivers/usb_blaster/usb_blaster.c +++ b/src/jtag/drivers/usb_blaster/usb_blaster.c @@ -1057,7 +1057,7 @@ static struct jtag_interface usb_blaster_interface = { struct adapter_driver usb_blaster_adapter_driver = { .name = "usb_blaster", - .transports = jtag_only, + .transports_id = { TRANSPORT_JTAG }, .commands = ublast_command_handlers, .init = ublast_init, diff --git a/src/jtag/drivers/usbprog.c b/src/jtag/drivers/usbprog.c index 6e3b3ba242..e548c58da7 100644 --- a/src/jtag/drivers/usbprog.c +++ b/src/jtag/drivers/usbprog.c @@ -590,7 +590,7 @@ static struct jtag_interface usbprog_interface = { struct adapter_driver usbprog_adapter_driver = { .name = "usbprog", - .transports = jtag_only, + .transports_id = { TRANSPORT_JTAG }, .init = usbprog_init, .quit = usbprog_quit, diff --git a/src/jtag/drivers/vdebug.c b/src/jtag/drivers/vdebug.c index 691e576e53..93dd924a2d 100644 --- a/src/jtag/drivers/vdebug.c +++ b/src/jtag/drivers/vdebug.c @@ -1342,11 +1342,9 @@ static const struct dap_ops vdebug_dap_ops = { .quit = NULL, /* optional */ }; -static const char *const vdebug_transports[] = { "jtag", "dapdirect_swd", NULL }; - struct adapter_driver vdebug_adapter_driver = { .name = "vdebug", - .transports = vdebug_transports, + .transports_id = { TRANSPORT_JTAG, TRANSPORT_DAPDIRECT_SWD }, .speed = vdebug_jtag_speed, .khz = vdebug_jtag_khz, .speed_div = vdebug_jtag_div, diff --git a/src/jtag/drivers/vsllink.c b/src/jtag/drivers/vsllink.c index ca142177ec..78b27e208e 100644 --- a/src/jtag/drivers/vsllink.c +++ b/src/jtag/drivers/vsllink.c @@ -913,8 +913,6 @@ static const struct command_registration vsllink_command_handlers[] = { COMMAND_REGISTRATION_DONE }; -static const char * const vsllink_transports[] = {"jtag", "swd", NULL}; - static const struct swd_driver vsllink_swd_driver = { .init = vsllink_swd_init, .switch_seq = vsllink_swd_switch_seq, @@ -930,7 +928,7 @@ static struct jtag_interface vsllink_interface = { struct adapter_driver vsllink_adapter_driver = { .name = "vsllink", - .transports = vsllink_transports, + .transports_id = { TRANSPORT_JTAG, TRANSPORT_SWD }, .commands = vsllink_command_handlers, .init = vsllink_init, diff --git a/src/jtag/drivers/xds110.c b/src/jtag/drivers/xds110.c index 6e12b9a790..736fa4e149 100644 --- a/src/jtag/drivers/xds110.c +++ b/src/jtag/drivers/xds110.c @@ -2058,15 +2058,13 @@ static const struct swd_driver xds110_swd_driver = { .run = xds110_swd_run_queue, }; -static const char * const xds110_transport[] = { "swd", "jtag", NULL }; - static struct jtag_interface xds110_interface = { .execute_queue = xds110_execute_queue, }; struct adapter_driver xds110_adapter_driver = { .name = "xds110", - .transports = xds110_transport, + .transports_id = { TRANSPORT_SWD, TRANSPORT_JTAG }, .commands = xds110_command_handlers, .init = xds110_init, diff --git a/src/jtag/drivers/xlnx-pcie-xvc.c b/src/jtag/drivers/xlnx-pcie-xvc.c index d90a022cda..3f49498735 100644 --- a/src/jtag/drivers/xlnx-pcie-xvc.c +++ b/src/jtag/drivers/xlnx-pcie-xvc.c @@ -690,11 +690,9 @@ static const struct swd_driver xlnx_pcie_xvc_swd_ops = { .run = xlnx_pcie_xvc_swd_run_queue, }; -static const char * const xlnx_pcie_xvc_transports[] = { "jtag", "swd", NULL }; - struct adapter_driver xlnx_pcie_xvc_adapter_driver = { .name = "xlnx_pcie_xvc", - .transports = xlnx_pcie_xvc_transports, + .transports_id = { TRANSPORT_JTAG, TRANSPORT_SWD }, .commands = xlnx_pcie_xvc_command_handlers, .init = &xlnx_pcie_xvc_init, diff --git a/src/jtag/hla/hla_interface.c b/src/jtag/hla/hla_interface.c index 96862b0d05..884b0377d7 100644 --- a/src/jtag/hla/hla_interface.c +++ b/src/jtag/hla/hla_interface.c @@ -367,7 +367,7 @@ static const struct command_registration hl_interface_command_handlers[] = { struct adapter_driver hl_adapter_driver = { .name = "hla", - .transports = hl_transports, + .transports_id = { TRANSPORT_HLA_SWD, TRANSPORT_HLA_JTAG }, .commands = hl_interface_command_handlers, .init = hl_interface_init, diff --git a/src/jtag/hla/hla_interface.h b/src/jtag/hla/hla_interface.h index f1550d9915..c0ee05498d 100644 --- a/src/jtag/hla/hla_interface.h +++ b/src/jtag/hla/hla_interface.h @@ -15,8 +15,6 @@ struct target; /** */ enum e_hl_transports; -/** */ -extern const char *hl_transports[]; #define HLA_MAX_USB_IDS 16 diff --git a/src/jtag/hla/hla_transport.c b/src/jtag/hla/hla_transport.c index 333825eff1..d8ece0776b 100644 --- a/src/jtag/hla/hla_transport.c +++ b/src/jtag/hla/hla_transport.c @@ -231,8 +231,6 @@ static struct transport hl_jtag_transport = { .override_target = hl_interface_override_target, }; -const char *hl_transports[] = { "hla_swd", "hla_jtag", NULL }; - static void hl_constructor(void) __attribute__ ((constructor)); static void hl_constructor(void) { diff --git a/src/jtag/interface.h b/src/jtag/interface.h index b448851dc4..3f5b700bc4 100644 --- a/src/jtag/interface.h +++ b/src/jtag/interface.h @@ -17,6 +17,7 @@ #include <jtag/jtag.h> #include <jtag/swim.h> #include <target/arm_tpiu_swo.h> +#include <transport/transport.h> /* @file * The "Cable Helper API" is what the cable drivers can use to help @@ -208,8 +209,12 @@ struct adapter_driver { /** The name of the interface driver. */ const char * const name; - /** transports supported in C code (NULL terminated vector) */ - const char * const *transports; + /** + * transports supported in C code (values from enum transport_id). + * The first value is the default when transport is not explicitly + * selected. + */ + unsigned char transports_id[TRANSPORTS_NUM]; /** * The interface driver may register additional commands to expose @@ -354,8 +359,6 @@ struct adapter_driver { const struct swim_driver *swim_ops; }; -extern const char * const jtag_only[]; - int adapter_resets(int assert_trst, int assert_srst); int adapter_assert_reset(void); int adapter_deassert_reset(void); diff --git a/src/transport/transport.c b/src/transport/transport.c index a28648858e..9f70ef163a 100644 --- a/src/transport/transport.c +++ b/src/transport/transport.c @@ -57,11 +57,11 @@ static const char * const transport_name[] = { static struct transport *transport_list; /** - * NULL-terminated Vector of names of transports which the + * NULL-terminated Vector of IDs of transports which the * currently selected debug adapter supports. This is declared * by the time that adapter is fully set up. */ -static const char * const *allowed_transports; +static const unsigned char *allowed_transports; /** * The transport being used for the current OpenOCD session. */ static struct transport *session; @@ -99,7 +99,7 @@ static int transport_select(struct command_context *ctx, const char *name) * to declare the set of transports supported by an adapter. When * there is only one member of that set, it is automatically selected. */ -int allow_transports(struct command_context *ctx, const char * const *vector) +int allow_transports(struct command_context *ctx, const unsigned char *vector) { /* NOTE: caller is required to provide only a list * of *valid* transport names @@ -120,8 +120,8 @@ int allow_transports(struct command_context *ctx, const char * const *vector) /* autoselect if there's no choice ... */ if (!vector[1]) { - LOG_INFO("only one transport option; autoselecting '%s'", vector[0]); - return transport_select(ctx, vector[0]); + LOG_INFO("only one transport option; autoselecting '%s'", transport_name[vector[0]]); + return transport_select(ctx, transport_name[vector[0]]); } return ERROR_OK; @@ -206,9 +206,9 @@ COMMAND_HANDLER(handle_transport_init) /* no session transport configured, print transports then fail */ LOG_ERROR("Transports available:"); - const char * const *vector = allowed_transports; + const unsigned char *vector = allowed_transports; while (*vector) { - LOG_ERROR("%s", *vector); + LOG_ERROR("%s", transport_name[*vector]); vector++; } return ERROR_FAIL; @@ -249,8 +249,9 @@ COMMAND_HANDLER(handle_transport_select) return ERROR_FAIL; } LOG_INFO("auto-selecting first available session transport \"%s\". " - "To override use 'transport select <transport>'.", allowed_transports[0]); - int retval = transport_select(CMD_CTX, allowed_transports[0]); + "To override use 'transport select <transport>'.", + transport_name[allowed_transports[0]]); + int retval = transport_select(CMD_CTX, transport_name[allowed_transports[0]]); if (retval != ERROR_OK) return retval; } @@ -280,7 +281,7 @@ COMMAND_HANDLER(handle_transport_select) } for (unsigned int i = 0; allowed_transports[i]; i++) { - if (!strcmp(allowed_transports[i], CMD_ARGV[0])) { + if (!strcmp(transport_name[allowed_transports[i]], CMD_ARGV[0])) { int retval = transport_select(CMD_CTX, CMD_ARGV[0]); if (retval != ERROR_OK) return retval; diff --git a/src/transport/transport.h b/src/transport/transport.h index 02b4f7515c..87437a070e 100644 --- a/src/transport/transport.h +++ b/src/transport/transport.h @@ -29,6 +29,8 @@ enum transport_id { TRANSPORT_INVALID, }; +#define TRANSPORTS_NUM (TRANSPORT_INVALID - 1) + /** * Wrapper for transport lifecycle operations. * @@ -93,7 +95,7 @@ const char *get_current_transport_name(void); int transport_register_commands(struct command_context *ctx); -int allow_transports(struct command_context *ctx, const char * const *vector); +int allow_transports(struct command_context *ctx, const unsigned char *vector); bool transport_is_jtag(void); bool transport_is_swd(void); --