#ifndef __PWRCAL_DFS_H__ #define __PWRCAL_DFS_H__ #include "pwrcal-env.h" #include "pwrcal-clk.h" #include "pwrcal-vclk.h" #define TRANS_HIGH 0 #define TRANS_LOW 1 #define TRANS_DIFF 2 #define TRANS_FORCE 3 #define get_value(_table, _level, _member) \ (*(_table->rate_table + (_table->num_of_members * _level + _member))) extern unsigned int dfs_set_rate_switch(unsigned int rate_from, unsigned int rate_to, struct dfs_table *table); extern int dfs_enable_switch(struct dfs_table *table); extern int dfs_disable_switch(struct dfs_table *table); extern int dfs_use_switch(struct dfs_table *table); extern int dfs_not_use_switch(struct dfs_table *table); extern int dfs_trans_div(int lv_from, int lv_to, struct dfs_table *table, int opt); extern int dfs_trans_pll(int lv_from, int lv_to, struct dfs_table *table, int opt); extern int dfs_trans_mux(int lv_from, int lv_to, struct dfs_table *table, int opt); extern int dfs_trans_gate(int lv_from, int lv_to, struct dfs_table *table, int opt); extern int dfs_get_lv(unsigned int rate, struct dfs_table *table); extern int dfs_get_rate_table(struct dfs_table *dfs, unsigned long *table); extern int dfs_get_target_rate_table(struct dfs_table *dfs, unsigned int mux, unsigned int div, unsigned long *table); extern int dfs_set_rate(struct vclk *vclk, unsigned long to); extern unsigned long dfs_get_rate(struct vclk *vclk); extern int dfs_enable(struct vclk *vclk); extern int dfs_disable(struct vclk *vclk); extern int dfs_is_enabled(struct vclk *vclk); extern unsigned long dfs_get_max_freq(struct vclk *vclk); extern unsigned long dfs_get_min_freq(struct vclk *vclk); extern void dfs_init(void); extern void dfs_dram_init(void); #endif