Introducing enum for OPP types
PATCH v2 1/1 Introducing enum for OPP types
Using omap_opp * to refer to domain types entails opp implementation into maintaining pointers outside the opp layer.
Since all we need a identifying a specific domain for query/operational purposes, we introduce enum for identifying OPP types instead of using opp layer's internal data structure pointer.
Currently, OMAP3 is the only silicon supporting the OPP layer, hence mpu_opps, l3_opps and dsp_opps are deprecated and replaced with OPP_MPU, OPP_L3 and OPP_DSP respectively.
Signed-off-by Romit Dasgupta <[email protected]>
---
arch/arm/mach-omap2/pm34xx.c | 15 -- arch/arm/mach-omap2/resource34xx.c | 84 ++++++---------- arch/arm/mach-omap2/smartreflex.c | 33 +----- arch/arm/plat-omap/common.c | 6 - arch/arm/plat-omap/cpu-omap.c | 12 +- arch/arm/plat-omap/include/plat/opp.h | 60 +++++------ arch/arm/plat-omap/omap-pm-noop.c | 4 arch/arm/plat-omap/omap-pm-srf.c | 4 arch/arm/plat-omap/opp.c | 124 ++++++++++++++++-------- 9 files changed, 172 insertions(+), 170 deletions(-)
arch/arm/mach-omap2/pm34xx.c +4 -11
@@ -1347,7 +1347,6 @@ static void __init configure_vc(void)void __init omap3_pm_init_opp_table (void ) { -int i;struct omap_opp_def **omap3_opp_def_list;struct omap_opp_def *omap34xx_opp_def_list[] = { omap34xx_mpu_rate_table,
@@ -1359,19 +1358,13 @@ void __init omap3_pm_init_opp_table(void) omap36xx_l3_rate_table, omap36xx_dsp_rate_table }; -struct omap_opp **omap3_rate_tables[] = { - &mpu_opps, - &l3_opps, - &dsp_opps - }; omap3_opp_def_list =cpu_is_omap3630 () ? omap36xx_opp_def_list : omap34xx_opp_def_list; -for (i =0 ; i <ARRAY_SIZE (omap3_rate_tables); i++) { - *omap3_rate_tables[i] =opp_init_list (omap3_opp_def_list[i]); -/* We dont want half configured system at the moment */ -BUG_ON (IS_ERR (omap3_rate_tables[i])); - } + +BUG_ON (opp_init_list (OPP_MPU ,omap3_opp_def_list [0 ])); +BUG_ON (opp_init_list (OPP_L3 ,omap3_opp_def_list [1 ])); +BUG_ON (opp_init_list (OPP_DSP ,omap3_opp_def_list [2 ])); }static int __init omap3_pm_early_init (void )
arch/arm/mach-omap2/resource34xx.c +36 -48
238 lines not on this page · raw message
arch/arm/mach-omap2/smartreflex.c +10 -23
@@ -152,12 +152,11 @@ static u8 get_vdd1_opp(void)struct omap_opp *opp;unsigned long freq; -if (sr1.vdd_opp_clk ==NULL ||IS_ERR (sr1.vdd_opp_clk) || - mpu_opps ==NULL ) +if (sr1.vdd_opp_clk ==NULL ||IS_ERR (sr1.vdd_opp_clk))return 0 ; freq = sr1.vdd_opp_clk->rate; - opp =opp_find_freq_ceil (mpu_opps, &freq); + opp =opp_find_freq_ceil (OPP_MPU , &freq);if (IS_ERR (opp))return 0 ;/*
@@ -176,12 +175,11 @@ static u8 get_vdd2_opp(void)struct omap_opp *opp;unsigned long freq; -if (sr2.vdd_opp_clk ==NULL ||IS_ERR (sr2.vdd_opp_clk) || - l3_opps ==NULL ) +if (sr2.vdd_opp_clk ==NULL ||IS_ERR (sr2.vdd_opp_clk))return 0 ; freq = sr2.vdd_opp_clk->rate; - opp =opp_find_freq_ceil (l3_opps, &freq); + opp =opp_find_freq_ceil (OPP_L3 , &freq);if (IS_ERR (opp))return 0 ;
@@ -310,7 +308,7 @@ static void sr_configure_vp(int srid)if (!target_opp_no) target_opp_no =VDD1_OPP3 ; - opp =opp_find_by_opp_id (mpu_opps, target_opp_no); + opp =opp_find_by_opp_id (OPP_MPU , target_opp_no);BUG_ON (!opp);/* XXX ugh */ uvdc =opp_get_voltage (opp);
@@ -359,7 +357,7 @@ static void sr_configure_vp(int srid)if (!target_opp_no) target_opp_no =VDD2_OPP3 ; - opp =opp_find_by_opp_id (l3_opps, target_opp_no); + opp =opp_find_by_opp_id (OPP_L3 , target_opp_no);BUG_ON (!opp);/* XXX ugh */ uvdc =opp_get_voltage (opp);
@@ -472,7 +470,7 @@ static int sr_reset_voltage(int srid)return 1 ; } - opp =opp_find_by_opp_id (mpu_opps, target_opp_no); + opp =opp_find_by_opp_id (OPP_MPU , target_opp_no);if (!opp)return 1 ;
@@ -490,7 +488,7 @@ static int sr_reset_voltage(int srid)return 1 ; } - opp =opp_find_by_opp_id (l3_opps, target_opp_no); + opp =opp_find_by_opp_id (OPP_L3 , target_opp_no);if (!opp)return 1 ;
@@ -546,11 +544,6 @@ static int sr_enable(struct omap_sr *sr, u32 target_opp_no)int uvdc;char vsel; -if (!(mpu_opps && l3_opps)) { -pr_notice ("VSEL values not found\n" ); -return false; - } - sr->req_opp_no = target_opp_no;if (sr->srid ==SR1 ) {
@@ -575,7 +568,7 @@ static int sr_enable(struct omap_sr *sr, u32 target_opp_no)break ; } - opp =opp_find_by_opp_id (mpu_opps, target_opp_no); + opp =opp_find_by_opp_id (OPP_MPU , target_opp_no);if (!opp)return false; }else {
@@ -594,7 +587,7 @@ static int sr_enable(struct omap_sr *sr, u32 target_opp_no)break ; } - opp =opp_find_by_opp_id (l3_opps, target_opp_no); + opp =opp_find_by_opp_id (OPP_L3 , target_opp_no);if (!opp)return false; }
@@ -1010,12 +1003,6 @@ static int __init omap3_sr_init(void)int ret =0 ;u8 RdReg; -/* Exit if OPP tables are not defined */ -if (!(mpu_opps && l3_opps)) { -pr_err ("SR: OPP rate tables not defined for platform, not enabling SmartReflex\n" ); -return -ENODEV ; - } -/* Enable SR on T2 */ ret =twl_i2c_read_u8 (TWL4030_MODULE_PM_RECEIVER , &RdReg,R_DCDC_GLOBAL_CFG );
arch/arm/plat-omap/common.c +0 -6
@@ -52,12 +52,6 @@ int omap_board_config_size;/* used by omap-smp.c and board-4430sdp.c */ void __iomem *gic_cpu_base_addr; -#ifdef CONFIG_OMAP_PM_NONE -struct omap_opp *mpu_opps; -struct omap_opp *dsp_opps; -struct omap_opp *l3_opps; -#endif -static const void *get_config (u16 tag,size_t len,int skip,size_t *len_out) {struct omap_board_config_kernel *kinfo =NULL ;
arch/arm/plat-omap/cpu-omap.c +6 -6
@@ -87,6 +87,9 @@ static int omap_target(struct cpufreq_policy *policy,#ifdef CONFIG_ARCH_OMAP1 struct cpufreq_freqs freqs;#endif +#if defined(CONFIG_ARCH_OMAP3 ) && !defined(CONFIG_OMAP_PM_NONE ) +unsigned long freq = target_freq *1000 ; +#endif int ret =0 ;/* Ensure desired rate is within allowed range. Some govenors
@@ -111,11 +114,8 @@ static int omap_target(struct cpufreq_policy *policy, ret =clk_set_rate (mpu_clk, freqs.new *1000 );cpufreq_notify_transition (&freqs,CPUFREQ_POSTCHANGE );#elif defined(CONFIG_ARCH_OMAP3 ) && !defined(CONFIG_OMAP_PM_NONE ) -if (mpu_opps) { -unsigned long freq = target_freq *1000 ; -if (!IS_ERR (opp_find_freq_ceil (mpu_opps, &freq))) -omap_pm_cpu_set_freq (freq); - } +if (opp_find_freq_ceil (OPP_MPU , &freq)) +omap_pm_cpu_set_freq (freq);#endif return ret; }
@@ -136,7 +136,7 @@ static int __init omap_cpu_init(struct cpufreq_policy *policy)if (!cpu_is_omap34xx ())clk_init_cpufreq_table (&freq_table);else -opp_init_cpufreq_table (mpu_opps, &freq_table); +opp_init_cpufreq_table (OPP_MPU , &freq_table);if (freq_table) { result =cpufreq_frequency_table_cpuinfo (policy, freq_table);
arch/arm/plat-omap/include/plat/opp.h +30 -30
142 lines not on this page · raw message
arch/arm/plat-omap/omap-pm-noop.c +0 -4
@@ -26,10 +26,6 @@#include <plat/powerdomain.h> -struct omap_opp *dsp_opps; -struct omap_opp *mpu_opps; -struct omap_opp *l3_opps; -/* * Device-driver-originated constraints (via board-*.c files) */
arch/arm/plat-omap/omap-pm-srf.c +0 -4
@@ -25,10 +25,6 @@#include <plat/resource.h> #include <plat/omap_device.h> -struct omap_opp *dsp_opps; -struct omap_opp *mpu_opps; -struct omap_opp *l3_opps; -#define LAT_RES_POSTAMBLE "_latency"#define MAX_LATENCY_RES_NAME 30
arch/arm/plat-omap/opp.c +86 -38
287 lines not on this page · raw message