Hi all,
Since the AM4372's L2 cache is enabled by default, setting of registers is not necessary when L2 cache is used.
Is this correct?
Looking at the following files in the pdk (TI-RTOS SDK) folder, when using the L2 cache, the code sets the PRCM_CM_PER_SPARE 0 _ CLKCTRL register.
However, since there is no entry in TRM for this register, we do not know whether this register setting is necessary to validate the L2 cache.
Is this register setting necessary?
C:\ti\pdk_am437x_1_0_9\packages\ti\starterware\soc\am43xx\am43xx_control.c
int32_t SOCL2SramConfig(uint32_t l2SramFlag)
{
uint32_t ctrlRegVal = 0;
int32_t status = S_PASS;
/* TODO: Check of correct clock input to L2SRAM - CONTROL_MPUSS_CTRL. */
if(L2_CONFIG_AS_SRAM ==l2SramFlag)
{
PL310Disable();
}
if((L2_CONFIG_AS_CACHE == l2SramFlag) || (L2_CONFIG_AS_SRAM ==l2SramFlag))
{
/* PRCM_CM_PER_SPARE0_CLKCTRL 0x4e8U
SOC_CM_PER_REG 0x44df8800U
L4LS_GCLK
PRCM_CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_GCLK_MASK */
/* TODO: Use PRCM module enable */
HW_WR_REG32((SOC_CM_PER_REG + PRCM_CM_PER_SPARE0_CLKCTRL),
PRCM_CM_PER_SPARE0_CLKCTRL_MODULEMODE_ENABLE);
while((HW_RD_REG32(SOC_CM_PER_REG + PRCM_CM_PER_SPARE0_CLKCTRL) &
PRCM_CM_PER_SPARE1_CLKCTRL_IDLEST_MASK) !=
PRCM_CM_PER_SPARE1_CLKCTRL_IDLEST_FUNC);
ctrlRegVal = HW_RD_REG32(SOC_CONTROL_MODULE_REG + CTRL_SEC_SPARE0);
ctrlRegVal = ((ctrlRegVal & ~CTRL_SEC_SPARE0_PIUSEL2SRAM_MASK) |
((l2SramFlag << CTRL_SEC_SPARE0_PIUSEL2SRAM_SHIFT) &
CTRL_SEC_SPARE0_PIUSEL2SRAM_MASK));
HW_WR_REG32(SOC_CONTROL_MODULE_REG + CTRL_SEC_SPARE0, ctrlRegVal);
}
else
{
status = E_INVALID_PARAM;
}
return status;
}
Best regards,
Sasaki