[U-Boot] [PATCH RESEND] gpio: spear_gpio: Fix gpio_set_value() implementation
Axel Lin
axel.lin at ingics.com
Fri Sep 6 08:22:40 CEST 2013
In current gpio_set_value() implementation, it always sets the gpio control bit
no matter the value argument is 0 or 1. Thus the GPIOs never set to low.
This patch fixes this bug.
Signed-off-by: Axel Lin <axel.lin at ingics.com>
Acked-by: Stefan Roese <sr at denx.de>
Reviewed-by: Vipin Kumar <vipin.kumar at st.com>
---
This patch was sent on http://lists.denx.de/pipermail/u-boot/2013-June/156861.html
Has Stefan's Ack:
http://lists.denx.de/pipermail/u-boot/2013-June/156864.html
Vipin says the code is fine, so I add Vipin's review-by.
http://lists.denx.de/pipermail/u-boot/2013-June/156966.html
Michael confirms it works:
http://lists.denx.de/pipermail/u-boot/2013-August/160652.html
No body picks up this patch, so here is a resend.
Although I think this is a bug fix, but I'll let maintainers to determinate
if this is the material for v2013.10.
Anyway, can someone at least let me know if this patch is ok for apply at some
point? I have no idea who is maintaining this file.
Regards,
Axel
drivers/gpio/spear_gpio.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/gpio/spear_gpio.c b/drivers/gpio/spear_gpio.c
index 367b670..6fb4117 100644
--- a/drivers/gpio/spear_gpio.c
+++ b/drivers/gpio/spear_gpio.c
@@ -36,7 +36,10 @@ int gpio_set_value(unsigned gpio, int value)
{
struct gpio_regs *regs = (struct gpio_regs *)CONFIG_GPIO_BASE;
- writel(1 << gpio, ®s->gpiodata[DATA_REG_ADDR(gpio)]);
+ if (value)
+ writel(1 << gpio, ®s->gpiodata[DATA_REG_ADDR(gpio)]);
+ else
+ writel(0, ®s->gpiodata[DATA_REG_ADDR(gpio)]);
return 0;
}
--
1.8.1.2
More information about the U-Boot
mailing list