summaryrefslogtreecommitdiff
path: root/arch/arm/mach-mx6/mx6_mmdc.c
diff options
context:
space:
mode:
authorRanjani Vaidyanathan <ra5478@freescale.com>2012-04-26 17:53:14 -0500
committerRanjani Vaidyanathan <ra5478@freescale.com>2012-05-04 12:07:10 -0500
commit63f88588fe7ebc06039cf7346a653a49d66e532c (patch)
treeb7cb042bf53d950d7178da9533d209e12403859c /arch/arm/mach-mx6/mx6_mmdc.c
parent3a227e2db36aa075eb7534fa5d83ae17011a57dc (diff)
ENGR00181068: MX6 Source IPU_HSP and AXI clocks from 540M PFD.
IPU_HSP clocks should NOT be sourced from MMDC clock since the MMDC clock can be scaled. Move the IPU_HSP clock to be sourced from PLL3_PFD_540M instead. Also don't source AXI_CLK from periph_clk as this domain is scaled between 528MHz, 400MHz and 24MHz. Move AXI_CLK clock to be sourced from PLL3_PFD_540M too. When the system needs to enter low power mode, AXI_CLK is switched from PLL3_PFD_540M to periph_clk. And then switched back when low power mode is exited. The code will print a warning message if PLL3_PFD_540M is relocked to a different frequency when IPU_HSP or axi_clk is sourced from it. Currently remove the support for 400Mhz DDR working point for MX6Q since we can get IPU underruns during the DDR frequency transitions. The DDR freq change code needs to ensure that all bus clocks donot exceed max frequency during the frequency transition. Signed-off-by: Ranjani Vaidyanathan <ra5478@freescale.com>
Diffstat (limited to 'arch/arm/mach-mx6/mx6_mmdc.c')
-rw-r--r--arch/arm/mach-mx6/mx6_mmdc.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/arm/mach-mx6/mx6_mmdc.c b/arch/arm/mach-mx6/mx6_mmdc.c
index 2498f01e0889..c4f232f0e56d 100644
--- a/arch/arm/mach-mx6/mx6_mmdc.c
+++ b/arch/arm/mach-mx6/mx6_mmdc.c
@@ -227,7 +227,6 @@ int update_ddr_freq(int ddr_rate)
/* Set the interrupt to be pending in the GIC. */
reg = 1 << (irq_used[cpu] % 32);
writel_relaxed(reg, gic_dist_base + GIC_DIST_PENDING_SET + (irq_used[cpu] / 32) * 4);
- udelay(10);
}
}
while (cpus_in_wfe != online_cpus)
@@ -343,6 +342,8 @@ int init_mmdc_settings(void)
memcpy(ddr_freq_change_iram_base, mx6_ddr_freq_change, SZ_8K);
mx6_change_ddr_freq = (void *)ddr_freq_change_iram_base;
+ curr_ddr_rate = ddr_normal_rate;
+
for_each_online_cpu(cpu) {
/* Set up a reserved interrupt to get all the active cores into a WFE state
* before changing the DDR frequency.