aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVincent Fazio <vfazio@xes-inc.com>2023-08-29 07:30:23 -0500
committerTomas Vanek <vanekt@fbl.cz>2023-09-09 09:59:41 +0000
commit51d4996c5b48e2f871e98af982f7627e527e8683 (patch)
treee42ead9df6efb37e4376f546b149f39db16dafb8
parentd41a204d8224dad66265e694e5ccf3379de0d494 (diff)
downloadriscv-openocd-51d4996c5b48e2f871e98af982f7627e527e8683.zip
riscv-openocd-51d4996c5b48e2f871e98af982f7627e527e8683.tar.gz
riscv-openocd-51d4996c5b48e2f871e98af982f7627e527e8683.tar.bz2
jtag/drivers/am335xgpio: do not configure push-pull inputs as output
Previously, if a pin was configured as ADAPTER_GPIO_INIT_STATE_INPUT and its drive value was ADAPTER_GPIO_DRIVE_MODE_PUSH_PULL, initialize_gpio would configure the pin as an output. The set_gpio_value function is optimized to not set the direction for pins configured as ADAPTER_GPIO_DRIVE_MODE_PUSH_PULL as it only needs to be set once. When initialize_gpio performs this setup, it checked only that the drive value was ADAPTER_GPIO_DRIVE_MODE_PUSH_PULL to set the output direction but did not exclude input pins which have already had their direction set. Now, input pins are ignored when initialize_gpio checks for ADAPTER_GPIO_DRIVE_MODE_PUSH_PULL to set the mode to output. Fixes: ace028262ba0 ("drivers/am335xgpio: Migrate to adapter gpio commands") Change-Id: I9ea502c400ea4ffae37080b9cee891ca9176a47d Signed-off-by: Vincent Fazio <vfazio@xes-inc.com> Reviewed-on: https://review.openocd.org/c/openocd/+/7877 Reviewed-by: Tomas Vanek <vanekt@fbl.cz> Tested-by: jenkins Reviewed-by: Steve Marple <stevemarple@googlemail.com>
-rw-r--r--src/jtag/drivers/am335xgpio.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/jtag/drivers/am335xgpio.c b/src/jtag/drivers/am335xgpio.c
index e641a4f..29d4101 100644
--- a/src/jtag/drivers/am335xgpio.c
+++ b/src/jtag/drivers/am335xgpio.c
@@ -184,7 +184,8 @@ static void initialize_gpio(enum adapter_gpio_config_index idx)
}
/* Direction for non push-pull is already set by set_gpio_value() */
- if (adapter_gpio_config[idx].drive == ADAPTER_GPIO_DRIVE_MODE_PUSH_PULL)
+ if (adapter_gpio_config[idx].drive == ADAPTER_GPIO_DRIVE_MODE_PUSH_PULL
+ && adapter_gpio_config[idx].init_state != ADAPTER_GPIO_INIT_STATE_INPUT)
AM335XGPIO_SET_OUTPUT(&adapter_gpio_config[idx]);
}