mmc: fix infinite loop in mmc_init_stream
authorSteve Sakoman <steve@sakoman.com>
Fri, 1 Aug 2008 19:55:44 +0000 (12:55 -0700)
committerSteve Sakoman <steve@sakoman.com>
Fri, 1 Aug 2008 19:55:44 +0000 (12:55 -0700)
cpu/omap3/mmc.c

index 5d75230..4b95093 100644 (file)
@@ -59,16 +59,21 @@ unsigned char mmc_board_init(void)
 
 void mmc_init_stream(void)
 {
+       volatile unsigned int mmc_stat;
+
        OMAP_HSMMC_CON |= INIT_INITSTREAM;
 
        OMAP_HSMMC_CMD = MMC_CMD0;
-       while (!(OMAP_HSMMC_STAT & CC_MASK));
+       do {
+               mmc_stat = OMAP_HSMMC_STAT;
+       } while (!(mmc_stat & CC_MASK));
 
        OMAP_HSMMC_STAT = CC_MASK;
 
        OMAP_HSMMC_CMD = MMC_CMD0;
-       while (!(OMAP_HSMMC_STAT & CC_MASK));
-
+       do {
+               mmc_stat = OMAP_HSMMC_STAT;
+       } while (!(mmc_stat & CC_MASK));
 
        OMAP_HSMMC_STAT = OMAP_HSMMC_STAT;
        OMAP_HSMMC_CON &= ~INIT_INITSTREAM;