Skip to contentSkip to conversation

omap3: cpufreq: allow default opp table init

PATCH In review Nishanth Menon 2 participants 2 messages May 20, 2010 – May 28, 2010

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 omap3: cpufreq: allow default opp table init

For board files which choose to override the defaults, the existing mechanism will work, for boards that would like to work with defaults, allow init_common_hw to call init_opp_table to initialize if not already initialized. this will allow all omap boards which have opp tables predefined for a silicon to use the same.

Originally reported for overo:
http://marc.info/?t=127265269400004&r=1&w=2

---
NOTE: This makes rest of the current board omap3_pm_init_opp_table calls redundant, but also allows for custom boards to go ahead and customize their own custom OPPs in parallel.

 arch/arm/mach-omap2/cpufreq34xx.c |   11 +++++++++++
 arch/arm/mach-omap2/io.c          |    4 ++++
 2 files changed, 15 insertions(+), 0 deletions(-)
arch/arm/mach-omap2/cpufreq34xx.c +11 -0
index 8747dd6..b9d75cf 100644
@@ -110,6 +110,9 @@ static struct omap_opp_def __initdata omap36xx_dsp_rate_table[] = {
 	OMAP_OPP_DEF(0, 0, 0)
 };
 
+/* Temp variable to allow multiple calls */
+static u8 __initdata omap3_table_init;
+
 int __init omap3_pm_init_opp_table(void)
 {
 	int i, r;
@@ -130,6 +133,14 @@ int __init omap3_pm_init_opp_table(void)
 		OPP_DSP
 	};
 
+	/*
+	 * Allow multiple calls, but initialize only if not already initalized
+	 * even if the previous call failed, coz, no reason we'd succeed again
+	 */
+	if (omap3_table_init)
+		return 0;
+	omap3_table_init = 1;
+
 	omap3_opp_def_list = cpu_is_omap3630() ? omap36xx_opp_def_list :
 				omap34xx_opp_def_list;
 
arch/arm/mach-omap2/io.c +4 -0
index 984bdbf..203c7e8 100644
@@ -47,6 +47,7 @@
 #include "clockdomains.h"
 #include <plat/omap_hwmod.h>
 
+#include "omap3-opp.h"
 /*
  * The machine specific code may provide the extra mapping besides the
  * default mapping provided here.
@@ -307,6 +308,9 @@ static int __init _omap2_init_reprogram_sdrc(void)
 void __init omap2_init_common_hw(struct omap_sdrc_params *sdrc_cs0,
 				 struct omap_sdrc_params *sdrc_cs1)
 {
+	/* initialize the opp table if board file has not done so */
+	omap3_pm_init_opp_table();
+
 	pwrdm_init(powerdomains_omap);
 	clkdm_init(clockdomains_omap, clkdm_autodeps);
 	if (cpu_is_omap242x())
Signature · 1 line
1.6.3.3
#1 lore raw
Quoted 6 lines · Nishanth Menon

For board files which choose to override the defaults, the existing mechanism will work, for boards that would like to work with defaults, allow init_common_hw to call init_opp_table to initialize if not already initialized. this will allow all omap boards which have opp tables predefined for a silicon to use the same.

Quoted 7 lines

Originally reported for overo:
http://marc.info/?t=127265269400004&r=1&w=2

I like this better than having all the board files having to explicitly call this.

Adding it to the pm-cpufreq branch, to be posted after the OPP series (hopefully later today, or Monday.)

Kevin