ARM: OMAP: switch to gpio_direction_output
authorDavid Brownell <dbrownell@users.sourceforge.net>
Thu, 11 Dec 2008 01:35:26 +0000 (17:35 -0800)
committerTony Lindgren <tony@atomide.com>
Thu, 11 Dec 2008 01:35:26 +0000 (17:35 -0800)
More conversion to the standard GPIO interfaces:  stop using
omap_set_gpio_direction() entirely, and switch over to the
gpio_direction_output() call.

Note that because gpio_direction_output() includes the initial
value, this change isn't quite transparent.

 - For the call sites which defined an initial value either
   before or after setting the direction, that value was used.

   When that value was previously assigned afterwards, this
   could eliminate a brief output glitch ... and possibly
   change behavior.  In a few cases (LCDs) several values
   were assigned together ... those were re-arranged to match
   the explicit sequence provided.

 - Some call sites didn't define such a value; so I chose an
   initial "off/reset" value that seemed to default to "off".

In short, files touched by this patch might notice some small
changes in startup behavior (with trivial fixes).

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Tony Lindgren <tony@atomide.com>
arch/arm/mach-omap1/board-h2.c
arch/arm/mach-omap1/board-palmz71.c
arch/arm/mach-omap1/board-sx1.c
arch/arm/mach-omap1/board-voiceblue.c
arch/arm/mach-omap1/leds.c
arch/arm/mach-omap2/board-apollon.c
arch/arm/plat-omap/gpio.c
arch/arm/plat-omap/include/mach/gpio.h

index a2914ac4a20294a59056c6211b08814ba7b7fe51..7329ad549a9894c597d17f775cec3436bc6bee3e 100644 (file)
@@ -439,7 +439,7 @@ static void __init h2_init(void)
 #if defined(CONFIG_OMAP_IR) || defined(CONFIG_OMAP_IR_MODULE)
        omap_writel(omap_readl(FUNC_MUX_CTRL_A) | 7, FUNC_MUX_CTRL_A);
        if (!(omap_request_gpio(H2_IRDA_FIRSEL_GPIO_PIN))) {
-               omap_set_gpio_direction(H2_IRDA_FIRSEL_GPIO_PIN, 0);
+               gpio_direction_output(H2_IRDA_FIRSEL_GPIO_PIN, 0);
                h2_irda_data.transceiver_mode = h2_transceiver_mode;
        }
 #endif
index 5a232adaefcceb25e8c306f923de6dd5e891a586..dec20104eb5898c0ed6de3cb5966e3380bafabe1 100644 (file)
@@ -323,8 +323,7 @@ palmz71_gpio_setup(int early)
 {
        if (early) {
                /* Only set GPIO1 so we have a working serial */
-               gpio_set_value(1, 1);
-               omap_set_gpio_direction(1, 0);
+               gpio_direction_output(1, 1);
        } else {
                /* Set MMC/SD host WP pin as input */
                if (omap_request_gpio(PALMZ71_MMC_WP_GPIO)) {
index 22305270381df75f823fd7442f623cf180279986..93bd395b997270029af5c9e525f897d051b3d938 100644 (file)
@@ -436,14 +436,9 @@ static void __init omap_sx1_init(void)
        omap_request_gpio(1);   /* A_IRDA_OFF */
        omap_request_gpio(11);  /* A_SWITCH */
        omap_request_gpio(15);  /* A_USB_ON */
-       omap_set_gpio_direction(1, 0);/* gpio1 -> output */
-       omap_set_gpio_direction(11, 0);/* gpio11 -> output */
-       omap_set_gpio_direction(15, 0);/* gpio15 -> output */
-       /* set GPIO data */
-       gpio_set_value(1, 1);/*A_IRDA_OFF = 1 */
-       gpio_set_value(11, 0);/*A_SWITCH = 0 */
-       gpio_set_value(15, 0);/*A_USB_ON = 0 */
-
+       gpio_direction_output(1, 1);    /*A_IRDA_OFF = 1 */
+       gpio_direction_output(11, 0);   /*A_SWITCH = 0 */
+       gpio_direction_output(15, 0);   /*A_USB_ON = 0 */
 }
 /*----------------------------------------*/
 static void __init omap_sx1_init_irq(void)
index 86e73b7bffa92facf3a920f1a7919fecf2a81d29..43b008f639f5150fa75e3faae265a4f82eb27229 100644 (file)
@@ -171,8 +171,7 @@ static void __init voiceblue_init(void)
        omap_request_gpio(0);
        /* smc91x reset */
        omap_request_gpio(7);
-       omap_set_gpio_direction(7, 0);
-       gpio_set_value(7, 1);
+       gpio_direction_output(7, 1);
        udelay(2);      /* wait at least 100ns */
        gpio_set_value(7, 0);
        mdelay(50);     /* 50ms until PHY ready */
@@ -180,8 +179,7 @@ static void __init voiceblue_init(void)
        omap_request_gpio(8);
        /* 16C554 reset*/
        omap_request_gpio(6);
-       omap_set_gpio_direction(6, 0);
-       gpio_set_value(6, 0);
+       gpio_direction_output(6, 0);
        /* 16C554 interrupt pins */
        omap_request_gpio(12);
        omap_request_gpio(13);
@@ -244,8 +242,7 @@ static int wdt_gpio_state;
 
 void voiceblue_wdt_enable(void)
 {
-       omap_set_gpio_direction(0, 0);
-       gpio_set_value(0, 0);
+       gpio_direction_output(0, 0);
        gpio_set_value(0, 1);
        gpio_set_value(0, 0);
        wdt_gpio_state = 0;
index 6cdad93c4a0031732e31fe757f425c7cf91a545b..540434e38f22a5f7e858717f32ee596373cee49e 100644 (file)
@@ -48,13 +48,13 @@ omap_leds_init(void)
                 */
                omap_cfg_reg(P18_1610_GPIO3);
                if (omap_request_gpio(3) == 0)
-                       omap_set_gpio_direction(3, 0);
+                       gpio_direction_output(3, 1);
                else
                        printk(KERN_WARNING "LED: can't get GPIO3/red?\n");
 
                omap_cfg_reg(MPUIO4);
                if (omap_request_gpio(OMAP_MPUIO(4)) == 0)
-                       omap_set_gpio_direction(OMAP_MPUIO(4), 0);
+                       gpio_direction_output(OMAP_MPUIO(4), 1);
                else
                        printk(KERN_WARNING "LED: can't get MPUIO4/green?\n");
        }
index abc916723702e051ca9e2eecfb83f26bc92ba04d..ab6b8cd23eb4cf5a39da55bb5b87324eab5deca2 100644 (file)
@@ -360,8 +360,7 @@ static void __init apollon_usb_init(void)
        /* DEVICE_SUSPEND */
        omap_cfg_reg(P21_242X_GPIO12);
        omap_request_gpio(12);
-       omap_set_gpio_direction(12, 0);         /* OUT */
-       gpio_set_value(12, 0);
+       gpio_direction_output(12, 0);
 }
 
 static void __init omap_apollon_init(void)
index c0322b56efe90e63dbb80a11d8f64b18f4bd58cb..a6dbef4760354e6fa93f5404ffb9aba93b8cbb98 100644 (file)
@@ -333,19 +333,6 @@ static void _set_gpio_direction(struct gpio_bank *bank, int gpio, int is_input)
        __raw_writel(l, reg);
 }
 
-void omap_set_gpio_direction(int gpio, int is_input)
-{
-       struct gpio_bank *bank;
-       unsigned long flags;
-
-       if (check_gpio(gpio) < 0)
-               return;
-       bank = get_gpio_bank(gpio);
-       spin_lock_irqsave(&bank->lock, flags);
-       _set_gpio_direction(bank, get_gpio_index(gpio), is_input);
-       spin_unlock_irqrestore(&bank->lock, flags);
-}
-
 static void _set_gpio_dataout(struct gpio_bank *bank, int gpio, int enable)
 {
        void __iomem *reg = bank->base;
@@ -1741,7 +1728,6 @@ static int __init omap_gpio_sysinit(void)
 
 EXPORT_SYMBOL(omap_request_gpio);
 EXPORT_SYMBOL(omap_free_gpio);
-EXPORT_SYMBOL(omap_set_gpio_direction);
 
 arch_initcall(omap_gpio_sysinit);
 
index d91ba328a309d86d1cfbbe9485950f97f04ad3a7..552ad0c0ac4f09cde1e48b063ea5fda4a4ba6a1e 100644 (file)
@@ -73,7 +73,6 @@
 extern int omap_gpio_init(void);       /* Call from board init only */
 extern int omap_request_gpio(int gpio);
 extern void omap_free_gpio(int gpio);
-extern void omap_set_gpio_direction(int gpio, int is_input);
 extern void omap2_gpio_prepare_for_retention(void);
 extern void omap2_gpio_resume_after_retention(void);
 extern void omap_set_gpio_debounce(int gpio, int enable);