}
 EXPORT_SYMBOL_GPL(pinctrl_gpio_free);
 
-static int pinctrl_gpio_direction(unsigned gpio, bool input)
+static int pinctrl_gpio_direction(struct gpio_chip *gc, unsigned int offset,
+                                 bool input)
 {
        struct pinctrl_dev *pctldev;
        struct pinctrl_gpio_range *range;
        int ret;
        int pin;
 
-       ret = pinctrl_get_device_gpio_range(gpio, &pctldev, &range);
+       ret = pinctrl_get_device_gpio_range(gc->base + offset, &pctldev,
+                                           &range);
        if (ret) {
                return ret;
        }
        mutex_lock(&pctldev->mutex);
 
        /* Convert to the pin controllers number space */
-       pin = gpio_to_pin(range, gpio);
+       pin = gpio_to_pin(range, gc->base + offset);
        ret = pinmux_gpio_direction(pctldev, range, pin, input);
 
        mutex_unlock(&pctldev->mutex);
  */
 int pinctrl_gpio_direction_input(struct gpio_chip *gc, unsigned int offset)
 {
-       return pinctrl_gpio_direction(gc->base + offset, true);
+       return pinctrl_gpio_direction(gc, offset, true);
 }
 EXPORT_SYMBOL_GPL(pinctrl_gpio_direction_input);
 
  */
 int pinctrl_gpio_direction_output(struct gpio_chip *gc, unsigned int offset)
 {
-       return pinctrl_gpio_direction(gc->base + offset, false);
+       return pinctrl_gpio_direction(gc, offset, false);
 }
 EXPORT_SYMBOL_GPL(pinctrl_gpio_direction_output);