* [PATCH v2 2/4] mmc: sdhci-tegra: use generic sdhci_set_bus_width()
2017-08-14 20:00 [PATCH v2 0/4] mmc: sdhci: sdhci_set_bus_width() cleanup Michał Mirosław
@ 2017-08-14 20:00 ` Michał Mirosław
[not found] ` <7d6cf1b81c67e3448edbab526e36bfdca737fc45.1502740497.git.mirq-linux-CoA6ZxLDdyEEUmgCuDUIdw@public.gmane.org>
2017-08-14 20:00 ` [PATCH v2 1/4] mmc: sdhci: key 8BITBUS bit off MMC_CAP_8_BIT_DATA Michał Mirosław
` (3 subsequent siblings)
4 siblings, 1 reply; 9+ messages in thread
From: Michał Mirosław @ 2017-08-14 20:00 UTC (permalink / raw)
To: Adrian Hunter, Ulf Hansson, Thierry Reding, Jonathan Hunter,
Ben Dooks, Jaehoon Chung
Cc: linux-mmc, linux-tegra
Now that sdhci_set_bus_width() supports 8-bit bus widths based on the
MMC_CAP_8_BIT_DATA capability flag, replace the tegra version with the
generic sdhci version.
Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
Acked-by: Adrian Hunter <adrian.hunter@intel.com>
---
drivers/mmc/host/sdhci-tegra.c | 23 ++---------------------
1 file changed, 2 insertions(+), 21 deletions(-)
diff --git a/drivers/mmc/host/sdhci-tegra.c b/drivers/mmc/host/sdhci-tegra.c
index 7f93079c7a3a..9a589b6a53dd 100644
--- a/drivers/mmc/host/sdhci-tegra.c
+++ b/drivers/mmc/host/sdhci-tegra.c
@@ -190,25 +190,6 @@ static void tegra_sdhci_reset(struct sdhci_host *host, u8 mask)
tegra_host->ddr_signaling = false;
}
-static void tegra_sdhci_set_bus_width(struct sdhci_host *host, int bus_width)
-{
- u32 ctrl;
-
- ctrl = sdhci_readb(host, SDHCI_HOST_CONTROL);
- if ((host->mmc->caps & MMC_CAP_8_BIT_DATA) &&
- (bus_width == MMC_BUS_WIDTH_8)) {
- ctrl &= ~SDHCI_CTRL_4BITBUS;
- ctrl |= SDHCI_CTRL_8BITBUS;
- } else {
- ctrl &= ~SDHCI_CTRL_8BITBUS;
- if (bus_width == MMC_BUS_WIDTH_4)
- ctrl |= SDHCI_CTRL_4BITBUS;
- else
- ctrl &= ~SDHCI_CTRL_4BITBUS;
- }
- sdhci_writeb(host, ctrl, SDHCI_HOST_CONTROL);
-}
-
static void tegra_sdhci_pad_autocalib(struct sdhci_host *host)
{
u32 val;
@@ -323,7 +304,7 @@ static const struct sdhci_ops tegra_sdhci_ops = {
.read_w = tegra_sdhci_readw,
.write_l = tegra_sdhci_writel,
.set_clock = tegra_sdhci_set_clock,
- .set_bus_width = tegra_sdhci_set_bus_width,
+ .set_bus_width = sdhci_set_bus_width,
.reset = tegra_sdhci_reset,
.platform_execute_tuning = tegra_sdhci_execute_tuning,
.set_uhs_signaling = tegra_sdhci_set_uhs_signaling,
@@ -371,7 +352,7 @@ static const struct sdhci_ops tegra114_sdhci_ops = {
.write_w = tegra_sdhci_writew,
.write_l = tegra_sdhci_writel,
.set_clock = tegra_sdhci_set_clock,
- .set_bus_width = tegra_sdhci_set_bus_width,
+ .set_bus_width = sdhci_set_bus_width,
.reset = tegra_sdhci_reset,
.platform_execute_tuning = tegra_sdhci_execute_tuning,
.set_uhs_signaling = tegra_sdhci_set_uhs_signaling,
--
2.11.0
^ permalink raw reply related [flat|nested] 9+ messages in thread* [PATCH v2 1/4] mmc: sdhci: key 8BITBUS bit off MMC_CAP_8_BIT_DATA
2017-08-14 20:00 [PATCH v2 0/4] mmc: sdhci: sdhci_set_bus_width() cleanup Michał Mirosław
2017-08-14 20:00 ` [PATCH v2 2/4] mmc: sdhci-tegra: use generic sdhci_set_bus_width() Michał Mirosław
@ 2017-08-14 20:00 ` Michał Mirosław
[not found] ` <48d72c32067a8e4ae50c77ee9cc5c077bb2809ae.1502740497.git.mirq-linux-CoA6ZxLDdyEEUmgCuDUIdw@public.gmane.org>
2017-08-14 20:00 ` [PATCH v2 3/4] mmc: sdhci-pci: use generic sdhci_set_bus_width() Michał Mirosław
` (2 subsequent siblings)
4 siblings, 1 reply; 9+ messages in thread
From: Michał Mirosław @ 2017-08-14 20:00 UTC (permalink / raw)
To: Adrian Hunter, Ulf Hansson, Thierry Reding, Jonathan Hunter,
Ben Dooks, Jaehoon Chung
Cc: linux-mmc, linux-tegra
Hosts supporting 8-bit bus are marked accordingly. If MMC_CAP_8_BIT_DATA
is not among host capabilities, 8BITBUS bit will never be set and it
is not cleared in case some non-SDHCI3 host uses it for something else.
Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
Acked-by: Adrian Hunter <adrian.hunter@intel.com>
---
drivers/mmc/host/sdhci.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index ecd0d4350e8a..cca21246cf61 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -1544,10 +1544,9 @@ void sdhci_set_bus_width(struct sdhci_host *host, int width)
ctrl = sdhci_readb(host, SDHCI_HOST_CONTROL);
if (width == MMC_BUS_WIDTH_8) {
ctrl &= ~SDHCI_CTRL_4BITBUS;
- if (host->version >= SDHCI_SPEC_300)
- ctrl |= SDHCI_CTRL_8BITBUS;
+ ctrl |= SDHCI_CTRL_8BITBUS;
} else {
- if (host->version >= SDHCI_SPEC_300)
+ if (host->mmc->caps & MMC_CAP_8_BIT_DATA)
ctrl &= ~SDHCI_CTRL_8BITBUS;
if (width == MMC_BUS_WIDTH_4)
ctrl |= SDHCI_CTRL_4BITBUS;
--
2.11.0
^ permalink raw reply related [flat|nested] 9+ messages in thread* [PATCH v2 3/4] mmc: sdhci-pci: use generic sdhci_set_bus_width()
2017-08-14 20:00 [PATCH v2 0/4] mmc: sdhci: sdhci_set_bus_width() cleanup Michał Mirosław
2017-08-14 20:00 ` [PATCH v2 2/4] mmc: sdhci-tegra: use generic sdhci_set_bus_width() Michał Mirosław
2017-08-14 20:00 ` [PATCH v2 1/4] mmc: sdhci: key 8BITBUS bit off MMC_CAP_8_BIT_DATA Michał Mirosław
@ 2017-08-14 20:00 ` Michał Mirosław
2017-08-14 20:00 ` [PATCH v2 4/4] mmc: sdhci-s3c: " Michał Mirosław
[not found] ` <cover.1502740497.git.mirq-linux-CoA6ZxLDdyEEUmgCuDUIdw@public.gmane.org>
4 siblings, 0 replies; 9+ messages in thread
From: Michał Mirosław @ 2017-08-14 20:00 UTC (permalink / raw)
To: Adrian Hunter, Ulf Hansson, Thierry Reding, Jonathan Hunter,
Ben Dooks, Jaehoon Chung
Cc: linux-mmc, linux-tegra
Now that sdhci_set_bus_width() supports 8-bit bus widths based on the
MMC_CAP_8_BIT_DATA capability flag, replace the sdhci-pci version with
the generic sdhci version.
Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
Acked-by: Adrian Hunter <adrian.hunter@intel.com>
---
drivers/mmc/host/sdhci-pci-core.c | 30 +++---------------------------
1 file changed, 3 insertions(+), 27 deletions(-)
diff --git a/drivers/mmc/host/sdhci-pci-core.c b/drivers/mmc/host/sdhci-pci-core.c
index e1721ac37919..deffd73df124 100644
--- a/drivers/mmc/host/sdhci-pci-core.c
+++ b/drivers/mmc/host/sdhci-pci-core.c
@@ -35,7 +35,6 @@
#include "sdhci-pci-o2micro.h"
static int sdhci_pci_enable_dma(struct sdhci_host *host);
-static void sdhci_pci_set_bus_width(struct sdhci_host *host, int width);
static void sdhci_pci_hw_reset(struct sdhci_host *host);
#ifdef CONFIG_PM_SLEEP
@@ -562,7 +561,7 @@ static const struct sdhci_ops sdhci_intel_byt_ops = {
.set_clock = sdhci_set_clock,
.set_power = sdhci_intel_set_power,
.enable_dma = sdhci_pci_enable_dma,
- .set_bus_width = sdhci_pci_set_bus_width,
+ .set_bus_width = sdhci_set_bus_width,
.reset = sdhci_reset,
.set_uhs_signaling = sdhci_set_uhs_signaling,
.hw_reset = sdhci_pci_hw_reset,
@@ -1197,7 +1196,7 @@ static int amd_probe(struct sdhci_pci_chip *chip)
static const struct sdhci_ops amd_sdhci_pci_ops = {
.set_clock = sdhci_set_clock,
.enable_dma = sdhci_pci_enable_dma,
- .set_bus_width = sdhci_pci_set_bus_width,
+ .set_bus_width = sdhci_set_bus_width,
.reset = sdhci_reset,
.set_uhs_signaling = sdhci_set_uhs_signaling,
.platform_execute_tuning = amd_execute_tuning,
@@ -1313,29 +1312,6 @@ static int sdhci_pci_enable_dma(struct sdhci_host *host)
return 0;
}
-static void sdhci_pci_set_bus_width(struct sdhci_host *host, int width)
-{
- u8 ctrl;
-
- ctrl = sdhci_readb(host, SDHCI_HOST_CONTROL);
-
- switch (width) {
- case MMC_BUS_WIDTH_8:
- ctrl |= SDHCI_CTRL_8BITBUS;
- ctrl &= ~SDHCI_CTRL_4BITBUS;
- break;
- case MMC_BUS_WIDTH_4:
- ctrl |= SDHCI_CTRL_4BITBUS;
- ctrl &= ~SDHCI_CTRL_8BITBUS;
- break;
- default:
- ctrl &= ~(SDHCI_CTRL_8BITBUS | SDHCI_CTRL_4BITBUS);
- break;
- }
-
- sdhci_writeb(host, ctrl, SDHCI_HOST_CONTROL);
-}
-
static void sdhci_pci_gpio_hw_reset(struct sdhci_host *host)
{
struct sdhci_pci_slot *slot = sdhci_priv(host);
@@ -1362,7 +1338,7 @@ static void sdhci_pci_hw_reset(struct sdhci_host *host)
static const struct sdhci_ops sdhci_pci_ops = {
.set_clock = sdhci_set_clock,
.enable_dma = sdhci_pci_enable_dma,
- .set_bus_width = sdhci_pci_set_bus_width,
+ .set_bus_width = sdhci_set_bus_width,
.reset = sdhci_reset,
.set_uhs_signaling = sdhci_set_uhs_signaling,
.hw_reset = sdhci_pci_hw_reset,
--
2.11.0
^ permalink raw reply related [flat|nested] 9+ messages in thread* [PATCH v2 4/4] mmc: sdhci-s3c: use generic sdhci_set_bus_width()
2017-08-14 20:00 [PATCH v2 0/4] mmc: sdhci: sdhci_set_bus_width() cleanup Michał Mirosław
` (2 preceding siblings ...)
2017-08-14 20:00 ` [PATCH v2 3/4] mmc: sdhci-pci: use generic sdhci_set_bus_width() Michał Mirosław
@ 2017-08-14 20:00 ` Michał Mirosław
[not found] ` <471746dfd08fd4eeae2e747c4ce7f98371ac1e99.1502740497.git.mirq-linux-CoA6ZxLDdyEEUmgCuDUIdw@public.gmane.org>
[not found] ` <cover.1502740497.git.mirq-linux-CoA6ZxLDdyEEUmgCuDUIdw@public.gmane.org>
4 siblings, 1 reply; 9+ messages in thread
From: Michał Mirosław @ 2017-08-14 20:00 UTC (permalink / raw)
To: Adrian Hunter, Ulf Hansson, Thierry Reding, Jonathan Hunter,
Ben Dooks, Jaehoon Chung
Cc: linux-mmc, linux-tegra
Now that sdhci_set_bus_width() supports 8-bit bus widths based on the
MMC_CAP_8_BIT_DATA capability flag, replace the sdhci-s3c version with
the generic sdhci version.
Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
Acked-by: Adrian Hunter <adrian.hunter@intel.com>
---
drivers/mmc/host/sdhci-s3c.c | 34 +---------------------------------
1 file changed, 1 insertion(+), 33 deletions(-)
diff --git a/drivers/mmc/host/sdhci-s3c.c b/drivers/mmc/host/sdhci-s3c.c
index 7c065a70f92b..d328fcf284d1 100644
--- a/drivers/mmc/host/sdhci-s3c.c
+++ b/drivers/mmc/host/sdhci-s3c.c
@@ -414,43 +414,11 @@ static void sdhci_cmu_set_clock(struct sdhci_host *host, unsigned int clock)
sdhci_writew(host, clk, SDHCI_CLOCK_CONTROL);
}
-/**
- * sdhci_s3c_set_bus_width - support 8bit buswidth
- * @host: The SDHCI host being queried
- * @width: MMC_BUS_WIDTH_ macro for the bus width being requested
- *
- * We have 8-bit width support but is not a v3 controller.
- * So we add platform_bus_width() and support 8bit width.
- */
-static void sdhci_s3c_set_bus_width(struct sdhci_host *host, int width)
-{
- u8 ctrl;
-
- ctrl = sdhci_readb(host, SDHCI_HOST_CONTROL);
-
- switch (width) {
- case MMC_BUS_WIDTH_8:
- ctrl |= SDHCI_CTRL_8BITBUS;
- ctrl &= ~SDHCI_CTRL_4BITBUS;
- break;
- case MMC_BUS_WIDTH_4:
- ctrl |= SDHCI_CTRL_4BITBUS;
- ctrl &= ~SDHCI_CTRL_8BITBUS;
- break;
- default:
- ctrl &= ~SDHCI_CTRL_4BITBUS;
- ctrl &= ~SDHCI_CTRL_8BITBUS;
- break;
- }
-
- sdhci_writeb(host, ctrl, SDHCI_HOST_CONTROL);
-}
-
static struct sdhci_ops sdhci_s3c_ops = {
.get_max_clock = sdhci_s3c_get_max_clk,
.set_clock = sdhci_s3c_set_clock,
.get_min_clock = sdhci_s3c_get_min_clock,
- .set_bus_width = sdhci_s3c_set_bus_width,
+ .set_bus_width = sdhci_set_bus_width,
.reset = sdhci_reset,
.set_uhs_signaling = sdhci_set_uhs_signaling,
};
--
2.11.0
^ permalink raw reply related [flat|nested] 9+ messages in thread[parent not found: <cover.1502740497.git.mirq-linux-CoA6ZxLDdyEEUmgCuDUIdw@public.gmane.org>]
* Re: [PATCH v2 0/4] mmc: sdhci: sdhci_set_bus_width() cleanup
[not found] ` <cover.1502740497.git.mirq-linux-CoA6ZxLDdyEEUmgCuDUIdw@public.gmane.org>
@ 2017-08-22 11:14 ` Ulf Hansson
0 siblings, 0 replies; 9+ messages in thread
From: Ulf Hansson @ 2017-08-22 11:14 UTC (permalink / raw)
To: Michał Mirosław
Cc: Adrian Hunter, Thierry Reding, Jonathan Hunter, Ben Dooks,
Jaehoon Chung, linux-mmc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
On 14 August 2017 at 22:00, Michał Mirosław <mirq-linux-CoA6ZxLDdyEAvxtiuMwx3w@public.gmane.org.pl> wrote:
> Some SDHCI drivers are reimplementing sdhci_set_bus_width() just because
> they support 8-bit bus but don't advertise full SDHCI 3.0 compliance.
> This unnecessarily duplicates the function. Let's remove those duplicates.
>
> v2:
> - added commit messages from Adrian Hunter
>
> Michał Mirosław (4):
> mmc: sdhci: key 8BITBUS bit off MMC_CAP_8_BIT_DATA
> mmc: sdhci-tegra: use generic sdhci_set_bus_width()
> mmc: sdhci-pci: use generic sdhci_set_bus_width()
> mmc: sdhci-s3c: use generic sdhci_set_bus_width()
>
> drivers/mmc/host/sdhci-pci-core.c | 30 +++---------------------------
> drivers/mmc/host/sdhci-s3c.c | 34 +---------------------------------
> drivers/mmc/host/sdhci-tegra.c | 23 ++---------------------
> drivers/mmc/host/sdhci.c | 5 ++---
> 4 files changed, 8 insertions(+), 84 deletions(-)
>
> --
> 2.11.0
>
Thanks, applied for next!
Kind regards
Uffe
^ permalink raw reply [flat|nested] 9+ messages in thread