#include <linux/mfd/core.h>
 #include <linux/mfd/tmio.h>
 #include <linux/mfd/tc6393xb.h>
-#include <linux/gpio.h>
+#include <linux/gpio/driver.h>
 #include <linux/slab.h>
 
 #define SCR_REVID      0x08            /* b Revision ID        */
 static int tc6393xb_gpio_get(struct gpio_chip *chip,
                unsigned offset)
 {
-       struct tc6393xb *tc6393xb = container_of(chip, struct tc6393xb, gpio);
+       struct tc6393xb *tc6393xb = gpiochip_get_data(chip);
 
        /* XXX: does dsr also represent inputs? */
        return !!(tmio_ioread8(tc6393xb->scr + SCR_GPO_DSR(offset / 8))
 static void __tc6393xb_gpio_set(struct gpio_chip *chip,
                unsigned offset, int value)
 {
-       struct tc6393xb *tc6393xb = container_of(chip, struct tc6393xb, gpio);
+       struct tc6393xb *tc6393xb = gpiochip_get_data(chip);
        u8  dsr;
 
        dsr = tmio_ioread8(tc6393xb->scr + SCR_GPO_DSR(offset / 8));
 static void tc6393xb_gpio_set(struct gpio_chip *chip,
                unsigned offset, int value)
 {
-       struct tc6393xb *tc6393xb = container_of(chip, struct tc6393xb, gpio);
+       struct tc6393xb *tc6393xb = gpiochip_get_data(chip);
        unsigned long flags;
 
        spin_lock_irqsave(&tc6393xb->lock, flags);
 static int tc6393xb_gpio_direction_input(struct gpio_chip *chip,
                        unsigned offset)
 {
-       struct tc6393xb *tc6393xb = container_of(chip, struct tc6393xb, gpio);
+       struct tc6393xb *tc6393xb = gpiochip_get_data(chip);
        unsigned long flags;
        u8 doecr;
 
 static int tc6393xb_gpio_direction_output(struct gpio_chip *chip,
                        unsigned offset, int value)
 {
-       struct tc6393xb *tc6393xb = container_of(chip, struct tc6393xb, gpio);
+       struct tc6393xb *tc6393xb = gpiochip_get_data(chip);
        unsigned long flags;
        u8 doecr;
 
        tc6393xb->gpio.direction_input = tc6393xb_gpio_direction_input;
        tc6393xb->gpio.direction_output = tc6393xb_gpio_direction_output;
 
-       return gpiochip_add(&tc6393xb->gpio);
+       return gpiochip_add_data(&tc6393xb->gpio, tc6393xb);
 }
 
 /*--------------------------------------------------------------------------*/