summaryrefslogtreecommitdiffstats
path: root/c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2010-06-21 15:25:04 +0000
committerSebastian Huber <sebastian.huber@embedded-brains.de>2010-06-21 15:25:04 +0000
commit167c6ce11e543e95abc8c2d51da442f212ff2d22 (patch)
tree91c45aa4dbef2a256c9c2a8d8d2ec346565396ca /c
parent2010-06-21 Arnout Vandecappelle <arnout@mind.be> (diff)
downloadrtems-167c6ce11e543e95abc8c2d51da442f212ff2d22.tar.bz2
2010-06-21 Arnout Vandecappelle <arnout@mind.be>
PR 1576/misc * libchip/i2c/spi-sd-card.c: Enable CRC checks.
Diffstat (limited to 'c')
-rw-r--r--c/src/ChangeLog5
-rw-r--r--c/src/libchip/i2c/spi-sd-card.c6
2 files changed, 10 insertions, 1 deletions
diff --git a/c/src/ChangeLog b/c/src/ChangeLog
index acfbee24e5..41bdf2830c 100644
--- a/c/src/ChangeLog
+++ b/c/src/ChangeLog
@@ -1,5 +1,10 @@
2010-06-21 Arnout Vandecappelle <arnout@mind.be>
+ PR 1576/misc
+ * libchip/i2c/spi-sd-card.c: Enable CRC checks.
+
+2010-06-21 Arnout Vandecappelle <arnout@mind.be>
+
PR 1569/misc
* libchip/i2c/spi-sd-card.c: Added CRC checks.
diff --git a/c/src/libchip/i2c/spi-sd-card.c b/c/src/libchip/i2c/spi-sd-card.c
index 89b81d8ab0..3289c72f9b 100644
--- a/c/src/libchip/i2c/spi-sd-card.c
+++ b/c/src/libchip/i2c/spi-sd-card.c
@@ -461,7 +461,8 @@ static int sd_card_send_register_command( sd_card_driver_entry *e, uint32_t comm
}
crc7 = sd_card_compute_crc7( e->response + e->response_index, 5);
- if (crc7 != SD_CARD_COMMAND_GET_CRC7( e->response + e->response_index)) {
+ if (crc7 != SD_CARD_COMMAND_GET_CRC7( e->response + e->response_index) &&
+ SD_CARD_COMMAND_GET_CRC7( e->response + e->response_index) != 0x7f) {
RTEMS_SYSLOG_ERROR( "CRC check failed on register command\n");
return -RTEMS_IO_ERROR;
}
@@ -752,6 +753,9 @@ static rtems_status_code sd_card_init( sd_card_driver_entry *e)
cmd_arg = SD_CARD_FLAG_HCS;
}
+ /* Enable CRC */
+ sd_card_send_command( e, SD_CARD_CMD_CRC_ON_OFF, 1);
+
/* Initialize card */
while (true) {
if (assume_sd) {