Message ID | 1346963806-16809-1-git-send-email-afleming@freescale.com |
---|---|
State | Accepted |
Commit | 95b01c47ed97a7ca8b59308e35fb8c21e8d996a5 |
Delegated to: | Andy Fleming |
Headers | show |
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
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
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
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(-)