don't define our own concurrent accesses to gpio banks
if we already have gpiolib to handle that.

Signed-off-by: Felipe Balbi <[email protected]>
---
 drivers/cbus/cbus.c |  109 ++++++--------------------------------------------
 drivers/cbus/cbus.h |    2 -
 2 files changed, 13 insertions(+), 98 deletions(-)

diff --git a/drivers/cbus/cbus.c b/drivers/cbus/cbus.c
index c976f49..615f447 100644
--- a/drivers/cbus/cbus.c
+++ b/drivers/cbus/cbus.c
@@ -41,78 +41,7 @@
 
 static struct cbus_host *cbus_host;
 
-#ifdef CONFIG_ARCH_OMAP1
-/* We use our own MPUIO functions to get closer to 1MHz bus speed */
-
-static inline void cbus_set_gpio_direction(void __iomem *base,
-               int mpuio, int is_input)
-{
-       u16 w;
-
-       mpuio &= 0x0f;
-       w = __raw_readw(base + OMAP_MPUIO_IO_CNTL);
-       if (is_input)
-               w |= 1 << mpuio;
-       else
-               w &= ~(1 << mpuio);
-       __raw_writew(w, base + OMAP_MPUIO_IO_CNTL);
-
-}
-
-static inline void cbus_set_gpio_dataout(void __iomem *base,
-               int mpuio, int enable)
-{
-       u16 w;
-
-       mpuio &= 0x0f;
-       w = __raw_readw(base + OMAP_MPUIO_OUTPUT);
-       if (enable)
-               w |= 1 << mpuio;
-       else
-               w &= ~(1 << mpuio);
-       __raw_writew(w, base + OMAP_MPUIO_OUTPUT);
-}
-
-static inline int cbus_get_gpio_datain(void __iomem *base, int mpuio)
-{
-       mpuio &= 0x0f;
-
-       return (__raw_readw(base + OMAP_MPUIO_INPUT_LATCH) & (1 << mpuio)) != 0;
-}
-
-static void cbus_send_bit(struct cbus_host *host, void __iomem *base, int bit,
-                         int set_to_input)
-{
-       cbus_set_gpio_dataout(base, host->dat_gpio, bit ? 1 : 0);
-       cbus_set_gpio_dataout(base, host->clk_gpio, 1);
-
-       /* The data bit is read on the rising edge of CLK */
-       if (set_to_input)
-               cbus_set_gpio_direction(base, host->dat_gpio, 1);
-
-       cbus_set_gpio_dataout(base, host->clk_gpio, 0);
-}
-
-static u8 cbus_receive_bit(struct cbus_host *host, void __iomem *base)
-{
-       u8 ret;
-
-       cbus_set_gpio_dataout(base, host->clk_gpio, 1);
-       ret = cbus_get_gpio_datain(base, host->dat_gpio);
-       cbus_set_gpio_dataout(base, host->clk_gpio, 0);
-
-       return ret;
-}
-
-#define cbus_output(base, gpio, val)   cbus_set_gpio_direction(base, gpio, 0)
-
-#else
-
-#define cbus_output(base, gpio, val)   gpio_direction_output(gpio, val)
-#define cbus_set_gpio_dataout(base, gpio, enable) gpio_set_value(gpio, enable)
-#define cbus_get_gpio_datain(base, int, gpio) gpio_get_value(gpio)
-
-static void _cbus_send_bit(struct cbus_host *host, int bit, int set_to_input)
+static void cbus_send_bit(struct cbus_host *host, int bit, int set_to_input)
 {
        gpio_set_value(host->dat_gpio, bit ? 1 : 0);
        gpio_set_value(host->clk_gpio, 1);
@@ -124,7 +53,7 @@ static void _cbus_send_bit(struct cbus_host *host, int bit, 
int set_to_input)
        gpio_set_value(host->clk_gpio, 0);
 }
 
-static u8 _cbus_receive_bit(struct cbus_host *host)
+static u8 cbus_receive_bit(struct cbus_host *host)
 {
        u8 ret;
 
@@ -135,23 +64,11 @@ static u8 _cbus_receive_bit(struct cbus_host *host)
        return ret;
 }
 
-#define cbus_send_bit(h, b, bit, i) _cbus_send_bit(h, bit, i)
-#define cbus_receive_bit(host, base) _cbus_receive_bit(host)
-
-#endif
-
 static int cbus_transfer(struct cbus_host *host, int dev, int reg, int data)
 {
        int i;
        int is_read = 0;
        unsigned long flags;
-       void __iomem *base;
-
-#ifdef CONFIG_ARCH_OMAP1
-       base = OMAP1_IO_ADDRESS(OMAP1_MPUIO_BASE);
-#else
-       base = NULL;
-#endif
 
        if (data < 0)
                is_read = 1;
@@ -160,17 +77,17 @@ static int cbus_transfer(struct cbus_host *host, int dev, 
int reg, int data)
        spin_lock_irqsave(&host->lock, flags);
 
        /* Reset state and start of transfer, SEL stays down during transfer */
-       cbus_set_gpio_dataout(base, host->sel_gpio, 0);
+       gpio_set_value(host->sel_gpio, 0);
 
        /* Set the DAT pin to output */
-       cbus_output(base, host->dat_gpio, 1);
+       gpio_direction_output(host->dat_gpio, 1);
 
        /* Send the device address */
        for (i = 3; i > 0; i--)
-               cbus_send_bit(host, base, dev & (1 << (i - 1)), 0);
+               cbus_send_bit(host, dev & (1 << (i - 1)), 0);
 
        /* Send the rw flag */
-       cbus_send_bit(host, base, is_read, 0);
+       cbus_send_bit(host, is_read, 0);
 
        /* Send the register address */
        for (i = 5; i > 0; i--) {
@@ -179,18 +96,18 @@ static int cbus_transfer(struct cbus_host *host, int dev, 
int reg, int data)
                if (is_read && i == 1)
                        set_to_input = 1;
 
-               cbus_send_bit(host, base, reg & (1 << (i - 1)), set_to_input);
+               cbus_send_bit(host, reg & (1 << (i - 1)), set_to_input);
        }
 
        if (!is_read) {
                for (i = 16; i > 0; i--)
-                       cbus_send_bit(host, base, data & (1 << (i - 1)), 0);
+                       cbus_send_bit(host, data & (1 << (i - 1)), 0);
        } else {
-               cbus_set_gpio_dataout(base, host->clk_gpio, 1);
+               gpio_set_value(host->clk_gpio, 1);
                data = 0;
 
                for (i = 16; i > 0; i--) {
-                       u8 bit = cbus_receive_bit(host, base);
+                       u8 bit = cbus_receive_bit(host);
 
                        if (bit)
                                data |= 1 << (i - 1);
@@ -198,9 +115,9 @@ static int cbus_transfer(struct cbus_host *host, int dev, 
int reg, int data)
        }
 
        /* Indicate end of transfer, SEL goes up until next transfer */
-       cbus_set_gpio_dataout(base, host->sel_gpio, 1);
-       cbus_set_gpio_dataout(base, host->clk_gpio, 1);
-       cbus_set_gpio_dataout(base, host->clk_gpio, 0);
+       gpio_set_value(host->sel_gpio, 1);
+       gpio_set_value(host->clk_gpio, 1);
+       gpio_set_value(host->clk_gpio, 0);
 
        spin_unlock_irqrestore(&host->lock, flags);
 
diff --git a/drivers/cbus/cbus.h b/drivers/cbus/cbus.h
index 4cd68fd..fbaca09 100644
--- a/drivers/cbus/cbus.h
+++ b/drivers/cbus/cbus.h
@@ -27,8 +27,6 @@ struct cbus_host {
        /* host lock */
        spinlock_t lock;
 
-       void __iomem *base;
-
        int     clk_gpio;
        int     dat_gpio;
        int     sel_gpio;
-- 
1.6.6.rc0

--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to