Skip to content

Commit

Permalink
Merge branch 'bugfix/return_error_when_fail_detect_oct_psram' into 'm…
Browse files Browse the repository at this point in the history
…aster'

esp_psram: return error when fail to detect an octal psram

See merge request espressif/esp-idf!21033
  • Loading branch information
Icarus113 committed Nov 17, 2022
2 parents 454fc40 + bf6ca71 commit cee025c
Show file tree
Hide file tree
Showing 5 changed files with 14 additions and 8 deletions.
4 changes: 2 additions & 2 deletions components/esp_psram/esp32/esp_psram_impl_quad.c
Expand Up @@ -948,8 +948,8 @@ esp_err_t IRAM_ATTR esp_psram_impl_enable(psram_vaddr_mode_t vaddrmode) //psra
*/
psram_read_id(spi_num, &s_psram_id);
if (!PSRAM_IS_VALID(s_psram_id)) {
ESP_EARLY_LOGE(TAG, "PSRAM ID read error: 0x%08x", (uint32_t)s_psram_id);
return ESP_FAIL;
ESP_EARLY_LOGE(TAG, "PSRAM ID read error: 0x%08x, PSRAM chip not found or not supported", (uint32_t)s_psram_id);
return ESP_ERR_NOT_SUPPORTED;
}
}

Expand Down
4 changes: 2 additions & 2 deletions components/esp_psram/esp32s2/esp_psram_impl_quad.c
Expand Up @@ -420,8 +420,8 @@ esp_err_t IRAM_ATTR esp_psram_impl_enable(psram_vaddr_mode_t vaddrmode) //psra
*/
psram_read_id(spi_num, &s_psram_id);
if (!PSRAM_IS_VALID(s_psram_id)) {
ESP_EARLY_LOGE(TAG, "PSRAM ID read error: 0x%08x", s_psram_id);
return ESP_FAIL;
ESP_EARLY_LOGE(TAG, "PSRAM ID read error: 0x%08x, PSRAM chip not found or not supported", (uint32_t)s_psram_id);
return ESP_ERR_NOT_SUPPORTED;
}
}

Expand Down
5 changes: 5 additions & 0 deletions components/esp_psram/esp32s3/esp_psram_impl_octal.c
Expand Up @@ -30,6 +30,7 @@
#define OCT_PSRAM_RD_DUMMY_BITLEN (2*(10-1))
#define OCT_PSRAM_WR_DUMMY_BITLEN (2*(5-1))
#define OCT_PSRAM_CS1_IO SPI_CS1_GPIO_NUM
#define OCT_PSRAM_VENDOR_ID 0xD

#define OCT_PSRAM_CS_SETUP_TIME 3
#define OCT_PSRAM_CS_HOLD_TIME 3
Expand Down Expand Up @@ -310,6 +311,10 @@ esp_err_t esp_psram_impl_enable(psram_vaddr_mode_t vaddrmode)
s_init_psram_mode_reg(1, &mode_reg);
//Print PSRAM info
s_get_psram_mode_reg(1, &mode_reg);
if (mode_reg.mr1.vendor_id != OCT_PSRAM_VENDOR_ID) {
ESP_EARLY_LOGE(TAG, "PSRAM ID read error: 0x%08x, PSRAM chip not found or not supported, or wrong PSRAM line mode", mode_reg.mr1.vendor_id);
return ESP_ERR_NOT_SUPPORTED;
}
s_print_psram_info(&mode_reg);
s_psram_size = mode_reg.mr2.density == 0x1 ? PSRAM_SIZE_4MB :
mode_reg.mr2.density == 0X3 ? PSRAM_SIZE_8MB :
Expand Down
4 changes: 2 additions & 2 deletions components/esp_psram/esp32s3/esp_psram_impl_quad.c
Expand Up @@ -315,8 +315,8 @@ esp_err_t esp_psram_impl_enable(psram_vaddr_mode_t vaddrmode) //psram init
*/
psram_read_id(SPI1_NUM, &s_psram_id);
if (!PSRAM_IS_VALID(s_psram_id)) {
ESP_EARLY_LOGE(TAG, "PSRAM ID read error: 0x%08x", s_psram_id);
return ESP_FAIL;
ESP_EARLY_LOGE(TAG, "PSRAM ID read error: 0x%08x, PSRAM chip not found or not supported, or wrong PSRAM line mode", (uint32_t)s_psram_id);
return ESP_ERR_NOT_SUPPORTED;
}
}

Expand Down
5 changes: 3 additions & 2 deletions components/esp_psram/esp_psram_impl.h
Expand Up @@ -52,8 +52,9 @@ esp_err_t esp_psram_impl_get_available_size(uint32_t *out_size_bytes);
*
* @param vaddrmode Mode the psram cache works in.
* @return
* - ESP_OK: On success,
* - ESP_ERR_INVALID_STATE: On esp32, when VSPI peripheral is needed but cannot be claimed.
* - ESP_OK: On success
* - ESP_ERR_NOT_SUPPORTED: PSRAM ID / vendor ID check fail
* - ESP_ERR_INVALID_STATE: On esp32, when VSPI peripheral is needed but cannot be claimed
*/
esp_err_t esp_psram_impl_enable(psram_vaddr_mode_t vaddrmode);

Expand Down

0 comments on commit cee025c

Please sign in to comment.