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 <dev@zapb.de>
Reviewed-on: http://openocd.zylin.com/6396
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
This commit is contained in:
Marc Schink 2021-07-30 18:29:01 +02:00 committed by Antonio Borneo
parent 30bb4524de
commit 2fdf6788e2
3 changed files with 122 additions and 33 deletions

View File

@ -3197,67 +3197,67 @@ configuration on exit.
See @file{interface/raspberrypi-native.cfg} for a sample config and See @file{interface/raspberrypi-native.cfg} for a sample config and
pinout. 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). 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 Must be specified to enable JTAG transport. These pins can also be specified
individually. individually.
@end deffn @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 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 @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 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 @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 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 @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 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 @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 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. specified to enable SWD transport. These pins can also be specified individually.
@end deffn @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 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 @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 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 @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 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 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. mode, clear=input mode). If not specified, this feature is disabled.
@end deffn @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. Set SRST GPIO number. Must be specified to enable SRST.
@end deffn @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. Set TRST GPIO number. Must be specified to enable TRST.
@end deffn @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, Set SPEED_COEFF and SPEED_OFFSET for delay calculations. If unspecified,
speed_coeff defaults to 113714, and speed_offset defaults to 28. speed_coeff defaults to 113714, and speed_offset defaults to 28.
@end deffn @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 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 0x20000000. For RPi2 and RPi3, use 0x3F000000. For RPi4, use 0xFE000000. A full
list can be found in the list can be found in the

View File

@ -338,93 +338,93 @@ COMMAND_HANDLER(bcm2835gpio_handle_peripheral_base)
return ERROR_OK; 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, .handler = &bcm2835gpio_handle_jtag_gpionums,
.mode = COMMAND_CONFIG, .mode = COMMAND_CONFIG,
.help = "gpio numbers for tck, tms, tdi, tdo. (in that order)", .help = "gpio numbers for tck, tms, tdi, tdo. (in that order)",
.usage = "[tck tms tdi tdo]", .usage = "[tck tms tdi tdo]",
}, },
{ {
.name = "bcm2835gpio_tck_num", .name = "tck_num",
.handler = &bcm2835gpio_handle_jtag_gpionum_tck, .handler = &bcm2835gpio_handle_jtag_gpionum_tck,
.mode = COMMAND_CONFIG, .mode = COMMAND_CONFIG,
.help = "gpio number for tck.", .help = "gpio number for tck.",
.usage = "[tck]", .usage = "[tck]",
}, },
{ {
.name = "bcm2835gpio_tms_num", .name = "tms_num",
.handler = &bcm2835gpio_handle_jtag_gpionum_tms, .handler = &bcm2835gpio_handle_jtag_gpionum_tms,
.mode = COMMAND_CONFIG, .mode = COMMAND_CONFIG,
.help = "gpio number for tms.", .help = "gpio number for tms.",
.usage = "[tms]", .usage = "[tms]",
}, },
{ {
.name = "bcm2835gpio_tdo_num", .name = "tdo_num",
.handler = &bcm2835gpio_handle_jtag_gpionum_tdo, .handler = &bcm2835gpio_handle_jtag_gpionum_tdo,
.mode = COMMAND_CONFIG, .mode = COMMAND_CONFIG,
.help = "gpio number for tdo.", .help = "gpio number for tdo.",
.usage = "[tdo]", .usage = "[tdo]",
}, },
{ {
.name = "bcm2835gpio_tdi_num", .name = "tdi_num",
.handler = &bcm2835gpio_handle_jtag_gpionum_tdi, .handler = &bcm2835gpio_handle_jtag_gpionum_tdi,
.mode = COMMAND_CONFIG, .mode = COMMAND_CONFIG,
.help = "gpio number for tdi.", .help = "gpio number for tdi.",
.usage = "[tdi]", .usage = "[tdi]",
}, },
{ {
.name = "bcm2835gpio_swd_nums", .name = "swd_nums",
.handler = &bcm2835gpio_handle_swd_gpionums, .handler = &bcm2835gpio_handle_swd_gpionums,
.mode = COMMAND_CONFIG, .mode = COMMAND_CONFIG,
.help = "gpio numbers for swclk, swdio. (in that order)", .help = "gpio numbers for swclk, swdio. (in that order)",
.usage = "[swclk swdio]", .usage = "[swclk swdio]",
}, },
{ {
.name = "bcm2835gpio_swclk_num", .name = "swclk_num",
.handler = &bcm2835gpio_handle_swd_gpionum_swclk, .handler = &bcm2835gpio_handle_swd_gpionum_swclk,
.mode = COMMAND_CONFIG, .mode = COMMAND_CONFIG,
.help = "gpio number for swclk.", .help = "gpio number for swclk.",
.usage = "[swclk]", .usage = "[swclk]",
}, },
{ {
.name = "bcm2835gpio_swdio_num", .name = "swdio_num",
.handler = &bcm2835gpio_handle_swd_gpionum_swdio, .handler = &bcm2835gpio_handle_swd_gpionum_swdio,
.mode = COMMAND_CONFIG, .mode = COMMAND_CONFIG,
.help = "gpio number for swdio.", .help = "gpio number for swdio.",
.usage = "[swdio]", .usage = "[swdio]",
}, },
{ {
.name = "bcm2835gpio_swdio_dir_num", .name = "swdio_dir_num",
.handler = &bcm2835gpio_handle_swd_dir_gpionum_swdio, .handler = &bcm2835gpio_handle_swd_dir_gpionum_swdio,
.mode = COMMAND_CONFIG, .mode = COMMAND_CONFIG,
.help = "gpio number for swdio direction control pin (set=output mode, clear=input mode)", .help = "gpio number for swdio direction control pin (set=output mode, clear=input mode)",
.usage = "[swdio_dir]", .usage = "[swdio_dir]",
}, },
{ {
.name = "bcm2835gpio_srst_num", .name = "srst_num",
.handler = &bcm2835gpio_handle_jtag_gpionum_srst, .handler = &bcm2835gpio_handle_jtag_gpionum_srst,
.mode = COMMAND_CONFIG, .mode = COMMAND_CONFIG,
.help = "gpio number for srst.", .help = "gpio number for srst.",
.usage = "[srst]", .usage = "[srst]",
}, },
{ {
.name = "bcm2835gpio_trst_num", .name = "trst_num",
.handler = &bcm2835gpio_handle_jtag_gpionum_trst, .handler = &bcm2835gpio_handle_jtag_gpionum_trst,
.mode = COMMAND_CONFIG, .mode = COMMAND_CONFIG,
.help = "gpio number for trst.", .help = "gpio number for trst.",
.usage = "[trst]", .usage = "[trst]",
}, },
{ {
.name = "bcm2835gpio_speed_coeffs", .name = "speed_coeffs",
.handler = &bcm2835gpio_handle_speed_coeffs, .handler = &bcm2835gpio_handle_speed_coeffs,
.mode = COMMAND_CONFIG, .mode = COMMAND_CONFIG,
.help = "SPEED_COEFF and SPEED_OFFSET for delay calculations.", .help = "SPEED_COEFF and SPEED_OFFSET for delay calculations.",
.usage = "[SPEED_COEFF SPEED_OFFSET]", .usage = "[SPEED_COEFF SPEED_OFFSET]",
}, },
{ {
.name = "bcm2835gpio_peripheral_base", .name = "peripheral_base",
.handler = &bcm2835gpio_handle_peripheral_base, .handler = &bcm2835gpio_handle_peripheral_base,
.mode = COMMAND_CONFIG, .mode = COMMAND_CONFIG,
.help = "peripheral base to access GPIOs (RPi1 0x20000000, RPi2 0x3F000000).", .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 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 const char * const bcm2835_transports[] = { "jtag", "swd", NULL };
static struct jtag_interface bcm2835gpio_interface = { static struct jtag_interface bcm2835gpio_interface = {

View File

@ -375,4 +375,82 @@ proc vsllink_usb_interface args {
eval 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 # END MIGRATION AIDS