static int plgpio_request(struct gpio_chip *chip, unsigned offset)
 {
        struct plgpio *plgpio = gpiochip_get_data(chip);
-       int gpio = chip->base + offset;
        unsigned long flags;
        int ret = 0;
 
        if (offset >= chip->ngpio)
                return -EINVAL;
 
-       ret = pinctrl_gpio_request(gpio);
+       ret = pinctrl_gpio_request_new(chip, offset);
        if (ret)
                return ret;
 
        if (!IS_ERR(plgpio->clk))
                clk_disable(plgpio->clk);
 err0:
-       pinctrl_gpio_free(gpio);
+       pinctrl_gpio_free_new(chip, offset);
        return ret;
 }
 
 static void plgpio_free(struct gpio_chip *chip, unsigned offset)
 {
        struct plgpio *plgpio = gpiochip_get_data(chip);
-       int gpio = chip->base + offset;
        unsigned long flags;
 
        if (offset >= chip->ngpio)
        if (!IS_ERR(plgpio->clk))
                clk_disable(plgpio->clk);
 
-       pinctrl_gpio_free(gpio);
+       pinctrl_gpio_free_new(chip, offset);
 }
 
 /* PLGPIO IRQ */