static int vx855gpio_direction_input(struct gpio_chip *gpio,
                                     unsigned int nr)
 {
-       struct vx855_gpio *vg = container_of(gpio, struct vx855_gpio, gpio);
+       struct vx855_gpio *vg = gpiochip_get_data(gpio);
        unsigned long flags;
        u_int32_t reg_out;
 
 
 static int vx855gpio_get(struct gpio_chip *gpio, unsigned int nr)
 {
-       struct vx855_gpio *vg = container_of(gpio, struct vx855_gpio, gpio);
+       struct vx855_gpio *vg = gpiochip_get_data(gpio);
        u_int32_t reg_in;
        int ret = 0;
 
 static void vx855gpio_set(struct gpio_chip *gpio, unsigned int nr,
                          int val)
 {
-       struct vx855_gpio *vg = container_of(gpio, struct vx855_gpio, gpio);
+       struct vx855_gpio *vg = gpiochip_get_data(gpio);
        unsigned long flags;
        u_int32_t reg_out;
 
 
        vx855gpio_gpio_setup(vg);
 
-       return gpiochip_add(&vg->gpio);
+       return gpiochip_add_data(&vg->gpio, vg);
 }
 
 static int vx855gpio_remove(struct platform_device *pdev)