struct mmdc_settings_info {
u32 size;
void *settings;
+ int freq;
} __aligned(8);
static struct mmdc_settings_info *mmdc_settings_info;
void (*mx6_change_lpddr2_freq_smp)(u32 ddr_freq, struct mmdc_settings_info
mmdc_settings_info->size = mmdc_settings_size;
mmdc_settings_info->settings = iram_mmdc_settings;
+ mmdc_settings_info->freq = curr_ddr_rate;
/* ensure that all Cores are in WFE. */
local_irq_disable();
&wfe_smp_freq_change, wfe_code_size);
#endif
iram_settings_size = (void *)ddr_freq_change_iram_base + wfe_code_size + 0x8;
- iram_mmdc_settings = (void *)iram_settings_size + 0x8;
+ iram_mmdc_settings = (void *)iram_settings_size + sizeof(*mmdc_settings_info);
iram_ddr_freq_chage = (void *)iram_mmdc_settings + (mmdc_settings_size * 8) + 0x8;
mmdc_settings_info = (struct mmdc_settings_info *)iram_settings_size;
set_mmdc_misc_ralat_2_cycles
common_to_lower_equal_100MHz:
+
+ /* if MMDC is not in 400MHz mode, skip double mu count */
+ ldr r5, [r1, #0x8]
+ ldr r6, =400000000
+ cmp r5, r6
+ bne skip_lower_force_measure_ch1
+
/*
* Prior to reducing the DDR frequency (at 528/400 MHz),
* read the Measure unit count bits (MU_UNIT_DEL_NUM)