[U-Boot] Possible MMC subsystem bug

Hi Andy,
I was going through the MMC code, trying to get Phison 8007 SD-to-NAND bridge working (don't ask please, this chip's sole existence defies any logic).
So, I found the following code and I was wondering if the following patch is not needed. Maybe my brain is just giving up though. Give it some thought please and let me know, thanks!
diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c index 72e8ce6..94926ca 100644 --- a/drivers/mmc/mmc.c +++ b/drivers/mmc/mmc.c @@ -475,8 +474,11 @@ static int sd_send_op_cond(struct mmc *mmc) if (err) return err;
+ if (!(cmd.response[0] & OCR_BUSY)) + break; + udelay(1000); - } while ((!(cmd.response[0] & OCR_BUSY)) && timeout--); + } while (timeout--);
if (timeout <= 0) return UNUSABLE_ERR;

I'll need to double-check the spec, but I believe the BUSY bit has the opposite meaning of common sense.
On Jan 26, 2013, at 22:32, "Marek Vasut" marex@denx.de wrote:
Hi Andy,
I was going through the MMC code, trying to get Phison 8007 SD-to-NAND bridge working (don't ask please, this chip's sole existence defies any logic).
So, I found the following code and I was wondering if the following patch is not needed. Maybe my brain is just giving up though. Give it some thought please and let me know, thanks!
diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c index 72e8ce6..94926ca 100644 --- a/drivers/mmc/mmc.c +++ b/drivers/mmc/mmc.c @@ -475,8 +474,11 @@ static int sd_send_op_cond(struct mmc *mmc) if (err) return err;
if (!(cmd.response[0] & OCR_BUSY))
break;
udelay(1000);
} while ((!(cmd.response[0] & OCR_BUSY)) && timeout--);
} while (timeout--); if (timeout <= 0) return UNUSABLE_ERR;

Dear Fleming Andy-AFLEMING,
I'll need to double-check the spec, but I believe the BUSY bit has the opposite meaning of common sense.
I tihnk my brain is maybe just giving up really ... I think the code is right after some quick poking through the spec.
On Jan 26, 2013, at 22:32, "Marek Vasut" marex@denx.de wrote:
Hi Andy,
I was going through the MMC code, trying to get Phison 8007 SD-to-NAND bridge working (don't ask please, this chip's sole existence defies any logic).
So, I found the following code and I was wondering if the following patch is not needed. Maybe my brain is just giving up though. Give it some thought please and let me know, thanks!
diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c index 72e8ce6..94926ca 100644 --- a/drivers/mmc/mmc.c +++ b/drivers/mmc/mmc.c @@ -475,8 +474,11 @@ static int sd_send_op_cond(struct mmc *mmc)
if (err) return err;
if (!(cmd.response[0] & OCR_BUSY))
break;
udelay(1000);
} while ((!(cmd.response[0] & OCR_BUSY)) && timeout--);
} while (timeout--); if (timeout <= 0) return UNUSABLE_ERR;
Best regards, Marek Vasut
participants (2)
-
Fleming Andy-AFLEMING
-
Marek Vasut