]> granicus.if.org Git - esp-idf/commitdiff
make psram workaround depend on chip revison
authorsuda-morris <362953310@qq.com>
Tue, 17 Sep 2019 02:28:51 +0000 (10:28 +0800)
committersuda-morris <362953310@qq.com>
Thu, 19 Sep 2019 05:20:34 +0000 (13:20 +0800)
Since ESP32 revision 3, the PSRAM workaround is not needed.

components/efuse/src/esp_efuse_fields.c
components/esp32/Kconfig

index 313bbc611773a846220f36d2b3cb7e4d8bed4c8a..8aa9ade461cee7b8bf1413ac6feeac71b2a8753d 100644 (file)
@@ -35,7 +35,7 @@ uint8_t esp_efuse_get_chip_ver(void)
     uint8_t eco_bit0, eco_bit1, eco_bit2;
     esp_efuse_read_field_blob(ESP_EFUSE_CHIP_VER_REV1, &eco_bit0, 1);
     esp_efuse_read_field_blob(ESP_EFUSE_CHIP_VER_REV2, &eco_bit1, 1);
-    eco_bit2 = (REG_READ(APB_CTRL_DATE_REG) & 80000000) >> 31;
+    eco_bit2 = (REG_READ(APB_CTRL_DATE_REG) & 0x80000000) >> 31;
     uint32_t combine_value = (eco_bit2 << 2) | (eco_bit1 << 1) | eco_bit0;
     uint8_t chip_ver = 0;
     switch (combine_value) {
index 5a512f56276ff55db870a007a6085898a56f56c3..e693a5c62eb62e65810937379cd2c11ef2380d6e 100644 (file)
@@ -149,7 +149,7 @@ menu "ESP32-specific"
 
         config SPIRAM_CACHE_WORKAROUND
             bool "Enable workaround for bug in SPI RAM cache for Rev1 ESP32s"
-            depends on SPIRAM_USE_MEMMAP || SPIRAM_USE_CAPS_ALLOC || SPIRAM_USE_MALLOC
+            depends on (SPIRAM_USE_MEMMAP || SPIRAM_USE_CAPS_ALLOC || SPIRAM_USE_MALLOC) && (ESP32_REV_MIN < 3)
             default "y"
             help
                 Revision 1 of the ESP32 has a bug that can cause a write to PSRAM not to take place in some situations
@@ -160,6 +160,8 @@ menu "ESP32-specific"
                 This will also not use any bits of newlib that are located in ROM, opting for a version that is
                 compiled with the workaround and located in flash instead.
 
+                The workaround is not required for ESP32 revision 3 and above.
+
         config SPIRAM_BANKSWITCH_ENABLE
             bool "Enable bank switching for >4MiB external RAM"
             default y