diff options
author | gdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4> | 2011-05-09 19:30:55 +0000 |
---|---|---|
committer | gdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4> | 2011-05-09 19:30:55 +0000 |
commit | f91dff51cc155f265a65417087f3402e99f6e5ae (patch) | |
tree | cdb44696001398415156aaf6c261b09d4231d4f9 /os/hal/src | |
parent | 539fc8bfc35d0d03c46d553d21c8f332f4a9eb55 (diff) | |
download | ChibiOS-f91dff51cc155f265a65417087f3402e99f6e5ae.tar.gz ChibiOS-f91dff51cc155f265a65417087f3402e99f6e5ae.tar.bz2 ChibiOS-f91dff51cc155f265a65417087f3402e99f6e5ae.zip |
Added SDC status check to sdcWrite();
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@2945 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'os/hal/src')
-rw-r--r-- | os/hal/src/sdc.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/os/hal/src/sdc.c b/os/hal/src/sdc.c index 334caec0d..5e1bede8f 100644 --- a/os/hal/src/sdc.c +++ b/os/hal/src/sdc.c @@ -149,11 +149,13 @@ bool_t sdcConnect(SDCDriver *sdcp) { /* Voltage verification.*/
if (((resp[0] >> 8) & 0xF) != 1)
goto failed;
- if (sdc_lld_send_cmd_short_crc(sdcp, SDC_CMD_APP_CMD, 0, resp))
+ if (sdc_lld_send_cmd_short_crc(sdcp, SDC_CMD_APP_CMD, 0, resp) ||
+ (resp[0] & SDC_R1_ERROR_MASK))
goto failed;
else {
/* MMC or SD detection.*/
- if (sdc_lld_send_cmd_short_crc(sdcp, SDC_CMD_APP_CMD, 0, resp))
+ if (sdc_lld_send_cmd_short_crc(sdcp, SDC_CMD_APP_CMD, 0, resp) ||
+ (resp[0] & SDC_R1_ERROR_MASK))
sdcp->cardmode = SDC_MODE_CARDTYPE_MMC;
else
sdcp->cardmode = SDC_MODE_CARDTYPE_SDV11;
@@ -172,7 +174,8 @@ bool_t sdcConnect(SDCDriver *sdcp) { i = 0;
while (TRUE) {
chThdSleepMilliseconds(10);
- if (sdc_lld_send_cmd_short_crc(sdcp, SDC_CMD_APP_CMD, 0, resp))
+ if (sdc_lld_send_cmd_short_crc(sdcp, SDC_CMD_APP_CMD, 0, resp) ||
+ (resp[0] & SDC_R1_ERROR_MASK))
goto failed;
if (sdc_lld_send_cmd_short(sdcp, SDC_CMD_APP_OP_COND, ocr, resp))
goto failed;
@@ -207,7 +210,8 @@ bool_t sdcConnect(SDCDriver *sdcp) { /* Block length fixed at 512 bytes.*/
if (sdc_lld_send_cmd_short_crc(sdcp, SDC_CMD_SET_BLOCKLEN,
- SDC_BLOCK_SIZE, resp))
+ SDC_BLOCK_SIZE, resp) ||
+ (resp[0] & SDC_R1_ERROR_MASK))
goto failed;
/* Switches to wide bus mode.*/
|