This is an automated email from Gerrit.

"Vincent Fazio <vfa...@gmail.com>" just uploaded a new patch set to Gerrit, 
which you can find at https://review.openocd.org/c/openocd/+/8124

-- gerrit

commit 206326e2fa6f94396432415976b55f384044df4c
Author: Vincent Fazio <vfa...@gmail.com>
Date:   Wed Jan 31 09:06:20 2024 -0600

    jtag/adapter: retype adapter_gpio_config.{gpio,chip}_num
    
    Previously, the gpio_num and chip_num members of adapter_gpio_config
    were typed as integers and a sentinel value of -1 was used to denote
    unconfigured values.
    
    Now, these members are typed as unsigned int to better reflect their
    expected value range.
    
    The sentinel value has been updated to UINT_MAX as all adapters either
    define an upper bound for these members or, in the case of bcm2835gpio,
    only operate on a specific chip in which case the value doesn't matter.
    
    Formatted strings are updated to use %u over %d and to address warnings
    issued by checkpatch.
    
    Change-Id: Ieb20e5327b2e2e443a8e43d8689cb29538a5c9c1
    Signed-off-by: Vincent Fazio <vfa...@gmail.com>

diff --git a/src/jtag/adapter.c b/src/jtag/adapter.c
index e70f4a1e80..0fa4c40891 100644
--- a/src/jtag/adapter.c
+++ b/src/jtag/adapter.c
@@ -94,8 +94,10 @@ static void adapter_driver_gpios_init(void)
                return;
 
        for (int i = 0; i < ADAPTER_GPIO_IDX_NUM; ++i) {
-               adapter_config.gpios[i].gpio_num = -1;
-               adapter_config.gpios[i].chip_num = -1;
+               /* Use UINT_MAX as the sentinel 'unset' value.
+                * All adapters have an upper bound less than UINT_MAX. */
+               adapter_config.gpios[i].gpio_num = UINT_MAX;
+               adapter_config.gpios[i].chip_num = UINT_MAX;
                if (gpio_map[i].direction == ADAPTER_GPIO_DIRECTION_INPUT)
                        adapter_config.gpios[i].init_state = 
ADAPTER_GPIO_INIT_STATE_INPUT;
        }
@@ -900,7 +902,7 @@ static COMMAND_HELPER(helper_adapter_gpio_print_config, 
enum adapter_gpio_config
                }
        }
 
-       command_print(CMD, "adapter gpio %s (%s): num %d, chip %d, 
active-%s%s%s%s",
+       command_print(CMD, "adapter gpio %s (%s): num %u, chip %u, 
active-%s%s%s%s",
                gpio_map[gpio_idx].name, dir, gpio_config->gpio_num, 
gpio_config->chip_num, active_state,
                drive, pull, init_state);
 
@@ -942,8 +944,8 @@ COMMAND_HANDLER(adapter_gpio_config_handler)
                LOG_DEBUG("Processing %s", CMD_ARGV[i]);
 
                if (isdigit(*CMD_ARGV[i])) {
-                       int gpio_num; /* Use a meaningful output parameter for 
more helpful error messages */
-                       COMMAND_PARSE_NUMBER(int, CMD_ARGV[i], gpio_num);
+                       unsigned int gpio_num; /* Use a meaningful output 
parameter for more helpful error messages */
+                       COMMAND_PARSE_NUMBER(uint, CMD_ARGV[i], gpio_num);
                        gpio_config->gpio_num = gpio_num;
                        ++i;
                        continue;
@@ -955,8 +957,8 @@ COMMAND_HANDLER(adapter_gpio_config_handler)
                                return ERROR_FAIL;
                        }
                        LOG_DEBUG("-chip arg is %s", CMD_ARGV[i + 1]);
-                       int chip_num; /* Use a meaningful output parameter for 
more helpful error messages */
-                       COMMAND_PARSE_NUMBER(int, CMD_ARGV[i + 1], chip_num);
+                       unsigned int chip_num; /* Use a meaningful output 
parameter for more helpful error messages */
+                       COMMAND_PARSE_NUMBER(uint, CMD_ARGV[i + 1], chip_num);
                        gpio_config->chip_num = chip_num;
                        i += 2;
                        continue;
diff --git a/src/jtag/adapter.h b/src/jtag/adapter.h
index 682fc10aea..d124560381 100644
--- a/src/jtag/adapter.h
+++ b/src/jtag/adapter.h
@@ -56,8 +56,8 @@ enum adapter_gpio_config_index {
 
 /** Configuration options for a single GPIO */
 struct adapter_gpio_config {
-       int gpio_num;
-       int chip_num;
+       unsigned int gpio_num;
+       unsigned int chip_num;
        enum adapter_gpio_drive_mode drive; /* For outputs only */
        enum adapter_gpio_init_state init_state;
        bool active_low;
diff --git a/src/jtag/drivers/am335xgpio.c b/src/jtag/drivers/am335xgpio.c
index 29d410118e..a1f50d39ee 100644
--- a/src/jtag/drivers/am335xgpio.c
+++ b/src/jtag/drivers/am335xgpio.c
@@ -86,9 +86,7 @@ static const struct adapter_gpio_config *adapter_gpio_config;
 
 static bool is_gpio_config_valid(const struct adapter_gpio_config *gpio_config)
 {
-       return gpio_config->chip_num >= 0
-               && gpio_config->chip_num < AM335XGPIO_NUM_GPIO_CHIPS
-               && gpio_config->gpio_num >= 0
+       return gpio_config->chip_num < AM335XGPIO_NUM_GPIO_CHIPS
                && gpio_config->gpio_num < AM335XGPIO_NUM_GPIO_PER_CHIP;
 }
 
@@ -162,7 +160,7 @@ static void initialize_gpio(enum adapter_gpio_config_index 
idx)
                return;
 
        initial_gpio_mode[idx] = get_gpio_mode(&adapter_gpio_config[idx]);
-       LOG_DEBUG("saved GPIO mode for %s (GPIO %d %d): %s",
+       LOG_DEBUG("saved GPIO mode for %s (GPIO %u %u): %s",
                        adapter_gpio_get_name(idx), 
adapter_gpio_config[idx].chip_num, adapter_gpio_config[idx].gpio_num,
                        get_gpio_mode_name(initial_gpio_mode[idx]));
 
@@ -249,8 +247,8 @@ static int am335xgpio_reset(int trst, int srst)
        if (is_gpio_config_valid(&adapter_gpio_config[ADAPTER_GPIO_IDX_TRST]))
                set_gpio_value(&adapter_gpio_config[ADAPTER_GPIO_IDX_TRST], 
trst);
 
-       LOG_DEBUG("am335xgpio_reset(%d, %d), trst_gpio: %d %d, srst_gpio: %d 
%d",
-               trst, srst,
+       LOG_DEBUG("%s(%d, %d), trst_gpio: %u %u, srst_gpio: %u %u",
+               __func__, trst, srst,
                adapter_gpio_config[ADAPTER_GPIO_IDX_TRST].chip_num, 
adapter_gpio_config[ADAPTER_GPIO_IDX_TRST].gpio_num,
                adapter_gpio_config[ADAPTER_GPIO_IDX_SRST].chip_num, 
adapter_gpio_config[ADAPTER_GPIO_IDX_SRST].gpio_num);
        return ERROR_OK;
@@ -382,7 +380,7 @@ static void am335xgpio_munmap(void)
 {
        for (unsigned int i = 0; i < AM335XGPIO_NUM_GPIO_CHIPS && 
am335xgpio_gpio_chip_mmap_addr[i] != MAP_FAILED; ++i)
                if (munmap((void *)am335xgpio_gpio_chip_mmap_addr[i], 
sysconf(_SC_PAGE_SIZE)) < 0)
-                       LOG_ERROR("Cannot unmap GPIO memory for chip %d: %s", 
i, strerror(errno));
+                       LOG_ERROR("Cannot unmap GPIO memory for chip %u: %s", 
i, strerror(errno));
 }
 
 static int am335xgpio_init(void)
diff --git a/src/jtag/drivers/bcm2835gpio.c b/src/jtag/drivers/bcm2835gpio.c
index 7fd7f38940..eaa1bc07e9 100644
--- a/src/jtag/drivers/bcm2835gpio.c
+++ b/src/jtag/drivers/bcm2835gpio.c
@@ -84,10 +84,7 @@ static inline void bcm2835_delay(void)
 static bool is_gpio_config_valid(enum adapter_gpio_config_index idx)
 {
        /* Only chip 0 is supported, accept unset value (-1) too */
-       return adapter_gpio_config[idx].chip_num >= -1
-               && adapter_gpio_config[idx].chip_num <= 0
-               && adapter_gpio_config[idx].gpio_num >= 0
-               && adapter_gpio_config[idx].gpio_num <= 31;
+       return adapter_gpio_config[idx].gpio_num <= 31;
 }
 
 static void set_gpio_value(const struct adapter_gpio_config *gpio_config, int 
value)
@@ -145,7 +142,7 @@ static void initialize_gpio(enum adapter_gpio_config_index 
idx)
        initial_gpio_state[idx].mode = 
MODE_GPIO(adapter_gpio_config[idx].gpio_num);
        unsigned int shift = adapter_gpio_config[idx].gpio_num;
        initial_gpio_state[idx].output_level = (GPIO_LEV >> shift) & 1;
-       LOG_DEBUG("saved GPIO mode for %s (GPIO %d %d): %d",
+       LOG_DEBUG("saved GPIO mode for %s (GPIO %u %u): %d",
                        adapter_gpio_get_name(idx), 
adapter_gpio_config[idx].chip_num, adapter_gpio_config[idx].gpio_num,
                        initial_gpio_state[idx].mode);
 
@@ -243,8 +240,8 @@ static int bcm2835gpio_reset(int trst, int srst)
        if (is_gpio_config_valid(ADAPTER_GPIO_IDX_TRST))
                set_gpio_value(&adapter_gpio_config[ADAPTER_GPIO_IDX_TRST], 
trst);
 
-       LOG_DEBUG("BCM2835 GPIO: bcm2835gpio_reset(%d, %d), trst_gpio: %d %d, 
srst_gpio: %d %d",
-               trst, srst,
+       LOG_DEBUG("BCM2835 GPIO: %s(%d, %d), trst_gpio: %u %u, srst_gpio: %u 
%u",
+               __func__, trst, srst,
                adapter_gpio_config[ADAPTER_GPIO_IDX_TRST].chip_num, 
adapter_gpio_config[ADAPTER_GPIO_IDX_TRST].gpio_num,
                adapter_gpio_config[ADAPTER_GPIO_IDX_SRST].chip_num, 
adapter_gpio_config[ADAPTER_GPIO_IDX_SRST].gpio_num);
        return ERROR_OK;
diff --git a/src/jtag/drivers/linuxgpiod.c b/src/jtag/drivers/linuxgpiod.c
index d1a88c88d3..26605ea09d 100644
--- a/src/jtag/drivers/linuxgpiod.c
+++ b/src/jtag/drivers/linuxgpiod.c
@@ -37,9 +37,7 @@ static const struct adapter_gpio_config *adapter_gpio_config;
  */
 static bool is_gpio_config_valid(enum adapter_gpio_config_index idx)
 {
-       return adapter_gpio_config[idx].chip_num >= 0
-               && adapter_gpio_config[idx].chip_num < 1000
-               && adapter_gpio_config[idx].gpio_num >= 0
+       return adapter_gpio_config[idx].chip_num < 1000
                && adapter_gpio_config[idx].gpio_num < 10000;
 }
 
@@ -284,7 +282,7 @@ static int helper_get_line(enum adapter_gpio_config_index 
idx)
 
        gpiod_chip[idx] = 
gpiod_chip_open_by_number(adapter_gpio_config[idx].chip_num);
        if (!gpiod_chip[idx]) {
-               LOG_ERROR("Cannot open LinuxGPIOD chip %d for %s", 
adapter_gpio_config[idx].chip_num,
+               LOG_ERROR("Cannot open LinuxGPIOD chip %u for %s", 
adapter_gpio_config[idx].chip_num,
                        adapter_gpio_get_name(idx));
                return ERROR_JTAG_INIT_FAILED;
        }

-- 

Reply via email to