const char *name;
const char *regulator_name;
int volt_time_flag;// =0 ,is no initing checking ,>0 ,support,<0 not support
- int mode_flag;// =0 ,is no initing checking ,>0 ,support,<0 not support
+ int mode_flag;// =0 ,is no initing checking ,>0 ,support,<0 not support;
int cur_volt;
int volt_set_flag;
int suspend_volt;
dvfs_set_rate_callback vd_dvfs_target;
unsigned int n_voltages;
int volt_list[VD_VOL_LIST_CNT];
+ unsigned int regu_mode;
};
/**
struct vd_node *vd;
struct list_head node;
struct list_head clk_list;
+ unsigned int regu_mode;
};
/**
int freq_limit_en; //sign if use limit frequency
unsigned int min_rate; //limit min frequency
unsigned int max_rate; //limit max frequency
- unsigned int last_set_rate;
+ unsigned long last_set_rate;
+ unsigned int temp_channel;
+ unsigned long temp_limit_rate;
struct clk *clk;
struct pd_node *pd;
struct vd_node *vd;
struct list_head node;
struct notifier_block *dvfs_nb;
struct cpufreq_frequency_table *dvfs_table;
- struct cpufreq_frequency_table *condition_freq_table;
+ struct cpufreq_frequency_table *per_temp_limit_table;
+ struct cpufreq_frequency_table *nor_temp_limit_table;
clk_set_rate_callback clk_dvfs_target;
+ struct cpufreq_frequency_table *regu_mode_table;
+ int regu_mode_en;
+ unsigned int regu_mode;
};
struct dvfs_node *clk_get_dvfs_node(char *clk_name);
void clk_put_dvfs_node(struct dvfs_node *clk_dvfs_node);
unsigned long dvfs_clk_get_rate(struct dvfs_node *clk_dvfs_node);
+unsigned long dvfs_clk_get_last_set_rate(struct dvfs_node *clk_dvfs_node);
+unsigned long dvfs_clk_round_rate(struct dvfs_node *clk_dvfs_node, unsigned long rate);
int dvfs_clk_set_rate(struct dvfs_node *clk_dvfs_node, unsigned long rate);
int dvfs_clk_enable(struct dvfs_node *clk_dvfs_node);
void dvfs_clk_disable(struct dvfs_node *clk_dvfs_node);
int dvfs_set_freq_volt_table(struct dvfs_node *clk_dvfs_node, struct cpufreq_frequency_table *table);
int dvfs_clk_register_set_rate_callback(struct dvfs_node *clk_dvfs_node, clk_set_rate_callback clk_dvfs_target);
int dvfs_clk_enable_limit(struct dvfs_node *clk_dvfs_node, unsigned int min_rate, unsigned max_rate);
+int dvfs_clk_get_limit(struct dvfs_node *clk_dvfs_node, unsigned int *min_rate, unsigned int *max_rate) ;
int dvfs_clk_disable_limit(struct dvfs_node *clk_dvfs_node);
int clk_disable_dvfs(struct dvfs_node *clk_dvfs_node);
int clk_enable_dvfs(struct dvfs_node *clk_dvfs_node);
+void dvfs_disable_temp_limit(void);
struct cpufreq_frequency_table *dvfs_get_freq_volt_table(struct dvfs_node *clk_dvfs_node);
int rk_regist_vd(struct vd_node *vd);
int rk_regist_pd(struct pd_node *pd);
static inline struct dvfs_node *clk_get_dvfs_node(char *clk_name){ return NULL; };
static inline void clk_put_dvfs_node(struct dvfs_node *clk_dvfs_node){ return; };
static inline unsigned long dvfs_clk_get_rate(struct dvfs_node *clk_dvfs_node){ return 0; };
+static inline unsigned long dvfs_clk_get_last_set_rate(struct dvfs_node *clk_dvfs_node){ return 0; };
+static inline unsigned long dvfs_clk_round_rate(struct dvfs_node *clk_dvfs_node, unsigned long rate) { return 0; };
static inline int dvfs_clk_set_rate(struct dvfs_node *clk_dvfs_node, unsigned long rate){ return 0; };
static inline int dvfs_clk_enable(struct dvfs_node *clk_dvfs_node){ return 0; };
static inline void dvfs_clk_disable(struct dvfs_node *clk_dvfs_node){ };
static inline int dvfs_set_freq_volt_table(struct dvfs_node *clk_dvfs_node, struct cpufreq_frequency_table *table){ return 0; };
static inline int dvfs_clk_register_set_rate_callback(struct dvfs_node *clk_dvfs_node, clk_set_rate_callback clk_dvfs_target){ return 0; };
static inline int dvfs_clk_enable_limit(struct dvfs_node *clk_dvfs_node, unsigned int min_rate, unsigned max_rate){ return 0; };
+static inline int dvfs_clk_get_limit(struct dvfs_node *clk_dvfs_node, unsigned int *min_rate, unsigned int *max_rate) { return 0; };
static inline int dvfs_clk_disable_limit(struct dvfs_node *clk_dvfs_node){ return 0; };
static inline int clk_disable_dvfs(struct dvfs_node *clk_dvfs_node){ return 0; };
static inline int clk_enable_dvfs(struct dvfs_node *clk_dvfs_node){ return 0; };
+static inline void dvfs_disable_temp_limit(void) {};
static inline struct cpufreq_frequency_table *dvfs_get_freq_volt_table(struct dvfs_node *clk_dvfs_node){ return NULL; };
static inline int rk_regist_vd(struct vd_node *vd){ return 0; };
static inline int rk_regist_pd(struct pd_node *pd){ return 0; };