[U-Boot] mmc: uniphier-sd: Fix long response processing

Jaehoon Chung jh80.chung at samsung.com
Thu Aug 17 05:36:46 UTC 2017


On 07/22/2017 06:11 AM, Marek Vasut wrote:
> The long response entry 0..3 LSByte comes from the next response
> register MSByte, not from the next response register LSByte. Fix
> this to make the driver report correct values in response 136 .
> 
> Signed-off-by: Marek Vasut <marek.vasut+renesas at gmail.com>
> Cc: Masahiro Yamada <yamada.masahiro at socionext.com>
> Cc: Jaehoon Chung <jh80.chung at samsung.com>
> Acked-by: Masahiro Yamada <yamada.masahiro at socionext.com>

Applied to u-boot-mmc. Sorry for late!

Best Regards,
Jaehoon Chung

> ---
>  drivers/mmc/uniphier-sd.c | 14 +++++++-------
>  1 file changed, 7 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/mmc/uniphier-sd.c b/drivers/mmc/uniphier-sd.c
> index 3c462bd583..e272b14153 100644
> --- a/drivers/mmc/uniphier-sd.c
> +++ b/drivers/mmc/uniphier-sd.c
> @@ -470,13 +470,13 @@ static int uniphier_sd_send_cmd(struct udevice *dev, struct mmc_cmd *cmd,
>  		u32 rsp_71_40 = readl(priv->regbase + UNIPHIER_SD_RSP32);
>  		u32 rsp_39_8 = readl(priv->regbase + UNIPHIER_SD_RSP10);
>  
> -		cmd->response[0] = (rsp_127_104 & 0xffffff) << 8 |
> -							(rsp_103_72 & 0xff);
> -		cmd->response[1] = (rsp_103_72  & 0xffffff) << 8 |
> -							(rsp_71_40 & 0xff);
> -		cmd->response[2] = (rsp_71_40   & 0xffffff) << 8 |
> -							(rsp_39_8 & 0xff);
> -		cmd->response[3] = (rsp_39_8    & 0xffffff) << 8;
> +		cmd->response[0] = ((rsp_127_104 & 0x00ffffff) << 8) |
> +				   ((rsp_103_72  & 0xff000000) >> 24);
> +		cmd->response[1] = ((rsp_103_72  & 0x00ffffff) << 8) |
> +				   ((rsp_71_40   & 0xff000000) >> 24);
> +		cmd->response[2] = ((rsp_71_40   & 0x00ffffff) << 8) |
> +				   ((rsp_39_8    & 0xff000000) >> 24);
> +		cmd->response[3] = (rsp_39_8     & 0xffffff)   << 8;
>  	} else {
>  		/* bit 39-8 */
>  		cmd->response[0] = readl(priv->regbase + UNIPHIER_SD_RSP10);
> 



More information about the U-Boot mailing list