|
@@ -13,6 +13,7 @@
|
|
|
#include <linux/kernel.h>
|
|
|
#include <linux/errno.h>
|
|
|
#include <linux/sh_pfc.h>
|
|
|
+#include <linux/io.h>
|
|
|
|
|
|
#ifdef CONFIG_GPIOLIB
|
|
|
|
|
@@ -27,4 +28,35 @@ static inline int irq_to_gpio(unsigned int irq)
|
|
|
|
|
|
#endif /* CONFIG_GPIOLIB */
|
|
|
|
|
|
+/*
|
|
|
+ * 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 */
|