On 21/11/13 16:45, Mika Westerberg wrote: > The new descriptor based GPIO interface is now the recommend and more safer
"recommend and more safer" -> "recommended and safer" > way of using GPIOs from device drivers. Convert the ACPI SDHCI driver to > use that interface. > > Signed-off-by: Mika Westerberg <mika.westerb...@linux.intel.com> > --- > drivers/mmc/host/sdhci-acpi.c | 26 ++++++++++---------------- > 1 file changed, 10 insertions(+), 16 deletions(-) > > diff --git a/drivers/mmc/host/sdhci-acpi.c b/drivers/mmc/host/sdhci-acpi.c > index ef19874fcd1f..379ddfe14bc7 100644 > --- a/drivers/mmc/host/sdhci-acpi.c > +++ b/drivers/mmc/host/sdhci-acpi.c > @@ -31,10 +31,9 @@ > #include <linux/bitops.h> > #include <linux/types.h> > #include <linux/err.h> > -#include <linux/gpio.h> > +#include <linux/gpio/consumer.h> > #include <linux/interrupt.h> > #include <linux/acpi.h> > -#include <linux/acpi_gpio.h> > #include <linux/pm.h> > #include <linux/pm_runtime.h> > #include <linux/delay.h> > @@ -199,22 +198,19 @@ 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, NULL, 0); I notice that: devm_gpio_request_one(.., label) -> gpio_request_one(..., label) -> gpiod_request(..., label) but: devm_gpiod_get_index(..., con_id, ...) -> gpiod_get_index(..., con_id, ...) -> gpiod_request(..., con_id) which suggests that 'con_id' is equivalent to 'label'. i.e. "sd_cd". Is it? > + if (IS_ERR(desc)) { > + err = PTR_ERR(desc); > goto out; > } > > - err = devm_gpio_request_one(dev, gpio, GPIOF_DIR_IN, "sd_cd"); > - if (err) > - goto out; > - > - irq = gpio_to_irq(gpio); > + irq = gpiod_to_irq(desc); > if (irq < 0) { > err = irq; > goto out_free; > @@ -228,7 +224,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 +250,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 +275,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 +332,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; > } > > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/