Browse Source

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>
jim
Marc Schink 2 years ago
committed by Antonio Borneo
parent
commit
2fdf6788e2
3 changed files with 122 additions and 33 deletions
  1. +19
    -19
      doc/openocd.texi
  2. +25
    -14
      src/jtag/drivers/bcm2835gpio.c
  3. +78
    -0
      src/jtag/startup.tcl

+ 19
- 19
doc/openocd.texi View File

@@ -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


+ 25
- 14
src/jtag/drivers/bcm2835gpio.c View File

@@ -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 = {


+ 78
- 0
src/jtag/startup.tcl View File

@@ -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

Loading…
Cancel
Save