Index: /trunk/modules/sdmmc/caba/source/include/sdmmc.h
===================================================================
--- /trunk/modules/sdmmc/caba/source/include/sdmmc.h	(revision 573)
+++ /trunk/modules/sdmmc/caba/source/include/sdmmc.h	(revision 574)
@@ -59,4 +59,5 @@
     int		      spi_bitcount;
     int		      spi_clk;
+    int		      spi_mosi_previous; // sampled MOSI value
 
     uint8_t	      command;
Index: /trunk/modules/sdmmc/caba/source/src/sdmmc.cpp
===================================================================
--- /trunk/modules/sdmmc/caba/source/src/sdmmc.cpp	(revision 573)
+++ /trunk/modules/sdmmc/caba/source/src/sdmmc.cpp	(revision 574)
@@ -60,4 +60,5 @@
 	spi_fsm  = S_IDLE;
 	spi_clk = p_spi_clk;
+	spi_mosi_previous = p_spi_mosi;
 	return;
     }
@@ -67,5 +68,5 @@
 	if (p_spi_clk.read() == 1 && spi_clk == 0) {
 		// rising edge
-		command = (command << 1) | p_spi_mosi;
+		command = (command << 1) | spi_mosi_previous;
 		spi_bitcount = 6;
 		spi_fsm = S_RECEIVE_CMD;
@@ -75,5 +76,5 @@
 	if (p_spi_clk.read() == 1 && spi_clk == 0) {
 		// rising edge
-		command = (command << 1) | p_spi_mosi;
+		command = (command << 1) | spi_mosi_previous;
 		if (spi_bitcount == 0) {
 			if ((command & 0x80) == 0) {
@@ -93,5 +94,5 @@
 	if (p_spi_clk.read() == 1 && spi_clk == 0) {
 		// rising edge
-		args = (args << 1) | p_spi_mosi;
+		args = (args << 1) | spi_mosi_previous;
 		spi_bitcount = 30;
 		spi_fsm = S_RECEIVE_ARGS;
@@ -101,5 +102,5 @@
 	if (p_spi_clk.read() == 1 && spi_clk == 0) {
 		// rising edge
-		args = (args << 1) | p_spi_mosi;
+		args = (args << 1) | spi_mosi_previous;
 		if (spi_bitcount == 0) {
 			spi_bitcount = 7;
@@ -113,5 +114,5 @@
 	if (p_spi_clk.read() == 1 && spi_clk == 0) {
 		// rising edge
-		cmdcrc = (cmdcrc << 1) | p_spi_mosi;
+		cmdcrc = (cmdcrc << 1) | spi_mosi_previous;
 		if (spi_bitcount == 0) {
 			handle_sdmmc_cmd(command, args);
@@ -154,5 +155,5 @@
 	    // rising edge
 	    uint8_t s_data;
-	    s_data = (m_databuf[0] << 1) | p_spi_mosi;
+	    s_data = (m_databuf[0] << 1) | spi_mosi_previous;
 	    m_databuf[0] = s_data;
 	    if (spi_bitcount == 0) {
@@ -178,5 +179,5 @@
 	    if (p_spi_clk.read() == 1 && spi_clk == 0) {
 		// rising edge
-		m_databuf[m_data_idx] = (m_databuf[m_data_idx] << 1) | p_spi_mosi;
+		m_databuf[m_data_idx] = (m_databuf[m_data_idx] << 1) | spi_mosi_previous;
 		if (spi_bitcount == 0) {
 		    m_data_idx++;
@@ -215,4 +216,5 @@
     }
     spi_clk = p_spi_clk.read();
+    spi_mosi_previous = p_spi_mosi;
 } // end GenMealy()
 
