#include <linux/ioport.h>
 #include <linux/init.h>
 #include <linux/io.h>
-#include <linux/gpio.h>
+#include <linux/gpio/driver.h>
 #include <asm/intel_scu_ipc.h>
 #include <linux/device.h>
 #include <linux/intel_pmic_gpio.h>
 
 static int pmic_gpio_to_irq(struct gpio_chip *chip, unsigned offset)
 {
-       struct pmic_gpio *pg = container_of(chip, struct pmic_gpio, chip);
+       struct pmic_gpio *pg = gpiochip_get_data(chip);
 
        return pg->irq_base + offset;
 }
        mutex_init(&pg->buslock);
 
        pg->chip.parent = dev;
-       retval = gpiochip_add(&pg->chip);
+       retval = gpiochip_add_data(&pg->chip, pg);
        if (retval) {
                pr_err("Can not add pmic gpio chip\n");
                goto err;