mirror of
https://github.com/espressif/esp-idf.git
synced 2025-08-19 15:59:08 +00:00
feat(esp_hw_support): use pvt to auto control digital ldo and rtc ldo for esp32p4
This commit is contained in:

committed by
Xiao Xufeng

parent
b971cf5bf9
commit
08eea3c058
@@ -235,6 +235,10 @@ config SOC_PMU_SUPPORTED
|
||||
bool
|
||||
default y
|
||||
|
||||
config SOC_PMU_PVT_SUPPORTED
|
||||
bool
|
||||
default y
|
||||
|
||||
config SOC_DCDC_SUPPORTED
|
||||
bool
|
||||
default y
|
||||
|
@@ -75,6 +75,7 @@
|
||||
#define SOC_VBAT_SUPPORTED 1
|
||||
#define SOC_APM_SUPPORTED 1
|
||||
#define SOC_PMU_SUPPORTED 1
|
||||
#define SOC_PMU_PVT_SUPPORTED 1
|
||||
#define SOC_DCDC_SUPPORTED 1
|
||||
#define SOC_PAU_SUPPORTED 1 //TODO: IDF-7531
|
||||
#define SOC_LP_TIMER_SUPPORTED 1
|
||||
|
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2023-2024 Espressif Systems (Shanghai) CO LTD
|
||||
* SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
@@ -95,6 +95,16 @@ extern const regdma_entries_config_t systimer_regs_retention[SYSTIMER_RETENTION_
|
||||
#define PAU_RETENTION_LINK_LEN 1
|
||||
extern const regdma_entries_config_t pau_regs_retention[PAU_RETENTION_LINK_LEN];
|
||||
|
||||
/**
|
||||
* @brief Provide access to pvt configuration registers retention
|
||||
* context definition.
|
||||
*
|
||||
* This is an internal function of the sleep retention driver, and is not
|
||||
* useful for external use.
|
||||
*/
|
||||
#define PVT_RETENTION_LINK_LEN 1
|
||||
extern const regdma_entries_config_t pvt_regs_retention[PVT_RETENTION_LINK_LEN];
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD
|
||||
* SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
@@ -363,10 +363,12 @@ extern "C" {
|
||||
/** PVT_DBIAS_CMD0 : R/W; bitpos: [16:0]; default: 0;
|
||||
* needs field desc
|
||||
*/
|
||||
#define PVT_DBIAS_CMD0 0x0001FFFFU
|
||||
#define PVT_DBIAS_CMD0_M (PVT_DBIAS_CMD0_V << PVT_DBIAS_CMD0_S)
|
||||
#define PVT_DBIAS_CMD0_V 0x0001FFFFU
|
||||
#define PVT_DBIAS_CMD0_S 0
|
||||
#define PVT_DBIAS_CMD0_OFFSET_FLAG 1
|
||||
#define PVT_DBIAS_CMD0_OFFSET_FLAG_S 16
|
||||
#define PVT_DBIAS_CMD0_OFFSET_VALUE 0x1F
|
||||
#define PVT_DBIAS_CMD0_OFFSET_VALUE_S 11
|
||||
#define PVT_DBIAS_CMD0_PVT 0x7FF
|
||||
#define PVT_DBIAS_CMD0_PVT_S 0
|
||||
|
||||
/** PVT_DBIAS_CMD1_REG register
|
||||
* needs desc
|
||||
@@ -375,10 +377,12 @@ extern "C" {
|
||||
/** PVT_DBIAS_CMD1 : R/W; bitpos: [16:0]; default: 0;
|
||||
* needs field desc
|
||||
*/
|
||||
#define PVT_DBIAS_CMD1 0x0001FFFFU
|
||||
#define PVT_DBIAS_CMD1_M (PVT_DBIAS_CMD1_V << PVT_DBIAS_CMD1_S)
|
||||
#define PVT_DBIAS_CMD1_V 0x0001FFFFU
|
||||
#define PVT_DBIAS_CMD1_S 0
|
||||
#define PVT_DBIAS_CMD1_OFFSET_FLAG 1
|
||||
#define PVT_DBIAS_CMD1_OFFSET_FLAG_S 16
|
||||
#define PVT_DBIAS_CMD1_OFFSET_VALUE 0x1F
|
||||
#define PVT_DBIAS_CMD1_OFFSET_VALUE_S 11
|
||||
#define PVT_DBIAS_CMD1_PVT 0x7FF
|
||||
#define PVT_DBIAS_CMD1_PVT_S 0
|
||||
|
||||
/** PVT_DBIAS_CMD2_REG register
|
||||
* needs desc
|
||||
@@ -387,10 +391,12 @@ extern "C" {
|
||||
/** PVT_DBIAS_CMD2 : R/W; bitpos: [16:0]; default: 0;
|
||||
* needs field desc
|
||||
*/
|
||||
#define PVT_DBIAS_CMD2 0x0001FFFFU
|
||||
#define PVT_DBIAS_CMD2_M (PVT_DBIAS_CMD2_V << PVT_DBIAS_CMD2_S)
|
||||
#define PVT_DBIAS_CMD2_V 0x0001FFFFU
|
||||
#define PVT_DBIAS_CMD2_S 0
|
||||
#define PVT_DBIAS_CMD2_OFFSET_FLAG 1
|
||||
#define PVT_DBIAS_CMD2_OFFSET_FLAG_S 16
|
||||
#define PVT_DBIAS_CMD2_OFFSET_VALUE 0x1F
|
||||
#define PVT_DBIAS_CMD2_OFFSET_VALUE_S 11
|
||||
#define PVT_DBIAS_CMD2_PVT 0x7FF
|
||||
#define PVT_DBIAS_CMD2_PVT_S 0
|
||||
|
||||
/** PVT_DBIAS_CMD3_REG register
|
||||
* needs desc
|
||||
|
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD
|
||||
* SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
@@ -347,10 +347,18 @@ typedef union {
|
||||
*/
|
||||
typedef union {
|
||||
struct {
|
||||
/** dbias_cmd0 : R/W; bitpos: [16:0]; default: 0;
|
||||
/** dbias_cmd0 : R/W; bitpos: [10:0]; default: 0;
|
||||
* needs field desc
|
||||
*/
|
||||
uint32_t dbias_cmd0:17;
|
||||
uint32_t dbias_cmd0_pvt:11;
|
||||
/** dbias_cmd0_offset_value : R/W; bitpos: [15:11]; default: 0;
|
||||
* needs field desc
|
||||
*/
|
||||
uint32_t dbias_cmd0_offset_value:5;
|
||||
/** dbias_cmd0_offset_flag : R/W; bitpos: [16]; default: 0;
|
||||
* needs field desc
|
||||
*/
|
||||
uint32_t dbias_cmd0_offset_flag:1;
|
||||
uint32_t reserved_17:15;
|
||||
};
|
||||
uint32_t val;
|
||||
@@ -361,10 +369,18 @@ typedef union {
|
||||
*/
|
||||
typedef union {
|
||||
struct {
|
||||
/** dbias_cmd1 : R/W; bitpos: [16:0]; default: 0;
|
||||
/** dbias_cmd1 : R/W; bitpos: [10:0]; default: 0;
|
||||
* needs field desc
|
||||
*/
|
||||
uint32_t dbias_cmd1:17;
|
||||
uint32_t dbias_cmd1_pvt:11;
|
||||
/** dbias_cmd1_offset_value : R/W; bitpos: [15:11]; default: 0;
|
||||
* needs field desc
|
||||
*/
|
||||
uint32_t dbias_cmd1_offset_value:5;
|
||||
/** dbias_cmd1_offset_flag : R/W; bitpos: [16]; default: 0;
|
||||
* needs field desc
|
||||
*/
|
||||
uint32_t dbias_cmd1_offset_flag:1;
|
||||
uint32_t reserved_17:15;
|
||||
};
|
||||
uint32_t val;
|
||||
@@ -375,10 +391,18 @@ typedef union {
|
||||
*/
|
||||
typedef union {
|
||||
struct {
|
||||
/** dbias_cmd2 : R/W; bitpos: [16:0]; default: 0;
|
||||
/** dbias_cmd2 : R/W; bitpos: [10:0]; default: 0;
|
||||
* needs field desc
|
||||
*/
|
||||
uint32_t dbias_cmd2:17;
|
||||
uint32_t dbias_cmd2_pvt:11;
|
||||
/** dbias_cmd2_offset_value : R/W; bitpos: [15:11]; default: 0;
|
||||
* needs field desc
|
||||
*/
|
||||
uint32_t dbias_cmd2_offset_value:5;
|
||||
/** dbias_cmd2_offset_flag : R/W; bitpos: [16]; default: 0;
|
||||
* needs field desc
|
||||
*/
|
||||
uint32_t dbias_cmd2_offset_flag:1;
|
||||
uint32_t reserved_17:15;
|
||||
};
|
||||
uint32_t val;
|
||||
|
@@ -23,6 +23,7 @@
|
||||
#include "soc/timer_periph.h"
|
||||
#include "soc/uart_reg.h"
|
||||
#include "esp32p4/rom/cache.h"
|
||||
#include "soc/pvt_reg.h"
|
||||
|
||||
/* Interrupt Matrix Registers Context */
|
||||
#define N_REGS_INTR_CORE0() (((INTERRUPT_CORE0_CLOCK_GATE_REG - DR_REG_INTERRUPT_CORE0_BASE) / 4) + 1)
|
||||
@@ -202,3 +203,10 @@ const regdma_entries_config_t pau_regs_retention[] = {
|
||||
[0] = { .config = REGDMA_LINK_CONTINUOUS_INIT(REGDMA_PAU_LINK(0x0), DR_REG_PAU_BASE, DR_REG_PAU_BASE, N_REGS_PAU(), 0, 0), .owner = ENTRY(0) }, /* pau */
|
||||
};
|
||||
_Static_assert(ARRAY_SIZE(pau_regs_retention) == HP_SYSTEM_RETENTION_LINK_LEN, "Inconsistent PAU retention link length definitions");
|
||||
|
||||
/* PVT Registers Context */
|
||||
#define N_REGS_PVT (((PVT_COMB_PD_SITE3_UNIT0_VT1_CONF2_REG - DR_REG_PVT_MONITOR_BASE) / 4) + 1)
|
||||
const regdma_entries_config_t pvt_regs_retention[] = {
|
||||
[0] = { .config = REGDMA_LINK_CONTINUOUS_INIT(REGDMA_PVT_LINK(0x00), DR_REG_PVT_MONITOR_BASE, DR_REG_PVT_MONITOR_BASE, N_REGS_PVT, 0, 0), .owner = ENTRY(0) | ENTRY(2) },
|
||||
};
|
||||
_Static_assert(ARRAY_SIZE(pvt_regs_retention) == PVT_RETENTION_LINK_LEN, "Inconsistent PVT retention link length definitions");
|
||||
|
Reference in New Issue
Block a user