rk30/rk2928: move dvfs.h to plat-rk
author黄涛 <huangtao@rock-chips.com>
Tue, 11 Sep 2012 06:05:03 +0000 (14:05 +0800)
committer黄涛 <huangtao@rock-chips.com>
Tue, 11 Sep 2012 06:05:10 +0000 (14:05 +0800)
arch/arm/mach-rk2928/include/mach/dvfs.h
arch/arm/mach-rk30/include/mach/dvfs.h
arch/arm/plat-rk/include/plat/dvfs.h [new file with mode: 0644]

index 59ec37d4704b9b829cf49d8771a14fb0a2e19057..5d6254dd145743b497c75450a09a60cc6daf84a1 100644 (file)
@@ -1,183 +1 @@
-/* arch/arm/mach-rk30/rk30_dvfs.h\r
- *\r
- * Copyright (C) 2012 ROCKCHIP, Inc.\r
- *\r
- * This software is licensed under the terms of the GNU General Public\r
- * License version 2, as published by the Free Software Foundation, and\r
- * may be copied, distributed, and modified under those terms.\r
- *\r
- * This program is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
- * GNU General Public License for more details.\r
- *\r
- */\r
-#ifndef _RK30_DVFS_H_\r
-#define _RK30_DVFS_H_\r
-\r
-#include <mach/clock.h>\r
-\r
-typedef int (*vd_dvfs_target_callback)(struct clk *clk, unsigned long rate);\r
-\r
-typedef int (*dvfs_set_rate_callback)(struct clk *clk, unsigned long rate);\r
-\r
-typedef int (*clk_dvfs_target_callback)(struct clk *clk, unsigned long rate,\r
-                                        dvfs_set_rate_callback set_rate);\r
-\r
-/**\r
- * struct vd_node:     To Store All Voltage Domains' info\r
- * @name:              Voltage Domain's Name\r
- * @regulator_name:    Voltage domain's regulator name\r
- * @cur_volt:          Voltage Domain's Current Voltage\r
- * @regulator:         Voltage Domain's regulator point\r
- * @node:              Point of he Voltage Domain List Node\r
- * @pd_list:           Head of Power Domain List Belongs to This Voltage Domain\r
- * @req_volt_list:     The list of clocks requests\r
- * @dvfs_mutex:                Lock\r
- * @vd_dvfs_target:    Callback function       \r
- */\r
-\r
-struct vd_node {\r
-       char                    *name;\r
-       char                    *regulator_name;\r
-       int                     cur_volt;\r
-       int                     volt_set_flag;\r
-       struct regulator        *regulator;\r
-       struct list_head        node;\r
-       struct list_head        pd_list;\r
-       struct list_head        req_volt_list;\r
-       //struct mutex          dvfs_mutex;\r
-       vd_dvfs_target_callback vd_dvfs_target;\r
-};\r
-\r
-/**\r
- * struct pd_node:     To Store All Power Domains' info\r
- * @name:              Power Domain's Name\r
- * @cur_volt:          Power Domain's Current Voltage\r
- * @pd_status:         Power Domain's status\r
- * @vd:                        Voltage Domain the power domain belongs to\r
- * @pd_clk:            Look power domain as a clock\r
- * @node:              List node to Voltage Domain\r
- * @clk_list:          Head of Power Domain's Clocks List\r
- */\r
-struct pd_node {\r
-       char                    *name;\r
-       int                     cur_volt;\r
-       unsigned char           pd_status;\r
-       struct vd_node          *vd;\r
-       //struct clk            *pd_clk;\r
-       struct list_head        node;\r
-       struct list_head        clk_list;\r
-};\r
-\r
-struct pd_node_lookup {\r
-       struct pd_node          *pd;\r
-};\r
-\r
-struct clk_list{\r
-       struct clk_node         *dvfs_clk;\r
-       struct list_head        node;\r
-};\r
-\r
-struct pds_list {\r
-       struct clk_list         clk_list;\r
-       struct pd_node          *pd;\r
-};\r
-\r
-struct depend_list {\r
-       int                     req_volt;\r
-       struct clk_node         *dvfs_clk;\r
-       struct vd_node          *dep_vd;\r
-       struct list_head        node2clk;\r
-       struct list_head        node2vd;\r
-       struct cpufreq_frequency_table  *dep_table;\r
-};\r
-\r
-struct depend_lookup {\r
-       char                    *clk_name;\r
-       struct clk_node         *dvfs_clk;\r
-       struct vd_node          *dep_vd;\r
-       struct depend_list      dep_list;\r
-       struct cpufreq_frequency_table  *dep_table;\r
-};\r
-\r
-/**\r
- * struct clk_node:    To Store All dvfs clocks' info\r
- * @name:              Dvfs clock's Name\r
- * @set_freq:          Dvfs clock's Current Frequency\r
- * @set_volt:          Dvfs clock's Current Voltage\r
- * @enable_dvfs:       Sign if DVFS clock enable\r
- * @clk:               System clk's point\r
- * @pds:               Power Domains dvfs clock belongs to\r
- * @vd:                        Voltage Domains dvfs clock belongs to\r
- * @depend_list:       Dvfs Clock depend list\r
- * @dvfs_nb:           Notify list\r
- * @dvfs_table:                Frequency and voltage table for dvfs\r
- * @clk_dvfs_target:   Callback function\r
- */\r
-struct clk_node {\r
-       char                    *name;\r
-       int                     set_freq;       //KHZ\r
-       int                     set_volt;       //MV\r
-       int                     enable_dvfs;\r
-       int                     freq_limit_en;  //sign if use limit frequency\r
-       unsigned int            min_rate;       //limit min frequency\r
-       unsigned int            max_rate;       //limit max frequency\r
-       struct clk              *clk;\r
-       struct pds_list         *pds;\r
-       struct vd_node          *vd;\r
-       struct list_head        depend_list;\r
-       struct notifier_block   *dvfs_nb;\r
-       struct cpufreq_frequency_table  *dvfs_table;\r
-       clk_dvfs_target_callback        clk_dvfs_target;\r
-};\r
-\r
-struct dvfs_arm_table {\r
-       unsigned int    frequency; /* kHz - doesn't need to be in ascending\r
-                                   * order */\r
-       unsigned int    cpu_volt;     /* any */\r
-\r
-       unsigned int    logic_volt;\r
-};\r
-\r
-#ifdef CONFIG_DVFS\r
-int rk30_dvfs_init(void);\r
-int is_support_dvfs(struct clk_node *dvfs_info);\r
-int dvfs_set_rate(struct clk *clk, unsigned long rate);\r
-int clk_enable_dvfs(struct clk *clk);\r
-int clk_disable_dvfs(struct clk *clk);\r
-void dvfs_clk_register_set_rate_callback(struct clk *clk, clk_dvfs_target_callback clk_dvfs_target);\r
-struct cpufreq_frequency_table *dvfs_get_freq_volt_table(struct clk *clk);\r
-int dvfs_set_freq_volt_table(struct clk *clk, struct cpufreq_frequency_table *table);\r
-int dvfs_set_depend_table(struct clk *clk, char *vd_name, struct cpufreq_frequency_table *table);\r
-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);\r
-struct regulator* dvfs_get_regulator(char *regulator_name);\r
-int dvfs_clk_enable_limit(struct clk *clk, unsigned int min_rate, unsigned max_rate);\r
-int dvfs_clk_disable_limit(struct clk *clk);\r
-\r
-void avs_init(void);\r
-void avs_init_val_get(int index,int vol,char *s);\r
-int avs_set_scal_val(u8 avs_base);\r
-int dvfs_avs_scale_table(struct clk* clk, char* depend_vd_name);\r
-#else\r
-static inline int rk30_dvfs_init(void) { return 0; }\r
-static inline int is_support_dvfs(struct clk_node *dvfs_info) { return 0; }\r
-static inline int dvfs_set_rate(struct clk *clk, unsigned long rate) { return 0; }\r
-static inline int clk_enable_dvfs(struct clk *clk) { return 0; }\r
-static inline int clk_disable_dvfs(struct clk *clk) { return 0; }\r
-static inline void dvfs_clk_register_set_rate_callback(struct clk *clk, clk_dvfs_target_callback clk_dvfs_target) {}\r
-static inline struct cpufreq_frequency_table *dvfs_get_freq_volt_table(struct clk *clk) { return NULL; }\r
-static inline int dvfs_set_freq_volt_table(struct clk *clk, struct cpufreq_frequency_table *table) { return 0; }\r
-static inline int dvfs_set_depend_table(struct clk *clk, char *vd_name, struct cpufreq_frequency_table *table) {return 0;}\r
-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; }\r
-static inline struct regulator* dvfs_get_regulator(char *regulator_name){ return NULL; }\r
-static inline int dvfs_clk_enable_limit(struct clk *clk, unsigned int min_rate, unsigned max_rate){ return 0; }\r
-static inline int dvfs_clk_disable_limit(struct clk *clk){ return 0; };\r
-\r
-static inline void avs_init(void){};\r
-static inline void avs_init_val_get(int index, int vol, char *s){};\r
-static inline int avs_set_scal_val(u8 avs_base){ return 0; };\r
-static inline int dvfs_avs_scale_table(struct clk* clk, char* depend_vd_name){ return 0; };\r
-#endif\r
-\r
-#endif\r
+#include <plat/dvfs.h>\r
index 59ec37d4704b9b829cf49d8771a14fb0a2e19057..0e88605f06c4b3ae393c5b88a97ee53da8abcb32 100644 (file)
@@ -1,183 +1 @@
-/* arch/arm/mach-rk30/rk30_dvfs.h\r
- *\r
- * Copyright (C) 2012 ROCKCHIP, Inc.\r
- *\r
- * This software is licensed under the terms of the GNU General Public\r
- * License version 2, as published by the Free Software Foundation, and\r
- * may be copied, distributed, and modified under those terms.\r
- *\r
- * This program is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
- * GNU General Public License for more details.\r
- *\r
- */\r
-#ifndef _RK30_DVFS_H_\r
-#define _RK30_DVFS_H_\r
-\r
-#include <mach/clock.h>\r
-\r
-typedef int (*vd_dvfs_target_callback)(struct clk *clk, unsigned long rate);\r
-\r
-typedef int (*dvfs_set_rate_callback)(struct clk *clk, unsigned long rate);\r
-\r
-typedef int (*clk_dvfs_target_callback)(struct clk *clk, unsigned long rate,\r
-                                        dvfs_set_rate_callback set_rate);\r
-\r
-/**\r
- * struct vd_node:     To Store All Voltage Domains' info\r
- * @name:              Voltage Domain's Name\r
- * @regulator_name:    Voltage domain's regulator name\r
- * @cur_volt:          Voltage Domain's Current Voltage\r
- * @regulator:         Voltage Domain's regulator point\r
- * @node:              Point of he Voltage Domain List Node\r
- * @pd_list:           Head of Power Domain List Belongs to This Voltage Domain\r
- * @req_volt_list:     The list of clocks requests\r
- * @dvfs_mutex:                Lock\r
- * @vd_dvfs_target:    Callback function       \r
- */\r
-\r
-struct vd_node {\r
-       char                    *name;\r
-       char                    *regulator_name;\r
-       int                     cur_volt;\r
-       int                     volt_set_flag;\r
-       struct regulator        *regulator;\r
-       struct list_head        node;\r
-       struct list_head        pd_list;\r
-       struct list_head        req_volt_list;\r
-       //struct mutex          dvfs_mutex;\r
-       vd_dvfs_target_callback vd_dvfs_target;\r
-};\r
-\r
-/**\r
- * struct pd_node:     To Store All Power Domains' info\r
- * @name:              Power Domain's Name\r
- * @cur_volt:          Power Domain's Current Voltage\r
- * @pd_status:         Power Domain's status\r
- * @vd:                        Voltage Domain the power domain belongs to\r
- * @pd_clk:            Look power domain as a clock\r
- * @node:              List node to Voltage Domain\r
- * @clk_list:          Head of Power Domain's Clocks List\r
- */\r
-struct pd_node {\r
-       char                    *name;\r
-       int                     cur_volt;\r
-       unsigned char           pd_status;\r
-       struct vd_node          *vd;\r
-       //struct clk            *pd_clk;\r
-       struct list_head        node;\r
-       struct list_head        clk_list;\r
-};\r
-\r
-struct pd_node_lookup {\r
-       struct pd_node          *pd;\r
-};\r
-\r
-struct clk_list{\r
-       struct clk_node         *dvfs_clk;\r
-       struct list_head        node;\r
-};\r
-\r
-struct pds_list {\r
-       struct clk_list         clk_list;\r
-       struct pd_node          *pd;\r
-};\r
-\r
-struct depend_list {\r
-       int                     req_volt;\r
-       struct clk_node         *dvfs_clk;\r
-       struct vd_node          *dep_vd;\r
-       struct list_head        node2clk;\r
-       struct list_head        node2vd;\r
-       struct cpufreq_frequency_table  *dep_table;\r
-};\r
-\r
-struct depend_lookup {\r
-       char                    *clk_name;\r
-       struct clk_node         *dvfs_clk;\r
-       struct vd_node          *dep_vd;\r
-       struct depend_list      dep_list;\r
-       struct cpufreq_frequency_table  *dep_table;\r
-};\r
-\r
-/**\r
- * struct clk_node:    To Store All dvfs clocks' info\r
- * @name:              Dvfs clock's Name\r
- * @set_freq:          Dvfs clock's Current Frequency\r
- * @set_volt:          Dvfs clock's Current Voltage\r
- * @enable_dvfs:       Sign if DVFS clock enable\r
- * @clk:               System clk's point\r
- * @pds:               Power Domains dvfs clock belongs to\r
- * @vd:                        Voltage Domains dvfs clock belongs to\r
- * @depend_list:       Dvfs Clock depend list\r
- * @dvfs_nb:           Notify list\r
- * @dvfs_table:                Frequency and voltage table for dvfs\r
- * @clk_dvfs_target:   Callback function\r
- */\r
-struct clk_node {\r
-       char                    *name;\r
-       int                     set_freq;       //KHZ\r
-       int                     set_volt;       //MV\r
-       int                     enable_dvfs;\r
-       int                     freq_limit_en;  //sign if use limit frequency\r
-       unsigned int            min_rate;       //limit min frequency\r
-       unsigned int            max_rate;       //limit max frequency\r
-       struct clk              *clk;\r
-       struct pds_list         *pds;\r
-       struct vd_node          *vd;\r
-       struct list_head        depend_list;\r
-       struct notifier_block   *dvfs_nb;\r
-       struct cpufreq_frequency_table  *dvfs_table;\r
-       clk_dvfs_target_callback        clk_dvfs_target;\r
-};\r
-\r
-struct dvfs_arm_table {\r
-       unsigned int    frequency; /* kHz - doesn't need to be in ascending\r
-                                   * order */\r
-       unsigned int    cpu_volt;     /* any */\r
-\r
-       unsigned int    logic_volt;\r
-};\r
-\r
-#ifdef CONFIG_DVFS\r
-int rk30_dvfs_init(void);\r
-int is_support_dvfs(struct clk_node *dvfs_info);\r
-int dvfs_set_rate(struct clk *clk, unsigned long rate);\r
-int clk_enable_dvfs(struct clk *clk);\r
-int clk_disable_dvfs(struct clk *clk);\r
-void dvfs_clk_register_set_rate_callback(struct clk *clk, clk_dvfs_target_callback clk_dvfs_target);\r
-struct cpufreq_frequency_table *dvfs_get_freq_volt_table(struct clk *clk);\r
-int dvfs_set_freq_volt_table(struct clk *clk, struct cpufreq_frequency_table *table);\r
-int dvfs_set_depend_table(struct clk *clk, char *vd_name, struct cpufreq_frequency_table *table);\r
-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);\r
-struct regulator* dvfs_get_regulator(char *regulator_name);\r
-int dvfs_clk_enable_limit(struct clk *clk, unsigned int min_rate, unsigned max_rate);\r
-int dvfs_clk_disable_limit(struct clk *clk);\r
-\r
-void avs_init(void);\r
-void avs_init_val_get(int index,int vol,char *s);\r
-int avs_set_scal_val(u8 avs_base);\r
-int dvfs_avs_scale_table(struct clk* clk, char* depend_vd_name);\r
-#else\r
-static inline int rk30_dvfs_init(void) { return 0; }\r
-static inline int is_support_dvfs(struct clk_node *dvfs_info) { return 0; }\r
-static inline int dvfs_set_rate(struct clk *clk, unsigned long rate) { return 0; }\r
-static inline int clk_enable_dvfs(struct clk *clk) { return 0; }\r
-static inline int clk_disable_dvfs(struct clk *clk) { return 0; }\r
-static inline void dvfs_clk_register_set_rate_callback(struct clk *clk, clk_dvfs_target_callback clk_dvfs_target) {}\r
-static inline struct cpufreq_frequency_table *dvfs_get_freq_volt_table(struct clk *clk) { return NULL; }\r
-static inline int dvfs_set_freq_volt_table(struct clk *clk, struct cpufreq_frequency_table *table) { return 0; }\r
-static inline int dvfs_set_depend_table(struct clk *clk, char *vd_name, struct cpufreq_frequency_table *table) {return 0;}\r
-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; }\r
-static inline struct regulator* dvfs_get_regulator(char *regulator_name){ return NULL; }\r
-static inline int dvfs_clk_enable_limit(struct clk *clk, unsigned int min_rate, unsigned max_rate){ return 0; }\r
-static inline int dvfs_clk_disable_limit(struct clk *clk){ return 0; };\r
-\r
-static inline void avs_init(void){};\r
-static inline void avs_init_val_get(int index, int vol, char *s){};\r
-static inline int avs_set_scal_val(u8 avs_base){ return 0; };\r
-static inline int dvfs_avs_scale_table(struct clk* clk, char* depend_vd_name){ return 0; };\r
-#endif\r
-\r
-#endif\r
+#include <plat/dvfs.h>
diff --git a/arch/arm/plat-rk/include/plat/dvfs.h b/arch/arm/plat-rk/include/plat/dvfs.h
new file mode 100644 (file)
index 0000000..59ec37d
--- /dev/null
@@ -0,0 +1,183 @@
+/* arch/arm/mach-rk30/rk30_dvfs.h\r
+ *\r
+ * Copyright (C) 2012 ROCKCHIP, Inc.\r
+ *\r
+ * This software is licensed under the terms of the GNU General Public\r
+ * License version 2, as published by the Free Software Foundation, and\r
+ * may be copied, distributed, and modified under those terms.\r
+ *\r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+ * GNU General Public License for more details.\r
+ *\r
+ */\r
+#ifndef _RK30_DVFS_H_\r
+#define _RK30_DVFS_H_\r
+\r
+#include <mach/clock.h>\r
+\r
+typedef int (*vd_dvfs_target_callback)(struct clk *clk, unsigned long rate);\r
+\r
+typedef int (*dvfs_set_rate_callback)(struct clk *clk, unsigned long rate);\r
+\r
+typedef int (*clk_dvfs_target_callback)(struct clk *clk, unsigned long rate,\r
+                                        dvfs_set_rate_callback set_rate);\r
+\r
+/**\r
+ * struct vd_node:     To Store All Voltage Domains' info\r
+ * @name:              Voltage Domain's Name\r
+ * @regulator_name:    Voltage domain's regulator name\r
+ * @cur_volt:          Voltage Domain's Current Voltage\r
+ * @regulator:         Voltage Domain's regulator point\r
+ * @node:              Point of he Voltage Domain List Node\r
+ * @pd_list:           Head of Power Domain List Belongs to This Voltage Domain\r
+ * @req_volt_list:     The list of clocks requests\r
+ * @dvfs_mutex:                Lock\r
+ * @vd_dvfs_target:    Callback function       \r
+ */\r
+\r
+struct vd_node {\r
+       char                    *name;\r
+       char                    *regulator_name;\r
+       int                     cur_volt;\r
+       int                     volt_set_flag;\r
+       struct regulator        *regulator;\r
+       struct list_head        node;\r
+       struct list_head        pd_list;\r
+       struct list_head        req_volt_list;\r
+       //struct mutex          dvfs_mutex;\r
+       vd_dvfs_target_callback vd_dvfs_target;\r
+};\r
+\r
+/**\r
+ * struct pd_node:     To Store All Power Domains' info\r
+ * @name:              Power Domain's Name\r
+ * @cur_volt:          Power Domain's Current Voltage\r
+ * @pd_status:         Power Domain's status\r
+ * @vd:                        Voltage Domain the power domain belongs to\r
+ * @pd_clk:            Look power domain as a clock\r
+ * @node:              List node to Voltage Domain\r
+ * @clk_list:          Head of Power Domain's Clocks List\r
+ */\r
+struct pd_node {\r
+       char                    *name;\r
+       int                     cur_volt;\r
+       unsigned char           pd_status;\r
+       struct vd_node          *vd;\r
+       //struct clk            *pd_clk;\r
+       struct list_head        node;\r
+       struct list_head        clk_list;\r
+};\r
+\r
+struct pd_node_lookup {\r
+       struct pd_node          *pd;\r
+};\r
+\r
+struct clk_list{\r
+       struct clk_node         *dvfs_clk;\r
+       struct list_head        node;\r
+};\r
+\r
+struct pds_list {\r
+       struct clk_list         clk_list;\r
+       struct pd_node          *pd;\r
+};\r
+\r
+struct depend_list {\r
+       int                     req_volt;\r
+       struct clk_node         *dvfs_clk;\r
+       struct vd_node          *dep_vd;\r
+       struct list_head        node2clk;\r
+       struct list_head        node2vd;\r
+       struct cpufreq_frequency_table  *dep_table;\r
+};\r
+\r
+struct depend_lookup {\r
+       char                    *clk_name;\r
+       struct clk_node         *dvfs_clk;\r
+       struct vd_node          *dep_vd;\r
+       struct depend_list      dep_list;\r
+       struct cpufreq_frequency_table  *dep_table;\r
+};\r
+\r
+/**\r
+ * struct clk_node:    To Store All dvfs clocks' info\r
+ * @name:              Dvfs clock's Name\r
+ * @set_freq:          Dvfs clock's Current Frequency\r
+ * @set_volt:          Dvfs clock's Current Voltage\r
+ * @enable_dvfs:       Sign if DVFS clock enable\r
+ * @clk:               System clk's point\r
+ * @pds:               Power Domains dvfs clock belongs to\r
+ * @vd:                        Voltage Domains dvfs clock belongs to\r
+ * @depend_list:       Dvfs Clock depend list\r
+ * @dvfs_nb:           Notify list\r
+ * @dvfs_table:                Frequency and voltage table for dvfs\r
+ * @clk_dvfs_target:   Callback function\r
+ */\r
+struct clk_node {\r
+       char                    *name;\r
+       int                     set_freq;       //KHZ\r
+       int                     set_volt;       //MV\r
+       int                     enable_dvfs;\r
+       int                     freq_limit_en;  //sign if use limit frequency\r
+       unsigned int            min_rate;       //limit min frequency\r
+       unsigned int            max_rate;       //limit max frequency\r
+       struct clk              *clk;\r
+       struct pds_list         *pds;\r
+       struct vd_node          *vd;\r
+       struct list_head        depend_list;\r
+       struct notifier_block   *dvfs_nb;\r
+       struct cpufreq_frequency_table  *dvfs_table;\r
+       clk_dvfs_target_callback        clk_dvfs_target;\r
+};\r
+\r
+struct dvfs_arm_table {\r
+       unsigned int    frequency; /* kHz - doesn't need to be in ascending\r
+                                   * order */\r
+       unsigned int    cpu_volt;     /* any */\r
+\r
+       unsigned int    logic_volt;\r
+};\r
+\r
+#ifdef CONFIG_DVFS\r
+int rk30_dvfs_init(void);\r
+int is_support_dvfs(struct clk_node *dvfs_info);\r
+int dvfs_set_rate(struct clk *clk, unsigned long rate);\r
+int clk_enable_dvfs(struct clk *clk);\r
+int clk_disable_dvfs(struct clk *clk);\r
+void dvfs_clk_register_set_rate_callback(struct clk *clk, clk_dvfs_target_callback clk_dvfs_target);\r
+struct cpufreq_frequency_table *dvfs_get_freq_volt_table(struct clk *clk);\r
+int dvfs_set_freq_volt_table(struct clk *clk, struct cpufreq_frequency_table *table);\r
+int dvfs_set_depend_table(struct clk *clk, char *vd_name, struct cpufreq_frequency_table *table);\r
+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);\r
+struct regulator* dvfs_get_regulator(char *regulator_name);\r
+int dvfs_clk_enable_limit(struct clk *clk, unsigned int min_rate, unsigned max_rate);\r
+int dvfs_clk_disable_limit(struct clk *clk);\r
+\r
+void avs_init(void);\r
+void avs_init_val_get(int index,int vol,char *s);\r
+int avs_set_scal_val(u8 avs_base);\r
+int dvfs_avs_scale_table(struct clk* clk, char* depend_vd_name);\r
+#else\r
+static inline int rk30_dvfs_init(void) { return 0; }\r
+static inline int is_support_dvfs(struct clk_node *dvfs_info) { return 0; }\r
+static inline int dvfs_set_rate(struct clk *clk, unsigned long rate) { return 0; }\r
+static inline int clk_enable_dvfs(struct clk *clk) { return 0; }\r
+static inline int clk_disable_dvfs(struct clk *clk) { return 0; }\r
+static inline void dvfs_clk_register_set_rate_callback(struct clk *clk, clk_dvfs_target_callback clk_dvfs_target) {}\r
+static inline struct cpufreq_frequency_table *dvfs_get_freq_volt_table(struct clk *clk) { return NULL; }\r
+static inline int dvfs_set_freq_volt_table(struct clk *clk, struct cpufreq_frequency_table *table) { return 0; }\r
+static inline int dvfs_set_depend_table(struct clk *clk, char *vd_name, struct cpufreq_frequency_table *table) {return 0;}\r
+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; }\r
+static inline struct regulator* dvfs_get_regulator(char *regulator_name){ return NULL; }\r
+static inline int dvfs_clk_enable_limit(struct clk *clk, unsigned int min_rate, unsigned max_rate){ return 0; }\r
+static inline int dvfs_clk_disable_limit(struct clk *clk){ return 0; };\r
+\r
+static inline void avs_init(void){};\r
+static inline void avs_init_val_get(int index, int vol, char *s){};\r
+static inline int avs_set_scal_val(u8 avs_base){ return 0; };\r
+static inline int dvfs_avs_scale_table(struct clk* clk, char* depend_vd_name){ return 0; };\r
+#endif\r
+\r
+#endif\r