};
 
 struct rt5668_platform_data {
-
-       int ldo1_en; /* GPIO for LDO1_EN */
-
        enum rt5668_dmic1_data_pin dmic1_data_pin;
        enum rt5668_dmic1_clk_pin dmic1_clk_pin;
        enum rt5668_jd_src jd_src;
 
 #include <linux/platform_device.h>
 #include <linux/spi/spi.h>
 #include <linux/acpi.h>
-#include <linux/gpio.h>
-#include <linux/of_gpio.h>
+#include <linux/gpio/consumer.h>
 #include <linux/regulator/consumer.h>
 #include <linux/mutex.h>
 #include <sound/core.h>
 struct rt5668_priv {
        struct snd_soc_component *component;
        struct rt5668_platform_data pdata;
+       struct gpio_desc *ldo1_en;
        struct regmap *regmap;
        struct snd_soc_jack *hs_jack;
        struct regulator_bulk_data supplies[RT5668_NUM_SUPPLIES];
        of_property_read_u32(dev->of_node, "realtek,jd-src",
                &rt5668->pdata.jd_src);
 
-       rt5668->pdata.ldo1_en = of_get_named_gpio(dev->of_node,
-               "realtek,ldo1-en-gpios", 0);
-
        return 0;
 }
 
                return ret;
        }
 
-       if (gpio_is_valid(rt5668->pdata.ldo1_en)) {
-               if (devm_gpio_request_one(&i2c->dev, rt5668->pdata.ldo1_en,
-                                         GPIOF_OUT_INIT_HIGH, "rt5668"))
-                       dev_err(&i2c->dev, "Fail gpio_request gpio_ldo\n");
+       rt5668->ldo1_en = devm_gpiod_get_optional(&i2c->dev,
+                                                 "realtek,ldo1-en",
+                                                 GPIOD_OUT_HIGH);
+       if (IS_ERR(rt5668->ldo1_en)) {
+               dev_err(&i2c->dev, "Fail gpio request ldo1_en\n");
+               return PTR_ERR(rt5668->ldo1_en);
        }
 
        /* Sleep for 300 ms miniumum */