Hi All, Here's a patch fixing the issue that resp buf would be filled with invalid data if command timed out in u-boot s3c24xx mci driver.
---
cpu/arm920t/s3c24x0/mmc.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
Index:
uboot-git-650149a53dbdd48bf6dfef90930c8ab182adb512/cpu/arm920t/s3c24x0/mmc.c
===================================================================
---
uboot-git-650149a53dbdd48bf6dfef90930c8ab182adb512.orig/cpu/arm920t/s3c24x0/mmc.c
2008-12-15 07:49:58.000000000 +0800
+++
uboot-git-650149a53dbdd48bf6dfef90930c8ab182adb512/cpu/arm920t/s3c24x0/mmc.c
2008-12-15 07:52:27.000000000 +0800
@@ -71,6 +71,7 @@
u_int32_t ccon, csta;
u_int32_t csta_rdy_bit = S3C2410_SDICMDSTAT_CMDSENT;
+ int is_timeout = 0;
memset(resp, 0, sizeof(resp));
@@ -102,6 +103,7 @@
if (csta & S3C2410_SDICMDSTAT_CMDTIMEOUT) {
printf("===============> MMC CMD Timeout\n");
sdi->SDICSTA |= S3C2410_SDICMDSTAT_CMDTIMEOUT;
+ is_timeout = 1;
break;
}
}
@@ -110,7 +112,7 @@
sdi->SDICSTA |= csta_rdy_bit;
- if (flags & CMD_F_RESP) {
+ if (flags & CMD_F_RESP && !is_timeout) {
resp[0] = sdi->SDIRSP0;
resp[1] = sdi->SDIRSP1;
resp[2] = sdi->SDIRSP2;
___________________________________________________________
好玩贺卡等你发,邮箱贺卡全新上线!
http://card.mail.cn.yahoo.com/
fix_s3c24xx_mci_cmd_timeout.patch
Description: Binary data
