fix(ana_cmpr): correct swapped POS/NEG interrupt masks on ESP32-H21

Align H21 pos/neg cross interrupt bits with other targets and skip the
driver on the Linux simulator.
This commit is contained in:
morris
2026-09-18 14:10:30 +08:00
parent 4de303f898
commit dabfc7fc4b
5 changed files with 11 additions and 14 deletions

View File

@@ -1,4 +1,7 @@
idf_build_get_property(target IDF_TARGET) idf_build_get_property(target IDF_TARGET)
if(${target} STREQUAL "linux")
return() # This component is not supported by the POSIX/Linux simulator
endif()
set(srcs) set(srcs)
@@ -10,17 +13,11 @@ if(CONFIG_SOC_ANA_CMPR_SUPPORTED)
endif() endif()
endif() endif()
if(${target} STREQUAL "linux") set(priv_requires esp_pm esp_driver_gpio)
set(priv_requires "")
set(requires "")
else()
set(priv_requires esp_pm esp_driver_gpio)
set(requires esp_hal_ana_cmpr)
endif()
idf_component_register(SRCS ${srcs} idf_component_register(SRCS ${srcs}
INCLUDE_DIRS "include" INCLUDE_DIRS "include"
PRIV_REQUIRES "${priv_requires}" PRIV_REQUIRES ${priv_requires}
REQUIRES "${requires}" REQUIRES esp_hal_ana_cmpr
LDFRAGMENTS "linker.lf" LDFRAGMENTS "linker.lf"
) )

View File

@@ -37,8 +37,8 @@ extern "C" {
#define ANALOG_CMPR_LL_GET_HW(unit) (&ANALOG_CMPR[unit]) #define ANALOG_CMPR_LL_GET_HW(unit) (&ANALOG_CMPR[unit])
#define ANALOG_CMPR_LL_NEG_CROSS_INTR_MASK(unit, src_chan) 0x02
#define ANALOG_CMPR_LL_POS_CROSS_INTR_MASK(unit, src_chan) 0x01 #define ANALOG_CMPR_LL_POS_CROSS_INTR_MASK(unit, src_chan) 0x01
#define ANALOG_CMPR_LL_NEG_CROSS_INTR_MASK(unit, src_chan) 0x02
#define ANALOG_CMPR_LL_ANY_CROSS_INTR_MASK(unit, src_chan) (ANALOG_CMPR_LL_NEG_CROSS_INTR_MASK(unit, src_chan) | ANALOG_CMPR_LL_POS_CROSS_INTR_MASK(unit, src_chan)) #define ANALOG_CMPR_LL_ANY_CROSS_INTR_MASK(unit, src_chan) (ANALOG_CMPR_LL_NEG_CROSS_INTR_MASK(unit, src_chan) | ANALOG_CMPR_LL_POS_CROSS_INTR_MASK(unit, src_chan))
#define ANALOG_CMPR_LL_ALL_INTR_MASK(unit) 0x07 #define ANALOG_CMPR_LL_ALL_INTR_MASK(unit) 0x07

View File

@@ -37,8 +37,8 @@ extern "C" {
#define ANALOG_CMPR_LL_GET_HW(unit) (&ANALOG_CMPR[unit]) #define ANALOG_CMPR_LL_GET_HW(unit) (&ANALOG_CMPR[unit])
#define ANALOG_CMPR_LL_NEG_CROSS_INTR_MASK(unit, src_chan) 0x02
#define ANALOG_CMPR_LL_POS_CROSS_INTR_MASK(unit, src_chan) 0x01 #define ANALOG_CMPR_LL_POS_CROSS_INTR_MASK(unit, src_chan) 0x01
#define ANALOG_CMPR_LL_NEG_CROSS_INTR_MASK(unit, src_chan) 0x02
#define ANALOG_CMPR_LL_ANY_CROSS_INTR_MASK(unit, src_chan) (ANALOG_CMPR_LL_NEG_CROSS_INTR_MASK(unit, src_chan) | ANALOG_CMPR_LL_POS_CROSS_INTR_MASK(unit, src_chan)) #define ANALOG_CMPR_LL_ANY_CROSS_INTR_MASK(unit, src_chan) (ANALOG_CMPR_LL_NEG_CROSS_INTR_MASK(unit, src_chan) | ANALOG_CMPR_LL_POS_CROSS_INTR_MASK(unit, src_chan))
#define ANALOG_CMPR_LL_ALL_INTR_MASK(unit) 0x07 #define ANALOG_CMPR_LL_ALL_INTR_MASK(unit) 0x07

View File

@@ -36,8 +36,8 @@ extern "C" {
#define ANALOG_CMPR_LL_GET_HW(unit) (&ANALOG_CMPR[unit]) #define ANALOG_CMPR_LL_GET_HW(unit) (&ANALOG_CMPR[unit])
#define ANALOG_CMPR_LL_NEG_CROSS_INTR_MASK(unit, src_chan) 0x01 #define ANALOG_CMPR_LL_POS_CROSS_INTR_MASK(unit, src_chan) 0x01
#define ANALOG_CMPR_LL_POS_CROSS_INTR_MASK(unit, src_chan) 0x02 #define ANALOG_CMPR_LL_NEG_CROSS_INTR_MASK(unit, src_chan) 0x02
#define ANALOG_CMPR_LL_ANY_CROSS_INTR_MASK(unit, src_chan) (ANALOG_CMPR_LL_NEG_CROSS_INTR_MASK(unit, src_chan) | ANALOG_CMPR_LL_POS_CROSS_INTR_MASK(unit, src_chan)) #define ANALOG_CMPR_LL_ANY_CROSS_INTR_MASK(unit, src_chan) (ANALOG_CMPR_LL_NEG_CROSS_INTR_MASK(unit, src_chan) | ANALOG_CMPR_LL_POS_CROSS_INTR_MASK(unit, src_chan))
#define ANALOG_CMPR_LL_ALL_INTR_MASK(unit) 0x07 #define ANALOG_CMPR_LL_ALL_INTR_MASK(unit) 0x07

View File

@@ -38,8 +38,8 @@ extern "C" {
#define ANALOG_CMPR_LL_GET_HW(unit) (&ANALOG_CMPR[unit]) #define ANALOG_CMPR_LL_GET_HW(unit) (&ANALOG_CMPR[unit])
#define ANALOG_CMPR_LL_GET_UNIT(hw) ((hw) == (&ANALOG_CMPR[0]) ? 0 : 1) #define ANALOG_CMPR_LL_GET_UNIT(hw) ((hw) == (&ANALOG_CMPR[0]) ? 0 : 1)
#define ANALOG_CMPR_LL_NEG_CROSS_INTR_MASK(unit, src_chan) (1UL << ((unit) * 3 + 1))
#define ANALOG_CMPR_LL_POS_CROSS_INTR_MASK(unit, src_chan) (1UL << ((unit) * 3 + 0)) #define ANALOG_CMPR_LL_POS_CROSS_INTR_MASK(unit, src_chan) (1UL << ((unit) * 3 + 0))
#define ANALOG_CMPR_LL_NEG_CROSS_INTR_MASK(unit, src_chan) (1UL << ((unit) * 3 + 1))
#define ANALOG_CMPR_LL_ANY_CROSS_INTR_MASK(unit, src_chan) (ANALOG_CMPR_LL_NEG_CROSS_INTR_MASK(unit, src_chan) | ANALOG_CMPR_LL_POS_CROSS_INTR_MASK(unit, src_chan)) #define ANALOG_CMPR_LL_ANY_CROSS_INTR_MASK(unit, src_chan) (ANALOG_CMPR_LL_NEG_CROSS_INTR_MASK(unit, src_chan) | ANALOG_CMPR_LL_POS_CROSS_INTR_MASK(unit, src_chan))
#define ANALOG_CMPR_LL_ALL_INTR_MASK(unit) (0x07 << ((unit) * 3)) #define ANALOG_CMPR_LL_ALL_INTR_MASK(unit) (0x07 << ((unit) * 3))