PERFORCE change 106795 for review

Warner Losh imp at FreeBSD.org
Wed Sep 27 13:01:38 PDT 2006


http://perforce.freebsd.org/chv.cgi?CH=106795

Change 106795 by imp at imp_lighthouse on 2006/09/27 20:00:39

	wait_for_app_cmd

Affected files ...

.. //depot/projects/arm/src/sys/dev/mmc/mmc.c#7 edit

Differences ...

==== //depot/projects/arm/src/sys/dev/mmc/mmc.c#7 (text+ko) ====

@@ -175,6 +175,31 @@
 	return (cmd->error);
 }
 
+static int
+mmc_wait_for_app_cmd(struct mmc_softc *sc, uint32_t rca,
+    struct mmc_command *cmd, int retries)
+{
+	struct mmc_command appcmd;
+	int err = MMC_ERR_NONE, i;
+
+	for (i = 0; i <= retries; i++) {
+		appcmd.opcode = MMC_APP_CMD;
+		appcmd.arg = rca << 16;
+		appcmd.flags = MMC_RSP_R1 | MMC_CMD_AC;
+		mmc_wait_for_cmd(sc, &appcmd, 0);
+		err = appcmd.error;
+		if (err != MMC_ERR_NONE)
+			continue;
+		if (appcmd.resp[0] & R1_APP_CMD)
+			return MMC_ERR_FAILED;
+		mmc_wait_for_cmd(sc, cmd, 0);
+		err = cmd->error;
+		if (err == MMC_ERR_NONE)
+			break;
+	}
+	return (err);
+}
+
 static void
 mmc_idle_cards(struct mmc_softc *sc)
 {
@@ -211,7 +236,7 @@
 	cmd.flags = MMC_RSP_R3 | MMC_CMD_BCR;
 
 	for (i = 0; i < 100; i++) {
-		err = mmc_wait_for_cmd(sc, &cmd, CMD_RETRIES);
+		err = mmc_wait_for_app_cmd(sc, 0, &cmd, CMD_RETRIES);
 		if (err != MMC_ERR_NONE)
 			break;
 		if ((cmd.resp[0] & MMC_OCR_CARD_BUSY) || ocr == 0)


More information about the p4-projects mailing list