Forráskód Böngészése

[fix] 修复ART-PI smart在sd/emmc读取不到分区的问题 (#9058)

Update sd.c
zhuzhuzhu 1 éve
szülő
commit
2866da37a0
1 módosított fájl, 21 hozzáadás és 21 törlés
  1. 21 21
      components/drivers/sdio/sd.c

+ 21 - 21
components/drivers/sdio/sd.c

@@ -755,25 +755,8 @@ static rt_int32_t mmcsd_sd_init_card(struct rt_mmcsd_host *host,
             goto err1;
     }
 
-    /*
-     * change SD card to the highest supported speed
-     */
-    err = mmcsd_switch(card);
-    if (err)
-        goto err1;
-
-    /* set bus speed */
-    max_data_rate = (unsigned int)-1;
-    if (max_data_rate < card->hs_max_data_rate)
-    {
-        max_data_rate = card->hs_max_data_rate;
-    }
-    if (max_data_rate < card->max_data_rate)
-    {
-        max_data_rate = card->max_data_rate;
-    }
-
-    mmcsd_set_clock(host, max_data_rate);
+    mmcsd_set_timing(host, MMCSD_TIMING_LEGACY);
+    mmcsd_set_clock(host, 25000000);
     /*switch bus width*/
     if ((host->flags & MMCSD_BUSWIDTH_4) && (card->scr.sd_bus_widths & SD_SCR_BUS_WIDTH_4))
     {
@@ -783,8 +766,6 @@ static rt_int32_t mmcsd_sd_init_card(struct rt_mmcsd_host *host,
 
         mmcsd_set_bus_width(host, MMCSD_BUS_WIDTH_4);
     }
-    mmcsd_set_timing(host, MMCSD_TIMING_LEGACY);
-    mmcsd_set_clock(host, 25000000);
 
     /* Read and decode SD Status and check whether UHS mode is supported */
     union rt_sd_status sd_status;
@@ -799,6 +780,25 @@ static rt_int32_t mmcsd_sd_init_card(struct rt_mmcsd_host *host,
         card->flags |= CARD_FLAG_SDR50 | CARD_FLAG_SDR104 | CARD_FLAG_DDR50;
     }
 
+    /*
+     * change SD card to the highest supported speed
+     */
+    err = mmcsd_switch(card);
+    if (err)
+        goto err1;
+
+    /* set bus speed */
+    max_data_rate = (unsigned int)-1;
+    if (max_data_rate < card->hs_max_data_rate)
+    {
+        max_data_rate = card->hs_max_data_rate;
+    }
+    if (max_data_rate < card->max_data_rate)
+    {
+        max_data_rate = card->max_data_rate;
+    }
+
+    mmcsd_set_clock(host, max_data_rate);
     host->card = card;
 
     return 0;