Patchwork [U-Boot] mmc: Remove incorrect cmd->flags usage

login
register
mail settings
Submitter Andy Fleming
Date Sept. 6, 2012, 8:36 p.m.
Message ID <1346963806-16809-1-git-send-email-afleming@freescale.com>
Download mbox | patch
Permalink /patch/182289/
State Accepted
Commit 95b01c47ed97a7ca8b59308e35fb8c21e8d996a5
Delegated to: Andy Fleming
Headers show

Comments

Andy Fleming - Sept. 6, 2012, 8:36 p.m.
There were a couple of drivers that were actually using the flags
field of the cmd structure, despite the fact that no one ever
*set* that field. When we removed the field, those drivers failed
to compile. Replaced the references with the correct usage of
resp_type.

Signed-off-by: Andy Fleming <afleming@freescale.com>
---
I've gone and applied this to the mmc repository, as it's more
correct than the current implementation. I don't anticipate any
problems, but the pl180 and pxa folks should make sure their
drivers still work.

 drivers/mmc/arm_pl180_mmci.c |    2 +-
 drivers/mmc/pxa_mmc_gen.c    |    8 +++++---
 2 files changed, 6 insertions(+), 4 deletions(-)
Marek Vasut - Sept. 6, 2012, 11:24 p.m.
Dear Andy Fleming,

> There were a couple of drivers that were actually using the flags
> field of the cmd structure, despite the fact that no one ever
> *set* that field. When we removed the field, those drivers failed
> to compile. Replaced the references with the correct usage of
> resp_type.

I'll run duts tests on this on M28, stay tuned.

> Signed-off-by: Andy Fleming <afleming@freescale.com>
> ---
> I've gone and applied this to the mmc repository, as it's more
> correct than the current implementation. I don't anticipate any
> problems, but the pl180 and pxa folks should make sure their
> drivers still work.
> 
>  drivers/mmc/arm_pl180_mmci.c |    2 +-
>  drivers/mmc/pxa_mmc_gen.c    |    8 +++++---
>  2 files changed, 6 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/mmc/arm_pl180_mmci.c b/drivers/mmc/arm_pl180_mmci.c
> index db2c7ab..af1380a 100644
> --- a/drivers/mmc/arm_pl180_mmci.c
> +++ b/drivers/mmc/arm_pl180_mmci.c
> @@ -52,7 +52,7 @@ static int wait_for_command_end(struct mmc *dev, struct
> mmc_cmd *cmd) debug("CMD%d time out\n", cmd->cmdidx);
>  		return TIMEOUT;
>  	} else if ((hoststatus & SDI_STA_CCRCFAIL) &&
> -		   (cmd->flags & MMC_RSP_CRC)) {
> +		   (cmd->resp_type & MMC_RSP_CRC)) {
>  		printf("CMD%d CRC error\n", cmd->cmdidx);
>  		return -EILSEQ;
>  	}
> diff --git a/drivers/mmc/pxa_mmc_gen.c b/drivers/mmc/pxa_mmc_gen.c
> index 2c5bf17..b3ec441 100644
> --- a/drivers/mmc/pxa_mmc_gen.c
> +++ b/drivers/mmc/pxa_mmc_gen.c
> @@ -118,7 +118,7 @@ static int pxa_mmc_start_cmd(struct mmc *mmc, struct
> mmc_cmd *cmd, int ret;
> 
>  	/* The card can send a "busy" response */
> -	if (cmd->flags & MMC_RSP_BUSY)
> +	if (cmd->resp_type & MMC_RSP_BUSY)
>  		cmdat |= MMC_CMDAT_BUSY;
> 
>  	/* Inform the controller about response type */
> @@ -181,9 +181,11 @@ static int pxa_mmc_cmd_done(struct mmc *mmc, struct
> mmc_cmd *cmd) /* The command response didn't arrive */
>  	if (stat & MMC_STAT_TIME_OUT_RESPONSE)
>  		return -ETIMEDOUT;
> -	else if (stat & MMC_STAT_RES_CRC_ERROR && cmd->flags & MMC_RSP_CRC) {
> +	else if (stat & MMC_STAT_RES_CRC_ERROR
> +			&& cmd->resp_type & MMC_RSP_CRC) {
>  #ifdef	PXAMMC_CRC_SKIP
> -		if (cmd->flags & MMC_RSP_136 && cmd->response[0] & (1 << 31))
> +		if (cmd->resp_type & MMC_RSP_136
> +				&& cmd->response[0] & (1 << 31))
>  			printf("Ignoring CRC, this may be dangerous!\n");
>  		else
>  #endif

Best regards,
Marek Vasut
Marek Vasut - Sept. 7, 2012, 2:19 a.m.
Dear Marek Vasut,

> Dear Andy Fleming,
> 
> > There were a couple of drivers that were actually using the flags
> > field of the cmd structure, despite the fact that no one ever
> > *set* that field. When we removed the field, those drivers failed
> > to compile. Replaced the references with the correct usage of
> > resp_type.
> 
> I'll run duts tests on this on M28, stay tuned.

[...]

Ok, seems to work on M28.

Tested-by: Marek Vasut <marex@denx.de>

Best regards,
Marek Vasut

Patch

diff --git a/drivers/mmc/arm_pl180_mmci.c b/drivers/mmc/arm_pl180_mmci.c
index db2c7ab..af1380a 100644
--- a/drivers/mmc/arm_pl180_mmci.c
+++ b/drivers/mmc/arm_pl180_mmci.c
@@ -52,7 +52,7 @@  static int wait_for_command_end(struct mmc *dev, struct mmc_cmd *cmd)
 		debug("CMD%d time out\n", cmd->cmdidx);
 		return TIMEOUT;
 	} else if ((hoststatus & SDI_STA_CCRCFAIL) &&
-		   (cmd->flags & MMC_RSP_CRC)) {
+		   (cmd->resp_type & MMC_RSP_CRC)) {
 		printf("CMD%d CRC error\n", cmd->cmdidx);
 		return -EILSEQ;
 	}
diff --git a/drivers/mmc/pxa_mmc_gen.c b/drivers/mmc/pxa_mmc_gen.c
index 2c5bf17..b3ec441 100644
--- a/drivers/mmc/pxa_mmc_gen.c
+++ b/drivers/mmc/pxa_mmc_gen.c
@@ -118,7 +118,7 @@  static int pxa_mmc_start_cmd(struct mmc *mmc, struct mmc_cmd *cmd,
 	int ret;
 
 	/* The card can send a "busy" response */
-	if (cmd->flags & MMC_RSP_BUSY)
+	if (cmd->resp_type & MMC_RSP_BUSY)
 		cmdat |= MMC_CMDAT_BUSY;
 
 	/* Inform the controller about response type */
@@ -181,9 +181,11 @@  static int pxa_mmc_cmd_done(struct mmc *mmc, struct mmc_cmd *cmd)
 	/* The command response didn't arrive */
 	if (stat & MMC_STAT_TIME_OUT_RESPONSE)
 		return -ETIMEDOUT;
-	else if (stat & MMC_STAT_RES_CRC_ERROR && cmd->flags & MMC_RSP_CRC) {
+	else if (stat & MMC_STAT_RES_CRC_ERROR
+			&& cmd->resp_type & MMC_RSP_CRC) {
 #ifdef	PXAMMC_CRC_SKIP
-		if (cmd->flags & MMC_RSP_136 && cmd->response[0] & (1 << 31))
+		if (cmd->resp_type & MMC_RSP_136
+				&& cmd->response[0] & (1 << 31))
 			printf("Ignoring CRC, this may be dangerous!\n");
 		else
 #endif