Commit 31da46d9 authored by Ben Dooks's avatar Ben Dooks

ARM: S3C24XX: Wrapper s3c2410_gpio_setpin and s3c2410_gpio_pullup()

Change s3c2410_gpio_setpin() and s3c2410_gpio_pullup() to use
the new s3c_ gpio configuration calls until all their users
are converted.
Signed-off-by: default avatarBen Dooks <ben-linux@fluff.org>
parent fb378747
/* linux/arch/arm/plat-s3c24xx/gpio.c /* linux/arch/arm/plat-s3c24xx/gpio.c
* *
* Copyright (c) 2004-2005 Simtec Electronics * Copyright (c) 2004-2010 Simtec Electronics
* Ben Dooks <ben@simtec.co.uk> * Ben Dooks <ben@simtec.co.uk>
* *
* S3C24XX GPIO support * S3C24XX GPIO support
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
#include <linux/module.h> #include <linux/module.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/ioport.h> #include <linux/ioport.h>
#include <linux/gpio.h>
#include <linux/io.h> #include <linux/io.h>
#include <mach/hardware.h> #include <mach/hardware.h>
...@@ -33,44 +34,34 @@ ...@@ -33,44 +34,34 @@
#include <mach/regs-gpio.h> #include <mach/regs-gpio.h>
/* gpiolib wrappers until these are totally eliminated */
void s3c2410_gpio_pullup(unsigned int pin, unsigned int to) void s3c2410_gpio_pullup(unsigned int pin, unsigned int to)
{ {
void __iomem *base = S3C24XX_GPIO_BASE(pin); int ret;
unsigned long offs = S3C2410_GPIO_OFFSET(pin);
unsigned long flags;
unsigned long up;
if (pin < S3C2410_GPIO_BANKB) WARN_ON(to); /* should be none of these left */
return;
local_irq_save(flags); if (!to) {
/* if pull is enabled, try first with up, and if that
up = __raw_readl(base + 0x08); * fails, try using down */
up &= ~(1L << offs);
up |= to << offs;
__raw_writel(up, base + 0x08);
local_irq_restore(flags); ret = s3c_gpio_setpull(pin, S3C_GPIO_PULL_UP);
if (ret)
s3c_gpio_setpull(pin, S3C_GPIO_PULL_DOWN);
} else {
s3c_gpio_setpull(pin, S3C_GPIO_PULL_NONE);
}
} }
EXPORT_SYMBOL(s3c2410_gpio_pullup); EXPORT_SYMBOL(s3c2410_gpio_pullup);
void s3c2410_gpio_setpin(unsigned int pin, unsigned int to) void s3c2410_gpio_setpin(unsigned int pin, unsigned int to)
{ {
void __iomem *base = S3C24XX_GPIO_BASE(pin); /* do this via gpiolib until all users removed */
unsigned long offs = S3C2410_GPIO_OFFSET(pin);
unsigned long flags;
unsigned long dat;
local_irq_save(flags); gpio_request(pin, "temporary");
gpio_set_value(pin, to);
dat = __raw_readl(base + 0x04); gpio_free(pin);
dat &= ~(1 << offs);
dat |= to << offs;
__raw_writel(dat, base + 0x04);
local_irq_restore(flags);
} }
EXPORT_SYMBOL(s3c2410_gpio_setpin); EXPORT_SYMBOL(s3c2410_gpio_setpin);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment