ASoC: codecs: ak4104: move to GPIO consumer API
authorDaniel Mack <daniel@zonque.org>
Thu, 6 Dec 2018 12:24:57 +0000 (13:24 +0100)
committerMark Brown <broonie@kernel.org>
Thu, 6 Dec 2018 20:08:55 +0000 (20:08 +0000)
Get the reset GPIO through the GPIO consumer API. This allows specifying the
DT property as "reset-gpios" without breaking existing DT users.

Signed-off-by: Daniel Mack <daniel@zonque.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/ak4104.c

index 32bc545c19cf73002e08e38606ec69b411b52537..6dec8a65eafcc2ce1eaa0513bd3bcbcf69042511 100644 (file)
@@ -13,7 +13,7 @@
 #include <linux/slab.h>
 #include <linux/spi/spi.h>
 #include <linux/of_device.h>
-#include <linux/of_gpio.h>
+#include <linux/gpio/consumer.h>
 #include <linux/regulator/consumer.h>
 #include <sound/asoundef.h>
 #include <sound/core.h>
@@ -268,8 +268,8 @@ static const struct regmap_config ak4104_regmap = {
 
 static int ak4104_spi_probe(struct spi_device *spi)
 {
-       struct device_node *np = spi->dev.of_node;
        struct ak4104_private *ak4104;
+       struct gpio_desc *reset_gpiod;
        unsigned int val;
        int ret;
 
@@ -297,19 +297,11 @@ static int ak4104_spi_probe(struct spi_device *spi)
                return ret;
        }
 
-       if (np) {
-               enum of_gpio_flags flags;
-               int gpio = of_get_named_gpio_flags(np, "reset-gpio", 0, &flags);
-
-               if (gpio_is_valid(gpio)) {
-                       ret = devm_gpio_request_one(&spi->dev, gpio,
-                                    flags & OF_GPIO_ACTIVE_LOW ?
-                                       GPIOF_OUT_INIT_LOW : GPIOF_OUT_INIT_HIGH,
-                                    "ak4104 reset");
-                       if (ret < 0)
-                               return ret;
-               }
-       }
+       reset_gpiod = devm_gpiod_get_optional(&spi->dev, "reset",
+                                             GPIOD_OUT_HIGH);
+       if (IS_ERR(reset_gpiod) &&
+           PTR_ERR(reset_gpiod) == -EPROBE_DEFER)
+               return -EPROBE_DEFER;
 
        /* read the 'reserved' register - according to the datasheet, it
         * should contain 0x5b. Not a good way to verify the presence of