summaryrefslogtreecommitdiffstats
path: root/c/src/libchip
diff options
context:
space:
mode:
authorPavel Pisa <ppisa@pikron.com>2013-10-08 10:40:29 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2013-10-08 11:14:03 +0200
commit382f714a6ecb5bd963a71026c1a51783770606b5 (patch)
tree6b9689878699fe870e04f2c35871a68a5d45244c /c/src/libchip
parentShared MMU initialization for ARM BSPs and RaspberryPi MMU support (diff)
downloadrtems-382f714a6ecb5bd963a71026c1a51783770606b5.tar.bz2
SPI SD-Card: setup valid CRC-7 for STOP_TRANSMISSION command.
STOP_TRANSMISSION command is used to finish READ_MULTIPLE_BLOCK command and its format is regular command format. It requires valid CRC-7 to have effect at least on same cards types else it is ignored and attempt to issue next READ or WRITE commands results in illegal command condition (0x04) preceded by strange (0x3f) for tested card. Signed-off-by: Pavel Pisa <ppisa@pikron.com>
Diffstat (limited to 'c/src/libchip')
-rw-r--r--c/src/libchip/i2c/spi-sd-card.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/c/src/libchip/i2c/spi-sd-card.c b/c/src/libchip/i2c/spi-sd-card.c
index ade386026e..03d4924a83 100644
--- a/c/src/libchip/i2c/spi-sd-card.c
+++ b/c/src/libchip/i2c/spi-sd-card.c
@@ -501,8 +501,13 @@ static int sd_card_send_register_command( sd_card_driver_entry *e, uint32_t comm
static int sd_card_stop_multiple_block_read( sd_card_driver_entry *e)
{
int rv = 0;
+ uint8_t crc7;
SD_CARD_COMMAND_SET_COMMAND( e->command, SD_CARD_CMD_STOP_TRANSMISSION);
+ SD_CARD_COMMAND_SET_ARGUMENT( e->command, 0);
+ /*crc7 = sd_card_compute_crc7( e->command + 1, 5);*/
+ crc7 = 0x30; /* Help compiler - command and argument are constants */
+ SD_CARD_COMMAND_SET_CRC7( e->command, crc7);
rv = rtems_libi2c_write_bytes( e->bus, e->command, SD_CARD_COMMAND_SIZE);
RTEMS_CHECK_RV( rv, "Write stop transfer token");