| 
					
				 | 
			
			
				@@ -204,6 +204,7 @@ sd_error_enum sd_card_init(void) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /* the card is not I/O only card */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if(SDIO_SECURE_DIGITAL_IO_CARD != cardtype) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /* send CMD2(SD_CMD_ALL_SEND_CID) to get the CID numbers */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        sdio_csm_disable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sdio_command_response_config(SD_CMD_ALL_SEND_CID, (uint32_t)0x0, SDIO_RESPONSETYPE_LONG); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sdio_wait_type_set(SDIO_WAITTYPE_NO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sdio_csm_enable(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -224,6 +225,7 @@ sd_error_enum sd_card_init(void) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if((SDIO_STD_CAPACITY_SD_CARD_V1_1 == cardtype) || (SDIO_STD_CAPACITY_SD_CARD_V2_0 == cardtype) || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             (SDIO_HIGH_CAPACITY_SD_CARD == cardtype) || (SDIO_SECURE_DIGITAL_IO_COMBO_CARD == cardtype)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /* send CMD3(SEND_RELATIVE_ADDR) to ask the card to publish a new relative address (RCA) */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        sdio_csm_disable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sdio_command_response_config(SD_CMD_SEND_RELATIVE_ADDR, (uint32_t)0x0, SDIO_RESPONSETYPE_SHORT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sdio_wait_type_set(SDIO_WAITTYPE_NO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sdio_csm_enable(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -239,6 +241,7 @@ sd_error_enum sd_card_init(void) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sd_rca = temp_rca; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /* send CMD9(SEND_CSD) to get the addressed card's card-specific data (CSD) */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        sdio_csm_disable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sdio_command_response_config(SD_CMD_SEND_CSD, (uint32_t)(temp_rca << SD_RCA_SHIFT), SDIO_RESPONSETYPE_LONG); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sdio_wait_type_set(SDIO_WAITTYPE_NO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sdio_csm_enable(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -278,6 +281,7 @@ sd_error_enum sd_power_on(void) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_clock_enable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /* send CMD0(GO_IDLE_STATE) to reset the card */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    sdio_csm_disable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_command_response_config(SD_CMD_GO_IDLE_STATE, (uint32_t)0x0, SDIO_RESPONSETYPE_NO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_wait_type_set(SDIO_WAITTYPE_NO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /* enable the CSM */ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -290,6 +294,7 @@ sd_error_enum sd_power_on(void) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /* send CMD8(SEND_IF_COND) to get SD memory card interface condition */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    sdio_csm_disable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_command_response_config(SD_CMD_SEND_IF_COND, SD_CHECK_PATTERN, SDIO_RESPONSETYPE_SHORT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_wait_type_set(SDIO_WAITTYPE_NO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_csm_enable(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -301,6 +306,7 @@ sd_error_enum sd_power_on(void) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /* send CMD55(APP_CMD) to indicate next command is application specific command */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    sdio_csm_disable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_command_response_config(SD_CMD_APP_CMD, (uint32_t)0x0, SDIO_RESPONSETYPE_SHORT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_wait_type_set(SDIO_WAITTYPE_NO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_csm_enable(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -309,6 +315,7 @@ sd_error_enum sd_power_on(void) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /* SD memory card */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         while((!busyflag) && (count < SD_MAX_VOLT_VALIDATION)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             /* send CMD55(APP_CMD) to indicate next command is application specific command */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            sdio_csm_disable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             sdio_command_response_config(SD_CMD_APP_CMD, (uint32_t)0x0, SDIO_RESPONSETYPE_SHORT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             sdio_wait_type_set(SDIO_WAITTYPE_NO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             sdio_csm_enable(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -319,6 +326,7 @@ sd_error_enum sd_power_on(void) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             /* send ACMD41(SD_SEND_OP_COND) to get host capacity support information (HCS) and OCR content */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            sdio_csm_disable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             sdio_command_response_config(SD_APPCMD_SD_SEND_OP_COND, (SD_VOLTAGE_WINDOW | sdcardtype), SDIO_RESPONSETYPE_SHORT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             sdio_wait_type_set(SDIO_WAITTYPE_NO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             sdio_csm_enable(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -467,6 +475,7 @@ sd_error_enum sd_block_read(uint32_t *preadbuffer, uint64_t readaddr, uint16_t b 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if((blocksize > 0) && (blocksize <= 2048) && (0 == align)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         datablksize = sd_datablocksize_get(blocksize); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /* send CMD16(SET_BLOCKLEN) to set the block length */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        sdio_csm_disable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sdio_command_response_config(SD_CMD_SET_BLOCKLEN, (uint32_t)blocksize, SDIO_RESPONSETYPE_SHORT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sdio_wait_type_set(SDIO_WAITTYPE_NO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sdio_csm_enable(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -490,6 +499,7 @@ sd_error_enum sd_block_read(uint32_t *preadbuffer, uint64_t readaddr, uint16_t b 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_dsm_enable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /* send CMD17(READ_SINGLE_BLOCK) to read a block */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    sdio_csm_disable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_command_response_config(SD_CMD_READ_SINGLE_BLOCK, (uint32_t)readaddr, SDIO_RESPONSETYPE_SHORT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_wait_type_set(SDIO_WAITTYPE_NO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_csm_enable(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -602,6 +612,7 @@ sd_error_enum sd_multiblocks_read(uint32_t *preadbuffer, uint64_t readaddr, uint 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if((blocksize > 0) && (blocksize <= 2048) && (0 == align)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         datablksize = sd_datablocksize_get(blocksize); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /* send CMD16(SET_BLOCKLEN) to set the block length */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        sdio_csm_disable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sdio_command_response_config(SD_CMD_SET_BLOCKLEN, (uint32_t)blocksize, SDIO_RESPONSETYPE_SHORT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sdio_wait_type_set(SDIO_WAITTYPE_NO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sdio_csm_enable(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -632,6 +643,7 @@ sd_error_enum sd_multiblocks_read(uint32_t *preadbuffer, uint64_t readaddr, uint 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sdio_dsm_enable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /* send CMD18(READ_MULTIPLE_BLOCK) to read multiple blocks */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        sdio_csm_disable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sdio_command_response_config(SD_CMD_READ_MULTIPLE_BLOCK, readaddr, SDIO_RESPONSETYPE_SHORT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sdio_wait_type_set(SDIO_WAITTYPE_NO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sdio_csm_enable(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -680,6 +692,7 @@ sd_error_enum sd_multiblocks_read(uint32_t *preadbuffer, uint64_t readaddr, uint 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if((SDIO_STD_CAPACITY_SD_CARD_V1_1 == cardtype) || (SDIO_STD_CAPACITY_SD_CARD_V2_0 == cardtype) || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         (SDIO_HIGH_CAPACITY_SD_CARD == cardtype)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     /* send CMD12(STOP_TRANSMISSION) to stop transmission */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    sdio_csm_disable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     sdio_command_response_config(SD_CMD_STOP_TRANSMISSION, (uint32_t)0x0, SDIO_RESPONSETYPE_SHORT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     sdio_wait_type_set(SDIO_WAITTYPE_NO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     sdio_csm_enable(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -771,6 +784,7 @@ sd_error_enum sd_block_write(uint32_t *pwritebuffer, uint64_t writeaddr, uint16_ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if((blocksize > 0) && (blocksize <= 2048) && (0 == align)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         datablksize = sd_datablocksize_get(blocksize); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /* send CMD16(SET_BLOCKLEN) to set the block length */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        sdio_csm_disable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sdio_command_response_config(SD_CMD_SET_BLOCKLEN, (uint32_t)blocksize, SDIO_RESPONSETYPE_SHORT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sdio_wait_type_set(SDIO_WAITTYPE_NO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sdio_csm_enable(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -786,6 +800,7 @@ sd_error_enum sd_block_write(uint32_t *pwritebuffer, uint64_t writeaddr, uint16_ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /* send CMD13(SEND_STATUS), addressed card sends its status registers */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    sdio_csm_disable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_command_response_config(SD_CMD_SEND_STATUS, (uint32_t)sd_rca << SD_RCA_SHIFT, SDIO_RESPONSETYPE_SHORT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_wait_type_set(SDIO_WAITTYPE_NO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_csm_enable(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -810,6 +825,7 @@ sd_error_enum sd_block_write(uint32_t *pwritebuffer, uint64_t writeaddr, uint16_ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /* send CMD13(SEND_STATUS), addressed card sends its status registers */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        sdio_csm_disable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sdio_command_response_config(SD_CMD_SEND_STATUS, (uint32_t)sd_rca << SD_RCA_SHIFT, SDIO_RESPONSETYPE_SHORT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sdio_wait_type_set(SDIO_WAITTYPE_NO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sdio_csm_enable(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -822,6 +838,7 @@ sd_error_enum sd_block_write(uint32_t *pwritebuffer, uint64_t writeaddr, uint16_ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /* send CMD24(WRITE_BLOCK) to write a block */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    sdio_csm_disable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_command_response_config(SD_CMD_WRITE_BLOCK, writeaddr, SDIO_RESPONSETYPE_SHORT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_wait_type_set(SDIO_WAITTYPE_NO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_csm_enable(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -974,6 +991,7 @@ sd_error_enum sd_multiblocks_write(uint32_t *pwritebuffer, uint64_t writeaddr, u 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if((blocksize > 0) && (blocksize <= 2048) && (0 == align)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         datablksize = sd_datablocksize_get(blocksize); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /* send CMD16(SET_BLOCKLEN) to set the block length */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        sdio_csm_disable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sdio_command_response_config(SD_CMD_SET_BLOCKLEN, (uint32_t)blocksize, SDIO_RESPONSETYPE_SHORT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sdio_wait_type_set(SDIO_WAITTYPE_NO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sdio_csm_enable(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -989,6 +1007,7 @@ sd_error_enum sd_multiblocks_write(uint32_t *pwritebuffer, uint64_t writeaddr, u 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /* send CMD13(SEND_STATUS), addressed card sends its status registers */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    sdio_csm_disable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_command_response_config(SD_CMD_SEND_STATUS, (uint32_t)sd_rca << SD_RCA_SHIFT, SDIO_RESPONSETYPE_SHORT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_wait_type_set(SDIO_WAITTYPE_NO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_csm_enable(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1007,6 +1026,7 @@ sd_error_enum sd_multiblocks_write(uint32_t *pwritebuffer, uint64_t writeaddr, u 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if((SDIO_STD_CAPACITY_SD_CARD_V1_1 == cardtype) || (SDIO_STD_CAPACITY_SD_CARD_V2_0 == cardtype) || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 (SDIO_HIGH_CAPACITY_SD_CARD == cardtype)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             /* send CMD55(APP_CMD) to indicate next command is application specific command */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            sdio_csm_disable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             sdio_command_response_config(SD_CMD_APP_CMD, (uint32_t)sd_rca << SD_RCA_SHIFT, SDIO_RESPONSETYPE_SHORT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             sdio_wait_type_set(SDIO_WAITTYPE_NO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             sdio_csm_enable(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1017,6 +1037,7 @@ sd_error_enum sd_multiblocks_write(uint32_t *pwritebuffer, uint64_t writeaddr, u 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             /* send ACMD23(SET_WR_BLK_ERASE_COUNT) to set the number of write blocks to be preerased before writing */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            sdio_csm_disable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             sdio_command_response_config(SD_APPCMD_SET_WR_BLK_ERASE_COUNT, blocksnumber, SDIO_RESPONSETYPE_SHORT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             sdio_wait_type_set(SDIO_WAITTYPE_NO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             sdio_csm_enable(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1027,6 +1048,7 @@ sd_error_enum sd_multiblocks_write(uint32_t *pwritebuffer, uint64_t writeaddr, u 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /* send CMD25(WRITE_MULTIPLE_BLOCK) to continuously write blocks of data */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        sdio_csm_disable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sdio_command_response_config(SD_CMD_WRITE_MULTIPLE_BLOCK, writeaddr, SDIO_RESPONSETYPE_SHORT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sdio_wait_type_set(SDIO_WAITTYPE_NO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sdio_csm_enable(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1090,6 +1112,7 @@ sd_error_enum sd_multiblocks_write(uint32_t *pwritebuffer, uint64_t writeaddr, u 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if((SDIO_STD_CAPACITY_SD_CARD_V1_1 == cardtype) || (SDIO_STD_CAPACITY_SD_CARD_V2_0 == cardtype) || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         (SDIO_HIGH_CAPACITY_SD_CARD == cardtype)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     /* send CMD12(STOP_TRANSMISSION) to stop transmission */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    sdio_csm_disable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     sdio_command_response_config(SD_CMD_STOP_TRANSMISSION, (uint32_t)0x0, SDIO_RESPONSETYPE_SHORT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     sdio_wait_type_set(SDIO_WAITTYPE_NO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     sdio_csm_enable(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1194,6 +1217,7 @@ sd_error_enum sd_erase(uint64_t startaddr, uint64_t endaddr) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if((SDIO_STD_CAPACITY_SD_CARD_V1_1 == cardtype) || (SDIO_STD_CAPACITY_SD_CARD_V2_0 == cardtype) || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             (SDIO_HIGH_CAPACITY_SD_CARD == cardtype)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /* send CMD32(ERASE_WR_BLK_START) to set the address of the first write block to be erased */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        sdio_csm_disable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sdio_command_response_config(SD_CMD_ERASE_WR_BLK_START, startaddr, SDIO_RESPONSETYPE_SHORT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sdio_wait_type_set(SDIO_WAITTYPE_NO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sdio_csm_enable(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1204,6 +1228,7 @@ sd_error_enum sd_erase(uint64_t startaddr, uint64_t endaddr) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /* send CMD33(ERASE_WR_BLK_END) to set the address of the last write block of the continuous range to be erased */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        sdio_csm_disable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sdio_command_response_config(SD_CMD_ERASE_WR_BLK_END, endaddr, SDIO_RESPONSETYPE_SHORT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sdio_wait_type_set(SDIO_WAITTYPE_NO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sdio_csm_enable(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1215,6 +1240,7 @@ sd_error_enum sd_erase(uint64_t startaddr, uint64_t endaddr) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /* send CMD38(ERASE) to set the address of the first write block to be erased */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    sdio_csm_disable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_command_response_config(SD_CMD_ERASE, (uint32_t)0x0, SDIO_RESPONSETYPE_SHORT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_wait_type_set(SDIO_WAITTYPE_NO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_csm_enable(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1321,6 +1347,7 @@ sd_error_enum sd_card_select_deselect(uint16_t cardrca) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sd_error_enum status = SD_OK; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /* send CMD7(SELECT/DESELECT_CARD) to select or deselect the card */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    sdio_csm_disable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_command_response_config(SD_CMD_SELECT_DESELECT_CARD, (uint32_t)(cardrca << SD_RCA_SHIFT), SDIO_RESPONSETYPE_SHORT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_wait_type_set(SDIO_WAITTYPE_NO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_csm_enable(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1344,6 +1371,7 @@ sd_error_enum sd_cardstatus_get(uint32_t *pcardstatus) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /* send CMD13(SEND_STATUS), addressed card sends its status register */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    sdio_csm_disable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_command_response_config(SD_CMD_SEND_STATUS, (uint32_t)sd_rca << SD_RCA_SHIFT, SDIO_RESPONSETYPE_SHORT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_wait_type_set(SDIO_WAITTYPE_NO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_csm_enable(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1375,6 +1403,7 @@ sd_error_enum sd_sdstatus_get(uint32_t *psdstatus) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /* send CMD16(SET_BLOCKLEN) to set the block length */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    sdio_csm_disable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_command_response_config(SD_CMD_SET_BLOCKLEN, (uint32_t)64, SDIO_RESPONSETYPE_SHORT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_wait_type_set(SDIO_WAITTYPE_NO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_csm_enable(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1385,6 +1414,7 @@ sd_error_enum sd_sdstatus_get(uint32_t *psdstatus) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /* send CMD55(APP_CMD) to indicate next command is application specific command */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    sdio_csm_disable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_command_response_config(SD_CMD_APP_CMD, (uint32_t)sd_rca << SD_RCA_SHIFT, SDIO_RESPONSETYPE_SHORT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_wait_type_set(SDIO_WAITTYPE_NO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_csm_enable(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1400,6 +1430,7 @@ sd_error_enum sd_sdstatus_get(uint32_t *psdstatus) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_dsm_enable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /* send ACMD13(SD_STATUS) to get the SD status */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    sdio_csm_disable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_command_response_config(SD_APPCMD_SD_STATUS, (uint32_t)0x0, SDIO_RESPONSETYPE_SHORT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_wait_type_set(SDIO_WAITTYPE_NO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_csm_enable(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1461,6 +1492,7 @@ sd_error_enum sd_transfer_stop(void) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sd_error_enum status = SD_OK; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /* send CMD12(STOP_TRANSMISSION) to stop transmission */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    sdio_csm_disable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_command_response_config(SD_CMD_STOP_TRANSMISSION, (uint32_t)0x0, SDIO_RESPONSETYPE_SHORT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_wait_type_set(SDIO_WAITTYPE_NO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_csm_enable(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1507,6 +1539,7 @@ sd_error_enum sd_lock_unlock(uint8_t lockstate) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_dma_disable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /* send CMD16(SET_BLOCKLEN) to set the block length */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    sdio_csm_disable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_command_response_config(SD_CMD_SET_BLOCKLEN, (uint32_t)8, SDIO_RESPONSETYPE_SHORT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_wait_type_set(SDIO_WAITTYPE_NO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_csm_enable(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1517,6 +1550,7 @@ sd_error_enum sd_lock_unlock(uint8_t lockstate) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /* send CMD13(SEND_STATUS), addressed card sends its status register */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    sdio_csm_disable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_command_response_config(SD_CMD_SEND_STATUS, (uint32_t)sd_rca << SD_RCA_SHIFT, SDIO_RESPONSETYPE_SHORT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_wait_type_set(SDIO_WAITTYPE_NO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_csm_enable(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1532,6 +1566,7 @@ sd_error_enum sd_lock_unlock(uint8_t lockstate) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /* continue to send CMD13 to polling the state of card until buffer empty or timeout */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         --timeout; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /* send CMD13(SEND_STATUS), addressed card sends its status registers */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        sdio_csm_disable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sdio_command_response_config(SD_CMD_SEND_STATUS, (uint32_t)sd_rca << SD_RCA_SHIFT, SDIO_RESPONSETYPE_SHORT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sdio_wait_type_set(SDIO_WAITTYPE_NO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sdio_csm_enable(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1547,6 +1582,7 @@ sd_error_enum sd_lock_unlock(uint8_t lockstate) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /* send CMD42(LOCK_UNLOCK) to set/reset the password or lock/unlock the card */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    sdio_csm_disable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_command_response_config(SD_CMD_LOCK_UNLOCK, (uint32_t)0x0, SDIO_RESPONSETYPE_SHORT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_wait_type_set(SDIO_WAITTYPE_NO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_csm_enable(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2166,6 +2202,7 @@ static sd_error_enum sd_card_state_get(uint8_t *pcardstate) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     __IO uint32_t reg_status = 0, response = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /* send CMD13(SEND_STATUS), addressed card sends its status register */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    sdio_csm_disable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_command_response_config(SD_CMD_SEND_STATUS, (uint32_t)sd_rca << SD_RCA_SHIFT, SDIO_RESPONSETYPE_SHORT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_wait_type_set(SDIO_WAITTYPE_NO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_csm_enable(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2234,6 +2271,7 @@ static sd_error_enum sd_bus_width_config(uint32_t buswidth) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if(SD_BUS_WIDTH_1BIT == buswidth) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if(SD_ALLZERO != (sd_scr[1] & buswidth)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             /* send CMD55(APP_CMD) to indicate next command is application specific command */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            sdio_csm_disable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             sdio_command_response_config(SD_CMD_APP_CMD, (uint32_t)sd_rca << SD_RCA_SHIFT, SDIO_RESPONSETYPE_SHORT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             sdio_wait_type_set(SDIO_WAITTYPE_NO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             sdio_csm_enable(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2244,6 +2282,7 @@ static sd_error_enum sd_bus_width_config(uint32_t buswidth) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             /* send ACMD6(SET_BUS_WIDTH) to define the data bus width */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            sdio_csm_disable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             sdio_command_response_config(SD_APPCMD_SET_BUS_WIDTH, (uint32_t)0x0, SDIO_RESPONSETYPE_SHORT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             sdio_wait_type_set(SDIO_WAITTYPE_NO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             sdio_csm_enable(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2259,6 +2298,7 @@ static sd_error_enum sd_bus_width_config(uint32_t buswidth) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } else if(SD_BUS_WIDTH_4BIT == buswidth) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if(SD_ALLZERO != (sd_scr[1] & buswidth)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             /* send CMD55(APP_CMD) to indicate next command is application specific command */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            sdio_csm_disable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             sdio_command_response_config(SD_CMD_APP_CMD, (uint32_t)sd_rca << SD_RCA_SHIFT, SDIO_RESPONSETYPE_SHORT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             sdio_wait_type_set(SDIO_WAITTYPE_NO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             sdio_csm_enable(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2269,6 +2309,7 @@ static sd_error_enum sd_bus_width_config(uint32_t buswidth) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             /* send ACMD6(SET_BUS_WIDTH) to define the data bus width */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            sdio_csm_disable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             sdio_command_response_config(SD_APPCMD_SET_BUS_WIDTH, (uint32_t)0x2, SDIO_RESPONSETYPE_SHORT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             sdio_wait_type_set(SDIO_WAITTYPE_NO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             sdio_csm_enable(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2298,6 +2339,7 @@ static sd_error_enum sd_scr_get(uint16_t rca, uint32_t *pscr) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sd_error_enum status = SD_OK; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     uint32_t temp_scr[2] = {0, 0}, idx_scr = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /* send CMD16(SET_BLOCKLEN) to set block length */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    sdio_csm_disable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_command_response_config(SD_CMD_SET_BLOCKLEN, (uint32_t)8, SDIO_RESPONSETYPE_SHORT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_wait_type_set(SDIO_WAITTYPE_NO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_csm_enable(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2308,6 +2350,7 @@ static sd_error_enum sd_scr_get(uint16_t rca, uint32_t *pscr) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /* send CMD55(APP_CMD) to indicate next command is application specific command */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    sdio_csm_disable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_command_response_config(SD_CMD_APP_CMD, (uint32_t)rca << SD_RCA_SHIFT, SDIO_RESPONSETYPE_SHORT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_wait_type_set(SDIO_WAITTYPE_NO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_csm_enable(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2323,6 +2366,7 @@ static sd_error_enum sd_scr_get(uint16_t rca, uint32_t *pscr) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_dsm_enable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /* send ACMD51(SEND_SCR) to read the SD configuration register */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    sdio_csm_disable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_command_response_config(SD_APPCMD_SEND_SCR, (uint32_t)0x0, SDIO_RESPONSETYPE_SHORT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_wait_type_set(SDIO_WAITTYPE_NO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sdio_csm_enable(); 
			 |