|
@@ -3,11 +3,12 @@
|
|
|
*
|
|
|
* SDRAM timing related functions for OMAP2xxx
|
|
|
*
|
|
|
- * Copyright (C) 2005 Texas Instruments Inc.
|
|
|
- * Richard Woodruff <r-woodruff2@ti.com>
|
|
|
+ * Copyright (C) 2005, 2008 Texas Instruments Inc.
|
|
|
+ * Copyright (C) 2005, 2008 Nokia Corporation
|
|
|
*
|
|
|
- * Copyright (C) 2005 Nokia Corporation
|
|
|
* Tony Lindgren <tony@atomide.com>
|
|
|
+ * Paul Walmsley
|
|
|
+ * Richard Woodruff <r-woodruff2@ti.com>
|
|
|
*
|
|
|
* This program is free software; you can redistribute it and/or modify
|
|
|
* it under the terms of the GNU General Public License version 2 as
|
|
@@ -39,23 +40,20 @@
|
|
|
#define M_LOCK 1
|
|
|
|
|
|
|
|
|
-void __iomem *omap2_sdrc_base;
|
|
|
-void __iomem *omap2_sms_base;
|
|
|
-
|
|
|
static struct memory_timings mem_timings;
|
|
|
static u32 curr_perf_level = CORE_CLK_SRC_DPLL_X2;
|
|
|
|
|
|
-u32 omap2_memory_get_slow_dll_ctrl(void)
|
|
|
+static u32 omap2xxx_sdrc_get_slow_dll_ctrl(void)
|
|
|
{
|
|
|
return mem_timings.slow_dll_ctrl;
|
|
|
}
|
|
|
|
|
|
-u32 omap2_memory_get_fast_dll_ctrl(void)
|
|
|
+static u32 omap2xxx_sdrc_get_fast_dll_ctrl(void)
|
|
|
{
|
|
|
return mem_timings.fast_dll_ctrl;
|
|
|
}
|
|
|
|
|
|
-u32 omap2_memory_get_type(void)
|
|
|
+static u32 omap2xxx_sdrc_get_type(void)
|
|
|
{
|
|
|
return mem_timings.m_type;
|
|
|
}
|
|
@@ -64,7 +62,7 @@ u32 omap2_memory_get_type(void)
|
|
|
* Check the DLL lock state, and return tue if running in unlock mode.
|
|
|
* This is needed to compensate for the shifted DLL value in unlock mode.
|
|
|
*/
|
|
|
-u32 omap2_dll_force_needed(void)
|
|
|
+u32 omap2xxx_sdrc_dll_is_unlocked(void)
|
|
|
{
|
|
|
/* dlla and dllb are a set */
|
|
|
u32 dll_state = sdrc_read_reg(SDRC_DLLA_CTRL);
|
|
@@ -79,8 +77,10 @@ u32 omap2_dll_force_needed(void)
|
|
|
* 'level' is the value to store to CM_CLKSEL2_PLL.CORE_CLK_SRC.
|
|
|
* Practical values are CORE_CLK_SRC_DPLL (for CORE_CLK = DPLL_CLK) or
|
|
|
* CORE_CLK_SRC_DPLL_X2 (for CORE_CLK = * DPLL_CLK * 2)
|
|
|
+ *
|
|
|
+ * Used by the clock framework during CORE DPLL changes
|
|
|
*/
|
|
|
-u32 omap2_reprogram_sdrc(u32 level, u32 force)
|
|
|
+u32 omap2xxx_sdrc_reprogram(u32 level, u32 force)
|
|
|
{
|
|
|
u32 dll_ctrl, m_type;
|
|
|
u32 prev = curr_perf_level;
|
|
@@ -90,13 +90,13 @@ u32 omap2_reprogram_sdrc(u32 level, u32 force)
|
|
|
return prev;
|
|
|
|
|
|
if (level == CORE_CLK_SRC_DPLL)
|
|
|
- dll_ctrl = omap2_memory_get_slow_dll_ctrl();
|
|
|
+ dll_ctrl = omap2xxx_sdrc_get_slow_dll_ctrl();
|
|
|
else if (level == CORE_CLK_SRC_DPLL_X2)
|
|
|
- dll_ctrl = omap2_memory_get_fast_dll_ctrl();
|
|
|
+ dll_ctrl = omap2xxx_sdrc_get_fast_dll_ctrl();
|
|
|
else
|
|
|
return prev;
|
|
|
|
|
|
- m_type = omap2_memory_get_type();
|
|
|
+ m_type = omap2xxx_sdrc_get_type();
|
|
|
|
|
|
local_irq_save(flags);
|
|
|
__raw_writel(0xffff, OMAP24XX_PRCM_VOLTSETUP);
|
|
@@ -107,18 +107,8 @@ u32 omap2_reprogram_sdrc(u32 level, u32 force)
|
|
|
return prev;
|
|
|
}
|
|
|
|
|
|
-#if !defined(CONFIG_ARCH_OMAP2)
|
|
|
-void omap2_sram_ddr_init(u32 *slow_dll_ctrl, u32 fast_dll_ctrl,
|
|
|
- u32 base_cs, u32 force_unlock)
|
|
|
-{
|
|
|
-}
|
|
|
-void omap2_sram_reprogram_sdrc(u32 perf_level, u32 dll_val,
|
|
|
- u32 mem_type)
|
|
|
-{
|
|
|
-}
|
|
|
-#endif
|
|
|
-
|
|
|
-void omap2_init_memory_params(u32 force_lock_to_unlock_mode)
|
|
|
+/* Used by the clock framework during CORE DPLL changes */
|
|
|
+void omap2xxx_sdrc_init_params(u32 force_lock_to_unlock_mode)
|
|
|
{
|
|
|
unsigned long dll_cnt;
|
|
|
u32 fast_dll = 0;
|
|
@@ -171,28 +161,3 @@ void omap2_init_memory_params(u32 force_lock_to_unlock_mode)
|
|
|
/* 90 degree phase for anything below 133Mhz + disable DLL filter */
|
|
|
mem_timings.slow_dll_ctrl |= ((1 << 1) | (3 << 8));
|
|
|
}
|
|
|
-
|
|
|
-void __init omap2_set_globals_memory(struct omap_globals *omap2_globals)
|
|
|
-{
|
|
|
- omap2_sdrc_base = omap2_globals->sdrc;
|
|
|
- omap2_sms_base = omap2_globals->sms;
|
|
|
-}
|
|
|
-
|
|
|
-/* turn on smart idle modes for SDRAM scheduler and controller */
|
|
|
-void __init omap2_init_memory(void)
|
|
|
-{
|
|
|
- u32 l;
|
|
|
-
|
|
|
- if (!cpu_is_omap2420())
|
|
|
- return;
|
|
|
-
|
|
|
- l = sms_read_reg(SMS_SYSCONFIG);
|
|
|
- l &= ~(0x3 << 3);
|
|
|
- l |= (0x2 << 3);
|
|
|
- sms_write_reg(l, SMS_SYSCONFIG);
|
|
|
-
|
|
|
- l = sdrc_read_reg(SDRC_SYSCONFIG);
|
|
|
- l &= ~(0x3 << 3);
|
|
|
- l |= (0x2 << 3);
|
|
|
- sdrc_write_reg(l, SDRC_SYSCONFIG);
|
|
|
-}
|