au1000: fix gpio direction
PATCH 1/1 au1000: fix gpio direction
when setting the direction of one GPIO pin we have to keep the state of the other pins, hence use binary OR. also gpio_direction_output() wants to set an initial value, so add that too.
this fixes a problem with the USB power switch on mtx-1 boards.
Signed-off-by Bruno Randolf <[email protected]>
---
arch/mips/au1000/common/gpio.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-)
arch/mips/au1000/common/gpio.c +3 -1
@@ -61,7 +61,8 @@ static int au1xxx_gpio2_direction_input(unsigned gpio)static int au1xxx_gpio2_direction_output (unsigned gpio,int value) { gpio -=AU1XXX_GPIO_BASE ; - gpio2->dir = (0x01 << gpio) | (value << gpio); + gpio2->dir |=0x01 << gpio; + gpio2->output = (GPIO2_OUTPUT_ENABLE_MASK << gpio) | (value << gpio);return 0 ; }
@@ -90,6 +91,7 @@ static int au1xxx_gpio1_direction_input(unsigned gpio)static int au1xxx_gpio1_direction_output (unsigned gpio,int value) { gpio1->trioutclr = (0x01 & gpio); +au1xxx_gpio1_write (gpio, value);return 0 ; }
Ralf Baechle
AppliedQuoted 3 lines · Bruno Randolf
when setting the direction of one GPIO pin we have to keep the state of the other pins, hence use binary OR. also
gpio_direction_output()wants to set an initial value, so add that too.
Thanks, applied.
Ralf