Skip to content

Commit

Permalink
gpio: loongson1: fix bgpio usage
Browse files Browse the repository at this point in the history
When no flags are given, the native endianness is used to access
the MMIO registers, and the pin2mask() call can simply be
converted to a BIT() call, as per the default pin2mask()
implementation in gpio-mmio.c.

Cc: Kelvin Cheung <keguang.zhang@gmail.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
  • Loading branch information
Linus Walleij committed Oct 25, 2017
1 parent d97a1b5 commit fe29416
Showing 1 changed file with 3 additions and 4 deletions.
7 changes: 3 additions & 4 deletions drivers/gpio/gpio-loongson1.c
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
#include <linux/module.h>
#include <linux/gpio/driver.h>
#include <linux/platform_device.h>
#include <linux/bitops.h>

/* Loongson 1 GPIO Register Definitions */
#define GPIO_CFG 0x0
Expand All @@ -22,11 +23,10 @@ static void __iomem *gpio_reg_base;

static int ls1x_gpio_request(struct gpio_chip *gc, unsigned int offset)
{
unsigned long pinmask = gc->pin2mask(gc, offset);
unsigned long flags;

spin_lock_irqsave(&gc->bgpio_lock, flags);
__raw_writel(__raw_readl(gpio_reg_base + GPIO_CFG) | pinmask,
__raw_writel(__raw_readl(gpio_reg_base + GPIO_CFG) | BIT(offset),
gpio_reg_base + GPIO_CFG);
spin_unlock_irqrestore(&gc->bgpio_lock, flags);

Expand All @@ -35,11 +35,10 @@ static int ls1x_gpio_request(struct gpio_chip *gc, unsigned int offset)

static void ls1x_gpio_free(struct gpio_chip *gc, unsigned int offset)
{
unsigned long pinmask = gc->pin2mask(gc, offset);
unsigned long flags;

spin_lock_irqsave(&gc->bgpio_lock, flags);
__raw_writel(__raw_readl(gpio_reg_base + GPIO_CFG) & ~pinmask,
__raw_writel(__raw_readl(gpio_reg_base + GPIO_CFG) & ~BIT(offset),
gpio_reg_base + GPIO_CFG);
spin_unlock_irqrestore(&gc->bgpio_lock, flags);
}
Expand Down

0 comments on commit fe29416

Please sign in to comment.