|
@@ -59,11 +59,6 @@ struct gsta_gpio {
|
|
|
unsigned irq_type[GSTA_NR_GPIO];
|
|
|
};
|
|
|
|
|
|
-static inline struct gsta_regs __iomem *__regs(struct gsta_gpio *chip, int nr)
|
|
|
-{
|
|
|
- return chip->regs[nr / GSTA_GPIO_PER_BLOCK];
|
|
|
-}
|
|
|
-
|
|
|
/*
|
|
|
* gpio methods
|
|
|
*/
|
|
@@ -71,7 +66,7 @@ static inline struct gsta_regs __iomem *__regs(struct gsta_gpio *chip, int nr)
|
|
|
static void gsta_gpio_set(struct gpio_chip *gpio, unsigned nr, int val)
|
|
|
{
|
|
|
struct gsta_gpio *chip = gpiochip_get_data(gpio);
|
|
|
- struct gsta_regs __iomem *regs = __regs(chip, nr);
|
|
|
+ struct gsta_regs __iomem *regs = chip->regs[nr / GSTA_GPIO_PER_BLOCK];
|
|
|
u32 bit = BIT(nr % GSTA_GPIO_PER_BLOCK);
|
|
|
|
|
|
if (val)
|
|
@@ -83,7 +78,7 @@ static void gsta_gpio_set(struct gpio_chip *gpio, unsigned nr, int val)
|
|
|
static int gsta_gpio_get(struct gpio_chip *gpio, unsigned nr)
|
|
|
{
|
|
|
struct gsta_gpio *chip = gpiochip_get_data(gpio);
|
|
|
- struct gsta_regs __iomem *regs = __regs(chip, nr);
|
|
|
+ struct gsta_regs __iomem *regs = chip->regs[nr / GSTA_GPIO_PER_BLOCK];
|
|
|
u32 bit = BIT(nr % GSTA_GPIO_PER_BLOCK);
|
|
|
|
|
|
return !!(readl(®s->dat) & bit);
|
|
@@ -93,7 +88,7 @@ static int gsta_gpio_direction_output(struct gpio_chip *gpio, unsigned nr,
|
|
|
int val)
|
|
|
{
|
|
|
struct gsta_gpio *chip = gpiochip_get_data(gpio);
|
|
|
- struct gsta_regs __iomem *regs = __regs(chip, nr);
|
|
|
+ struct gsta_regs __iomem *regs = chip->regs[nr / GSTA_GPIO_PER_BLOCK];
|
|
|
u32 bit = BIT(nr % GSTA_GPIO_PER_BLOCK);
|
|
|
|
|
|
writel(bit, ®s->dirs);
|
|
@@ -108,7 +103,7 @@ static int gsta_gpio_direction_output(struct gpio_chip *gpio, unsigned nr,
|
|
|
static int gsta_gpio_direction_input(struct gpio_chip *gpio, unsigned nr)
|
|
|
{
|
|
|
struct gsta_gpio *chip = gpiochip_get_data(gpio);
|
|
|
- struct gsta_regs __iomem *regs = __regs(chip, nr);
|
|
|
+ struct gsta_regs __iomem *regs = chip->regs[nr / GSTA_GPIO_PER_BLOCK];
|
|
|
u32 bit = BIT(nr % GSTA_GPIO_PER_BLOCK);
|
|
|
|
|
|
writel(bit, ®s->dirc);
|
|
@@ -161,7 +156,7 @@ static void gsta_gpio_setup(struct gsta_gpio *chip) /* called from probe */
|
|
|
*/
|
|
|
static void gsta_set_config(struct gsta_gpio *chip, int nr, unsigned cfg)
|
|
|
{
|
|
|
- struct gsta_regs __iomem *regs = __regs(chip, nr);
|
|
|
+ struct gsta_regs __iomem *regs = chip->regs[nr / GSTA_GPIO_PER_BLOCK];
|
|
|
unsigned long flags;
|
|
|
u32 bit = BIT(nr % GSTA_GPIO_PER_BLOCK);
|
|
|
u32 val;
|
|
@@ -230,7 +225,7 @@ static void gsta_irq_disable(struct irq_data *data)
|
|
|
struct irq_chip_generic *gc = irq_data_get_irq_chip_data(data);
|
|
|
struct gsta_gpio *chip = gc->private;
|
|
|
int nr = data->irq - chip->irq_base;
|
|
|
- struct gsta_regs __iomem *regs = __regs(chip, nr);
|
|
|
+ struct gsta_regs __iomem *regs = chip->regs[nr / GSTA_GPIO_PER_BLOCK];
|
|
|
u32 bit = BIT(nr % GSTA_GPIO_PER_BLOCK);
|
|
|
u32 val;
|
|
|
unsigned long flags;
|
|
@@ -253,7 +248,7 @@ static void gsta_irq_enable(struct irq_data *data)
|
|
|
struct irq_chip_generic *gc = irq_data_get_irq_chip_data(data);
|
|
|
struct gsta_gpio *chip = gc->private;
|
|
|
int nr = data->irq - chip->irq_base;
|
|
|
- struct gsta_regs __iomem *regs = __regs(chip, nr);
|
|
|
+ struct gsta_regs __iomem *regs = chip->regs[nr / GSTA_GPIO_PER_BLOCK];
|
|
|
u32 bit = BIT(nr % GSTA_GPIO_PER_BLOCK);
|
|
|
u32 val;
|
|
|
int type;
|