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; } --