diff --git a/include/sd_card.h b/include/sd_card.h index ec6d582..b58fd7c 100644 --- a/include/sd_card.h +++ b/include/sd_card.h @@ -42,4 +42,8 @@ extern void sd_card_init(void); //#define CT_SDC (CT_SD1|CT_SD2) /* SD */ #define CT_BLOCK 0x08 /* Block addressing */ +/* SD error code bits */ +#define SD_ERR_IDLE_STATE 0x01 +#define SD_ERR_ILLEGAL_CMD 0x04 + #endif /* _SD_CARD_H_ */ diff --git a/spi/mmc.c b/spi/mmc.c index 8819b59..1f20ddd 100644 --- a/spi/mmc.c +++ b/spi/mmc.c @@ -424,7 +424,7 @@ DSTATUS disk_initialize(uint8_t drv) while (MCF_SLT_SCNT(0) - target > 0) { res = send_cmd(ACMD41, 1UL << 30); /* Wait for end of initialization with ACMD41(HCS) */ - if (res != 0xff) + if ((res & SD_ERR_IDLE_STATE) == 0) break; } debug_printf("res = %d\r\n", res);