/* linux/arch/arm/mach-s3c2410/gpio.c
*
- * Copyright (c) 2004 Simtec Electronics
- * Ben Dooks <ben@simtec.co.uk>
+ * Copyright (c) 2004-2005 Simtec Electronics
+ * Ben Dooks <ben@simtec.co.uk>
*
* S3C2410 GPIO support
*
* 01-Oct-2004 BJD Fixed mask bug in pullup() call
* 01-Oct-2004 BJD Added getirq() to turn pin into irqno
* 04-Oct-2004 BJD Added irq filter controls for GPIO
+ * 05-Nov-2004 BJD EXPORT_SYMBOL() added for all code
+ * 13-Mar-2005 BJD Updates for __iomem
*/
+#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/module.h>
#include <linux/interrupt.h>
void s3c2410_gpio_cfgpin(unsigned int pin, unsigned int function)
{
- unsigned long base = S3C2410_GPIO_BASE(pin);
+ void __iomem *base = S3C2410_GPIO_BASE(pin);
unsigned long mask;
unsigned long con;
unsigned long flags;
local_irq_restore(flags);
}
+EXPORT_SYMBOL(s3c2410_gpio_cfgpin);
+
unsigned int s3c2410_gpio_getcfg(unsigned int pin)
{
- unsigned long base = S3C2410_GPIO_BASE(pin);
+ void __iomem *base = S3C2410_GPIO_BASE(pin);
unsigned long mask;
if (pin < S3C2410_GPIO_BANKB) {
return __raw_readl(base) & mask;
}
+EXPORT_SYMBOL(s3c2410_gpio_getcfg);
+
void s3c2410_gpio_pullup(unsigned int pin, unsigned int to)
{
- unsigned long base = S3C2410_GPIO_BASE(pin);
+ void __iomem *base = S3C2410_GPIO_BASE(pin);
unsigned long offs = S3C2410_GPIO_OFFSET(pin);
unsigned long flags;
unsigned long up;
local_irq_restore(flags);
}
+EXPORT_SYMBOL(s3c2410_gpio_pullup);
+
void s3c2410_gpio_setpin(unsigned int pin, unsigned int to)
{
- unsigned long base = S3C2410_GPIO_BASE(pin);
+ void __iomem *base = S3C2410_GPIO_BASE(pin);
unsigned long offs = S3C2410_GPIO_OFFSET(pin);
unsigned long flags;
unsigned long dat;
local_irq_restore(flags);
}
+EXPORT_SYMBOL(s3c2410_gpio_setpin);
+
unsigned int s3c2410_gpio_getpin(unsigned int pin)
{
- unsigned long base = S3C2410_GPIO_BASE(pin);
+ void __iomem *base = S3C2410_GPIO_BASE(pin);
unsigned long offs = S3C2410_GPIO_OFFSET(pin);
return __raw_readl(base + 0x04) & (1<< offs);
}
+EXPORT_SYMBOL(s3c2410_gpio_getpin);
+
unsigned int s3c2410_modify_misccr(unsigned int clear, unsigned int change)
{
unsigned long flags;
return misccr;
}
+EXPORT_SYMBOL(s3c2410_modify_misccr);
+
int s3c2410_gpio_getirq(unsigned int pin)
{
if (pin < S3C2410_GPF0 || pin > S3C2410_GPG15_EINT23)
return (pin - S3C2410_GPG0) + IRQ_EINT8;
}
+EXPORT_SYMBOL(s3c2410_gpio_getirq);
+
int s3c2410_gpio_irqfilter(unsigned int pin, unsigned int on,
unsigned int config)
{
- unsigned long reg = S3C2410_EINFLT0;
+ void __iomem *reg = S3C2410_EINFLT0;
unsigned long flags;
unsigned long val;
return 0;
}
+
+EXPORT_SYMBOL(s3c2410_gpio_irqfilter);