]> granicus.if.org Git - esp-idf/commitdiff
sdmmc: Use slot width as default slot_config width parameter, instead of 4
authorAngus Gratton <angus@espressif.com>
Thu, 2 Mar 2017 06:18:44 +0000 (17:18 +1100)
committerAngus Gratton <angus@espressif.com>
Fri, 17 Mar 2017 10:12:41 +0000 (18:12 +0800)
Ref #361 https://github.com/espressif/esp-idf/pull/361

components/driver/include/driver/sdmmc_host.h
components/driver/sdmmc_host.c
docs/api/storage/sdmmc.rst

index f9f4f7d3777f3fd825e816586a102bbf8bbfdf36..dc3e9ef6bf997a2f30226c13218dae73bbf3d25a 100644 (file)
@@ -55,6 +55,7 @@ typedef struct {
 
 #define SDMMC_SLOT_NO_CD      ((gpio_num_t) -1)     ///< indicates that card detect line is not used
 #define SDMMC_SLOT_NO_WP      ((gpio_num_t) -1)     ///< indicates that write protect line is not used
+#define SDMMC_SLOT_WIDTH_DEFAULT 0 ///< use the default width for the slot (8 for slot 0, 4 for slot 1)
 
 /**
  * Macro defining default configuration of SDMMC host slot
@@ -62,7 +63,7 @@ typedef struct {
 #define SDMMC_SLOT_CONFIG_DEFAULT() {\
     .gpio_cd = SDMMC_SLOT_NO_CD, \
     .gpio_wp = SDMMC_SLOT_NO_WP, \
-    .width   = 4, \
+    .width   = SDMMC_SLOT_WIDTH_DEFAULT, \
 }
 
 /**
index 54c7997b0ae2df3c6163e07112ad62e6d8eb2ee9..706a1e3fefed6740ab2260daf485403e4d7f9564 100644 (file)
@@ -299,22 +299,26 @@ esp_err_t sdmmc_host_init_slot(int slot, const sdmmc_slot_config_t* slot_config)
     }
     int gpio_cd = slot_config->gpio_cd;
     int gpio_wp = slot_config->gpio_wp;
+    uint8_t slot_width = slot_config->width;
 
     // Configure pins
     const sdmmc_slot_info_t* pslot = &s_slot_info[slot];
 
-    if (slot_config->width > pslot->width) {
+    if (slot_width == SDMMC_SLOT_WIDTH_DEFAULT) {
+        slot_width = pslot->width;
+    }
+    else if (slot_width > pslot->width) {
         return ESP_ERR_INVALID_ARG;
     }
 
     configure_pin(pslot->clk);
     configure_pin(pslot->cmd);
     configure_pin(pslot->d0);
-    if (slot_config->width >= 4) {
+    if (slot_width >= 4) {
         configure_pin(pslot->d1);
         configure_pin(pslot->d2);
         configure_pin(pslot->d3);
-        if (slot_config->width == 8) {
+        if (slot_width == 8) {
             configure_pin(pslot->d4);
             configure_pin(pslot->d5);
             configure_pin(pslot->d6);
index fe2e5c27f88473341c1979ed79adb521c6961309..4ea2f62606a88dd8816af66c297cbf3b0edfd36d 100644 (file)
@@ -79,6 +79,7 @@ Of all the funtions listed below, only ``sdmmc_host_init``, ``sdmmc_host_init_sl
 .. doxygendefine:: SDMMC_HOST_SLOT_0
 .. doxygendefine:: SDMMC_HOST_SLOT_1
 .. doxygendefine:: SDMMC_HOST_DEFAULT
+.. doxygendefine:: SDMMC_SLOT_WIDTH_DEFAULT
 
 .. doxygenfunction:: sdmmc_host_init_slot