On Tue, 5 Feb 2019 at 10:30, Linus Walleij <linus.walleij@xxxxxxxxxx> wrote: > > The argument "override_active_level" made it possible to > enforce a specific polarity on the write-protect > GPIO line. All callers in the kernel pass "false" to this > call after I have converted all drivers to use GPIO machine > descriptors, so remove the argument and clean out this. > > This kind of polarity inversion should be handled by the > GPIO descriptor inside the GPIO library if needed. > > This rids us of one instance of the kludgy calls into > the gpiod_get_raw_value() API. > > Signed-off-by: Linus Walleij <linus.walleij@xxxxxxxxxx> The change in jz4740_mmc is not needed anymore, because of an earlier clean up I have queued. However, no need to re-spin, I have amended the patch. Applied for next, thanks! Kind regards Uffe > --- > drivers/mmc/core/host.c | 2 +- > drivers/mmc/core/slot-gpio.c | 9 +-------- > drivers/mmc/host/davinci_mmc.c | 2 +- > drivers/mmc/host/jz4740_mmc.c | 2 +- > drivers/mmc/host/mmc_spi.c | 2 +- > drivers/mmc/host/mmci.c | 2 +- > drivers/mmc/host/pxamci.c | 2 +- > drivers/mmc/host/s3cmci.c | 2 +- > drivers/mmc/host/sdhci-esdhc-imx.c | 2 +- > include/linux/mmc/slot-gpio.h | 2 +- > 10 files changed, 10 insertions(+), 17 deletions(-) > > diff --git a/drivers/mmc/core/host.c b/drivers/mmc/core/host.c > index cf58ccaf22d5..766a90016e7e 100644 > --- a/drivers/mmc/core/host.c > +++ b/drivers/mmc/core/host.c > @@ -260,7 +260,7 @@ int mmc_of_parse(struct mmc_host *host) > /* Parse Write Protection */ > ro_cap_invert = device_property_read_bool(dev, "wp-inverted"); > > - ret = mmc_gpiod_request_ro(host, "wp", 0, false, 0, &ro_gpio_invert); > + ret = mmc_gpiod_request_ro(host, "wp", 0, 0, &ro_gpio_invert); > if (!ret) > dev_info(host->parent, "Got WP GPIO\n"); > else if (ret != -ENOENT && ret != -ENOSYS) > diff --git a/drivers/mmc/core/slot-gpio.c b/drivers/mmc/core/slot-gpio.c > index 319ccd93383d..4afc6b87b465 100644 > --- a/drivers/mmc/core/slot-gpio.c > +++ b/drivers/mmc/core/slot-gpio.c > @@ -22,7 +22,6 @@ > struct mmc_gpio { > struct gpio_desc *ro_gpio; > struct gpio_desc *cd_gpio; > - bool override_ro_active_level; > bool override_cd_active_level; > irqreturn_t (*cd_gpio_isr)(int irq, void *dev_id); > char *ro_label; > @@ -71,10 +70,6 @@ int mmc_gpio_get_ro(struct mmc_host *host) > if (!ctx || !ctx->ro_gpio) > return -ENOSYS; > > - if (ctx->override_ro_active_level) > - return !gpiod_get_raw_value_cansleep(ctx->ro_gpio) ^ > - !!(host->caps2 & MMC_CAP2_RO_ACTIVE_HIGH); > - > return gpiod_get_value_cansleep(ctx->ro_gpio); > } > EXPORT_SYMBOL(mmc_gpio_get_ro); > @@ -225,7 +220,6 @@ EXPORT_SYMBOL(mmc_can_gpio_cd); > * @host: mmc host > * @con_id: function within the GPIO consumer > * @idx: index of the GPIO to obtain in the consumer > - * @override_active_level: ignore %GPIO_ACTIVE_LOW flag > * @debounce: debounce time in microseconds > * @gpio_invert: will return whether the GPIO line is inverted or not, > * set to NULL to ignore > @@ -233,7 +227,7 @@ EXPORT_SYMBOL(mmc_can_gpio_cd); > * Returns zero on success, else an error. > */ > int mmc_gpiod_request_ro(struct mmc_host *host, const char *con_id, > - unsigned int idx, bool override_active_level, > + unsigned int idx, > unsigned int debounce, bool *gpio_invert) > { > struct mmc_gpio *ctx = host->slot.handler_priv; > @@ -253,7 +247,6 @@ int mmc_gpiod_request_ro(struct mmc_host *host, const char *con_id, > if (gpio_invert) > *gpio_invert = !gpiod_is_active_low(desc); > > - ctx->override_ro_active_level = override_active_level; > ctx->ro_gpio = desc; > > return 0; > diff --git a/drivers/mmc/host/davinci_mmc.c b/drivers/mmc/host/davinci_mmc.c > index 9e68c3645e22..49e0daf2ef5e 100644 > --- a/drivers/mmc/host/davinci_mmc.c > +++ b/drivers/mmc/host/davinci_mmc.c > @@ -1193,7 +1193,7 @@ static int mmc_davinci_parse_pdata(struct mmc_host *mmc) > else if (ret) > mmc->caps |= MMC_CAP_NEEDS_POLL; > > - ret = mmc_gpiod_request_ro(mmc, "wp", 0, false, 0, NULL); > + ret = mmc_gpiod_request_ro(mmc, "wp", 0, 0, NULL); > if (ret == -EPROBE_DEFER) > return ret; > > diff --git a/drivers/mmc/host/jz4740_mmc.c b/drivers/mmc/host/jz4740_mmc.c > index 33215d66afa2..69eefb1bfe84 100644 > --- a/drivers/mmc/host/jz4740_mmc.c > +++ b/drivers/mmc/host/jz4740_mmc.c > @@ -959,7 +959,7 @@ static int jz4740_mmc_request_gpios(struct jz4740_mmc_host *host, > if (ret == -EPROBE_DEFER) > return ret; > > - ret = mmc_gpiod_request_ro(mmc, "wp", 0, false, 0, NULL); > + ret = mmc_gpiod_request_ro(mmc, "wp", 0, 0, NULL); > if (ret == -EPROBE_DEFER) > return ret; > > diff --git a/drivers/mmc/host/mmc_spi.c b/drivers/mmc/host/mmc_spi.c > index 10ba46b728e8..d7a5bbeb391b 100644 > --- a/drivers/mmc/host/mmc_spi.c > +++ b/drivers/mmc/host/mmc_spi.c > @@ -1452,7 +1452,7 @@ static int mmc_spi_probe(struct spi_device *spi) > } > > /* Index 1 is write protect/read only */ > - status = mmc_gpiod_request_ro(mmc, NULL, 1, false, 0, NULL); > + status = mmc_gpiod_request_ro(mmc, NULL, 1, 0, NULL); > if (status == -EPROBE_DEFER) > goto fail_add_host; > if (!status) > diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c > index e352f5ad5801..7dd3ccf5baf0 100644 > --- a/drivers/mmc/host/mmci.c > +++ b/drivers/mmc/host/mmci.c > @@ -2011,7 +2011,7 @@ static int mmci_probe(struct amba_device *dev, > if (ret == -EPROBE_DEFER) > goto clk_disable; > > - ret = mmc_gpiod_request_ro(mmc, "wp", 0, false, 0, NULL); > + ret = mmc_gpiod_request_ro(mmc, "wp", 0, 0, NULL); > if (ret == -EPROBE_DEFER) > goto clk_disable; > } > diff --git a/drivers/mmc/host/pxamci.c b/drivers/mmc/host/pxamci.c > index 8779bbaa6b69..c907bf502a12 100644 > --- a/drivers/mmc/host/pxamci.c > +++ b/drivers/mmc/host/pxamci.c > @@ -743,7 +743,7 @@ static int pxamci_probe(struct platform_device *pdev) > goto out; > } > > - ret = mmc_gpiod_request_ro(mmc, "wp", 0, false, 0, NULL); > + ret = mmc_gpiod_request_ro(mmc, "wp", 0, 0, NULL); > if (ret && ret != -ENOENT) { > dev_err(dev, "Failed requesting gpio_ro\n"); > goto out; > diff --git a/drivers/mmc/host/s3cmci.c b/drivers/mmc/host/s3cmci.c > index 10f5219b3b40..f31333e831a7 100644 > --- a/drivers/mmc/host/s3cmci.c > +++ b/drivers/mmc/host/s3cmci.c > @@ -1530,7 +1530,7 @@ static int s3cmci_probe_pdata(struct s3cmci_host *host) > return ret; > } > > - ret = mmc_gpiod_request_ro(host->mmc, "wp", 0, false, 0, NULL); > + ret = mmc_gpiod_request_ro(host->mmc, "wp", 0, 0, NULL); > if (ret != -ENOENT) { > dev_err(&pdev->dev, "error requesting GPIO for WP %d\n", > ret); > diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c > index d0d319398a54..33256b016950 100644 > --- a/drivers/mmc/host/sdhci-esdhc-imx.c > +++ b/drivers/mmc/host/sdhci-esdhc-imx.c > @@ -1200,7 +1200,7 @@ static int sdhci_esdhc_imx_probe_nondt(struct platform_device *pdev, > host->mmc->parent->platform_data); > /* write_protect */ > if (boarddata->wp_type == ESDHC_WP_GPIO) { > - err = mmc_gpiod_request_ro(host->mmc, "wp", 0, false, 0, NULL); > + err = mmc_gpiod_request_ro(host->mmc, "wp", 0, 0, NULL); > if (err) { > dev_err(mmc_dev(host->mmc), > "failed to request write-protect gpio!\n"); > diff --git a/include/linux/mmc/slot-gpio.h b/include/linux/mmc/slot-gpio.h > index feebd7aa6f5c..9fd3ce64a885 100644 > --- a/include/linux/mmc/slot-gpio.h > +++ b/include/linux/mmc/slot-gpio.h > @@ -22,7 +22,7 @@ int mmc_gpiod_request_cd(struct mmc_host *host, const char *con_id, > unsigned int idx, bool override_active_level, > unsigned int debounce, bool *gpio_invert); > int mmc_gpiod_request_ro(struct mmc_host *host, const char *con_id, > - unsigned int idx, bool override_active_level, > + unsigned int idx, > unsigned int debounce, bool *gpio_invert); > void mmc_gpio_set_cd_isr(struct mmc_host *host, > irqreturn_t (*isr)(int irq, void *dev_id)); > -- > 2.20.1 >