jtag/drivers/bcm2835gpio: do not configure push-pull inputs as output
commitea0ac6dc779f09fd21e007d93987a6a7eca5149e
authorBrandon Pupp <bpupp@xes-inc.com>
Fri, 18 Aug 2023 14:51:06 +0000 (18 09:51 -0500)
committerTomas Vanek <vanekt@fbl.cz>
Tue, 29 Aug 2023 06:21:46 +0000 (29 06:21 +0000)
tree8551dfa2f68a6509ef4c60732b21324f8c474174
parentaee495e7859d0f19b52ba12cafaad2628d84f8e1
jtag/drivers/bcm2835gpio: 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.

Change-Id: I4fc7a8132a6b00c7f213ec9fd05c7bbb37ee5f20
Fixes: 0dd969d83bad ("drivers/bcm2835gpio: Migrate to adapter gpio commands")
Signed-off-by: Brandon Pupp <bpupp@xes-inc.com>
[vfazio: update commit message]
Signed-off-by: Vincent Fazio <vfazio@xes-inc.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/7862
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
src/jtag/drivers/bcm2835gpio.c