summaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-shmobile/sh-gpio.h
diff options
context:
space:
mode:
authorRob Herring <rob.herring@calxeda.com>2012-08-28 19:54:42 +0200
committerRob Herring <rob.herring@calxeda.com>2012-09-14 16:21:58 +0200
commit6679185909e79df85bd44fd964f80f36899d0880 (patch)
tree7cf6de310303227c7a1ec060fe4af60df0707746 /arch/arm/mach-shmobile/sh-gpio.h
parentARM: pxa: use gpio_to_irq for sharppm_sl (diff)
downloadlinux-6679185909e79df85bd44fd964f80f36899d0880.tar.xz
linux-6679185909e79df85bd44fd964f80f36899d0880.zip
ARM: shmobile: move custom gpio functions to sh-gpio.h
Move custom shmobile gpio code to a sh-gpio.h to remove the dependency on mach/gpio.h. shmobile always uses gpiolib, so we can remove __GPIOLIB_COMPLEX define from mach/gpio.h. Signed-off-by: Rob Herring <rob.herring@calxeda.com> Cc: Paul Mundt <lethal@linux-sh.org> Cc: Magnus Damm <magnus.damm@gmail.com>
Diffstat (limited to 'arch/arm/mach-shmobile/sh-gpio.h')
-rw-r--r--arch/arm/mach-shmobile/sh-gpio.h48
1 files changed, 48 insertions, 0 deletions
diff --git a/arch/arm/mach-shmobile/sh-gpio.h b/arch/arm/mach-shmobile/sh-gpio.h
new file mode 100644
index 000000000000..7ba1877fa97a
--- /dev/null
+++ b/arch/arm/mach-shmobile/sh-gpio.h
@@ -0,0 +1,48 @@
+/*
+ * Generic GPIO API and pinmux table support
+ *
+ * Copyright (c) 2008 Magnus Damm
+ *
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License. See the file "COPYING" in the main directory of this archive
+ * for more details.
+ */
+#ifndef __ASM_ARCH_GPIO_H
+#define __ASM_ARCH_GPIO_H
+
+#include <linux/kernel.h>
+#include <linux/errno.h>
+#include <linux/io.h>
+
+/*
+ * FIXME !!
+ *
+ * current gpio frame work doesn't have
+ * the method to control only pull up/down/free.
+ * this function should be replaced by correct gpio function
+ */
+static inline void __init gpio_direction_none(u32 addr)
+{
+ __raw_writeb(0x00, addr);
+}
+
+static inline void __init gpio_request_pullup(u32 addr)
+{
+ u8 data = __raw_readb(addr);
+
+ data &= 0x0F;
+ data |= 0xC0;
+ __raw_writeb(data, addr);
+}
+
+static inline void __init gpio_request_pulldown(u32 addr)
+{
+ u8 data = __raw_readb(addr);
+
+ data &= 0x0F;
+ data |= 0xA0;
+
+ __raw_writeb(data, addr);
+}
+
+#endif /* __ASM_ARCH_GPIO_H */