Don't give up so easily on failure of CMD55 to put the card into app-cmd

mode.  We don't know why it failed, so we can't know that a retry will
also fail (the low-level driver might have reset the controller state
machine or something similar that would allow a retry to work).
This commit is contained in:
Ian Lepore 2013-08-23 15:07:54 +00:00
parent f6d76b0ec1
commit a6e2415cc4
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=254716

View File

@ -106,7 +106,7 @@ struct mmc_ivars {
#define CMD_RETRIES 3
#define CARD_ID_FREQUENCY 400000 /* Spec requires 400KHz max during ID phase. */
#define CARD_ID_FREQUENCY 400000 /* Spec requires 400kHz max during ID phase. */
static SYSCTL_NODE(_hw, OID_AUTO, mmc, CTLFLAG_RD, NULL, "mmc driver");
@ -447,8 +447,8 @@ mmc_wait_for_app_cmd(struct mmc_softc *sc, uint32_t rca,
err = appcmd.error;
if (err == MMC_ERR_NONE) {
if (!(appcmd.resp[0] & R1_APP_CMD))
return MMC_ERR_FAILED; /* Retries won't help. */
if (mmc_wait_for_cmd(sc, cmd, 0) != 0)
err = MMC_ERR_FAILED;
else if (mmc_wait_for_cmd(sc, cmd, 0) != 0)
err = MMC_ERR_FAILED;
else
err = cmd->error;