Re: [PATCH] mmc: slot-gpio: Remove override_active_level on WP

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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
>



[Index of Archives]     [Linux Memonry Technology]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux