aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/cpufreq
diff options
context:
space:
mode:
authorJaecheol Lee <jc.lee@samsung.com>2011-12-06 21:43:56 -0500
committerDave Jones <davej@redhat.com>2011-12-09 10:38:02 -0500
commitba9d78031116a216d0e53aa629a584932e813375 (patch)
treec3515d2bcd6dfa94efb0cbd63c261768e5b564a9 /drivers/cpufreq
parentc8c430e2f65adf124b3a2b6cfffa4dfc8a6e49c2 (diff)
[CPUFREQ] EXYNOS4210: Update frequency table for cpu divider
This patch is changes frequency table for cpu divider for stable frequency. Signed-off-by: Jaecheol Lee <jc.lee@samsung.com> Signed-off-by: Jongpill Lee <boyko.lee@samsung.com> Signed-off-by: Kukjin Kim <kgene.kim@samsung.com> Signed-off-by: Dave Jones <davej@redhat.com>
Diffstat (limited to 'drivers/cpufreq')
-rw-r--r--drivers/cpufreq/exynos4210-cpufreq.c69
1 files changed, 41 insertions, 28 deletions
diff --git a/drivers/cpufreq/exynos4210-cpufreq.c b/drivers/cpufreq/exynos4210-cpufreq.c
index 578956c5ee71..ba579e0a5c3f 100644
--- a/drivers/cpufreq/exynos4210-cpufreq.c
+++ b/drivers/cpufreq/exynos4210-cpufreq.c
@@ -41,14 +41,15 @@ static bool frequency_locked;
41static DEFINE_MUTEX(cpufreq_lock); 41static DEFINE_MUTEX(cpufreq_lock);
42 42
43enum cpufreq_level_index { 43enum cpufreq_level_index {
44 L0, L1, L2, L3, CPUFREQ_LEVEL_END, 44 L0, L1, L2, L3, L4, CPUFREQ_LEVEL_END,
45}; 45};
46 46
47static struct cpufreq_frequency_table exynos4_freq_table[] = { 47static struct cpufreq_frequency_table exynos4_freq_table[] = {
48 {L0, 1000*1000}, 48 {L0, 1200*1000},
49 {L1, 800*1000}, 49 {L1, 1000*1000},
50 {L2, 400*1000}, 50 {L2, 800*1000},
51 {L3, 100*1000}, 51 {L3, 500*1000},
52 {L4, 200*1000},
52 {0, CPUFREQ_TABLE_END}, 53 {0, CPUFREQ_TABLE_END},
53}; 54};
54 55
@@ -59,17 +60,20 @@ static unsigned int clkdiv_cpu0[CPUFREQ_LEVEL_END][7] = {
59 * DIVATB, DIVPCLK_DBG, DIVAPLL } 60 * DIVATB, DIVPCLK_DBG, DIVAPLL }
60 */ 61 */
61 62
62 /* ARM L0: 1000MHz */ 63 /* ARM L0: 1200MHz */
63 { 0, 3, 7, 3, 3, 0, 1 }, 64 { 0, 3, 7, 3, 4, 1, 7 },
64 65
65 /* ARM L1: 800MHz */ 66 /* ARM L1: 1000MHz */
66 { 0, 3, 7, 3, 3, 0, 1 }, 67 { 0, 3, 7, 3, 4, 1, 7 },
67 68
68 /* ARM L2: 400MHz */ 69 /* ARM L2: 800MHz */
69 { 0, 1, 3, 1, 3, 0, 1 }, 70 { 0, 3, 7, 3, 3, 1, 7 },
70 71
71 /* ARM L3: 100MHz */ 72 /* ARM L3: 500MHz */
72 { 0, 0, 1, 0, 3, 1, 1 }, 73 { 0, 3, 7, 3, 3, 1, 7 },
74
75 /* ARM L4: 200MHz */
76 { 0, 1, 3, 1, 3, 1, 0 },
73}; 77};
74 78
75static unsigned int clkdiv_cpu1[CPUFREQ_LEVEL_END][2] = { 79static unsigned int clkdiv_cpu1[CPUFREQ_LEVEL_END][2] = {
@@ -78,16 +82,19 @@ static unsigned int clkdiv_cpu1[CPUFREQ_LEVEL_END][2] = {
78 * { DIVCOPY, DIVHPM } 82 * { DIVCOPY, DIVHPM }
79 */ 83 */
80 84
81 /* ARM L0: 1000MHz */ 85 /* ARM L0: 1200MHz */
82 { 3, 0 }, 86 { 5, 0 },
87
88 /* ARM L1: 1000MHz */
89 { 4, 0 },
83 90
84 /* ARM L1: 800MHz */ 91 /* ARM L2: 800MHz */
85 { 3, 0 }, 92 { 3, 0 },
86 93
87 /* ARM L2: 400MHz */ 94 /* ARM L3: 500MHz */
88 { 3, 0 }, 95 { 3, 0 },
89 96
90 /* ARM L3: 100MHz */ 97 /* ARM L4: 200MHz */
91 { 3, 0 }, 98 { 3, 0 },
92}; 99};
93 100
@@ -99,31 +106,37 @@ struct cpufreq_voltage_table {
99static struct cpufreq_voltage_table exynos4_volt_table[CPUFREQ_LEVEL_END] = { 106static struct cpufreq_voltage_table exynos4_volt_table[CPUFREQ_LEVEL_END] = {
100 { 107 {
101 .index = L0, 108 .index = L0,
102 .arm_volt = 1200000, 109 .arm_volt = 1350000,
103 }, { 110 }, {
104 .index = L1, 111 .index = L1,
105 .arm_volt = 1100000, 112 .arm_volt = 1300000,
106 }, { 113 }, {
107 .index = L2, 114 .index = L2,
108 .arm_volt = 1000000, 115 .arm_volt = 1200000,
109 }, { 116 }, {
110 .index = L3, 117 .index = L3,
111 .arm_volt = 900000, 118 .arm_volt = 1100000,
119 }, {
120 .index = L4,
121 .arm_volt = 1050000,
112 }, 122 },
113}; 123};
114 124
115static unsigned int exynos4_apll_pms_table[CPUFREQ_LEVEL_END] = { 125static unsigned int exynos4_apll_pms_table[CPUFREQ_LEVEL_END] = {
116 /* APLL FOUT L0: 1000MHz */ 126 /* APLL FOUT L0: 1200MHz */
127 ((150 << 16) | (3 << 8) | 1),
128
129 /* APLL FOUT L1: 1000MHz */
117 ((250 << 16) | (6 << 8) | 1), 130 ((250 << 16) | (6 << 8) | 1),
118 131
119 /* APLL FOUT L1: 800MHz */ 132 /* APLL FOUT L2: 800MHz */
120 ((200 << 16) | (6 << 8) | 1), 133 ((200 << 16) | (6 << 8) | 1),
121 134
122 /* APLL FOUT L2 : 400MHz */ 135 /* APLL FOUT L3: 500MHz */
123 ((200 << 16) | (6 << 8) | 2), 136 ((250 << 16) | (6 << 8) | 2),
124 137
125 /* APLL FOUT L3: 100MHz */ 138 /* APLL FOUT L4: 200MHz */
126 ((200 << 16) | (6 << 8) | 4), 139 ((200 << 16) | (6 << 8) | 3),
127}; 140};
128 141
129static int exynos4_verify_speed(struct cpufreq_policy *policy) 142static int exynos4_verify_speed(struct cpufreq_policy *policy)