#include "pinctrl-utils.h"
 #include "pinctrl-amd.h"
 
-static inline struct amd_gpio *to_amd_gpio(struct gpio_chip *gc)
-{
-       return container_of(gc, struct amd_gpio, gc);
-}
-
 static int amd_gpio_direction_input(struct gpio_chip *gc, unsigned offset)
 {
        unsigned long flags;
        u32 pin_reg;
-       struct amd_gpio *gpio_dev = to_amd_gpio(gc);
+       struct amd_gpio *gpio_dev = gpiochip_get_data(gc);
 
        spin_lock_irqsave(&gpio_dev->lock, flags);
        pin_reg = readl(gpio_dev->base + offset * 4);
 {
        u32 pin_reg;
        unsigned long flags;
-       struct amd_gpio *gpio_dev = to_amd_gpio(gc);
+       struct amd_gpio *gpio_dev = gpiochip_get_data(gc);
 
        spin_lock_irqsave(&gpio_dev->lock, flags);
        pin_reg = readl(gpio_dev->base + offset * 4);
 {
        u32 pin_reg;
        unsigned long flags;
-       struct amd_gpio *gpio_dev = to_amd_gpio(gc);
+       struct amd_gpio *gpio_dev = gpiochip_get_data(gc);
 
        spin_lock_irqsave(&gpio_dev->lock, flags);
        pin_reg = readl(gpio_dev->base + offset * 4);
 {
        u32 pin_reg;
        unsigned long flags;
-       struct amd_gpio *gpio_dev = to_amd_gpio(gc);
+       struct amd_gpio *gpio_dev = gpiochip_get_data(gc);
 
        spin_lock_irqsave(&gpio_dev->lock, flags);
        pin_reg = readl(gpio_dev->base + offset * 4);
        u32 pin_reg;
        int ret = 0;
        unsigned long flags;
-       struct amd_gpio *gpio_dev = to_amd_gpio(gc);
+       struct amd_gpio *gpio_dev = gpiochip_get_data(gc);
 
        spin_lock_irqsave(&gpio_dev->lock, flags);
        pin_reg = readl(gpio_dev->base + offset * 4);
        u32 pin_reg;
        unsigned long flags;
        unsigned int bank, i, pin_num;
-       struct amd_gpio *gpio_dev = to_amd_gpio(gc);
+       struct amd_gpio *gpio_dev = gpiochip_get_data(gc);
 
        char *level_trig;
        char *active_level;
        u32 pin_reg;
        unsigned long flags;
        struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
-       struct amd_gpio *gpio_dev = to_amd_gpio(gc);
+       struct amd_gpio *gpio_dev = gpiochip_get_data(gc);
 
        spin_lock_irqsave(&gpio_dev->lock, flags);
        pin_reg = readl(gpio_dev->base + (d->hwirq)*4);
        u32 pin_reg;
        unsigned long flags;
        struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
-       struct amd_gpio *gpio_dev = to_amd_gpio(gc);
+       struct amd_gpio *gpio_dev = gpiochip_get_data(gc);
 
        spin_lock_irqsave(&gpio_dev->lock, flags);
        pin_reg = readl(gpio_dev->base + (d->hwirq)*4);
        u32 pin_reg;
        unsigned long flags;
        struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
-       struct amd_gpio *gpio_dev = to_amd_gpio(gc);
+       struct amd_gpio *gpio_dev = gpiochip_get_data(gc);
 
        spin_lock_irqsave(&gpio_dev->lock, flags);
        pin_reg = readl(gpio_dev->base + (d->hwirq)*4);
        u32 pin_reg;
        unsigned long flags;
        struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
-       struct amd_gpio *gpio_dev = to_amd_gpio(gc);
+       struct amd_gpio *gpio_dev = gpiochip_get_data(gc);
 
        spin_lock_irqsave(&gpio_dev->lock, flags);
        pin_reg = readl(gpio_dev->base + (d->hwirq)*4);
        u32 reg;
        unsigned long flags;
        struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
-       struct amd_gpio *gpio_dev = to_amd_gpio(gc);
+       struct amd_gpio *gpio_dev = gpiochip_get_data(gc);
 
        spin_lock_irqsave(&gpio_dev->lock, flags);
        reg = readl(gpio_dev->base + WAKE_INT_MASTER_REG);
        u32 pin_reg;
        unsigned long flags;
        struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
-       struct amd_gpio *gpio_dev = to_amd_gpio(gc);
+       struct amd_gpio *gpio_dev = gpiochip_get_data(gc);
 
        spin_lock_irqsave(&gpio_dev->lock, flags);
        pin_reg = readl(gpio_dev->base + (d->hwirq)*4);
        unsigned long flags;
        struct irq_chip *chip = irq_desc_get_chip(desc);
        struct gpio_chip *gc = irq_desc_get_handler_data(desc);
-       struct amd_gpio *gpio_dev = to_amd_gpio(gc);
+       struct amd_gpio *gpio_dev = gpiochip_get_data(gc);
 
        chained_irq_enter(chip, desc);
        /*enable GPIO interrupt again*/
                return PTR_ERR(gpio_dev->pctrl);
        }
 
-       ret = gpiochip_add(&gpio_dev->gc);
+       ret = gpiochip_add_data(&gpio_dev->gc, gpio_dev);
        if (ret)
                goto out1;