Created
March 4, 2015 10:34
-
-
Save pamaury/59ea967005e46c5f982b to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/firmware/drivers/fat.c b/firmware/drivers/fat.c | |
index 44e5ab2..2659c79 100644 | |
--- a/firmware/drivers/fat.c | |
+++ b/firmware/drivers/fat.c | |
@@ -364,8 +364,9 @@ void dc_writeback_callback(IF_MV(int volume,) unsigned long sector, void *buf) | |
int rc = storage_write_sectors(IF_MD(fat_bpb->drive,) sector, 1, buf); | |
if (rc < 0) | |
{ | |
+ extern const char *sd_msg; | |
panicf("%s() - Could not write sector %ld" | |
- " (error %d)\n", __func__, sector, rc); | |
+ " (error %d %s)\n", __func__, sector, rc, sd_msg); | |
} | |
if (--copies == 0) | |
diff --git a/firmware/target/arm/tcc780x/sd-tcc780x.c b/firmware/target/arm/tcc780x/sd-tcc780x.c | |
index b7abea8..9b42501 100644 | |
--- a/firmware/target/arm/tcc780x/sd-tcc780x.c | |
+++ b/firmware/target/arm/tcc780x/sd-tcc780x.c | |
@@ -511,6 +511,8 @@ sd_read_error: | |
} | |
} | |
+const char *sd_msg; | |
+ | |
int sd_write_sectors(IF_MD(int card_no,) unsigned long start, int count, | |
const void* outbuf) | |
{ | |
@@ -524,8 +526,11 @@ int sd_write_sectors(IF_MD(int card_no,) unsigned long start, int count, | |
const unsigned char *buf_end; | |
bool aligned; | |
+ sd_msg = "sd_write_sectors"; | |
+ | |
if ((card_no == CARD_NUM_SLOT) && (GPIOA & 0x10)) | |
{ | |
+ sd_msg = "EC_WRITE_PROTECT"; | |
/* write protect tab set */ | |
return -EC_WRITE_PROTECT; | |
} | |
@@ -537,6 +542,7 @@ int sd_write_sectors(IF_MD(int card_no,) unsigned long start, int count, | |
sd_write_retry: | |
if ((card_no == CARD_NUM_SLOT) && !card_detect_target()) | |
{ | |
+ sd_msg = "EC_NOCARD"; | |
/* no external sd-card inserted */ | |
ret = -EC_NOCARD; | |
goto sd_write_error; | |
@@ -546,6 +552,7 @@ sd_write_retry: | |
if (currcard->initialized < 0) | |
{ | |
+ sd_msg = "init_err"; | |
ret = currcard->initialized; | |
goto sd_write_error; | |
} | |
@@ -553,7 +560,10 @@ sd_write_retry: | |
ret = sd_wait_for_state(SD_TRAN, EC_TRAN_WRITE_ENTRY); | |
if (ret < 0) | |
+ { | |
+ sd_msg = "wait_error"; | |
goto sd_write_error; | |
+ } | |
/* Use full SD clock for data transfer (PCK_SDMMC) */ | |
SDICLK = (1<<13) | (1<<12); /* bypass divider | enable */ | |
@@ -570,7 +580,10 @@ sd_write_retry: | |
ret = sd_command(SD_WRITE_MULTIPLE_BLOCK, start * 512, NULL, SDICMD_RES_TYPE1); | |
if (ret < 0) | |
+ { | |
+ sd_msg = "cmd_error"; | |
goto sd_write_error; | |
+ } | |
aligned = (((int)outbuf & 3) == 0); | |
@@ -602,6 +615,7 @@ sd_write_retry: | |
/* Wait for the FIFO to empty */ | |
if (!sd_poll_status(SDISTATUS_FIFO_LOAD_REQ, 0x80000)) | |
{ | |
+ sd_msg = "EC_FIFO_WR_EMPTY"; | |
ret = -EC_FIFO_WR_EMPTY; | |
goto sd_write_error; | |
} | |
@@ -611,17 +625,24 @@ sd_write_retry: | |
if (!sd_poll_status(SDISTATUS_MULTIBLOCK_END, 0x80000)) | |
{ | |
+ sd_msg = "EC_FIFO_WR_DONE"; | |
ret = -EC_FIFO_WR_DONE; | |
goto sd_write_error; | |
} | |
ret = sd_command(SD_STOP_TRANSMISSION, 0, NULL, SDICMD_RES_TYPE1); | |
if (ret < 0) | |
+ { | |
+ sd_msg = "stop_error"; | |
goto sd_write_error; | |
+ } | |
ret = sd_wait_for_state(SD_TRAN, EC_TRAN_WRITE_EXIT); | |
if (ret < 0) | |
+ { | |
+ sd_msg = "wait_error_2"; | |
goto sd_write_error; | |
+ } | |
while (1) | |
{ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment