Merge tag 'v3.10.69' into update
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / drivers / gpio / gpiolib.c
index ca1cb2d756c29c36ae17cb2ca3091004c3b32666..931bdf3d020580521ca25ad1d77f83a217db3d78 100644 (file)
@@ -136,7 +136,7 @@ static struct gpio_desc *gpio_to_desc(unsigned gpio)
  */
 static int desc_to_gpio(const struct gpio_desc *desc)
 {
  */
 static int desc_to_gpio(const struct gpio_desc *desc)
 {
-       return desc->chip->base + gpio_chip_hwgpio(desc);
+       return desc - &gpio_desc[0];
 }
 
 
 }
 
 
@@ -1223,15 +1223,14 @@ int gpiochip_add(struct gpio_chip *chip)
                }
        }
 
                }
        }
 
+       spin_unlock_irqrestore(&gpio_lock, flags);
+
 #ifdef CONFIG_PINCTRL
        INIT_LIST_HEAD(&chip->pin_ranges);
 #endif
 
        of_gpiochip_add(chip);
 
 #ifdef CONFIG_PINCTRL
        INIT_LIST_HEAD(&chip->pin_ranges);
 #endif
 
        of_gpiochip_add(chip);
 
-unlock:
-       spin_unlock_irqrestore(&gpio_lock, flags);
-
        if (status)
                goto fail;
 
        if (status)
                goto fail;
 
@@ -1244,6 +1243,9 @@ unlock:
                chip->label ? : "generic");
 
        return 0;
                chip->label ? : "generic");
 
        return 0;
+
+unlock:
+       spin_unlock_irqrestore(&gpio_lock, flags);
 fail:
        /* failures here can mean systems won't boot... */
        pr_err("gpiochip_add: gpios %d..%d (%s) failed to register\n",
 fail:
        /* failures here can mean systems won't boot... */
        pr_err("gpiochip_add: gpios %d..%d (%s) failed to register\n",