From 2fdf6788e20d53f8368f508de5ff39627d8ce27a Mon Sep 17 00:00:00 2001 From: Marc Schink Date: Fri, 30 Jul 2021 18:29:01 +0200 Subject: [PATCH] drivers/bcm2835gpio: Group adapter commands Use a command group 'bcm2835gpio' with subcommands instead of individual commands with 'bcm2835gpio_' prefix. The old commands are still available for backward compatibility but marked as deprecated. Change-Id: I8f7b14273b1b2813ac3c9704605d175fa2053008 Signed-off-by: Marc Schink Reviewed-on: http://openocd.zylin.com/6396 Tested-by: jenkins Reviewed-by: Antonio Borneo --- doc/openocd.texi | 38 ++++++++--------- src/jtag/drivers/bcm2835gpio.c | 39 +++++++++++------ src/jtag/startup.tcl | 78 ++++++++++++++++++++++++++++++++++ 3 files changed, 122 insertions(+), 33 deletions(-) diff --git a/doc/openocd.texi b/doc/openocd.texi index aec6bbe4fc..5aab4ba1df 100644 --- a/doc/openocd.texi +++ b/doc/openocd.texi @@ -3197,67 +3197,67 @@ configuration on exit. See @file{interface/raspberrypi-native.cfg} for a sample config and pinout. -@deffn {Config Command} {bcm2835gpio_jtag_nums} @var{tck} @var{tms} @var{tdi} @var{tdo} +@deffn {Config Command} {bcm2835gpio jtag_nums} @var{tck} @var{tms} @var{tdi} @var{tdo} Set JTAG transport GPIO numbers for TCK, TMS, TDI, and TDO (in that order). Must be specified to enable JTAG transport. These pins can also be specified individually. @end deffn -@deffn {Config Command} {bcm2835gpio_tck_num} @var{tck} +@deffn {Config Command} {bcm2835gpio tck_num} @var{tck} Set TCK GPIO number. Must be specified to enable JTAG transport. Can also be -specified using the configuration command bcm2835gpio_jtag_nums. +specified using the configuration command @command{bcm2835gpio jtag_nums}. @end deffn -@deffn {Config Command} {bcm2835gpio_tms_num} @var{tms} +@deffn {Config Command} {bcm2835gpio tms_num} @var{tms} Set TMS GPIO number. Must be specified to enable JTAG transport. Can also be -specified using the configuration command bcm2835gpio_jtag_nums. +specified using the configuration command @command{bcm2835gpio jtag_nums}. @end deffn -@deffn {Config Command} {bcm2835gpio_tdo_num} @var{tdo} +@deffn {Config Command} {bcm2835gpio tdo_num} @var{tdo} Set TDO GPIO number. Must be specified to enable JTAG transport. Can also be -specified using the configuration command bcm2835gpio_jtag_nums. +specified using the configuration command @command{bcm2835gpio jtag_nums}. @end deffn -@deffn {Config Command} {bcm2835gpio_tdi_num} @var{tdi} +@deffn {Config Command} {bcm2835gpio tdi_num} @var{tdi} Set TDI GPIO number. Must be specified to enable JTAG transport. Can also be -specified using the configuration command bcm2835gpio_jtag_nums. +specified using the configuration command @command{bcm2835gpio jtag_nums}. @end deffn -@deffn {Config Command} {bcm2835gpio_swd_nums} @var{swclk} @var{swdio} +@deffn {Config Command} {bcm2835gpio swd_nums} @var{swclk} @var{swdio} Set SWD transport GPIO numbers for SWCLK and SWDIO (in that order). Must be specified to enable SWD transport. These pins can also be specified individually. @end deffn -@deffn {Config Command} {bcm2835gpio_swclk_num} @var{swclk} +@deffn {Config Command} {bcm2835gpio swclk_num} @var{swclk} Set SWCLK GPIO number. Must be specified to enable SWD transport. Can also be -specified using the configuration command bcm2835gpio_swd_nums. +specified using the configuration command @command{bcm2835gpio swd_nums}. @end deffn -@deffn {Config Command} {bcm2835gpio_swdio_num} @var{swdio} +@deffn {Config Command} {bcm2835gpio swdio_num} @var{swdio} Set SWDIO GPIO number. Must be specified to enable SWD transport. Can also be -specified using the configuration command bcm2835gpio_swd_nums. +specified using the configuration command @command{bcm2835gpio swd_nums}. @end deffn -@deffn {Config Command} {bcm2835gpio_swdio_dir_num} @var{swdio} @var{dir} +@deffn {Config Command} {bcm2835gpio swdio_dir_num} @var{swdio} @var{dir} Set SWDIO direction control pin GPIO number. If specified, this pin can be used to control the direction of an external buffer on the SWDIO pin (set=output mode, clear=input mode). If not specified, this feature is disabled. @end deffn -@deffn {Config Command} {bcm2835gpio_srst_num} @var{srst} +@deffn {Config Command} {bcm2835gpio srst_num} @var{srst} Set SRST GPIO number. Must be specified to enable SRST. @end deffn -@deffn {Config Command} {bcm2835gpio_trst_num} @var{trst} +@deffn {Config Command} {bcm2835gpio trst_num} @var{trst} Set TRST GPIO number. Must be specified to enable TRST. @end deffn -@deffn {Config Command} {bcm2835gpio_speed_coeffs} @var{speed_coeff} @var{speed_offset} +@deffn {Config Command} {bcm2835gpio speed_coeffs} @var{speed_coeff} @var{speed_offset} Set SPEED_COEFF and SPEED_OFFSET for delay calculations. If unspecified, speed_coeff defaults to 113714, and speed_offset defaults to 28. @end deffn -@deffn {Config Command} {bcm2835gpio_peripheral_base} @var{base} +@deffn {Config Command} {bcm2835gpio peripheral_base} @var{base} Set the peripheral base register address to access GPIOs. For the RPi1, use 0x20000000. For RPi2 and RPi3, use 0x3F000000. For RPi4, use 0xFE000000. A full list can be found in the diff --git a/src/jtag/drivers/bcm2835gpio.c b/src/jtag/drivers/bcm2835gpio.c index 6db4340e81..95e077c334 100644 --- a/src/jtag/drivers/bcm2835gpio.c +++ b/src/jtag/drivers/bcm2835gpio.c @@ -338,93 +338,93 @@ COMMAND_HANDLER(bcm2835gpio_handle_peripheral_base) return ERROR_OK; } -static const struct command_registration bcm2835gpio_command_handlers[] = { +static const struct command_registration bcm2835gpio_subcommand_handlers[] = { { - .name = "bcm2835gpio_jtag_nums", + .name = "jtag_nums", .handler = &bcm2835gpio_handle_jtag_gpionums, .mode = COMMAND_CONFIG, .help = "gpio numbers for tck, tms, tdi, tdo. (in that order)", .usage = "[tck tms tdi tdo]", }, { - .name = "bcm2835gpio_tck_num", + .name = "tck_num", .handler = &bcm2835gpio_handle_jtag_gpionum_tck, .mode = COMMAND_CONFIG, .help = "gpio number for tck.", .usage = "[tck]", }, { - .name = "bcm2835gpio_tms_num", + .name = "tms_num", .handler = &bcm2835gpio_handle_jtag_gpionum_tms, .mode = COMMAND_CONFIG, .help = "gpio number for tms.", .usage = "[tms]", }, { - .name = "bcm2835gpio_tdo_num", + .name = "tdo_num", .handler = &bcm2835gpio_handle_jtag_gpionum_tdo, .mode = COMMAND_CONFIG, .help = "gpio number for tdo.", .usage = "[tdo]", }, { - .name = "bcm2835gpio_tdi_num", + .name = "tdi_num", .handler = &bcm2835gpio_handle_jtag_gpionum_tdi, .mode = COMMAND_CONFIG, .help = "gpio number for tdi.", .usage = "[tdi]", }, { - .name = "bcm2835gpio_swd_nums", + .name = "swd_nums", .handler = &bcm2835gpio_handle_swd_gpionums, .mode = COMMAND_CONFIG, .help = "gpio numbers for swclk, swdio. (in that order)", .usage = "[swclk swdio]", }, { - .name = "bcm2835gpio_swclk_num", + .name = "swclk_num", .handler = &bcm2835gpio_handle_swd_gpionum_swclk, .mode = COMMAND_CONFIG, .help = "gpio number for swclk.", .usage = "[swclk]", }, { - .name = "bcm2835gpio_swdio_num", + .name = "swdio_num", .handler = &bcm2835gpio_handle_swd_gpionum_swdio, .mode = COMMAND_CONFIG, .help = "gpio number for swdio.", .usage = "[swdio]", }, { - .name = "bcm2835gpio_swdio_dir_num", + .name = "swdio_dir_num", .handler = &bcm2835gpio_handle_swd_dir_gpionum_swdio, .mode = COMMAND_CONFIG, .help = "gpio number for swdio direction control pin (set=output mode, clear=input mode)", .usage = "[swdio_dir]", }, { - .name = "bcm2835gpio_srst_num", + .name = "srst_num", .handler = &bcm2835gpio_handle_jtag_gpionum_srst, .mode = COMMAND_CONFIG, .help = "gpio number for srst.", .usage = "[srst]", }, { - .name = "bcm2835gpio_trst_num", + .name = "trst_num", .handler = &bcm2835gpio_handle_jtag_gpionum_trst, .mode = COMMAND_CONFIG, .help = "gpio number for trst.", .usage = "[trst]", }, { - .name = "bcm2835gpio_speed_coeffs", + .name = "speed_coeffs", .handler = &bcm2835gpio_handle_speed_coeffs, .mode = COMMAND_CONFIG, .help = "SPEED_COEFF and SPEED_OFFSET for delay calculations.", .usage = "[SPEED_COEFF SPEED_OFFSET]", }, { - .name = "bcm2835gpio_peripheral_base", + .name = "peripheral_base", .handler = &bcm2835gpio_handle_peripheral_base, .mode = COMMAND_CONFIG, .help = "peripheral base to access GPIOs (RPi1 0x20000000, RPi2 0x3F000000).", @@ -434,6 +434,17 @@ static const struct command_registration bcm2835gpio_command_handlers[] = { COMMAND_REGISTRATION_DONE }; +static const struct command_registration bcm2835gpio_command_handlers[] = { + { + .name = "bcm2835gpio", + .mode = COMMAND_ANY, + .help = "perform bcm2835gpio management", + .chain = bcm2835gpio_subcommand_handlers, + .usage = "", + }, + COMMAND_REGISTRATION_DONE +}; + static const char * const bcm2835_transports[] = { "jtag", "swd", NULL }; static struct jtag_interface bcm2835gpio_interface = { diff --git a/src/jtag/startup.tcl b/src/jtag/startup.tcl index 263cde2551..4217d23354 100644 --- a/src/jtag/startup.tcl +++ b/src/jtag/startup.tcl @@ -375,4 +375,82 @@ proc vsllink_usb_interface args { eval vsllink usb_interface $args } +lappend _telnet_autocomplete_skip bcm2835gpio_jtag_nums +proc bcm2835gpio_jtag_nums args { + echo "DEPRECATED! use 'bcm2835gpio jtag_nums' not 'bcm2835gpio_jtag_nums'" + eval bcm2835gpio jtag_nums $args +} + +lappend _telnet_autocomplete_skip bcm2835gpio_tck_num +proc bcm2835gpio_tck_num args { + echo "DEPRECATED! use 'bcm2835gpio tck_num' not 'bcm2835gpio_tck_num'" + eval bcm2835gpio tck_num $args +} + +lappend _telnet_autocomplete_skip bcm2835gpio_tms_num +proc bcm2835gpio_tms_num args { + echo "DEPRECATED! use 'bcm2835gpio tms_num' not 'bcm2835gpio_tms_num'" + eval bcm2835gpio tms_num $args +} + +lappend _telnet_autocomplete_skip bcm2835gpio_tdo_num +proc bcm2835gpio_tdo_num args { + echo "DEPRECATED! use 'bcm2835gpio tdo_num' not 'bcm2835gpio_tdo_num'" + eval bcm2835gpio tdo_num $args +} + +lappend _telnet_autocomplete_skip bcm2835gpio_tdi_num +proc bcm2835gpio_tdi_num args { + echo "DEPRECATED! use 'bcm2835gpio tdi_num' not 'bcm2835gpio_tdi_num'" + eval bcm2835gpio tdi_num $args +} + +lappend _telnet_autocomplete_skip bcm2835gpio_swd_nums +proc bcm2835gpio_swd_nums args { + echo "DEPRECATED! use 'bcm2835gpio swd_nums' not 'bcm2835gpio_swd_nums'" + eval bcm2835gpio swd_nums $args +} + +lappend _telnet_autocomplete_skip bcm2835gpio_swclk_num +proc bcm2835gpio_swclk_num args { + echo "DEPRECATED! use 'bcm2835gpio swclk_num' not 'bcm2835gpio_swclk_num'" + eval bcm2835gpio swclk_num $args +} + +lappend _telnet_autocomplete_skip bcm2835gpio_swdio_num +proc bcm2835gpio_swdio_num args { + echo "DEPRECATED! use 'bcm2835gpio swdio_num' not 'bcm2835gpio_swdio_num'" + eval bcm2835gpio swdio_num $args +} + +lappend _telnet_autocomplete_skip bcm2835gpio_swdio_dir_num +proc bcm2835gpio_swdio_dir_num args { + echo "DEPRECATED! use 'bcm2835gpio swdio_dir_num' not 'bcm2835gpio_swdio_dir_num'" + eval bcm2835gpio swdio_dir_num $args +} + +lappend _telnet_autocomplete_skip bcm2835gpio_srst_num +proc bcm2835gpio_srst_num args { + echo "DEPRECATED! use 'bcm2835gpio srst_num' not 'bcm2835gpio_srst_num'" + eval bcm2835gpio srst_num $args +} + +lappend _telnet_autocomplete_skip bcm2835gpio_trst_num +proc bcm2835gpio_trst_num args { + echo "DEPRECATED! use 'bcm2835gpio trst_num' not 'bcm2835gpio_trst_num'" + eval bcm2835gpio trst_num $args +} + +lappend _telnet_autocomplete_skip bcm2835gpio_speed_coeffs +proc bcm2835gpio_speed_coeffs args { + echo "DEPRECATED! use 'bcm2835gpio speed_coeffs' not 'bcm2835gpio_speed_coeffs'" + eval bcm2835gpio speed_coeffs $args +} + +lappend _telnet_autocomplete_skip bcm2835gpio_peripheral_base +proc bcm2835gpio_peripheral_base args { + echo "DEPRECATED! use 'bcm2835gpio peripheral_base' not 'bcm2835gpio_peripheral_base'" + eval bcm2835gpio peripheral_base $args +} + # END MIGRATION AIDS -- 2.30.2