2011-04-11 16:23:38

by Jamie Iles

[permalink] [raw]
Subject: [PATCH] basic_mmio_gpio: convert to non-__raw* accessors

The __raw_* accessors don't include memory barriers and can cause
problems when writes get stuck in write buffers.

Suggested-by: Linus Walleij <[email protected]>
Cc: Anton Vorontsov <[email protected]>
Cc: Grant Likely <[email protected]>
Signed-off-by: Jamie Iles <[email protected]>
---

Note: This patch is based on top of my other series to extend
basic_mmio_gpio.

drivers/gpio/basic_mmio_gpio.c | 16 ++++++++--------
1 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/drivers/gpio/basic_mmio_gpio.c b/drivers/gpio/basic_mmio_gpio.c
index f4afd96..b2ec45f 100644
--- a/drivers/gpio/basic_mmio_gpio.c
+++ b/drivers/gpio/basic_mmio_gpio.c
@@ -101,43 +101,43 @@ static struct bgpio_chip *to_bgpio_chip(struct gpio_chip *gc)

static void bgpio_write8(void __iomem *reg, unsigned long data)
{
- __raw_writeb(data, reg);
+ writeb(data, reg);
}

static unsigned long bgpio_read8(void __iomem *reg)
{
- return __raw_readb(reg);
+ return readb(reg);
}

static void bgpio_write16(void __iomem *reg, unsigned long data)
{
- __raw_writew(data, reg);
+ writew(data, reg);
}

static unsigned long bgpio_read16(void __iomem *reg)
{
- return __raw_readw(reg);
+ return readw(reg);
}

static void bgpio_write32(void __iomem *reg, unsigned long data)
{
- __raw_writel(data, reg);
+ writel(data, reg);
}

static unsigned long bgpio_read32(void __iomem *reg)
{
- return __raw_readl(reg);
+ return readl(reg);
}

#if BITS_PER_LONG >= 64
static void bgpio_write64(void __iomem *reg, unsigned long data)
{
- __raw_writeq(data, reg);
+ writeq(data, reg);
}

static unsigned long bgpio_read64(void __iomem *reg)
{
- return __raw_readq(reg);
+ return readq(reg);
}
#endif /* BITS_PER_LONG >= 64 */

--
1.7.4.2


2011-04-11 16:35:17

by Anton Vorontsov

[permalink] [raw]
Subject: Re: [PATCH] basic_mmio_gpio: convert to non-__raw* accessors

On Mon, Apr 11, 2011 at 05:11:26PM +0100, Jamie Iles wrote:
> The __raw_* accessors don't include memory barriers and can cause
> problems when writes get stuck in write buffers.
>
> Suggested-by: Linus Walleij <[email protected]>
> Cc: Anton Vorontsov <[email protected]>
> Cc: Grant Likely <[email protected]>
> Signed-off-by: Jamie Iles <[email protected]>
> ---

Acked-by: Anton Vorontsov <[email protected]>

Thanks!

--
Anton Vorontsov
Email: [email protected]

2011-05-03 19:42:50

by Grant Likely

[permalink] [raw]
Subject: Re: [PATCH] basic_mmio_gpio: convert to non-__raw* accessors

On Mon, Apr 11, 2011 at 05:11:26PM +0100, Jamie Iles wrote:
> The __raw_* accessors don't include memory barriers and can cause
> problems when writes get stuck in write buffers.
>
> Suggested-by: Linus Walleij <[email protected]>
> Cc: Anton Vorontsov <[email protected]>
> Cc: Grant Likely <[email protected]>
> Signed-off-by: Jamie Iles <[email protected]>

Merged, thanks.

g.

> ---
>
> Note: This patch is based on top of my other series to extend
> basic_mmio_gpio.
>
> drivers/gpio/basic_mmio_gpio.c | 16 ++++++++--------
> 1 files changed, 8 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/gpio/basic_mmio_gpio.c b/drivers/gpio/basic_mmio_gpio.c
> index f4afd96..b2ec45f 100644
> --- a/drivers/gpio/basic_mmio_gpio.c
> +++ b/drivers/gpio/basic_mmio_gpio.c
> @@ -101,43 +101,43 @@ static struct bgpio_chip *to_bgpio_chip(struct gpio_chip *gc)
>
> static void bgpio_write8(void __iomem *reg, unsigned long data)
> {
> - __raw_writeb(data, reg);
> + writeb(data, reg);
> }
>
> static unsigned long bgpio_read8(void __iomem *reg)
> {
> - return __raw_readb(reg);
> + return readb(reg);
> }
>
> static void bgpio_write16(void __iomem *reg, unsigned long data)
> {
> - __raw_writew(data, reg);
> + writew(data, reg);
> }
>
> static unsigned long bgpio_read16(void __iomem *reg)
> {
> - return __raw_readw(reg);
> + return readw(reg);
> }
>
> static void bgpio_write32(void __iomem *reg, unsigned long data)
> {
> - __raw_writel(data, reg);
> + writel(data, reg);
> }
>
> static unsigned long bgpio_read32(void __iomem *reg)
> {
> - return __raw_readl(reg);
> + return readl(reg);
> }
>
> #if BITS_PER_LONG >= 64
> static void bgpio_write64(void __iomem *reg, unsigned long data)
> {
> - __raw_writeq(data, reg);
> + writeq(data, reg);
> }
>
> static unsigned long bgpio_read64(void __iomem *reg)
> {
> - return __raw_readq(reg);
> + return readq(reg);
> }
> #endif /* BITS_PER_LONG >= 64 */
>
> --
> 1.7.4.2
>