RK292X:add VPU dvfs
authordkl <dkl@rock-chips.com>
Sat, 15 Dec 2012 02:54:22 +0000 (10:54 +0800)
committerwuhao <wuhao@wuhao@rock-chips.com>
Sat, 15 Dec 2012 02:54:22 +0000 (10:54 +0800)
arch/arm/mach-rk2928/cpufreq.c [changed mode: 0644->0755]
arch/arm/mach-rk2928/dvfs.c [changed mode: 0644->0755]

old mode 100644 (file)
new mode 100755 (executable)
index b9172a2..099d24e
@@ -236,6 +236,8 @@ static int rk30_cpu_init(struct cpufreq_policy *policy)
        if (policy->cpu == 0) {
                int i;
                struct clk *ddr_clk;
+               struct clk *aclk_vepu_clk;
+       
                gpu_clk = clk_get(NULL, "gpu");
                if (!IS_ERR(gpu_clk))
                        clk_enable_dvfs(gpu_clk);
@@ -277,6 +279,10 @@ static int rk30_cpu_init(struct cpufreq_policy *policy)
                        clk_enable_dvfs(ddr_clk);
                }
 
+               aclk_vepu_clk = clk_get(NULL, "aclk_vepu");
+               if (!IS_ERR(aclk_vepu_clk))
+                       clk_enable_dvfs(aclk_vepu_clk);
+
                freq_wq = create_singlethread_workqueue("rk30_cpufreqd");
 #ifdef CONFIG_RK30_CPU_FREQ_LIMIT_BY_TEMP
                if (rk30_cpufreq_is_ondemand_policy(policy)) {
old mode 100644 (file)
new mode 100755 (executable)
index f3b669a..e8d086d
@@ -1289,6 +1289,13 @@ static struct cpufreq_frequency_table peri_aclk_dvfs_table[] = {
        {.frequency = CPUFREQ_TABLE_END},\r
 };\r
 \r
+static struct cpufreq_frequency_table vpu_dvfs_table[] = {\r
+       {.frequency = 266 * DVFS_KHZ, .index = 1100 * DVFS_MV},\r
+       {.frequency = 300 * DVFS_KHZ, .index = 1100 * DVFS_MV},\r
+       {.frequency = 400 * DVFS_KHZ, .index = 1200 * DVFS_MV},\r
+       {.frequency = CPUFREQ_TABLE_END},\r
+};\r
+\r
 static struct cpufreq_frequency_table dep_cpu2core_table[] = {\r
        // {.frequency = 252 * DVFS_KHZ, .index    = 1025 * DVFS_MV},\r
        // {.frequency = 504 * DVFS_KHZ, .index    = 1025 * DVFS_MV},\r
@@ -1413,6 +1420,11 @@ static struct pds_list aclk_periph_pds[] = {
        CLK_PDS(NULL),\r
 };\r
 \r
+static struct pds_list aclk_vepu_pds[] = {\r
+       CLK_PDS(&pd_video),\r
+       CLK_PDS(NULL),\r
+};\r
+\r
 #define RK_CLKS(_clk_name, _ppds, _dvfs_table, _dvfs_nb) \\r
 { \\r
        .name   = _clk_name, \\r
@@ -1425,6 +1437,7 @@ static struct clk_node rk30_clks[] = {
        RK_CLKS("cpu", cpu_pds, cpu_dvfs_table, &rk_dvfs_clk_notifier),\r
        RK_CLKS("ddr", ddr_pds, ddr_dvfs_table, &rk_dvfs_clk_notifier),\r
        RK_CLKS("gpu", gpu_pds, gpu_dvfs_table, &rk_dvfs_clk_notifier),\r
+       RK_CLKS("aclk_vepu", aclk_vepu_pds, vpu_dvfs_table, &rk_dvfs_clk_notifier),\r
        //RK_CLKS("aclk_periph", aclk_periph_pds, peri_aclk_dvfs_table, &rk_dvfs_clk_notifier),\r
 };\r
 \r