Documentation Error: ESP32-C6 TRM v1.2 Section 17.5 HP_SYSTEM_SEC_DPA_CONF_REG
Posted: Sat May 09, 2026 10:58 am
Hello,
I believe there are multiple contradictory statements about register HP_SYSTEM_SEC_DPA_CONF_REG in the ESP32-C6 Technical Reference Manual V1.2.
Firstly, in section 17.2, the documentation states:
"HP_SYSTEM_SEC_DPA_LEVEL Configures whether or not to enable anti-DPA attack. Valid only
when HP_SYSTEM_SEC_DPA_CFG_SEL is 0."
While the description of HP_SYSTEM_SEC_DPA_CFG_SEL in the same register states:
"HP_SYSTEM_SEC_DPA_CFG_SEL Configures whether to select HP_SYSTEM_SEC_DPA_LEVEL or
EFUSE_SEC_DPA_LEVEL (from eFuse) to control DPA level.
0: Select EFUSE_SEC_DPA_LEVEL
1: Select HP_SYSTEM_SEC_DPA_LEVEL
(R/W)"
Secondly, section 8.2.4 in the part about the CRYPTO_CLK, states:
"If HP_SYSTEM_SEC_DPA_CFG_SEL is set to 1, the security
level is determined by configuration of EFUSE_SEC_DPA_LEVEL, otherwise, by the value of
HP_SYSTEM_SEC_DPA_LEVEL."
Then in section 17.3.2 Anti-DPA Attack Security Control, it states:
"By default, the field HP_SYSTEM_SEC_DPA_CFG_SEL in register HP_SYSTEM_SEC_DPA_CONF_REG is 0. In
this case, the security-level is decided by the eFuse field EFUSE_SEC_DPA_LEVEL. If the field
HP_SYSTEM_SEC_DPA_CFG_SEL is set to 1, the security-level is decided by
HP_SYSTEM_SEC_DPA_CFG_LEVEL in register HP_SYSTEM_SEC_DPA_CONF_REG."
So the two pairs of statements directly contradict each other on which value of CFG_SEL selects which source.
I tried to verify what is correct by checking the register at runtime and changing the "ESP_CRYPTO_DPA_PROTECTION_AT_STARTUP" in menuconfig. From what i could gather the correct statement is:
0: Select EFUSE_SEC_DPA_LEVEL
1: Select HP_SYSTEM_SEC_DPA_LEVEL
Meaning that the statement in section 17.3.2 and the description of HP_SYSTEM_SEC_DPA_CFG_SEL in section 17.2 are correct, while the statement at 8.2.4 and the description of HP_SYSTEM_SEC_DPA_CONF_REG in section 17.2 are wrong.
Tested on: ESP32-C6 (QFN40) revision v0.2, TRM Version 1.2.
Please let me know if i posted this in the wrong place, or if i done goofed up
.
I believe there are multiple contradictory statements about register HP_SYSTEM_SEC_DPA_CONF_REG in the ESP32-C6 Technical Reference Manual V1.2.
Firstly, in section 17.2, the documentation states:
"HP_SYSTEM_SEC_DPA_LEVEL Configures whether or not to enable anti-DPA attack. Valid only
when HP_SYSTEM_SEC_DPA_CFG_SEL is 0."
While the description of HP_SYSTEM_SEC_DPA_CFG_SEL in the same register states:
"HP_SYSTEM_SEC_DPA_CFG_SEL Configures whether to select HP_SYSTEM_SEC_DPA_LEVEL or
EFUSE_SEC_DPA_LEVEL (from eFuse) to control DPA level.
0: Select EFUSE_SEC_DPA_LEVEL
1: Select HP_SYSTEM_SEC_DPA_LEVEL
(R/W)"
Secondly, section 8.2.4 in the part about the CRYPTO_CLK, states:
"If HP_SYSTEM_SEC_DPA_CFG_SEL is set to 1, the security
level is determined by configuration of EFUSE_SEC_DPA_LEVEL, otherwise, by the value of
HP_SYSTEM_SEC_DPA_LEVEL."
Then in section 17.3.2 Anti-DPA Attack Security Control, it states:
"By default, the field HP_SYSTEM_SEC_DPA_CFG_SEL in register HP_SYSTEM_SEC_DPA_CONF_REG is 0. In
this case, the security-level is decided by the eFuse field EFUSE_SEC_DPA_LEVEL. If the field
HP_SYSTEM_SEC_DPA_CFG_SEL is set to 1, the security-level is decided by
HP_SYSTEM_SEC_DPA_CFG_LEVEL in register HP_SYSTEM_SEC_DPA_CONF_REG."
So the two pairs of statements directly contradict each other on which value of CFG_SEL selects which source.
I tried to verify what is correct by checking the register at runtime and changing the "ESP_CRYPTO_DPA_PROTECTION_AT_STARTUP" in menuconfig. From what i could gather the correct statement is:
0: Select EFUSE_SEC_DPA_LEVEL
1: Select HP_SYSTEM_SEC_DPA_LEVEL
Meaning that the statement in section 17.3.2 and the description of HP_SYSTEM_SEC_DPA_CFG_SEL in section 17.2 are correct, while the statement at 8.2.4 and the description of HP_SYSTEM_SEC_DPA_CONF_REG in section 17.2 are wrong.
Tested on: ESP32-C6 (QFN40) revision v0.2, TRM Version 1.2.
Please let me know if i posted this in the wrong place, or if i done goofed up