From patchwork Tue Feb 5 09:30:22 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Linus Walleij X-Patchwork-Id: 157471 Delivered-To: patch@linaro.org Received: by 2002:a02:48:0:0:0:0:0 with SMTP id 69csp4929238jaa; Tue, 5 Feb 2019 01:30:32 -0800 (PST) X-Google-Smtp-Source: AHgI3IYdW2/8VcK76DsV6WDfEwYT870XxulqdMd//lhaB7xLlzqpOjG2a/mTs2i5RODbW1KFYmAX X-Received: by 2002:a62:c302:: with SMTP id v2mr4019149pfg.155.1549359032001; Tue, 05 Feb 2019 01:30:32 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1549359031; cv=none; d=google.com; s=arc-20160816; b=b+4UO94b/U3mjzY9ApYFYPGP8DQ39ajDgswl84iGuM4BayA7ki7tLM39dBBbEnqxfg 7syTFNmzNwsHCHhFGZpI3RXihTL7WXfpsFbUVI4Jo5ALm4lqTRI/NXLqgGsA+c8zk806 bzKedPu1BMM2mSFCHzGre3e9e+Q9KUma4gaUFBBTbqh2/opk4pM+ILQzVVQ3O8JyCdy9 59IQGhwP8vECxNZbZxyHbYNqZs4ffaEqS4v5Do9LlzRkbP0f6HR19DkZ/8eeyfgT2aZi KpnaYCejiUJELKwYuLG1jyAsAqKwx0RaxrzkrNLdxf39dMT5WyohXZbAvmZbYVZNBwjN xUbQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=IR/ZKhlAQcFT7oybeBb0cd+sYaaHLoT0aTDexImMz+s=; b=H/wM/cd1GtuLTrNbh37jQT2SvTJsuLiRWRU+lG4hBlfg8TPU6GSK3pPgDc0uLd22y9 GGd1lEMiXWb7CF21DT822Rxk/YrQqhutcSBayaXfx4apAAv6mMVWQo6PKtGW01GXyjIj 9oDwRUtRJ0sYBUfmmmHd8LrhhTUnzkKvN1M7R9L2w5gtcYOE8zmywqvr7c8Szk7BLBFS EXrpLerENbx7R5VRo0Hog8SLuqwfWmyXIIJwJisAmjNXWTerzYN8tLLPLrJzP2bHoWqT rD0s+uig9f4/TZtsKrzYRtbwTFAAZwmY3vx4mNAd3wCynhq2D1XxtD63BfPpAEbHp4Zj RxUQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=BuoaMEF2; spf=pass (google.com: best guess record for domain of linux-mmc-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-mmc-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id z9si2818099pfl.13.2019.02.05.01.30.31; Tue, 05 Feb 2019 01:30:31 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-mmc-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=BuoaMEF2; spf=pass (google.com: best guess record for domain of linux-mmc-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-mmc-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727248AbfBEJab (ORCPT + 5 others); Tue, 5 Feb 2019 04:30:31 -0500 Received: from mail-lf1-f67.google.com ([209.85.167.67]:45261 "EHLO mail-lf1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726731AbfBEJaa (ORCPT ); Tue, 5 Feb 2019 04:30:30 -0500 Received: by mail-lf1-f67.google.com with SMTP id b20so2058386lfa.12 for ; Tue, 05 Feb 2019 01:30:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=IR/ZKhlAQcFT7oybeBb0cd+sYaaHLoT0aTDexImMz+s=; b=BuoaMEF2eEWmK+UsbKuTgGO247o38qQ6oTKM2isC4KmE3aWP4jrzI7CiTl4lzK5CSM YiaRnBIgNPelq+mB7LI4m/eGg7KnBPJmpFCvvHV7DWhl/vwnpXp3j/pq4x1TTxZsP+9K CUAn0Djj5iuGYJXMflHzcEdcFXJ8fILZsgIc0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=IR/ZKhlAQcFT7oybeBb0cd+sYaaHLoT0aTDexImMz+s=; b=DXaJGSFHmgzlKHxQO3Pq/XvIev9yrykrg3qdDXs4EKMceNdzohpzB+nsjGrmLag40P pJPL6IMLmkoTj87jejM4APTa1OzZQBmeAkai/zk3ULu4g3+OFd6brZKyvzK80ZmeO4JT RIY7/Z2R4lfIhGHNrYN+cMT+Tw9O1nI3M/EoOiB317aYgXL3rLcjzLv/d6uHQ3+YXSZr ncZvqDm9dwdyardZHwFpNxZot1N8OvBwV0CpD3Guo9PntrZj8uz8dpRk0KO0mZtgeKry 95XRkTDOFvelRmTGj2Vn4G9kKSDb6C4GqDqEeMfo9s8P5xvhylFbzitzcWHjQlAVire6 +HCA== X-Gm-Message-State: AHQUAua+/dBY9eo5EfQJdHkJsi5v1LDhqs+2iyXw9h8R8YYzJ5Y1FVNE YgDGW+vJAZeJe6ln4L+VnMXvlDW3e20= X-Received: by 2002:ac2:5483:: with SMTP id t3mr2425940lfk.79.1549359027303; Tue, 05 Feb 2019 01:30:27 -0800 (PST) Received: from genomnajs.ideon.se ([85.235.10.227]) by smtp.gmail.com with ESMTPSA id n15sm344242lfh.56.2019.02.05.01.30.25 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 05 Feb 2019 01:30:25 -0800 (PST) From: Linus Walleij To: linux-mmc@vger.kernel.org, Ulf Hansson Cc: Linus Walleij Subject: [PATCH] mmc: slot-gpio: Remove override_active_level on WP Date: Tue, 5 Feb 2019 10:30:22 +0100 Message-Id: <20190205093022.14532-1-linus.walleij@linaro.org> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Sender: linux-mmc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-mmc@vger.kernel.org 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 --- 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(-) -- 2.20.1 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));