SPRUJ17H March 2022 – October 2024 AM2631 , AM2631-Q1 , AM2632 , AM2632-Q1 , AM2634 , AM2634-Q1
All Control Module MMR have a protection mechanism which prevents spurious writes from changing register values. LOCK0_KICK0 and LOCK0_KICK1 registers are used for this purpose. The sequence to unlock these MMR is as follows:
The sequence to lock the MMR is as follows:
If the above sequence for locking the IOMUX is not followed, an AHB_WRITE_ERROR interrupt will occur (if enabled).
For example, to unlock Control Module MSS_CTRL the sequence is as below:
Any writes to locked memory region will result in assertion of the MMR_ACCESS_ERR_WR event by the respective control modules. This assertion can be enabled or disabled by writing the appropriate value to <Control Module>.INTR_ENABLE.KICK_ERR_EN field.
The table below shows the values that must be written to the LOCK0_KICK0 and LOCK0_KICK1 registers to unlock the various Control modules' MMR.
Protected Register | LockKick Register | Unlock Value |
---|---|---|
TOP_CTRL | LOCK0_KICK0 | 0x01234567 |
LOCK0_KICK1 | 0xFEDCBA8 | |
MSS_CTRL | LOCK0_KICK0 | 0x01234567 |
LOCK0_KICK1 | 0xFEDCBA8 | |
CONTROLSS_CTRL | LOCK0_KICK0 | 0x01234567 |
LOCK0_KICK1 | 0xFEDCBA8 | |
TOP_RCM | LOCK0_KICK0 | 0x01234567 |
LOCK0_KICK1 | 0xFEDCBA8 | |
MSS_RCM | LOCK0_KICK0 | 0x01234567 |
LOCK0_KICK1 | 0xFEDCBA8 | |
IOMUX | LOCK0_KICK0 | 0x83E70B13 |
LOCK0_KICK1 | 0x95A4F1E0 |
The kick protection registers described in this section are an exception and are not write protected by the protection mechanism.