ata: ahci-imx: Covert to use GPIO descriptor
[linux-2.6-microblaze.git] / drivers / ata / ahci_imx.c
index bfc617c..948d2c6 100644 (file)
@@ -11,8 +11,8 @@
 #include <linux/platform_device.h>
 #include <linux/regmap.h>
 #include <linux/ahci_platform.h>
+#include <linux/gpio/consumer.h>
 #include <linux/of_device.h>
-#include <linux/of_gpio.h>
 #include <linux/mfd/syscon.h>
 #include <linux/mfd/syscon/imx6q-iomuxc-gpr.h>
 #include <linux/libata.h>
@@ -100,7 +100,7 @@ struct imx_ahci_priv {
        struct clk *phy_pclk0;
        struct clk *phy_pclk1;
        void __iomem *phy_base;
-       int clkreq_gpio;
+       struct gpio_desc *clkreq_gpiod;
        struct regmap *gpr;
        bool no_device;
        bool first_time;
@@ -980,7 +980,6 @@ static struct scsi_host_template ahci_platform_sht = {
 
 static int imx8_sata_probe(struct device *dev, struct imx_ahci_priv *imxpriv)
 {
-       int ret;
        struct resource *phy_res;
        struct platform_device *pdev = imxpriv->ahci_pdev;
        struct device_node *np = dev->of_node;
@@ -1033,20 +1032,12 @@ static int imx8_sata_probe(struct device *dev, struct imx_ahci_priv *imxpriv)
        }
 
        /* Fetch GPIO, then enable the external OSC */
-       imxpriv->clkreq_gpio = of_get_named_gpio(np, "clkreq-gpio", 0);
-       if (gpio_is_valid(imxpriv->clkreq_gpio)) {
-               ret = devm_gpio_request_one(dev, imxpriv->clkreq_gpio,
-                                           GPIOF_OUT_INIT_LOW,
-                                           "SATA CLKREQ");
-               if (ret == -EBUSY) {
-                       dev_info(dev, "clkreq had been initialized.\n");
-               } else if (ret) {
-                       dev_err(dev, "%d unable to get clkreq.\n", ret);
-                       return ret;
-               }
-       } else if (imxpriv->clkreq_gpio == -EPROBE_DEFER) {
-               return imxpriv->clkreq_gpio;
-       }
+       imxpriv->clkreq_gpiod = devm_gpiod_get_optional(dev, "clkreq",
+                               GPIOD_OUT_LOW | GPIOD_FLAGS_BIT_NONEXCLUSIVE);
+       if (IS_ERR(imxpriv->clkreq_gpiod))
+               return PTR_ERR(imxpriv->clkreq_gpiod);
+       if (imxpriv->clkreq_gpiod)
+               gpiod_set_consumer_name(imxpriv->clkreq_gpiod, "SATA CLKREQ");
 
        return 0;
 }