Browse Source

【修复】修复ART-PI samrt上读取不到emmc/sd分区问题 (#9051)

Update sd.c
zhuzhuzhu 1 year ago
parent
commit
1b4b338ed1
1 changed files with 19 additions and 20 deletions
  1. 19 20
      components/drivers/sdio/sd.c

+ 19 - 20
components/drivers/sdio/sd.c

@@ -755,6 +755,25 @@ 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);
     /*switch bus width*/
     if ((host->flags & MMCSD_BUSWIDTH_4) && (card->scr.sd_bus_widths & SD_SCR_BUS_WIDTH_4))
     {
@@ -780,26 +799,6 @@ 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;