summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBilly Tsai <[email protected]>2022-04-13 13:34:51 +0800
committerTom Rini <[email protected]>2022-04-19 14:51:11 -0400
commitfe2f284270718c6cfbe7f87e7e1f378c2b172bf5 (patch)
treef978403e90cb9db6e94a7e21207cf3a5d409b2d7
parent0b93b7fed6df12ea89b65ef138e724e402587c32 (diff)
gpio: aspeed: Fix incorrect offset of read back register.
The offset of the current read back register is the value of the gpio pin, not the value written for the gpio output. This patch fix it to avoid the other gpio output value controlled by the same register being set incorrectly. Fixes: 7ad889b0f37a ("gpio: Add Aspeed GPIO driver") Signed-off-by: Billy Tsai <[email protected]>
-rw-r--r--drivers/gpio/gpio-aspeed.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/gpio/gpio-aspeed.c b/drivers/gpio/gpio-aspeed.c
index a8a2afcb5c8..2c5415c671d 100644
--- a/drivers/gpio/gpio-aspeed.c
+++ b/drivers/gpio/gpio-aspeed.c
@@ -211,7 +211,7 @@ static int aspeed_gpio_direction_output(struct udevice *dev, unsigned int offset
struct aspeed_gpio_priv *priv = dev_get_priv(dev);
const struct aspeed_gpio_bank *bank = to_bank(offset);
u32 dir = readl(bank_reg(priv, bank, reg_dir));
- u32 output = readl(bank_reg(priv, bank, reg_val));
+ u32 output = readl(bank_reg(priv, bank, reg_rdata));
dir |= GPIO_BIT(offset);
writel(dir, bank_reg(priv, bank, reg_dir));
@@ -239,7 +239,7 @@ aspeed_gpio_set_value(struct udevice *dev, unsigned int offset, int value)
{
struct aspeed_gpio_priv *priv = dev_get_priv(dev);
const struct aspeed_gpio_bank *bank = to_bank(offset);
- u32 data = readl(bank_reg(priv, bank, reg_val));
+ u32 data = readl(bank_reg(priv, bank, reg_rdata));
if (value)
data |= GPIO_BIT(offset);