static int speed_offset = 28;
static unsigned int jtag_delay;
+static int is_gpio_valid(int gpio)
+{
+ return gpio >= 0 && gpio <= 31;
+}
+
static bb_value_t bcm2835gpio_read(void)
{
return (GPIO_LEV & 1<<tdo_gpio) ? BB_HIGH : BB_LOW;
uint32_t set = 0;
uint32_t clear = 0;
- if (trst_gpio > 0) {
+ if (is_gpio_valid(trst_gpio)) {
set |= !trst<<trst_gpio;
clear |= trst<<trst_gpio;
}
- if (srst_gpio > 0) {
+ if (is_gpio_valid(srst_gpio)) {
set |= !srst<<srst_gpio;
clear |= srst<<srst_gpio;
}
static void bcm2835_swdio_drive(bool is_output)
{
- if (swdio_dir_gpio > 0) {
+ if (is_gpio_valid(swdio_dir_gpio)) {
if (is_output) {
GPIO_SET = 1 << swdio_dir_gpio;
OUT_GPIO(swdio_gpio);
return ERROR_OK;
}
-static int is_gpio_valid(int gpio)
-{
- return gpio >= 0 && gpio <= 31;
-}
-
COMMAND_HANDLER(bcm2835gpio_handle_jtag_gpionums)
{
if (CMD_ARGC == 4) {
OUT_GPIO(tck_gpio);
OUT_GPIO(tms_gpio);
- if (trst_gpio != -1) {
+ if (is_gpio_valid(trst_gpio)) {
trst_gpio_mode = MODE_GPIO(trst_gpio);
GPIO_SET = 1 << trst_gpio;
OUT_GPIO(trst_gpio);
if (transport_is_swd()) {
/* Make buffer an output before the GPIO connected to it */
- if (swdio_dir_gpio != -1) {
+ if (is_gpio_valid(swdio_dir_gpio)) {
swdio_dir_gpio_mode = MODE_GPIO(swdio_dir_gpio);
GPIO_SET = 1 << swdio_dir_gpio;
OUT_GPIO(swdio_dir_gpio);
OUT_GPIO(swdio_gpio);
}
- if (srst_gpio != -1) {
+ if (is_gpio_valid(srst_gpio)) {
srst_gpio_mode = MODE_GPIO(srst_gpio);
GPIO_SET = 1 << srst_gpio;
OUT_GPIO(srst_gpio);
SET_MODE_GPIO(tdi_gpio, tdi_gpio_mode);
SET_MODE_GPIO(tck_gpio, tck_gpio_mode);
SET_MODE_GPIO(tms_gpio, tms_gpio_mode);
- if (trst_gpio != -1)
+ if (is_gpio_valid(trst_gpio))
SET_MODE_GPIO(trst_gpio, trst_gpio_mode);
}
SET_MODE_GPIO(swdio_gpio, swdio_gpio_mode);
}
- if (srst_gpio != -1)
+ if (is_gpio_valid(srst_gpio))
SET_MODE_GPIO(srst_gpio, srst_gpio_mode);
- if (swdio_dir_gpio != -1)
+ if (is_gpio_valid(swdio_dir_gpio))
SET_MODE_GPIO(swdio_dir_gpio, swdio_dir_gpio_mode);
return ERROR_OK;