summaryrefslogtreecommitdiff
path: root/firmware/target/arm/imx233
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/arm/imx233')
-rw-r--r--firmware/target/arm/imx233/sdmmc-imx233.c20
1 files changed, 9 insertions, 11 deletions
diff --git a/firmware/target/arm/imx233/sdmmc-imx233.c b/firmware/target/arm/imx233/sdmmc-imx233.c
index 7df0e412e5..dbca78be79 100644
--- a/firmware/target/arm/imx233/sdmmc-imx233.c
+++ b/firmware/target/arm/imx233/sdmmc-imx233.c
@@ -427,17 +427,15 @@ static int init_sd_card(int drive)
427 /* Try to switch V2 cards to HS timings, non HS seem to ignore this */ 427 /* Try to switch V2 cards to HS timings, non HS seem to ignore this */
428 if(sd_v2) 428 if(sd_v2)
429 { 429 {
430 /* only transfer 64 bytes */
431 imx233_ssp_set_block_size(ssp, /*log2(64)*/6);
430 /* CMD6 switch to HS */ 432 /* CMD6 switch to HS */
431 { 433 if(imx233_ssp_sd_mmc_transfer(ssp, SD_SWITCH_FUNC, 0x80fffff1,
432 /* only transfer 64 bytes */ 434 SSP_SHORT_RESP, aligned_buffer[drive], 1, true, true, NULL))
433 imx233_ssp_set_block_size(ssp, /*log2(64)*/6); 435 return -12;
434 if(imx233_ssp_sd_mmc_transfer(ssp, SD_SWITCH_FUNC, 0x80fffff1, 436 imx233_ssp_set_block_size(ssp, /*log2(512)*/9);
435 SSP_SHORT_RESP, aligned_buffer[drive], 1, true, true, NULL)) 437 if((aligned_buffer[drive][16] & 0xf) == 1)
436 return -12; 438 sd_hs = true;
437 imx233_ssp_set_block_size(ssp, /*log2(512)*/9);
438 if((aligned_buffer[drive][16] & 0xf) == 1)
439 sd_hs = true;
440 }
441 } 439 }
442 440
443 /* probe for CMD23 support */ 441 /* probe for CMD23 support */
@@ -954,7 +952,7 @@ int mmc_init(void)
954 if(SDMMC_FLAGS(drive) & PROBE) 952 if(SDMMC_FLAGS(drive) & PROBE)
955 continue; 953 continue;
956 else 954 else
957 panicf("init_drive(%d) failed: %d (mmc)", ret); 955 panicf("init_drive(%d) failed: %d (mmc)", drive, ret);
958 } 956 }
959 mmc_map[_mmc_num_drives++] = drive; 957 mmc_map[_mmc_num_drives++] = drive;
960 } 958 }