From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Westerberg Subject: [PATCH v3 3/6] mmc: sdhci-acpi: convert to use GPIO descriptor API Date: Tue, 26 Nov 2013 12:05:47 +0200 Message-ID: <1385460350-17543-4-git-send-email-mika.westerberg@linux.intel.com> References: <1385460350-17543-1-git-send-email-mika.westerberg@linux.intel.com> Return-path: In-Reply-To: <1385460350-17543-1-git-send-email-mika.westerberg@linux.intel.com> Sender: linux-acpi-owner@vger.kernel.org To: linux-acpi@vger.kernel.org Cc: "Rafael J. Wysocki" , Linus Walleij , Chris Ball , Johannes Berg , Rhyland Klein , Adrian Hunter , Alexandre Courbot , Mathias Nyman , Rob Landley , Heikki Krogerus , Stephen Warren , Thierry Reding , Mika Westerberg , linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org List-Id: linux-gpio@vger.kernel.org The new descriptor based GPIO interface is now the recommended and safer way of using GPIOs from device drivers. Convert the ACPI SDHCI driver to use that interface. Signed-off-by: Mika Westerberg Acked-by: Adrian Hunter Acked-by: Alexandre Courbot --- drivers/mmc/host/sdhci-acpi.c | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/drivers/mmc/host/sdhci-acpi.c b/drivers/mmc/host/sdhci-acpi.c index ef19874fcd1f..5c86550f83ad 100644 --- a/drivers/mmc/host/sdhci-acpi.c +++ b/drivers/mmc/host/sdhci-acpi.c @@ -31,10 +31,9 @@ #include #include #include -#include +#include #include #include -#include #include #include #include @@ -199,22 +198,23 @@ static irqreturn_t sdhci_acpi_sd_cd(int irq, void *dev_id) return IRQ_HANDLED; } -static int sdhci_acpi_add_own_cd(struct device *dev, int gpio, - struct mmc_host *mmc) +static int sdhci_acpi_add_own_cd(struct device *dev, struct mmc_host *mmc) { + struct gpio_desc *desc; unsigned long flags; int err, irq; - if (gpio < 0) { - err = gpio; + desc = devm_gpiod_get_index(dev, "sd_cd", 0); + if (IS_ERR(desc)) { + err = PTR_ERR(desc); goto out; } - err = devm_gpio_request_one(dev, gpio, GPIOF_DIR_IN, "sd_cd"); + err = gpiod_direction_input(desc); if (err) - goto out; + goto out_free; - irq = gpio_to_irq(gpio); + irq = gpiod_to_irq(desc); if (irq < 0) { err = irq; goto out_free; @@ -228,7 +228,7 @@ static int sdhci_acpi_add_own_cd(struct device *dev, int gpio, return 0; out_free: - devm_gpio_free(dev, gpio); + devm_gpiod_put(dev, desc); out: dev_warn(dev, "failed to setup card detect wake up\n"); return err; @@ -254,7 +254,7 @@ static int sdhci_acpi_probe(struct platform_device *pdev) struct resource *iomem; resource_size_t len; const char *hid; - int err, gpio; + int err; if (acpi_bus_get_device(handle, &device)) return -ENODEV; @@ -279,8 +279,6 @@ static int sdhci_acpi_probe(struct platform_device *pdev) if (IS_ERR(host)) return PTR_ERR(host); - gpio = acpi_get_gpio_by_index(dev, 0, NULL); - c = sdhci_priv(host); c->host = host; c->slot = sdhci_acpi_get_slot(handle, hid); @@ -338,7 +336,7 @@ static int sdhci_acpi_probe(struct platform_device *pdev) goto err_free; if (sdhci_acpi_flag(c, SDHCI_ACPI_SD_CD)) { - if (sdhci_acpi_add_own_cd(dev, gpio, host->mmc)) + if (sdhci_acpi_add_own_cd(dev, host->mmc)) c->use_runtime_pm = false; } -- 1.8.4.3