[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAJhJPsX1q6PGSb+eoCSdCC2_vDtbaShLLzEbuNOqD_Jzd8Ozdw@mail.gmail.com>
Date: Tue, 7 Mar 2023 11:45:36 +0800
From: Keguang Zhang <keguang.zhang@...il.com>
To: Bartosz Golaszewski <brgl@...ev.pl>
Cc: linux-gpio@...r.kernel.org, devicetree@...r.kernel.org,
linux-mips@...r.kernel.org, linux-kernel@...r.kernel.org,
Linus Walleij <linus.walleij@...aro.org>,
Rob Herring <robh+dt@...nel.org>,
Krzysztof Kozlowski <krzysztof.kozlowski+dt@...aro.org>
Subject: Re: [PATCH v2 2/5] gpio: loongson1: Use readl() & writel()
On Mon, Mar 6, 2023 at 5:30 PM Bartosz Golaszewski <brgl@...ev.pl> wrote:
>
> On Thu, Mar 2, 2023 at 1:52 PM Keguang Zhang <keguang.zhang@...il.com> wrote:
> >
> > This patch replace __raw_readl() & __raw_writel() with readl() & writel().
> >
>
> Please say WHY you're doing this.
>
readl & writel contain memory barriers which can guarantee access order.
> Bart
>
> > Signed-off-by: Keguang Zhang <keguang.zhang@...il.com>
> > ---
> > V1 -> V2: Split this change to a separate patch
> > ---
> > drivers/gpio/gpio-loongson1.c | 8 ++++----
> > 1 file changed, 4 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/gpio/gpio-loongson1.c b/drivers/gpio/gpio-loongson1.c
> > index 8862c9ea0d41..b6c11caa3ade 100644
> > --- a/drivers/gpio/gpio-loongson1.c
> > +++ b/drivers/gpio/gpio-loongson1.c
> > @@ -23,8 +23,8 @@ static int ls1x_gpio_request(struct gpio_chip *gc, unsigned int offset)
> > unsigned long flags;
> >
> > raw_spin_lock_irqsave(&gc->bgpio_lock, flags);
> > - __raw_writel(__raw_readl(gpio_reg_base + GPIO_CFG) | BIT(offset),
> > - gpio_reg_base + GPIO_CFG);
> > + writel(readl(gpio_reg_base + GPIO_CFG) | BIT(offset),
> > + gpio_reg_base + GPIO_CFG);
> > raw_spin_unlock_irqrestore(&gc->bgpio_lock, flags);
> >
> > return 0;
> > @@ -35,8 +35,8 @@ static void ls1x_gpio_free(struct gpio_chip *gc, unsigned int offset)
> > unsigned long flags;
> >
> > raw_spin_lock_irqsave(&gc->bgpio_lock, flags);
> > - __raw_writel(__raw_readl(gpio_reg_base + GPIO_CFG) & ~BIT(offset),
> > - gpio_reg_base + GPIO_CFG);
> > + writel(readl(gpio_reg_base + GPIO_CFG) & ~BIT(offset),
> > + gpio_reg_base + GPIO_CFG);
> > raw_spin_unlock_irqrestore(&gc->bgpio_lock, flags);
> > }
> >
> > --
> > 2.34.1
> >
--
Best regards,
Kelvin Cheung
Powered by blists - more mailing lists