mirror of
https://github.com/espressif/esp-idf.git
synced 2026-10-02 11:10:54 +03:00
Merge branch 'feat/support_pcnt_on_h21' into 'master'
feat(pcnt): support pcnt on esp32h21 Closes IDF-11566, IDF-11567, IDF-9907, IDF-9739, IDF-8469, and IDF-9768 See merge request espressif/esp-idf!40889
This commit is contained in:
@@ -1175,10 +1175,6 @@ config SOC_PCNT_SUPPORT_CLEAR_SIGNAL
|
||||
bool
|
||||
default y
|
||||
|
||||
config SOC_PCNT_SUPPORT_SLEEP_RETENTION
|
||||
bool
|
||||
default y
|
||||
|
||||
config SOC_RMT_GROUPS
|
||||
int
|
||||
default 1
|
||||
|
||||
@@ -59,7 +59,6 @@ typedef enum periph_retention_module {
|
||||
SLEEP_RETENTION_MODULE_LEDC = 33,
|
||||
SLEEP_RETENTION_MODULE_MCPWM0 = 34,
|
||||
SLEEP_RETENTION_MODULE_MCPWM1 = 35,
|
||||
SLEEP_RETENTION_MODULE_PCNT0 = 36,
|
||||
|
||||
SLEEP_RETENTION_MODULE_MAX = SOC_PM_RETENTION_MODULE_NUM - 1
|
||||
} periph_retention_module_t;
|
||||
@@ -101,7 +100,6 @@ typedef enum periph_retention_module {
|
||||
: ((m) == SLEEP_RETENTION_MODULE_LEDC) ? true \
|
||||
: ((m) == SLEEP_RETENTION_MODULE_MCPWM0) ? true \
|
||||
: ((m) == SLEEP_RETENTION_MODULE_MCPWM1) ? true \
|
||||
: ((m) == SLEEP_RETENTION_MODULE_PCNT0) ? true \
|
||||
: false)
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
@@ -427,7 +427,6 @@
|
||||
#define SOC_PCNT_THRES_POINT_PER_UNIT 2
|
||||
#define SOC_PCNT_SUPPORT_RUNTIME_THRES_UPDATE 1
|
||||
#define SOC_PCNT_SUPPORT_CLEAR_SIGNAL 1 /*!< Support clear signal input */
|
||||
#define SOC_PCNT_SUPPORT_SLEEP_RETENTION 1 /*!< The sleep retention feature can help back up PCNT registers before sleep */
|
||||
|
||||
/*--------------------------- RMT CAPS ---------------------------------------*/
|
||||
#define SOC_RMT_GROUPS 1U /*!< One RMT group */
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2020-2024 Espressif Systems (Shanghai) CO LTD
|
||||
* SPDX-FileCopyrightText: 2020-2025 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
@@ -70,35 +70,3 @@ const pcnt_signal_conn_t pcnt_periph_signals = {
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
#if SOC_PCNT_SUPPORT_SLEEP_RETENTION
|
||||
/**
|
||||
* PCNT Registers to be saved during sleep retention
|
||||
* - Configuration registers, e.g.: PCNT_CTRL_REG, PCNT_U0_CONF0_REG, PCNT_U0_CONF1_REG, PCNT_U0_CONF2_REG, PCNT_U1_CONF0_REG...
|
||||
* - Step Configuration registers, e.g.: PCNT_U0_CHANGE_CONF_REG, PCNT_U1_CHANGE_CONF_REG, PCNT_U2_CHANGE_CONF_REG, PCNT_U3_CHANGE_CONF_REG
|
||||
* - Interrupt enable registers, e.g.: PCNT_INT_ENA_REG
|
||||
*/
|
||||
#define PCNT_RETENTION_REGS_CNT 18
|
||||
#define PCNT_RETENTION_REGS_BASE (DR_REG_PCNT_BASE + 0x0)
|
||||
static const uint32_t pcnt_regs_map[4] = {0x1f040fff, 0x0, 0x0, 0x0};
|
||||
static const regdma_entries_config_t pcnt_regs_retention[] = {
|
||||
// backup stage: save configuration registers
|
||||
// restore stage: restore the configuration registers
|
||||
[0] = {
|
||||
.config = REGDMA_LINK_ADDR_MAP_INIT(REGDMA_PCNT_LINK(0x00), \
|
||||
PCNT_RETENTION_REGS_BASE, PCNT_RETENTION_REGS_BASE, \
|
||||
PCNT_RETENTION_REGS_CNT, 0, 0, \
|
||||
pcnt_regs_map[0], pcnt_regs_map[1], \
|
||||
pcnt_regs_map[2], pcnt_regs_map[3]), \
|
||||
.owner = ENTRY(0)
|
||||
}, \
|
||||
};
|
||||
|
||||
const pcnt_reg_retention_info_t pcnt_reg_retention_info[SOC_PCNT_GROUPS] = {
|
||||
[0] = {
|
||||
.regdma_entry_array = pcnt_regs_retention,
|
||||
.array_size = ARRAY_SIZE(pcnt_regs_retention),
|
||||
.retention_module = SLEEP_RETENTION_MODULE_PCNT0
|
||||
},
|
||||
};
|
||||
#endif // SOC_PCNT_SUPPORT_SLEEP_RETENTION
|
||||
|
||||
Reference in New Issue
Block a user