mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
bugfix: malloc retention buffer with MALLOC_CAP_RETENTION caps
This commit is contained in:
parent
2313663c2e
commit
edb78e8196
@ -37,8 +37,6 @@ static DRAM_ATTR __attribute__((unused)) sleep_retention_t s_retention;
|
|||||||
|
|
||||||
#if SOC_PM_SUPPORT_TAGMEM_PD
|
#if SOC_PM_SUPPORT_TAGMEM_PD
|
||||||
|
|
||||||
#define TAGMEM_PD_MEM_TYPE_CAPS (MALLOC_CAP_DMA | MALLOC_CAP_DEFAULT)
|
|
||||||
|
|
||||||
#if CONFIG_PM_POWER_DOWN_TAGMEM_IN_LIGHT_SLEEP
|
#if CONFIG_PM_POWER_DOWN_TAGMEM_IN_LIGHT_SLEEP
|
||||||
static int cache_tagmem_retention_setup(uint32_t code_seg_vaddr, uint32_t code_seg_size, uint32_t data_seg_vaddr, uint32_t data_seg_size)
|
static int cache_tagmem_retention_setup(uint32_t code_seg_vaddr, uint32_t code_seg_size, uint32_t data_seg_vaddr, uint32_t data_seg_size)
|
||||||
{
|
{
|
||||||
@ -123,7 +121,7 @@ static esp_err_t esp_sleep_tagmem_pd_low_init(bool enable)
|
|||||||
int tagmem_sz = cache_tagmem_retention_setup(code_start, code_size, data_start, data_size);
|
int tagmem_sz = cache_tagmem_retention_setup(code_start, code_size, data_start, data_size);
|
||||||
void *buf = heap_caps_aligned_alloc(SOC_RTC_CNTL_TAGMEM_PD_DMA_ADDR_ALIGN,
|
void *buf = heap_caps_aligned_alloc(SOC_RTC_CNTL_TAGMEM_PD_DMA_ADDR_ALIGN,
|
||||||
tagmem_sz + RTC_HAL_DMA_LINK_NODE_SIZE,
|
tagmem_sz + RTC_HAL_DMA_LINK_NODE_SIZE,
|
||||||
TAGMEM_PD_MEM_TYPE_CAPS);
|
MALLOC_CAP_RETENTION);
|
||||||
if (buf) {
|
if (buf) {
|
||||||
memset(buf, 0, tagmem_sz + RTC_HAL_DMA_LINK_NODE_SIZE);
|
memset(buf, 0, tagmem_sz + RTC_HAL_DMA_LINK_NODE_SIZE);
|
||||||
s_retention.retent.tagmem.link_addr = rtc_cntl_hal_dma_link_init(buf,
|
s_retention.retent.tagmem.link_addr = rtc_cntl_hal_dma_link_init(buf,
|
||||||
@ -157,19 +155,13 @@ static esp_err_t esp_sleep_tagmem_pd_low_init(bool enable)
|
|||||||
|
|
||||||
#if SOC_PM_SUPPORT_CPU_PD
|
#if SOC_PM_SUPPORT_CPU_PD
|
||||||
|
|
||||||
#if CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32H2
|
|
||||||
#define CPU_PD_MEM_TYPE_CAPS (MALLOC_CAP_RETENTION | MALLOC_CAP_DEFAULT)
|
|
||||||
#else
|
|
||||||
#define CPU_PD_MEM_TYPE_CAPS (MALLOC_CAP_DMA | MALLOC_CAP_DEFAULT)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
esp_err_t esp_sleep_cpu_pd_low_init(bool enable)
|
esp_err_t esp_sleep_cpu_pd_low_init(bool enable)
|
||||||
{
|
{
|
||||||
if (enable) {
|
if (enable) {
|
||||||
if (s_retention.retent.cpu_pd_mem == NULL) {
|
if (s_retention.retent.cpu_pd_mem == NULL) {
|
||||||
void *buf = heap_caps_aligned_alloc(SOC_RTC_CNTL_CPU_PD_DMA_ADDR_ALIGN,
|
void *buf = heap_caps_aligned_alloc(SOC_RTC_CNTL_CPU_PD_DMA_ADDR_ALIGN,
|
||||||
SOC_RTC_CNTL_CPU_PD_RETENTION_MEM_SIZE + RTC_HAL_DMA_LINK_NODE_SIZE,
|
SOC_RTC_CNTL_CPU_PD_RETENTION_MEM_SIZE + RTC_HAL_DMA_LINK_NODE_SIZE,
|
||||||
CPU_PD_MEM_TYPE_CAPS);
|
MALLOC_CAP_RETENTION);
|
||||||
if (buf) {
|
if (buf) {
|
||||||
memset(buf, 0, SOC_RTC_CNTL_CPU_PD_RETENTION_MEM_SIZE + RTC_HAL_DMA_LINK_NODE_SIZE);
|
memset(buf, 0, SOC_RTC_CNTL_CPU_PD_RETENTION_MEM_SIZE + RTC_HAL_DMA_LINK_NODE_SIZE);
|
||||||
s_retention.retent.cpu_pd_mem = rtc_cntl_hal_dma_link_init(buf,
|
s_retention.retent.cpu_pd_mem = rtc_cntl_hal_dma_link_init(buf,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user