2019-05-09 17:25:50

by Scott Branden

[permalink] [raw]
Subject: [PATCH v3 0/2] mmc: sdhci-iproc: fixes for HS50 data hold time

This patch series fixes data hold timing issues for various sdhci-iproc
ip blocks that do not meet the HS50 data hold time. NO_HISPD bit is set
in quirks.

Changes from v2:
- Added info to commit message as to stable tag selection decision
as per Adrian Hunter

Changes from v1:
- Change fixes tag to Cc: [email protected] to specify version
to backport to

Trac Hoang (2):
mmc: sdhci-iproc: cygnus: Set NO_HISPD bit to fix HS50 data hold time
problem
mmc: sdhci-iproc: Set NO_HISPD bit to fix HS50 data hold time problem

drivers/mmc/host/sdhci-iproc.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)

--
2.17.1


2019-05-09 17:25:51

by Scott Branden

[permalink] [raw]
Subject: [PATCH v3 1/2] mmc: sdhci-iproc: cygnus: Set NO_HISPD bit to fix HS50 data hold time problem

From: Trac Hoang <[email protected]>

The iproc host eMMC/SD controller hold time does not meet the
specification in the HS50 mode. This problem can be mitigated
by disabling the HISPD bit; thus forcing the controller output
data to be driven on the falling clock edges rather than the
rising clock edges.

This change applies only to the Cygnus platform.

Stable tag (v4.12+) chosen to assist stable kernel maintainers so that
the change does not produce merge conflicts backporting to older kernel
versions. In reality, the timing bug existed since the driver was first
introduced but there is no need for this driver to be supported in kernel
versions that old.

Cc: [email protected] # v4.12+
Signed-off-by: Trac Hoang <[email protected]>
Signed-off-by: Scott Branden <[email protected]>
Acked-by: Adrian Hunter <[email protected]>
---
drivers/mmc/host/sdhci-iproc.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/mmc/host/sdhci-iproc.c b/drivers/mmc/host/sdhci-iproc.c
index 9d12c06c7fd6..9d4071c41c94 100644
--- a/drivers/mmc/host/sdhci-iproc.c
+++ b/drivers/mmc/host/sdhci-iproc.c
@@ -196,7 +196,8 @@ static const struct sdhci_ops sdhci_iproc_32only_ops = {
};

static const struct sdhci_pltfm_data sdhci_iproc_cygnus_pltfm_data = {
- .quirks = SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK,
+ .quirks = SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK |
+ SDHCI_QUIRK_NO_HISPD_BIT,
.quirks2 = SDHCI_QUIRK2_ACMD23_BROKEN | SDHCI_QUIRK2_HOST_OFF_CARD_ON,
.ops = &sdhci_iproc_32only_ops,
};
--
2.17.1

2019-05-09 17:26:15

by Scott Branden

[permalink] [raw]
Subject: [PATCH v3 2/2] mmc: sdhci-iproc: Set NO_HISPD bit to fix HS50 data hold time problem

From: Trac Hoang <[email protected]>

The iproc host eMMC/SD controller hold time does not meet the
specification in the HS50 mode. This problem can be mitigated
by disabling the HISPD bit; thus forcing the controller output
data to be driven on the falling clock edges rather than the
rising clock edges.

Stable tag (v4.12+) chosen to assist stable kernel maintainers so that
the change does not produce merge conflicts backporting to older kernel
versions. In reality, the timing bug existed since the driver was first
introduced but there is no need for this driver to be supported in kernel
versions that old.

Cc: [email protected] # v4.12+
Signed-off-by: Trac Hoang <[email protected]>
Signed-off-by: Scott Branden <[email protected]>
Acked-by: Adrian Hunter <[email protected]>
---
drivers/mmc/host/sdhci-iproc.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/mmc/host/sdhci-iproc.c b/drivers/mmc/host/sdhci-iproc.c
index 9d4071c41c94..2feb4ef32035 100644
--- a/drivers/mmc/host/sdhci-iproc.c
+++ b/drivers/mmc/host/sdhci-iproc.c
@@ -220,7 +220,8 @@ static const struct sdhci_iproc_data iproc_cygnus_data = {

static const struct sdhci_pltfm_data sdhci_iproc_pltfm_data = {
.quirks = SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK |
- SDHCI_QUIRK_MULTIBLOCK_READ_ACMD12,
+ SDHCI_QUIRK_MULTIBLOCK_READ_ACMD12 |
+ SDHCI_QUIRK_NO_HISPD_BIT,
.quirks2 = SDHCI_QUIRK2_ACMD23_BROKEN,
.ops = &sdhci_iproc_ops,
};
--
2.17.1

2019-05-15 11:57:14

by Ulf Hansson

[permalink] [raw]
Subject: Re: [PATCH v3 0/2] mmc: sdhci-iproc: fixes for HS50 data hold time

On Thu, 9 May 2019 at 19:24, Scott Branden <[email protected]> wrote:
>
> This patch series fixes data hold timing issues for various sdhci-iproc
> ip blocks that do not meet the HS50 data hold time. NO_HISPD bit is set
> in quirks.
>
> Changes from v2:
> - Added info to commit message as to stable tag selection decision
> as per Adrian Hunter
>
> Changes from v1:
> - Change fixes tag to Cc: [email protected] to specify version
> to backport to
>
> Trac Hoang (2):
> mmc: sdhci-iproc: cygnus: Set NO_HISPD bit to fix HS50 data hold time
> problem
> mmc: sdhci-iproc: Set NO_HISPD bit to fix HS50 data hold time problem
>
> drivers/mmc/host/sdhci-iproc.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> --
> 2.17.1
>

Applied for fixes, thanks!

Kind regards
Uffe