diff mbox

mmc: dw_mmc: Add hardware lock error (HLE) to the CMD error flag

Message ID 1380791881-31484-1-git-send-email-alim.akhtar@samsung.com (mailing list archive)
State New, archived
Headers show

Commit Message

Alim Akhtar Oct. 3, 2013, 9:18 a.m. UTC
From: Alim Akhtar <alim.akhtar@samsung.com>

Hardware locked error set when the dw_mmc controller cannot load a
command issued by software. When software sets the start_cmd bit in the
CMD register, the controller tries to load the command. If the command
buffer is already filled with a command, this error is raised. Currently
driver does not handle HLE interrupt, which results in a system hang.

HLE can be simulated by quickly inserting and removing sd card in card
slot (30 ~ 40 times in say 20 secs)

Reviewed-by: Doug Anderson <dianders@chromium.org>
Signed-off-by: Alim Akhtar <alim.akhtar@samsung.com>
---
 drivers/mmc/host/dw_mmc.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Jaehoon Chung Oct. 6, 2013, 8:28 a.m. UTC | #1
Hi Alim,

On 10/03/2013 06:18 PM, alim akhtar wrote:
> From: Alim Akhtar <alim.akhtar@samsung.com>
> 
> Hardware locked error set when the dw_mmc controller cannot load a
> command issued by software. When software sets the start_cmd bit in the
> CMD register, the controller tries to load the command. If the command
> buffer is already filled with a command, this error is raised. Currently
> driver does not handle HLE interrupt, which results in a system hang.
When SDMMC_INT_HLE is set into CMD_ERROR_FLAGS,
then could driver handle the HLE interrupt?

Best Regards,
Jaehoon Chung
> 
> HLE can be simulated by quickly inserting and removing sd card in card
> slot (30 ~ 40 times in say 20 secs)
> 
> Reviewed-by: Doug Anderson <dianders@chromium.org>
> Signed-off-by: Alim Akhtar <alim.akhtar@samsung.com>
> ---
>  drivers/mmc/host/dw_mmc.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
> index 0a6a512..24b4a52 100644
> --- a/drivers/mmc/host/dw_mmc.c
> +++ b/drivers/mmc/host/dw_mmc.c
> @@ -44,7 +44,7 @@
>  				 SDMMC_INT_HTO | SDMMC_INT_SBE  | \
>  				 SDMMC_INT_EBE)
>  #define DW_MCI_CMD_ERROR_FLAGS	(SDMMC_INT_RTO | SDMMC_INT_RCRC | \
> -				 SDMMC_INT_RESP_ERR)
> +				 SDMMC_INT_RESP_ERR | SDMMC_INT_HLE)
>  #define DW_MCI_ERROR_FLAGS	(DW_MCI_DATA_ERROR_FLAGS | \
>  				 DW_MCI_CMD_ERROR_FLAGS  | SDMMC_INT_HLE)
>  #define DW_MCI_SEND_STATUS	1
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
index 0a6a512..24b4a52 100644
--- a/drivers/mmc/host/dw_mmc.c
+++ b/drivers/mmc/host/dw_mmc.c
@@ -44,7 +44,7 @@ 
 				 SDMMC_INT_HTO | SDMMC_INT_SBE  | \
 				 SDMMC_INT_EBE)
 #define DW_MCI_CMD_ERROR_FLAGS	(SDMMC_INT_RTO | SDMMC_INT_RCRC | \
-				 SDMMC_INT_RESP_ERR)
+				 SDMMC_INT_RESP_ERR | SDMMC_INT_HLE)
 #define DW_MCI_ERROR_FLAGS	(DW_MCI_DATA_ERROR_FLAGS | \
 				 DW_MCI_CMD_ERROR_FLAGS  | SDMMC_INT_HLE)
 #define DW_MCI_SEND_STATUS	1