diff mbox

[U-Boot,2/5] mmc: sh_sdhi: Set SD_INFOx interrupt mask before command starting

Message ID 20170513135118.8134-2-marek.vasut+renesas@gmail.com
State Accepted
Commit 3ebc62c987f000f33aa69231e24719547790264a
Delegated to: Jaehoon Chung
Headers show

Commit Message

Marek Vasut May 13, 2017, 1:51 p.m. UTC
From: Kouei Abe <kouei.abe.cp@renesas.com>

When setting interrupt mask after command starting, an unintended
interrupt status sometimes occurs.

Signed-off-by: Kouei Abe <kouei.abe.cp@renesas.com>
Signed-off-by: Hiroyuki Yokoyama <hiroyuki.yokoyama.vx@renesas.com>
Cc: Hiroyuki Yokoyama <hiroyuki.yokoyama.vx@renesas.com>
Cc: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
Cc: Jaehoon Chung <jh80.chung@samsung.com>
---
 drivers/mmc/sh_sdhi.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Nobuhiro Iwamatsu May 13, 2017, 9:45 p.m. UTC | #1
Hi,

2017-05-13 22:51 GMT+09:00 Marek Vasut <marek.vasut@gmail.com>:
> From: Kouei Abe <kouei.abe.cp@renesas.com>
>
> When setting interrupt mask after command starting, an unintended
> interrupt status sometimes occurs.
>
> Signed-off-by: Kouei Abe <kouei.abe.cp@renesas.com>
> Signed-off-by: Hiroyuki Yokoyama <hiroyuki.yokoyama.vx@renesas.com>
> Cc: Hiroyuki Yokoyama <hiroyuki.yokoyama.vx@renesas.com>
> Cc: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
> Cc: Jaehoon Chung <jh80.chung@samsung.com>

Reviewed-by: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>

> ---
>  drivers/mmc/sh_sdhi.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/mmc/sh_sdhi.c b/drivers/mmc/sh_sdhi.c
> index 25224e2e1d..7f0b4c2603 100644
> --- a/drivers/mmc/sh_sdhi.c
> +++ b/drivers/mmc/sh_sdhi.c
> @@ -546,8 +546,6 @@ static int sh_sdhi_start_cmd(struct sh_sdhi_host *host,
>                         break;
>         }
>
> -       sh_sdhi_writew(host, SDHI_CMD, (unsigned short)(opc & CMD_MASK));
> -
>         host->wait_int = 0;
>         sh_sdhi_writew(host, SDHI_INFO1_MASK,
>                        ~INFO1M_RESP_END & sh_sdhi_readw(host, SDHI_INFO1_MASK));
> @@ -557,6 +555,8 @@ static int sh_sdhi_start_cmd(struct sh_sdhi_host *host,
>                        INFO2M_RESP_TIMEOUT | INFO2M_ILA) &
>                        sh_sdhi_readw(host, SDHI_INFO2_MASK));
>
> +       sh_sdhi_writew(host, SDHI_CMD, (unsigned short)(opc & CMD_MASK));
> +
>         time = sh_sdhi_wait_interrupt_flag(host);
>         if (!time)
>                 return sh_sdhi_error_manage(host);
> --
> 2.11.0
>
Jaehoon Chung May 25, 2017, 1:40 p.m. UTC | #2
On 05/13/2017 10:51 PM, Marek Vasut wrote:
> From: Kouei Abe <kouei.abe.cp@renesas.com>
> 
> When setting interrupt mask after command starting, an unintended
> interrupt status sometimes occurs.
> 
> Signed-off-by: Kouei Abe <kouei.abe.cp@renesas.com>
> Signed-off-by: Hiroyuki Yokoyama <hiroyuki.yokoyama.vx@renesas.com>
> Cc: Hiroyuki Yokoyama <hiroyuki.yokoyama.vx@renesas.com>
> Cc: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
> Cc: Jaehoon Chung <jh80.chung@samsung.com>

Reviewed-by: Jaehoon Chung <jh80.chung@samsung.com>

> ---
>  drivers/mmc/sh_sdhi.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/mmc/sh_sdhi.c b/drivers/mmc/sh_sdhi.c
> index 25224e2e1d..7f0b4c2603 100644
> --- a/drivers/mmc/sh_sdhi.c
> +++ b/drivers/mmc/sh_sdhi.c
> @@ -546,8 +546,6 @@ static int sh_sdhi_start_cmd(struct sh_sdhi_host *host,
>  			break;
>  	}
>  
> -	sh_sdhi_writew(host, SDHI_CMD, (unsigned short)(opc & CMD_MASK));
> -
>  	host->wait_int = 0;
>  	sh_sdhi_writew(host, SDHI_INFO1_MASK,
>  		       ~INFO1M_RESP_END & sh_sdhi_readw(host, SDHI_INFO1_MASK));
> @@ -557,6 +555,8 @@ static int sh_sdhi_start_cmd(struct sh_sdhi_host *host,
>  		       INFO2M_RESP_TIMEOUT | INFO2M_ILA) &
>  		       sh_sdhi_readw(host, SDHI_INFO2_MASK));
>  
> +	sh_sdhi_writew(host, SDHI_CMD, (unsigned short)(opc & CMD_MASK));
> +
>  	time = sh_sdhi_wait_interrupt_flag(host);
>  	if (!time)
>  		return sh_sdhi_error_manage(host);
>
diff mbox

Patch

diff --git a/drivers/mmc/sh_sdhi.c b/drivers/mmc/sh_sdhi.c
index 25224e2e1d..7f0b4c2603 100644
--- a/drivers/mmc/sh_sdhi.c
+++ b/drivers/mmc/sh_sdhi.c
@@ -546,8 +546,6 @@  static int sh_sdhi_start_cmd(struct sh_sdhi_host *host,
 			break;
 	}
 
-	sh_sdhi_writew(host, SDHI_CMD, (unsigned short)(opc & CMD_MASK));
-
 	host->wait_int = 0;
 	sh_sdhi_writew(host, SDHI_INFO1_MASK,
 		       ~INFO1M_RESP_END & sh_sdhi_readw(host, SDHI_INFO1_MASK));
@@ -557,6 +555,8 @@  static int sh_sdhi_start_cmd(struct sh_sdhi_host *host,
 		       INFO2M_RESP_TIMEOUT | INFO2M_ILA) &
 		       sh_sdhi_readw(host, SDHI_INFO2_MASK));
 
+	sh_sdhi_writew(host, SDHI_CMD, (unsigned short)(opc & CMD_MASK));
+
 	time = sh_sdhi_wait_interrupt_flag(host);
 	if (!time)
 		return sh_sdhi_error_manage(host);