aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/cpufreq
diff options
context:
space:
mode:
authorJaecheol Lee <jc.lee@samsung.com>2012-07-19 00:19:57 -0400
committerKukjin Kim <kgene.kim@samsung.com>2012-07-19 00:20:25 -0400
commitbb3e815b8011bc22451ee05e7dccb73c5ee979a8 (patch)
tree8cbc0401f9424a511240754d9934ba632fa9c3ca /drivers/cpufreq
parent6c6c185b45568dd3bc887d7248228476e3a6906a (diff)
[CPUFREQ] EXYNOS5250: Add support max 1.7GHz for EXYNOS5250
This patch adds support 1.7GHz max frequency for EXYNOS5250 Signed-off-by: Jaecheol Lee <jc.lee@samsung.com> Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
Diffstat (limited to 'drivers/cpufreq')
-rw-r--r--drivers/cpufreq/exynos5250-cpufreq.c55
1 files changed, 24 insertions, 31 deletions
diff --git a/drivers/cpufreq/exynos5250-cpufreq.c b/drivers/cpufreq/exynos5250-cpufreq.c
index a88331644eb..e64c253cb16 100644
--- a/drivers/cpufreq/exynos5250-cpufreq.c
+++ b/drivers/cpufreq/exynos5250-cpufreq.c
@@ -65,20 +65,20 @@ static unsigned int clkdiv_cpu0_5250[CPUFREQ_LEVEL_END][8] = {
65 * Clock divider value for following 65 * Clock divider value for following
66 * { ARM, CPUD, ACP, PERIPH, ATB, PCLK_DBG, APLL, ARM2 } 66 * { ARM, CPUD, ACP, PERIPH, ATB, PCLK_DBG, APLL, ARM2 }
67 */ 67 */
68 { 0, 3, 7, 7, 6, 1, 3, 0 }, /* 1700 MHz - N/A */ 68 { 0, 3, 7, 7, 7, 3, 5, 0 }, /* 1700 MHz */
69 { 0, 3, 7, 7, 6, 1, 3, 0 }, /* 1600 MHz - N/A */ 69 { 0, 3, 7, 7, 7, 1, 4, 0 }, /* 1600 MHz */
70 { 0, 3, 7, 7, 5, 1, 3, 0 }, /* 1500 MHz - N/A */ 70 { 0, 2, 7, 7, 7, 1, 4, 0 }, /* 1500 MHz */
71 { 0, 3, 7, 7, 6, 1, 3, 0 }, /* 1400 MHz */ 71 { 0, 2, 7, 7, 6, 1, 4, 0 }, /* 1400 MHz */
72 { 0, 3, 7, 7, 6, 1, 3, 0 }, /* 1300 MHz */ 72 { 0, 2, 7, 7, 6, 1, 3, 0 }, /* 1300 MHz */
73 { 0, 3, 7, 7, 5, 1, 3, 0 }, /* 1200 MHz */ 73 { 0, 2, 7, 7, 5, 1, 3, 0 }, /* 1200 MHz */
74 { 0, 2, 7, 7, 5, 1, 2, 0 }, /* 1100 MHz */ 74 { 0, 3, 7, 7, 5, 1, 3, 0 }, /* 1100 MHz */
75 { 0, 2, 7, 7, 4, 1, 2, 0 }, /* 1000 MHz */ 75 { 0, 1, 7, 7, 4, 1, 2, 0 }, /* 1000 MHz */
76 { 0, 2, 7, 7, 4, 1, 2, 0 }, /* 900 MHz */ 76 { 0, 1, 7, 7, 4, 1, 2, 0 }, /* 900 MHz */
77 { 0, 2, 7, 7, 3, 1, 1, 0 }, /* 800 MHz */ 77 { 0, 1, 7, 7, 4, 1, 2, 0 }, /* 800 MHz */
78 { 0, 1, 7, 7, 3, 1, 1, 0 }, /* 700 MHz */ 78 { 0, 1, 7, 7, 3, 1, 1, 0 }, /* 700 MHz */
79 { 0, 1, 7, 7, 2, 1, 1, 0 }, /* 600 MHz */ 79 { 0, 1, 7, 7, 3, 1, 1, 0 }, /* 600 MHz */
80 { 0, 1, 7, 7, 2, 1, 1, 0 }, /* 500 MHz */ 80 { 0, 1, 7, 7, 2, 1, 1, 0 }, /* 500 MHz */
81 { 0, 1, 7, 7, 1, 1, 1, 0 }, /* 400 MHz */ 81 { 0, 1, 7, 7, 2, 1, 1, 0 }, /* 400 MHz */
82 { 0, 1, 7, 7, 1, 1, 1, 0 }, /* 300 MHz */ 82 { 0, 1, 7, 7, 1, 1, 1, 0 }, /* 300 MHz */
83 { 0, 1, 7, 7, 1, 1, 1, 0 }, /* 200 MHz */ 83 { 0, 1, 7, 7, 1, 1, 1, 0 }, /* 200 MHz */
84}; 84};
@@ -87,9 +87,9 @@ static unsigned int clkdiv_cpu1_5250[CPUFREQ_LEVEL_END][2] = {
87 /* Clock divider value for following 87 /* Clock divider value for following
88 * { COPY, HPM } 88 * { COPY, HPM }
89 */ 89 */
90 { 0, 2 }, /* 1700 MHz - N/A */ 90 { 0, 2 }, /* 1700 MHz */
91 { 0, 2 }, /* 1600 MHz - N/A */ 91 { 0, 2 }, /* 1600 MHz */
92 { 0, 2 }, /* 1500 MHz - N/A */ 92 { 0, 2 }, /* 1500 MHz */
93 { 0, 2 }, /* 1400 MHz */ 93 { 0, 2 }, /* 1400 MHz */
94 { 0, 2 }, /* 1300 MHz */ 94 { 0, 2 }, /* 1300 MHz */
95 { 0, 2 }, /* 1200 MHz */ 95 { 0, 2 }, /* 1200 MHz */
@@ -106,10 +106,10 @@ static unsigned int clkdiv_cpu1_5250[CPUFREQ_LEVEL_END][2] = {
106}; 106};
107 107
108static unsigned int exynos5_apll_pms_table[CPUFREQ_LEVEL_END] = { 108static unsigned int exynos5_apll_pms_table[CPUFREQ_LEVEL_END] = {
109 (0), /* 1700 MHz - N/A */ 109 ((425 << 16) | (6 << 8) | 0), /* 1700 MHz */
110 (0), /* 1600 MHz - N/A */ 110 ((200 << 16) | (3 << 8) | 0), /* 1600 MHz */
111 (0), /* 1500 MHz - N/A */ 111 ((250 << 16) | (4 << 8) | 0), /* 1500 MHz */
112 (0), /* 1400 MHz */ 112 ((175 << 16) | (3 << 8) | 0), /* 1400 MHz */
113 ((325 << 16) | (6 << 8) | 0), /* 1300 MHz */ 113 ((325 << 16) | (6 << 8) | 0), /* 1300 MHz */
114 ((200 << 16) | (4 << 8) | 0), /* 1200 MHz */ 114 ((200 << 16) | (4 << 8) | 0), /* 1200 MHz */
115 ((275 << 16) | (6 << 8) | 0), /* 1100 MHz */ 115 ((275 << 16) | (6 << 8) | 0), /* 1100 MHz */
@@ -126,9 +126,10 @@ static unsigned int exynos5_apll_pms_table[CPUFREQ_LEVEL_END] = {
126 126
127/* ASV group voltage table */ 127/* ASV group voltage table */
128static const unsigned int asv_voltage_5250[CPUFREQ_LEVEL_END] = { 128static const unsigned int asv_voltage_5250[CPUFREQ_LEVEL_END] = {
129 0, 0, 0, 0, 0, 0, 0, /* 1700 MHz ~ 1100 MHz Not supported */ 129 1300000, 1250000, 1225000, 1200000, 1150000,
130 1175000, 1125000, 1075000, 1050000, 1000000, 130 1125000, 1100000, 1075000, 1050000, 1025000,
131 950000, 925000, 925000, 900000 131 1012500, 1000000, 975000, 950000, 937500,
132 925000
132}; 133};
133 134
134static void set_clkdiv(unsigned int div_index) 135static void set_clkdiv(unsigned int div_index)
@@ -248,15 +249,7 @@ static void __init set_volt_table(void)
248{ 249{
249 unsigned int i; 250 unsigned int i;
250 251
251 exynos5250_freq_table[L0].frequency = CPUFREQ_ENTRY_INVALID; 252 max_support_idx = L0;
252 exynos5250_freq_table[L1].frequency = CPUFREQ_ENTRY_INVALID;
253 exynos5250_freq_table[L2].frequency = CPUFREQ_ENTRY_INVALID;
254 exynos5250_freq_table[L3].frequency = CPUFREQ_ENTRY_INVALID;
255 exynos5250_freq_table[L4].frequency = CPUFREQ_ENTRY_INVALID;
256 exynos5250_freq_table[L5].frequency = CPUFREQ_ENTRY_INVALID;
257 exynos5250_freq_table[L6].frequency = CPUFREQ_ENTRY_INVALID;
258
259 max_support_idx = L7;
260 253
261 for (i = 0 ; i < CPUFREQ_LEVEL_END ; i++) 254 for (i = 0 ; i < CPUFREQ_LEVEL_END ; i++)
262 exynos5250_volt_table[i] = asv_voltage_5250[i]; 255 exynos5250_volt_table[i] = asv_voltage_5250[i];