* [PATCH 1/3] mmc: sdhci: fix SDHCI_QUIRK2_CLEAR_TRANSFERMODE_REG_BEFORE_CMD handling
@ 2017-12-28 9:59 ernest.zhang
2018-01-09 12:34 ` Adrian Hunter
0 siblings, 1 reply; 2+ messages in thread
From: ernest.zhang @ 2017-12-28 9:59 UTC (permalink / raw)
To: adrian.hunter, ulf.hansson, linux-mmc, linux-kernel
Cc: yuxiang.wan, xiaoguang.yu, shirley.her
SD controller with SDHCI_QUIRK2_CLEAR_TRANSFERMODE_REG_BEFORE_CMD quirk
will clear SD host transfer mode register for non-data commands. But in
eMMC HS200 hardware tuning case, the hardware tuning process need to
transfer mode register has properly value. So don't clear transfer
mode register when opcode equals to MMC_SEND_TUNING_BLOCK_HS200.
Signed-off-by: ernest.zhang <ernest.zhang@bayhubtech.com>
---
drivers/mmc/host/sdhci.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index 0d5fcca18c9e..d5b19fc9ea56 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -918,7 +918,9 @@ static void sdhci_set_transfer_mode(struct sdhci_host *host,
if (data == NULL) {
if (host->quirks2 &
SDHCI_QUIRK2_CLEAR_TRANSFERMODE_REG_BEFORE_CMD) {
- sdhci_writew(host, 0x0, SDHCI_TRANSFER_MODE);
+ /* cannot clear transfer mode register when tuning */
+ if (cmd->opcode != MMC_SEND_TUNING_BLOCK_HS200)
+ sdhci_writew(host, 0x0, SDHCI_TRANSFER_MODE);
} else {
/* clear Auto CMD settings for no data CMDs */
mode = sdhci_readw(host, SDHCI_TRANSFER_MODE);
--
2.14.1
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [PATCH 1/3] mmc: sdhci: fix SDHCI_QUIRK2_CLEAR_TRANSFERMODE_REG_BEFORE_CMD handling
2017-12-28 9:59 [PATCH 1/3] mmc: sdhci: fix SDHCI_QUIRK2_CLEAR_TRANSFERMODE_REG_BEFORE_CMD handling ernest.zhang
@ 2018-01-09 12:34 ` Adrian Hunter
0 siblings, 0 replies; 2+ messages in thread
From: Adrian Hunter @ 2018-01-09 12:34 UTC (permalink / raw)
To: ernest.zhang, ulf.hansson, linux-mmc, linux-kernel
Cc: yuxiang.wan, xiaoguang.yu, shirley.her
On 28/12/17 11:59, ernest.zhang wrote:
> SD controller with SDHCI_QUIRK2_CLEAR_TRANSFERMODE_REG_BEFORE_CMD quirk
> will clear SD host transfer mode register for non-data commands. But in
> eMMC HS200 hardware tuning case, the hardware tuning process need to
> transfer mode register has properly value. So don't clear transfer
> mode register when opcode equals to MMC_SEND_TUNING_BLOCK_HS200.
As I wrote last time, you send MMC_SEND_TUNING_BLOCK_HS200 with data != NULL
so this code path is not used.
Also please use version numbers in the subject.
>
> Signed-off-by: ernest.zhang <ernest.zhang@bayhubtech.com>
> ---
> drivers/mmc/host/sdhci.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
> index 0d5fcca18c9e..d5b19fc9ea56 100644
> --- a/drivers/mmc/host/sdhci.c
> +++ b/drivers/mmc/host/sdhci.c
> @@ -918,7 +918,9 @@ static void sdhci_set_transfer_mode(struct sdhci_host *host,
> if (data == NULL) {
> if (host->quirks2 &
> SDHCI_QUIRK2_CLEAR_TRANSFERMODE_REG_BEFORE_CMD) {
> - sdhci_writew(host, 0x0, SDHCI_TRANSFER_MODE);
> + /* cannot clear transfer mode register when tuning */
> + if (cmd->opcode != MMC_SEND_TUNING_BLOCK_HS200)
> + sdhci_writew(host, 0x0, SDHCI_TRANSFER_MODE);
> } else {
> /* clear Auto CMD settings for no data CMDs */
> mode = sdhci_readw(host, SDHCI_TRANSFER_MODE);
>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2018-01-09 12:35 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-12-28 9:59 [PATCH 1/3] mmc: sdhci: fix SDHCI_QUIRK2_CLEAR_TRANSFERMODE_REG_BEFORE_CMD handling ernest.zhang
2018-01-09 12:34 ` Adrian Hunter
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox