From: chenxing Date: Thu, 14 Jun 2012 07:02:46 +0000 (+0800) Subject: rk30:sdk: dvfs add interface "struct regulator* dvfs_get_regulator(char *regulator_na... X-Git-Tag: firefly_0821_release~9094 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=d63284ad16777b0cb943d9a34499ce92323396dc;p=firefly-linux-kernel-4.4.55.git rk30:sdk: dvfs add interface "struct regulator* dvfs_get_regulator(char *regulator_name)" to get dvfs regulator by regulator name --- diff --git a/arch/arm/mach-rk30/dvfs.c b/arch/arm/mach-rk30/dvfs.c index 40ef00fcd436..38932a63ca0f 100644 --- a/arch/arm/mach-rk30/dvfs.c +++ b/arch/arm/mach-rk30/dvfs.c @@ -64,6 +64,17 @@ static void dump_dbg_map(void); #define PD_ON 1 #define PD_OFF 0 +struct regulator* dvfs_get_regulator(char *regulator_name) +{ + struct vd_node *vd; + list_for_each_entry(vd, &rk_dvfs_tree, node) { + if (strcmp(regulator_name, vd->regulator_name) == 0) { + return vd->regulator; + } + } + return NULL; +} + int is_support_dvfs(struct clk_node *dvfs_info) { return (dvfs_info->vd && dvfs_info->vd->vd_dvfs_target && dvfs_info->enable_dvfs); diff --git a/arch/arm/mach-rk30/include/mach/dvfs.h b/arch/arm/mach-rk30/include/mach/dvfs.h index bfc646edac77..adfa7de4b362 100755 --- a/arch/arm/mach-rk30/include/mach/dvfs.h +++ b/arch/arm/mach-rk30/include/mach/dvfs.h @@ -15,6 +15,8 @@ #ifndef _RK30_DVFS_H_ #define _RK30_DVFS_H_ +#include + typedef int (*vd_dvfs_target_callback)(struct clk *clk, unsigned long rate); typedef int (*dvfs_set_rate_callback)(struct clk *clk, unsigned long rate); @@ -145,6 +147,8 @@ struct cpufreq_frequency_table *dvfs_get_freq_volt_table(struct clk *clk); int dvfs_set_freq_volt_table(struct clk *clk, struct cpufreq_frequency_table *table); int dvfs_set_depend_table(struct clk *clk, char *vd_name, struct cpufreq_frequency_table *table); int dvfs_set_arm_logic_volt(struct dvfs_arm_table *dvfs_cpu_logic_table, struct cpufreq_frequency_table *cpu_dvfs_table, struct cpufreq_frequency_table *dep_cpu2core_table); +struct regulator* dvfs_get_regulator(char *regulator_name); + #else static inline int rk30_dvfs_init(void) { return 0; } static inline int is_support_dvfs(struct clk_node *dvfs_info) { return 0; } @@ -156,7 +160,7 @@ static inline struct cpufreq_frequency_table *dvfs_get_freq_volt_table(struct cl static inline int dvfs_set_freq_volt_table(struct clk *clk, struct cpufreq_frequency_table *table) { return 0; } static inline int dvfs_set_depend_table(struct clk *clk, char *vd_name, struct cpufreq_frequency_table *table) {return 0;} static inline int dvfs_set_arm_logic_volt(struct dvfs_arm_table *dvfs_cpu_logic_table, struct cpufreq_frequency_table *cpu_dvfs_table, struct cpufreq_frequency_table *dep_cpu2core_table){ return 0; } - +static inline struct regulator* dvfs_get_regulator(char *regulator_name){ return NULL; } #endif #endif