This is an automated email from the ASF dual-hosted git repository.

kasjer pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-core.git

commit 9cdef1e98df68efa79eee3dda2343d1384b6d314
Author: Jerzy Kasenberg <[email protected]>
AuthorDate: Fri Jul 3 16:10:21 2026 +0200

    drivers/mmc: Read crc for data commands
    
    Code was not reading CRC for commands with
    data other then CMD17/CMD18.
    
    It could result in strange behavior for some
    cards that send CRC on subsequent clocks
    that belong to other requests and synchronization
    was lost.
    
    Now CRC is read after data block is received.
    
    Signed-off-by: Jerzy Kasenberg <[email protected]>
---
 hw/drivers/mmc/src/mmc.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/hw/drivers/mmc/src/mmc.c b/hw/drivers/mmc/src/mmc.c
index 098d93c8c..457702042 100644
--- a/hw/drivers/mmc/src/mmc.c
+++ b/hw/drivers/mmc/src/mmc.c
@@ -360,6 +360,7 @@ mmc_cmd_receive_data(mmc_disk_t *mmc, uint8_t cmd, uint32_t 
payload,
 {
     int status;
     uint8_t res;
+    uint8_t crc[2];
 
     mmc_spi_set_cs(mmc, 0);
 
@@ -372,6 +373,8 @@ mmc_cmd_receive_data(mmc_disk_t *mmc, uint8_t cmd, uint32_t 
payload,
         }
     }
 
+    mmc_spi_rx(mmc, crc, 2);
+
     mmc_spi_set_cs(mmc, 1);
 
     mmc_send_extra_clocks(mmc);

Reply via email to