]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/arm/plat-omap/gpio-switch.c
ARM: OMAP: Partial revert for EAC IO address changes
[linux-2.6-omap-h63xx.git] / arch / arm / plat-omap / gpio-switch.c
index 2b5665dcb68bde3a51256a185433ce9c0b956faa..9053ea08696d5c7c33d2ec25559abdc661f1ace5 100644 (file)
@@ -286,12 +286,17 @@ static int __init new_switch(struct gpio_switch *sw)
 
        /* input: 1, output: 0 */
        direction = !(sw->flags & OMAP_GPIO_SWITCH_FLAG_OUTPUT);
-       if (direction)
+       if (direction) {
                gpio_direction_input(sw->gpio);
-       else
-               gpio_direction_output(sw->gpio, true);
+               sw->state = gpio_sw_get_state(sw);
+       } else {
+               int state = sw->state = !!(sw->flags &
+                       OMAP_GPIO_SWITCH_FLAG_OUTPUT_INIT_ACTIVE);
 
-       sw->state = gpio_sw_get_state(sw);
+               if (sw->flags & OMAP_GPIO_SWITCH_FLAG_INVERTED)
+                       state = !state;
+               gpio_direction_output(sw->gpio, state);
+       }
 
        r = 0;
        r |= device_create_file(&sw->pdev.dev, &dev_attr_state);