/* === МОДИФИЦИРОВАННЫЙ КОД === */
bool ddrInRetention = false;
/* Если затребован кастомный режим сна без отключения DDR */
if (sleepMode == DEV_SM_SLEEP_MODE_SUSPEND_NO_DDR)
{
/* Разрешаем Cortex-M7 продолжать беспрепятственный доступ к памяти */
(void) DEV_SM_RdcDdrBlock(false);
/* Удерживаем домен DDRMIX и контроллер памяти во включенном состоянии (ON) */
(void) DEV_SM_PowerStateSet(DEV_SM_PD_DDR, DEV_SM_POWER_STATE_ON);
/* Удерживаем системную шину NOCMIX включенной, чтобы M7 мог читать из DDR */
(void) DEV_SM_PowerStateSet(DEV_SM_PD_NOC, DEV_SM_POWER_STATE_ON);
}
else
{
/* СТАНДАРТНЫЙ РЕЖИМ (Заводская логика полного гашения) */
if (DEV_SM_RdcDdrBlock(true) == SM_ERR_SUCCESS)
{
if (DEV_SM_MemDdrRetentionEnter() == SM_ERR_SUCCESS)
{
ddrInRetention = true;
if (DEV_SM_PowerStateSet(DEV_SM_PD_DDR, DEV_SM_POWER_STATE_OFF)
== SM_ERR_SUCCESS)
{
g_syslog.sysSleepRecord.mixPwrStat &=
(~(1UL << PWR_MIX_SLICE_IDX_DDR));
}
}
}
if (lpmSettingNoc <= sleepMode)
{
if (DEV_SM_PowerStateSet(DEV_SM_PD_NOC, DEV_SM_POWER_STATE_OFF)
== SM_ERR_SUCCESS)
{
g_syslog.sysSleepRecord.mixPwrStat &=
(~(1UL << PWR_MIX_SLICE_IDX_NOC));
}
}
}