#include <linux/export.h>
 #include <linux/spinlock.h>
 #include <linux/platform_device.h>
-#include <linux/gpio.h>
+#include <linux/gpio/driver.h>
 
 #include <asm/mach-rc32434/rb.h>
 #include <asm/mach-rc32434/gpio.h>
 {
        struct rb532_gpio_chip  *gpch;
 
-       gpch = container_of(chip, struct rb532_gpio_chip, chip);
+       gpch = gpiochip_get_data(chip);
        return !!rb532_get_bit(offset, gpch->regbase + GPIOD);
 }
 
 {
        struct rb532_gpio_chip  *gpch;
 
-       gpch = container_of(chip, struct rb532_gpio_chip, chip);
+       gpch = gpiochip_get_data(chip);
        rb532_set_bit(value, offset, gpch->regbase + GPIOD);
 }
 
 {
        struct rb532_gpio_chip  *gpch;
 
-       gpch = container_of(chip, struct rb532_gpio_chip, chip);
+       gpch = gpiochip_get_data(chip);
 
        /* disable alternate function in case it's set */
        rb532_set_bit(0, offset, gpch->regbase + GPIOFUNC);
 {
        struct rb532_gpio_chip  *gpch;
 
-       gpch = container_of(chip, struct rb532_gpio_chip, chip);
+       gpch = gpiochip_get_data(chip);
 
        /* disable alternate function in case it's set */
        rb532_set_bit(0, offset, gpch->regbase + GPIOFUNC);
        }
 
        /* Register our GPIO chip */
-       gpiochip_add(&rb532_gpio_chip->chip);
+       gpiochip_add_data(&rb532_gpio_chip->chip, rb532_gpio_chip);
 
        return 0;
 }