> -----Original Message-----
> From: Billy Tsai <billy_t...@aspeedtech.com>
> Sent: Wednesday, April 13, 2022 1:35 PM
> To: Ryan Chen <ryan_c...@aspeedtech.com>; ChiaWei Wang
> <chiawei_w...@aspeedtech.com>; BMC-SW <bmc...@aspeedtech.com>;
> and...@aj.id.au; Billy Tsai <billy_t...@aspeedtech.com>;
> u-boot@lists.denx.de
> Subject: [PATCH] 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 <billy_t...@aspeedtech.com>

Review-by: ryan_chen <ryan_c...@aspeedtech.com>

> ---
>  drivers/gpio/gpio-aspeed.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpio/gpio-aspeed.c b/drivers/gpio/gpio-aspeed.c index
> a8a2afcb5c..2c5415c671 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);
> --
> 2.25.1

Reply via email to