blob: c960516d19048fb14638d62f3045c8799673a954 [file] [log] [blame]
Matt Wagantalle9b715a2012-01-04 18:16:14 -08001/*
Matt Wagantall2dd3f972013-01-08 12:03:43 -08002 * Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
Matt Wagantalle9b715a2012-01-04 18:16:14 -08003 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 and
6 * only version 2 as published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 */
13
Steve Mucklef132c6c2012-06-06 18:30:57 -070014#include <linux/module.h>
Matt Wagantalle9b715a2012-01-04 18:16:14 -080015#include <linux/platform_device.h>
16#include <linux/of.h>
Matt Wagantalld591bf22012-06-29 11:20:53 -070017#include <mach/rpm-regulator-smd.h>
Matt Wagantalle9b715a2012-01-04 18:16:14 -080018#include <mach/msm_bus_board.h>
19#include <mach/msm_bus.h>
20#include <mach/socinfo.h>
21
22#include "acpuclock.h"
23#include "acpuclock-krait.h"
24
25/* Corner type vreg VDD values */
Matt Wagantallf06e3572012-07-27 12:45:24 -070026#define LVL_NONE RPM_REGULATOR_CORNER_NONE
Matt Wagantalld591bf22012-06-29 11:20:53 -070027#define LVL_LOW RPM_REGULATOR_CORNER_SVS_SOC
28#define LVL_NOM RPM_REGULATOR_CORNER_NORMAL
29#define LVL_HIGH RPM_REGULATOR_CORNER_SUPER_TURBO
Matt Wagantalle9b715a2012-01-04 18:16:14 -080030
Matt Wagantall1f3762d2012-06-08 19:08:48 -070031static struct hfpll_data hfpll_data __initdata = {
Matt Wagantalle9b715a2012-01-04 18:16:14 -080032 .mode_offset = 0x00,
33 .l_offset = 0x04,
34 .m_offset = 0x08,
35 .n_offset = 0x0C,
Matt Wagantalla77b7f32012-07-18 16:32:01 -070036 .has_user_reg = true,
37 .user_offset = 0x10,
Matt Wagantalle9b715a2012-01-04 18:16:14 -080038 .config_offset = 0x14,
Matt Wagantalla77b7f32012-07-18 16:32:01 -070039 .user_val = 0x8,
Matt Wagantall0f6e7b22012-09-26 23:36:18 -070040 .user_vco_mask = BIT(20),
Matt Wagantalla77b7f32012-07-18 16:32:01 -070041 .config_val = 0x04D0405D,
42 .low_vco_l_max = 65,
Matt Wagantalle9b715a2012-01-04 18:16:14 -080043 .low_vdd_l_max = 52,
Matt Wagantall87465f52012-07-23 22:03:06 -070044 .nom_vdd_l_max = 104,
Matt Wagantalle9b715a2012-01-04 18:16:14 -080045 .vdd[HFPLL_VDD_NONE] = LVL_NONE,
46 .vdd[HFPLL_VDD_LOW] = LVL_LOW,
47 .vdd[HFPLL_VDD_NOM] = LVL_NOM,
Matt Wagantall87465f52012-07-23 22:03:06 -070048 .vdd[HFPLL_VDD_HIGH] = LVL_HIGH,
Matt Wagantalle9b715a2012-01-04 18:16:14 -080049};
50
Matt Wagantall1f3762d2012-06-08 19:08:48 -070051static struct scalable scalable[] __initdata = {
Matt Wagantalle9b715a2012-01-04 18:16:14 -080052 [CPU0] = {
53 .hfpll_phys_base = 0xF908A000,
Matt Wagantalle9b715a2012-01-04 18:16:14 -080054 .l2cpmr_iaddr = 0x4501,
Matt Wagantall6cd5d752012-09-27 19:56:57 -070055 .sec_clk_sel = 2,
Matt Wagantallc8c0c3b2013-02-25 20:19:17 -080056 .vreg[VREG_CORE] = { "krait0", 1100000 },
Matt Wagantall75473eb2012-05-31 15:23:22 -070057 .vreg[VREG_MEM] = { "krait0_mem", 1050000 },
Matt Wagantalld591bf22012-06-29 11:20:53 -070058 .vreg[VREG_DIG] = { "krait0_dig", LVL_HIGH },
David Collinsaba4b9b2012-11-28 17:18:24 -080059 .vreg[VREG_HFPLL_A] = { "krait0_hfpll", 1800000 },
Matt Wagantalle9b715a2012-01-04 18:16:14 -080060 },
61 [CPU1] = {
62 .hfpll_phys_base = 0xF909A000,
Matt Wagantalle9b715a2012-01-04 18:16:14 -080063 .l2cpmr_iaddr = 0x5501,
Matt Wagantall6cd5d752012-09-27 19:56:57 -070064 .sec_clk_sel = 2,
Matt Wagantallc8c0c3b2013-02-25 20:19:17 -080065 .vreg[VREG_CORE] = { "krait1", 1100000 },
Matt Wagantall75473eb2012-05-31 15:23:22 -070066 .vreg[VREG_MEM] = { "krait1_mem", 1050000 },
Matt Wagantalld591bf22012-06-29 11:20:53 -070067 .vreg[VREG_DIG] = { "krait1_dig", LVL_HIGH },
David Collinsaba4b9b2012-11-28 17:18:24 -080068 .vreg[VREG_HFPLL_A] = { "krait1_hfpll", 1800000 },
Matt Wagantalle9b715a2012-01-04 18:16:14 -080069 },
70 [CPU2] = {
71 .hfpll_phys_base = 0xF90AA000,
Matt Wagantalle9b715a2012-01-04 18:16:14 -080072 .l2cpmr_iaddr = 0x6501,
Matt Wagantall6cd5d752012-09-27 19:56:57 -070073 .sec_clk_sel = 2,
Matt Wagantallc8c0c3b2013-02-25 20:19:17 -080074 .vreg[VREG_CORE] = { "krait2", 1100000 },
Matt Wagantall75473eb2012-05-31 15:23:22 -070075 .vreg[VREG_MEM] = { "krait2_mem", 1050000 },
Matt Wagantalld591bf22012-06-29 11:20:53 -070076 .vreg[VREG_DIG] = { "krait2_dig", LVL_HIGH },
David Collinsaba4b9b2012-11-28 17:18:24 -080077 .vreg[VREG_HFPLL_A] = { "krait2_hfpll", 1800000 },
Matt Wagantalle9b715a2012-01-04 18:16:14 -080078 },
79 [CPU3] = {
80 .hfpll_phys_base = 0xF90BA000,
Matt Wagantalle9b715a2012-01-04 18:16:14 -080081 .l2cpmr_iaddr = 0x7501,
Matt Wagantall6cd5d752012-09-27 19:56:57 -070082 .sec_clk_sel = 2,
Matt Wagantallc8c0c3b2013-02-25 20:19:17 -080083 .vreg[VREG_CORE] = { "krait3", 1100000 },
Matt Wagantall75473eb2012-05-31 15:23:22 -070084 .vreg[VREG_MEM] = { "krait3_mem", 1050000 },
Matt Wagantalld591bf22012-06-29 11:20:53 -070085 .vreg[VREG_DIG] = { "krait3_dig", LVL_HIGH },
David Collinsaba4b9b2012-11-28 17:18:24 -080086 .vreg[VREG_HFPLL_A] = { "krait3_hfpll", 1800000 },
Matt Wagantalle9b715a2012-01-04 18:16:14 -080087 },
88 [L2] = {
89 .hfpll_phys_base = 0xF9016000,
Matt Wagantalle9b715a2012-01-04 18:16:14 -080090 .l2cpmr_iaddr = 0x0500,
Matt Wagantall6cd5d752012-09-27 19:56:57 -070091 .sec_clk_sel = 2,
David Collinsaba4b9b2012-11-28 17:18:24 -080092 .vreg[VREG_HFPLL_A] = { "l2_hfpll", 1800000 },
Matt Wagantalle9b715a2012-01-04 18:16:14 -080093 },
94};
95
Matt Wagantall63ac3882013-03-07 16:51:14 -080096static struct msm_bus_paths bw_level_tbl_v1[] __initdata = {
Matt Wagantall545cd3e2012-12-07 13:07:16 -080097 [0] = BW_MBPS(600), /* At least 75 MHz on bus. */
98 [1] = BW_MBPS(800), /* At least 100 MHz on bus. */
99 [2] = BW_MBPS(1200), /* At least 150 MHz on bus. */
100 [3] = BW_MBPS(1600), /* At least 200 MHz on bus. */
101 [4] = BW_MBPS(2224), /* At least 278 MHz on bus. */
102 [5] = BW_MBPS(3200), /* At least 400 MHz on bus. */
103 [6] = BW_MBPS(4448), /* At least 556 MHz on bus. */
104 [7] = BW_MBPS(6400), /* At least 800 MHz on bus. */
Matt Wagantalle9b715a2012-01-04 18:16:14 -0800105};
106
Matt Wagantall29b7b472013-03-07 17:09:58 -0800107static struct l2_level l2_freq_tbl_v1[] __initdata = {
Matt Wagantall2dd3f972013-01-08 12:03:43 -0800108 [0] = { { 300000, PLL_0, 0, 0 }, LVL_LOW, 950000, 0 },
109 [1] = { { 345600, HFPLL, 2, 36 }, LVL_NOM, 950000, 1 },
110 [2] = { { 422400, HFPLL, 2, 44 }, LVL_NOM, 950000, 1 },
111 [3] = { { 499200, HFPLL, 2, 52 }, LVL_NOM, 950000, 2 },
Matt Wagantalld20d0942013-01-30 14:09:53 -0800112 [4] = { { 576000, HFPLL, 1, 30 }, LVL_NOM, 950000, 3 },
Matt Wagantall2dd3f972013-01-08 12:03:43 -0800113 [5] = { { 652800, HFPLL, 1, 34 }, LVL_NOM, 950000, 3 },
114 [6] = { { 729600, HFPLL, 1, 38 }, LVL_NOM, 950000, 3 },
Matt Wagantalld20d0942013-01-30 14:09:53 -0800115 [7] = { { 806400, HFPLL, 1, 42 }, LVL_HIGH, 1050000, 4 },
Matt Wagantall545cd3e2012-12-07 13:07:16 -0800116 [8] = { { 883200, HFPLL, 1, 46 }, LVL_HIGH, 1050000, 4 },
117 [9] = { { 960000, HFPLL, 1, 50 }, LVL_HIGH, 1050000, 4 },
Matt Wagantalld20d0942013-01-30 14:09:53 -0800118 [10] = { { 1036800, HFPLL, 1, 54 }, LVL_HIGH, 1050000, 5 },
Matt Wagantall545cd3e2012-12-07 13:07:16 -0800119 [11] = { { 1113600, HFPLL, 1, 58 }, LVL_HIGH, 1050000, 5 },
Matt Wagantalld20d0942013-01-30 14:09:53 -0800120 [12] = { { 1190400, HFPLL, 1, 62 }, LVL_HIGH, 1050000, 6 },
Matt Wagantall545cd3e2012-12-07 13:07:16 -0800121 [13] = { { 1267200, HFPLL, 1, 66 }, LVL_HIGH, 1050000, 6 },
Matt Wagantalld20d0942013-01-30 14:09:53 -0800122 [14] = { { 1344000, HFPLL, 1, 70 }, LVL_HIGH, 1050000, 7 },
Matt Wagantall545cd3e2012-12-07 13:07:16 -0800123 [15] = { { 1420800, HFPLL, 1, 74 }, LVL_HIGH, 1050000, 7 },
124 [16] = { { 1497600, HFPLL, 1, 78 }, LVL_HIGH, 1050000, 7 },
Stephen Boyd791bca92012-09-11 21:08:13 -0700125 { }
Matt Wagantalle9b715a2012-01-04 18:16:14 -0800126};
127
Matt Wagantallc8c0c3b2013-02-25 20:19:17 -0800128static struct acpu_level acpu_freq_tbl_v1_pvs0[] __initdata = {
Matt Wagantall7b14d282013-01-15 14:49:34 -0800129 { 1, { 300000, PLL_0, 0, 0 }, L2(0), 825000, 400000 },
130 { 0, { 345600, HFPLL, 2, 36 }, L2(3), 825000, 3200000 },
131 { 1, { 422400, HFPLL, 2, 44 }, L2(3), 825000, 3200000 },
132 { 0, { 499200, HFPLL, 2, 52 }, L2(6), 825000, 3200000 },
133 { 1, { 576000, HFPLL, 1, 30 }, L2(6), 825000, 3200000 },
Matt Wagantalld20d0942013-01-30 14:09:53 -0800134 { 1, { 652800, HFPLL, 1, 34 }, L2(7), 825000, 3200000 },
135 { 1, { 729600, HFPLL, 1, 38 }, L2(7), 825000, 3200000 },
136 { 0, { 806400, HFPLL, 1, 42 }, L2(10), 835000, 3200000 },
137 { 1, { 883200, HFPLL, 1, 46 }, L2(10), 845000, 3200000 },
138 { 0, { 960000, HFPLL, 1, 50 }, L2(10), 860000, 3200000 },
139 { 1, { 1036800, HFPLL, 1, 54 }, L2(10), 880000, 3200000 },
140 { 0, { 1113600, HFPLL, 1, 58 }, L2(12), 905000, 3200000 },
141 { 0, { 1190400, HFPLL, 1, 62 }, L2(12), 920000, 3200000 },
142 { 0, { 1267200, HFPLL, 1, 66 }, L2(12), 940000, 3200000 },
Matt Wagantall7b14d282013-01-15 14:49:34 -0800143 { 1, { 1344000, HFPLL, 1, 70 }, L2(12), 960000, 3200000 },
Matt Wagantalld20d0942013-01-30 14:09:53 -0800144 { 0, { 1420800, HFPLL, 1, 74 }, L2(16), 980000, 3200000 },
145 { 0, { 1497600, HFPLL, 1, 78 }, L2(16), 995000, 3200000 },
146 { 0, { 1574400, HFPLL, 1, 82 }, L2(16), 1015000, 3200000 },
147 { 0, { 1651200, HFPLL, 1, 86 }, L2(16), 1030000, 3200000 },
Michael Bohanb0138512012-12-13 10:51:45 -0800148 { 1, { 1728000, HFPLL, 1, 90 }, L2(16), 1050000, 3200000 },
Matt Wagantalle9b715a2012-01-04 18:16:14 -0800149 { 0, { 0 } }
150};
151
Matt Wagantallc8c0c3b2013-02-25 20:19:17 -0800152static struct acpu_level acpu_freq_tbl_v1_pvs1[] __initdata = {
Matt Wagantall7b14d282013-01-15 14:49:34 -0800153 { 1, { 300000, PLL_0, 0, 0 }, L2(0), 825000, 400000 },
154 { 0, { 345600, HFPLL, 2, 36 }, L2(3), 825000, 3200000 },
155 { 1, { 422400, HFPLL, 2, 44 }, L2(3), 825000, 3200000 },
156 { 0, { 499200, HFPLL, 2, 52 }, L2(6), 825000, 3200000 },
157 { 1, { 576000, HFPLL, 1, 30 }, L2(6), 825000, 3200000 },
Matt Wagantalld20d0942013-01-30 14:09:53 -0800158 { 1, { 652800, HFPLL, 1, 34 }, L2(7), 825000, 3200000 },
159 { 1, { 729600, HFPLL, 1, 38 }, L2(7), 825000, 3200000 },
160 { 0, { 806400, HFPLL, 1, 42 }, L2(10), 835000, 3200000 },
161 { 1, { 883200, HFPLL, 1, 46 }, L2(10), 845000, 3200000 },
162 { 0, { 960000, HFPLL, 1, 50 }, L2(10), 860000, 3200000 },
163 { 1, { 1036800, HFPLL, 1, 54 }, L2(10), 880000, 3200000 },
164 { 0, { 1113600, HFPLL, 1, 58 }, L2(12), 905000, 3200000 },
165 { 0, { 1190400, HFPLL, 1, 62 }, L2(12), 920000, 3200000 },
166 { 0, { 1267200, HFPLL, 1, 66 }, L2(12), 940000, 3200000 },
Matt Wagantall7b14d282013-01-15 14:49:34 -0800167 { 1, { 1344000, HFPLL, 1, 70 }, L2(12), 960000, 3200000 },
Matt Wagantalld20d0942013-01-30 14:09:53 -0800168 { 0, { 1420800, HFPLL, 1, 74 }, L2(16), 980000, 3200000 },
169 { 0, { 1497600, HFPLL, 1, 78 }, L2(16), 995000, 3200000 },
170 { 0, { 1574400, HFPLL, 1, 82 }, L2(16), 1015000, 3200000 },
171 { 0, { 1651200, HFPLL, 1, 86 }, L2(16), 1030000, 3200000 },
Matt Wagantall7b14d282013-01-15 14:49:34 -0800172 { 1, { 1728000, HFPLL, 1, 90 }, L2(16), 1050000, 3200000 },
173 { 0, { 0 } }
174};
175
Matt Wagantallc8c0c3b2013-02-25 20:19:17 -0800176static struct acpu_level acpu_freq_tbl_v1_pvs2[] __initdata = {
Matt Wagantall7b14d282013-01-15 14:49:34 -0800177 { 1, { 300000, PLL_0, 0, 0 }, L2(0), 825000, 400000 },
178 { 0, { 345600, HFPLL, 2, 36 }, L2(3), 825000, 3200000 },
179 { 1, { 422400, HFPLL, 2, 44 }, L2(3), 825000, 3200000 },
180 { 0, { 499200, HFPLL, 2, 52 }, L2(6), 825000, 3200000 },
181 { 1, { 576000, HFPLL, 1, 30 }, L2(6), 825000, 3200000 },
Matt Wagantalld20d0942013-01-30 14:09:53 -0800182 { 1, { 652800, HFPLL, 1, 34 }, L2(7), 825000, 3200000 },
183 { 1, { 729600, HFPLL, 1, 38 }, L2(7), 825000, 3200000 },
184 { 0, { 806400, HFPLL, 1, 42 }, L2(10), 825000, 3200000 },
185 { 1, { 883200, HFPLL, 1, 46 }, L2(10), 825000, 3200000 },
186 { 0, { 960000, HFPLL, 1, 50 }, L2(10), 835000, 3200000 },
187 { 1, { 1036800, HFPLL, 1, 54 }, L2(10), 855000, 3200000 },
188 { 0, { 1113600, HFPLL, 1, 58 }, L2(12), 875000, 3200000 },
189 { 0, { 1190400, HFPLL, 1, 62 }, L2(12), 895000, 3200000 },
190 { 0, { 1267200, HFPLL, 1, 66 }, L2(12), 915000, 3200000 },
Matt Wagantall7b14d282013-01-15 14:49:34 -0800191 { 1, { 1344000, HFPLL, 1, 70 }, L2(12), 930000, 3200000 },
Matt Wagantalld20d0942013-01-30 14:09:53 -0800192 { 0, { 1420800, HFPLL, 1, 74 }, L2(16), 945000, 3200000 },
193 { 0, { 1497600, HFPLL, 1, 78 }, L2(16), 960000, 3200000 },
194 { 0, { 1574400, HFPLL, 1, 82 }, L2(16), 975000, 3200000 },
195 { 0, { 1651200, HFPLL, 1, 86 }, L2(16), 990000, 3200000 },
Matt Wagantall7b14d282013-01-15 14:49:34 -0800196 { 1, { 1728000, HFPLL, 1, 90 }, L2(16), 1000000, 3200000 },
197 { 0, { 0 } }
198};
199
Matt Wagantallc8c0c3b2013-02-25 20:19:17 -0800200static struct acpu_level acpu_freq_tbl_v1_pvs3[] __initdata = {
Matt Wagantall7b14d282013-01-15 14:49:34 -0800201 { 1, { 300000, PLL_0, 0, 0 }, L2(0), 825000, 400000 },
202 { 0, { 345600, HFPLL, 2, 36 }, L2(3), 825000, 3200000 },
203 { 1, { 422400, HFPLL, 2, 44 }, L2(3), 825000, 3200000 },
204 { 0, { 499200, HFPLL, 2, 52 }, L2(6), 825000, 3200000 },
205 { 1, { 576000, HFPLL, 1, 30 }, L2(6), 825000, 3200000 },
Matt Wagantalld20d0942013-01-30 14:09:53 -0800206 { 1, { 652800, HFPLL, 1, 34 }, L2(7), 825000, 3200000 },
207 { 1, { 729600, HFPLL, 1, 38 }, L2(7), 825000, 3200000 },
208 { 0, { 806400, HFPLL, 1, 42 }, L2(10), 825000, 3200000 },
209 { 1, { 883200, HFPLL, 1, 46 }, L2(10), 825000, 3200000 },
210 { 0, { 960000, HFPLL, 1, 50 }, L2(10), 835000, 3200000 },
211 { 1, { 1036800, HFPLL, 1, 54 }, L2(10), 855000, 3200000 },
212 { 0, { 1113600, HFPLL, 1, 58 }, L2(12), 875000, 3200000 },
213 { 0, { 1190400, HFPLL, 1, 62 }, L2(12), 895000, 3200000 },
214 { 0, { 1267200, HFPLL, 1, 66 }, L2(12), 915000, 3200000 },
Matt Wagantall7b14d282013-01-15 14:49:34 -0800215 { 1, { 1344000, HFPLL, 1, 70 }, L2(12), 930000, 3200000 },
Matt Wagantalld20d0942013-01-30 14:09:53 -0800216 { 0, { 1420800, HFPLL, 1, 74 }, L2(16), 945000, 3200000 },
217 { 0, { 1497600, HFPLL, 1, 78 }, L2(16), 960000, 3200000 },
218 { 0, { 1574400, HFPLL, 1, 82 }, L2(16), 975000, 3200000 },
219 { 0, { 1651200, HFPLL, 1, 86 }, L2(16), 990000, 3200000 },
Matt Wagantall7b14d282013-01-15 14:49:34 -0800220 { 1, { 1728000, HFPLL, 1, 90 }, L2(16), 1000000, 3200000 },
221 { 0, { 0 } }
222};
223
Matt Wagantallc8c0c3b2013-02-25 20:19:17 -0800224static struct acpu_level acpu_freq_tbl_v1_pvs4[] __initdata = {
Matt Wagantall7b14d282013-01-15 14:49:34 -0800225 { 1, { 300000, PLL_0, 0, 0 }, L2(0), 825000, 400000 },
226 { 0, { 345600, HFPLL, 2, 36 }, L2(3), 825000, 3200000 },
227 { 1, { 422400, HFPLL, 2, 44 }, L2(3), 825000, 3200000 },
228 { 0, { 499200, HFPLL, 2, 52 }, L2(6), 825000, 3200000 },
229 { 1, { 576000, HFPLL, 1, 30 }, L2(6), 825000, 3200000 },
Matt Wagantalld20d0942013-01-30 14:09:53 -0800230 { 1, { 652800, HFPLL, 1, 34 }, L2(7), 825000, 3200000 },
231 { 1, { 729600, HFPLL, 1, 38 }, L2(7), 825000, 3200000 },
232 { 0, { 806400, HFPLL, 1, 42 }, L2(10), 825000, 3200000 },
233 { 1, { 883200, HFPLL, 1, 46 }, L2(10), 825000, 3200000 },
234 { 0, { 960000, HFPLL, 1, 50 }, L2(10), 825000, 3200000 },
235 { 1, { 1036800, HFPLL, 1, 54 }, L2(10), 825000, 3200000 },
236 { 0, { 1113600, HFPLL, 1, 58 }, L2(12), 835000, 3200000 },
237 { 0, { 1190400, HFPLL, 1, 62 }, L2(12), 855000, 3200000 },
238 { 0, { 1267200, HFPLL, 1, 66 }, L2(12), 870000, 3200000 },
Matt Wagantall7b14d282013-01-15 14:49:34 -0800239 { 1, { 1344000, HFPLL, 1, 70 }, L2(12), 885000, 3200000 },
Matt Wagantalld20d0942013-01-30 14:09:53 -0800240 { 0, { 1420800, HFPLL, 1, 74 }, L2(16), 900000, 3200000 },
241 { 0, { 1497600, HFPLL, 1, 78 }, L2(16), 910000, 3200000 },
242 { 0, { 1574400, HFPLL, 1, 82 }, L2(16), 925000, 3200000 },
243 { 0, { 1651200, HFPLL, 1, 86 }, L2(16), 940000, 3200000 },
Matt Wagantall7b14d282013-01-15 14:49:34 -0800244 { 1, { 1728000, HFPLL, 1, 90 }, L2(16), 950000, 3200000 },
245 { 0, { 0 } }
246};
247
Matt Wagantall63ac3882013-03-07 16:51:14 -0800248static struct msm_bus_paths bw_level_tbl_v2[] __initdata = {
249 [0] = BW_MBPS(600), /* At least 75 MHz on bus. */
250 [1] = BW_MBPS(800), /* At least 100 MHz on bus. */
251 [2] = BW_MBPS(1200), /* At least 150 MHz on bus. */
252 [3] = BW_MBPS(1600), /* At least 200 MHz on bus. */
253 [4] = BW_MBPS(2456), /* At least 307 MHz on bus. */
254 [5] = BW_MBPS(3680), /* At least 460 MHz on bus. */
255 [6] = BW_MBPS(4912), /* At least 614 MHz on bus. */
256 [7] = BW_MBPS(6400), /* At least 800 MHz on bus. */
257 [8] = BW_MBPS(7448), /* At least 931 MHz on bus. */
258};
259
Matt Wagantall29b7b472013-03-07 17:09:58 -0800260static struct l2_level l2_freq_tbl_v2[] __initdata = {
261 [0] = { { 300000, PLL_0, 0, 0 }, LVL_LOW, 950000, 0 },
Matt Wagantall6f2dcea2013-03-22 14:57:44 -0700262 [1] = { { 345600, HFPLL, 2, 36 }, LVL_LOW, 950000, 1 },
263 [2] = { { 422400, HFPLL, 2, 44 }, LVL_LOW, 950000, 1 },
264 [3] = { { 499200, HFPLL, 2, 52 }, LVL_LOW, 950000, 2 },
265 [4] = { { 576000, HFPLL, 1, 30 }, LVL_LOW, 950000, 3 },
Matt Wagantall29b7b472013-03-07 17:09:58 -0800266 [5] = { { 652800, HFPLL, 1, 34 }, LVL_NOM, 950000, 3 },
267 [6] = { { 729600, HFPLL, 1, 38 }, LVL_NOM, 950000, 3 },
Matt Wagantall6f2dcea2013-03-22 14:57:44 -0700268 [7] = { { 806400, HFPLL, 1, 42 }, LVL_NOM, 950000, 4 },
269 [8] = { { 883200, HFPLL, 1, 46 }, LVL_NOM, 950000, 4 },
270 [9] = { { 960000, HFPLL, 1, 50 }, LVL_NOM, 950000, 4 },
271 [10] = { { 1036800, HFPLL, 1, 54 }, LVL_NOM, 950000, 5 },
Matt Wagantall29b7b472013-03-07 17:09:58 -0800272 [11] = { { 1113600, HFPLL, 1, 58 }, LVL_HIGH, 1050000, 5 },
273 [12] = { { 1190400, HFPLL, 1, 62 }, LVL_HIGH, 1050000, 6 },
274 [13] = { { 1267200, HFPLL, 1, 66 }, LVL_HIGH, 1050000, 6 },
275 [14] = { { 1344000, HFPLL, 1, 70 }, LVL_HIGH, 1050000, 7 },
276 [15] = { { 1420800, HFPLL, 1, 74 }, LVL_HIGH, 1050000, 7 },
277 [16] = { { 1497600, HFPLL, 1, 78 }, LVL_HIGH, 1050000, 7 },
Matt Wagantall63ac3882013-03-07 16:51:14 -0800278 [17] = { { 1574400, HFPLL, 1, 82 }, LVL_HIGH, 1050000, 8 },
279 [18] = { { 1651200, HFPLL, 1, 86 }, LVL_HIGH, 1050000, 8 },
280 [19] = { { 1728000, HFPLL, 1, 90 }, LVL_HIGH, 1050000, 8 },
Matt Wagantall29b7b472013-03-07 17:09:58 -0800281 { }
282};
283
Matt Wagantallc8c0c3b2013-02-25 20:19:17 -0800284static struct acpu_level acpu_freq_tbl_2g_pvs0[] __initdata = {
285 { 1, { 300000, PLL_0, 0, 0 }, L2(0), 815000, 400000 },
286 { 0, { 345600, HFPLL, 2, 36 }, L2(3), 825000, 3200000 },
287 { 1, { 422400, HFPLL, 2, 44 }, L2(3), 835000, 3200000 },
288 { 0, { 499200, HFPLL, 2, 52 }, L2(6), 845000, 3200000 },
289 { 1, { 576000, HFPLL, 1, 30 }, L2(6), 855000, 3200000 },
290 { 1, { 652800, HFPLL, 1, 34 }, L2(7), 865000, 3200000 },
291 { 1, { 729600, HFPLL, 1, 38 }, L2(7), 875000, 3200000 },
292 { 0, { 806400, HFPLL, 1, 42 }, L2(10), 890000, 3200000 },
293 { 1, { 883200, HFPLL, 1, 46 }, L2(10), 900000, 3200000 },
294 { 0, { 960000, HFPLL, 1, 50 }, L2(10), 915000, 3200000 },
295 { 1, { 1036800, HFPLL, 1, 54 }, L2(10), 925000, 3200000 },
296 { 0, { 1113600, HFPLL, 1, 58 }, L2(12), 940000, 3200000 },
297 { 0, { 1190400, HFPLL, 1, 62 }, L2(12), 950000, 3200000 },
298 { 0, { 1267200, HFPLL, 1, 66 }, L2(12), 965000, 3200000 },
299 { 1, { 1344000, HFPLL, 1, 70 }, L2(12), 980000, 3200000 },
300 { 0, { 1420800, HFPLL, 1, 74 }, L2(16), 995000, 3200000 },
301 { 0, { 1497600, HFPLL, 1, 78 }, L2(16), 1010000, 3200000 },
302 { 0, { 1574400, HFPLL, 1, 82 }, L2(16), 1025000, 3200000 },
303 { 0, { 1651200, HFPLL, 1, 86 }, L2(16), 1040000, 3200000 },
304 { 1, { 1728000, HFPLL, 1, 90 }, L2(16), 1055000, 3200000 },
Matt Wagantall29b7b472013-03-07 17:09:58 -0800305 { 0, { 1804800, HFPLL, 1, 94 }, L2(19), 1070000, 3200000 },
306 { 0, { 1881600, HFPLL, 1, 98 }, L2(19), 1085000, 3200000 },
307 { 1, { 1958400, HFPLL, 1, 102 }, L2(19), 1100000, 3200000 },
Matt Wagantallc8c0c3b2013-02-25 20:19:17 -0800308 { 0, { 0 } }
309};
310
Matt Wagantalld33ed482013-03-12 16:54:59 -0700311static struct acpu_level acpu_freq_tbl_2g_pvs1[] __initdata = {
312 { 1, { 300000, PLL_0, 0, 0 }, L2(0), 800000, 400000 },
313 { 0, { 345600, HFPLL, 2, 36 }, L2(3), 810000, 3200000 },
314 { 1, { 422400, HFPLL, 2, 44 }, L2(3), 820000, 3200000 },
315 { 0, { 499200, HFPLL, 2, 52 }, L2(6), 830000, 3200000 },
316 { 1, { 576000, HFPLL, 1, 30 }, L2(6), 840000, 3200000 },
317 { 1, { 652800, HFPLL, 1, 34 }, L2(7), 850000, 3200000 },
318 { 1, { 729600, HFPLL, 1, 38 }, L2(7), 860000, 3200000 },
319 { 0, { 806400, HFPLL, 1, 42 }, L2(10), 875000, 3200000 },
320 { 1, { 883200, HFPLL, 1, 46 }, L2(10), 885000, 3200000 },
321 { 0, { 960000, HFPLL, 1, 50 }, L2(10), 895000, 3200000 },
322 { 1, { 1036800, HFPLL, 1, 54 }, L2(10), 910000, 3200000 },
323 { 0, { 1113600, HFPLL, 1, 58 }, L2(12), 920000, 3200000 },
324 { 0, { 1190400, HFPLL, 1, 62 }, L2(12), 930000, 3200000 },
325 { 0, { 1267200, HFPLL, 1, 66 }, L2(12), 945000, 3200000 },
326 { 1, { 1344000, HFPLL, 1, 70 }, L2(12), 960000, 3200000 },
327 { 0, { 1420800, HFPLL, 1, 74 }, L2(16), 975000, 3200000 },
328 { 0, { 1497600, HFPLL, 1, 78 }, L2(16), 990000, 3200000 },
329 { 0, { 1574400, HFPLL, 1, 82 }, L2(16), 1005000, 3200000 },
330 { 0, { 1651200, HFPLL, 1, 86 }, L2(16), 1020000, 3200000 },
331 { 1, { 1728000, HFPLL, 1, 90 }, L2(16), 1030000, 3200000 },
332 { 0, { 1804800, HFPLL, 1, 94 }, L2(19), 1045000, 3200000 },
333 { 0, { 1881600, HFPLL, 1, 98 }, L2(19), 1060000, 3200000 },
334 { 1, { 1958400, HFPLL, 1, 102 }, L2(19), 1075000, 3200000 },
335 { 0, { 0 } }
336};
337
338static struct acpu_level acpu_freq_tbl_2g_pvs2[] __initdata = {
339 { 1, { 300000, PLL_0, 0, 0 }, L2(0), 785000, 400000 },
340 { 0, { 345600, HFPLL, 2, 36 }, L2(3), 795000, 3200000 },
341 { 1, { 422400, HFPLL, 2, 44 }, L2(3), 805000, 3200000 },
342 { 0, { 499200, HFPLL, 2, 52 }, L2(6), 815000, 3200000 },
343 { 1, { 576000, HFPLL, 1, 30 }, L2(6), 825000, 3200000 },
344 { 1, { 652800, HFPLL, 1, 34 }, L2(7), 835000, 3200000 },
345 { 1, { 729600, HFPLL, 1, 38 }, L2(7), 845000, 3200000 },
346 { 0, { 806400, HFPLL, 1, 42 }, L2(10), 855000, 3200000 },
347 { 1, { 883200, HFPLL, 1, 46 }, L2(10), 865000, 3200000 },
348 { 0, { 960000, HFPLL, 1, 50 }, L2(10), 875000, 3200000 },
349 { 1, { 1036800, HFPLL, 1, 54 }, L2(10), 890000, 3200000 },
350 { 0, { 1113600, HFPLL, 1, 58 }, L2(12), 900000, 3200000 },
351 { 0, { 1190400, HFPLL, 1, 62 }, L2(12), 910000, 3200000 },
352 { 0, { 1267200, HFPLL, 1, 66 }, L2(12), 925000, 3200000 },
353 { 1, { 1344000, HFPLL, 1, 70 }, L2(12), 940000, 3200000 },
354 { 0, { 1420800, HFPLL, 1, 74 }, L2(16), 955000, 3200000 },
355 { 0, { 1497600, HFPLL, 1, 78 }, L2(16), 970000, 3200000 },
356 { 0, { 1574400, HFPLL, 1, 82 }, L2(16), 980000, 3200000 },
357 { 0, { 1651200, HFPLL, 1, 86 }, L2(16), 995000, 3200000 },
358 { 1, { 1728000, HFPLL, 1, 90 }, L2(16), 1005000, 3200000 },
359 { 0, { 1804800, HFPLL, 1, 94 }, L2(19), 1020000, 3200000 },
360 { 0, { 1881600, HFPLL, 1, 98 }, L2(19), 1035000, 3200000 },
361 { 1, { 1958400, HFPLL, 1, 102 }, L2(19), 1050000, 3200000 },
362 { 0, { 0 } }
363};
364
365static struct acpu_level acpu_freq_tbl_2g_pvs3[] __initdata = {
366 { 1, { 300000, PLL_0, 0, 0 }, L2(0), 775000, 400000 },
367 { 0, { 345600, HFPLL, 2, 36 }, L2(3), 780000, 3200000 },
368 { 1, { 422400, HFPLL, 2, 44 }, L2(3), 790000, 3200000 },
369 { 0, { 499200, HFPLL, 2, 52 }, L2(6), 800000, 3200000 },
370 { 1, { 576000, HFPLL, 1, 30 }, L2(6), 810000, 3200000 },
371 { 1, { 652800, HFPLL, 1, 34 }, L2(7), 820000, 3200000 },
372 { 1, { 729600, HFPLL, 1, 38 }, L2(7), 830000, 3200000 },
373 { 0, { 806400, HFPLL, 1, 42 }, L2(10), 840000, 3200000 },
374 { 1, { 883200, HFPLL, 1, 46 }, L2(10), 850000, 3200000 },
375 { 0, { 960000, HFPLL, 1, 50 }, L2(10), 860000, 3200000 },
376 { 1, { 1036800, HFPLL, 1, 54 }, L2(10), 875000, 3200000 },
377 { 0, { 1113600, HFPLL, 1, 58 }, L2(12), 885000, 3200000 },
378 { 0, { 1190400, HFPLL, 1, 62 }, L2(12), 895000, 3200000 },
379 { 0, { 1267200, HFPLL, 1, 66 }, L2(12), 910000, 3200000 },
380 { 1, { 1344000, HFPLL, 1, 70 }, L2(12), 925000, 3200000 },
381 { 0, { 1420800, HFPLL, 1, 74 }, L2(16), 935000, 3200000 },
382 { 0, { 1497600, HFPLL, 1, 78 }, L2(16), 950000, 3200000 },
383 { 0, { 1574400, HFPLL, 1, 82 }, L2(16), 960000, 3200000 },
384 { 0, { 1651200, HFPLL, 1, 86 }, L2(16), 970000, 3200000 },
385 { 1, { 1728000, HFPLL, 1, 90 }, L2(16), 985000, 3200000 },
386 { 0, { 1804800, HFPLL, 1, 94 }, L2(19), 995000, 3200000 },
387 { 0, { 1881600, HFPLL, 1, 98 }, L2(19), 1010000, 3200000 },
388 { 1, { 1958400, HFPLL, 1, 102 }, L2(19), 1025000, 3200000 },
389 { 0, { 0 } }
390};
391
392static struct acpu_level acpu_freq_tbl_2g_pvs4[] __initdata = {
393 { 1, { 300000, PLL_0, 0, 0 }, L2(0), 775000, 400000 },
394 { 0, { 345600, HFPLL, 2, 36 }, L2(3), 775000, 3200000 },
395 { 1, { 422400, HFPLL, 2, 44 }, L2(3), 780000, 3200000 },
396 { 0, { 499200, HFPLL, 2, 52 }, L2(6), 790000, 3200000 },
397 { 1, { 576000, HFPLL, 1, 30 }, L2(6), 800000, 3200000 },
398 { 1, { 652800, HFPLL, 1, 34 }, L2(7), 810000, 3200000 },
399 { 1, { 729600, HFPLL, 1, 38 }, L2(7), 820000, 3200000 },
400 { 0, { 806400, HFPLL, 1, 42 }, L2(10), 830000, 3200000 },
401 { 1, { 883200, HFPLL, 1, 46 }, L2(10), 840000, 3200000 },
402 { 0, { 960000, HFPLL, 1, 50 }, L2(10), 850000, 3200000 },
403 { 1, { 1036800, HFPLL, 1, 54 }, L2(10), 860000, 3200000 },
404 { 0, { 1113600, HFPLL, 1, 58 }, L2(12), 870000, 3200000 },
405 { 0, { 1190400, HFPLL, 1, 62 }, L2(12), 880000, 3200000 },
406 { 0, { 1267200, HFPLL, 1, 66 }, L2(12), 895000, 3200000 },
407 { 1, { 1344000, HFPLL, 1, 70 }, L2(12), 910000, 3200000 },
408 { 0, { 1420800, HFPLL, 1, 74 }, L2(16), 920000, 3200000 },
409 { 0, { 1497600, HFPLL, 1, 78 }, L2(16), 930000, 3200000 },
410 { 0, { 1574400, HFPLL, 1, 82 }, L2(16), 940000, 3200000 },
411 { 0, { 1651200, HFPLL, 1, 86 }, L2(16), 950000, 3200000 },
412 { 1, { 1728000, HFPLL, 1, 90 }, L2(16), 960000, 3200000 },
413 { 0, { 1804800, HFPLL, 1, 94 }, L2(19), 975000, 3200000 },
414 { 0, { 1881600, HFPLL, 1, 98 }, L2(19), 985000, 3200000 },
415 { 1, { 1958400, HFPLL, 1, 102 }, L2(19), 1000000, 3200000 },
416 { 0, { 0 } }
417};
418
419static struct acpu_level acpu_freq_tbl_2g_pvs5[] __initdata = {
420 { 1, { 300000, PLL_0, 0, 0 }, L2(0), 750000, 400000 },
421 { 0, { 345600, HFPLL, 2, 36 }, L2(3), 760000, 3200000 },
422 { 1, { 422400, HFPLL, 2, 44 }, L2(3), 770000, 3200000 },
423 { 0, { 499200, HFPLL, 2, 52 }, L2(6), 780000, 3200000 },
424 { 1, { 576000, HFPLL, 1, 30 }, L2(6), 790000, 3200000 },
425 { 1, { 652800, HFPLL, 1, 34 }, L2(7), 800000, 3200000 },
426 { 1, { 729600, HFPLL, 1, 38 }, L2(7), 810000, 3200000 },
427 { 0, { 806400, HFPLL, 1, 42 }, L2(10), 820000, 3200000 },
428 { 1, { 883200, HFPLL, 1, 46 }, L2(10), 830000, 3200000 },
429 { 0, { 960000, HFPLL, 1, 50 }, L2(10), 840000, 3200000 },
430 { 1, { 1036800, HFPLL, 1, 54 }, L2(10), 850000, 3200000 },
431 { 0, { 1113600, HFPLL, 1, 58 }, L2(12), 860000, 3200000 },
432 { 0, { 1190400, HFPLL, 1, 62 }, L2(12), 870000, 3200000 },
433 { 0, { 1267200, HFPLL, 1, 66 }, L2(12), 880000, 3200000 },
434 { 1, { 1344000, HFPLL, 1, 70 }, L2(12), 890000, 3200000 },
435 { 0, { 1420800, HFPLL, 1, 74 }, L2(16), 900000, 3200000 },
436 { 0, { 1497600, HFPLL, 1, 78 }, L2(16), 910000, 3200000 },
437 { 0, { 1574400, HFPLL, 1, 82 }, L2(16), 920000, 3200000 },
438 { 0, { 1651200, HFPLL, 1, 86 }, L2(16), 930000, 3200000 },
439 { 1, { 1728000, HFPLL, 1, 90 }, L2(16), 940000, 3200000 },
440 { 0, { 1804800, HFPLL, 1, 94 }, L2(19), 955000, 3200000 },
441 { 0, { 1881600, HFPLL, 1, 98 }, L2(19), 965000, 3200000 },
442 { 1, { 1958400, HFPLL, 1, 102 }, L2(19), 975000, 3200000 },
443 { 0, { 0 } }
444};
445
446static struct acpu_level acpu_freq_tbl_2g_pvs6[] __initdata = {
447 { 1, { 300000, PLL_0, 0, 0 }, L2(0), 750000, 400000 },
448 { 0, { 345600, HFPLL, 2, 36 }, L2(3), 750000, 3200000 },
449 { 1, { 422400, HFPLL, 2, 44 }, L2(3), 760000, 3200000 },
450 { 0, { 499200, HFPLL, 2, 52 }, L2(6), 770000, 3200000 },
451 { 1, { 576000, HFPLL, 1, 30 }, L2(6), 780000, 3200000 },
452 { 1, { 652800, HFPLL, 1, 34 }, L2(7), 790000, 3200000 },
453 { 1, { 729600, HFPLL, 1, 38 }, L2(7), 800000, 3200000 },
454 { 0, { 806400, HFPLL, 1, 42 }, L2(10), 810000, 3200000 },
455 { 1, { 883200, HFPLL, 1, 46 }, L2(10), 820000, 3200000 },
456 { 0, { 960000, HFPLL, 1, 50 }, L2(10), 830000, 3200000 },
457 { 1, { 1036800, HFPLL, 1, 54 }, L2(10), 840000, 3200000 },
458 { 0, { 1113600, HFPLL, 1, 58 }, L2(12), 850000, 3200000 },
459 { 0, { 1190400, HFPLL, 1, 62 }, L2(12), 860000, 3200000 },
460 { 0, { 1267200, HFPLL, 1, 66 }, L2(12), 870000, 3200000 },
461 { 1, { 1344000, HFPLL, 1, 70 }, L2(12), 875000, 3200000 },
462 { 0, { 1420800, HFPLL, 1, 74 }, L2(16), 885000, 3200000 },
463 { 0, { 1497600, HFPLL, 1, 78 }, L2(16), 895000, 3200000 },
464 { 0, { 1574400, HFPLL, 1, 82 }, L2(16), 905000, 3200000 },
465 { 0, { 1651200, HFPLL, 1, 86 }, L2(16), 915000, 3200000 },
466 { 1, { 1728000, HFPLL, 1, 90 }, L2(16), 920000, 3200000 },
467 { 0, { 1804800, HFPLL, 1, 94 }, L2(19), 930000, 3200000 },
468 { 0, { 1881600, HFPLL, 1, 98 }, L2(19), 940000, 3200000 },
469 { 1, { 1958400, HFPLL, 1, 102 }, L2(19), 950000, 3200000 },
470 { 0, { 0 } }
471};
472
Matt Wagantallf169c7c2013-04-01 20:48:28 -0700473static struct acpu_level acpu_freq_tbl_2p2g_pvs0[] __initdata = {
474 { 1, { 300000, PLL_0, 0, 0 }, L2(0), 800000, 400000 },
475 { 0, { 345600, HFPLL, 2, 36 }, L2(3), 800000, 3200000 },
476 { 1, { 422400, HFPLL, 2, 44 }, L2(3), 805000, 3200000 },
477 { 0, { 499200, HFPLL, 2, 52 }, L2(6), 815000, 3200000 },
478 { 1, { 576000, HFPLL, 1, 30 }, L2(6), 825000, 3200000 },
479 { 1, { 652800, HFPLL, 1, 34 }, L2(7), 835000, 3200000 },
480 { 1, { 729600, HFPLL, 1, 38 }, L2(7), 845000, 3200000 },
481 { 0, { 806400, HFPLL, 1, 42 }, L2(10), 855000, 3200000 },
482 { 1, { 883200, HFPLL, 1, 46 }, L2(10), 865000, 3200000 },
483 { 0, { 960000, HFPLL, 1, 50 }, L2(10), 875000, 3200000 },
484 { 1, { 1036800, HFPLL, 1, 54 }, L2(10), 890000, 3200000 },
485 { 0, { 1113600, HFPLL, 1, 58 }, L2(12), 900000, 3200000 },
486 { 0, { 1190400, HFPLL, 1, 62 }, L2(12), 915000, 3200000 },
487 { 0, { 1267200, HFPLL, 1, 66 }, L2(12), 925000, 3200000 },
488 { 1, { 1344000, HFPLL, 1, 70 }, L2(12), 940000, 3200000 },
489 { 0, { 1420800, HFPLL, 1, 74 }, L2(16), 950000, 3200000 },
490 { 0, { 1497600, HFPLL, 1, 78 }, L2(16), 965000, 3200000 },
491 { 0, { 1574400, HFPLL, 1, 82 }, L2(16), 980000, 3200000 },
492 { 0, { 1651200, HFPLL, 1, 86 }, L2(16), 995000, 3200000 },
493 { 1, { 1728000, HFPLL, 1, 90 }, L2(16), 1010000, 3200000 },
494 { 0, { 1804800, HFPLL, 1, 94 }, L2(19), 1025000, 3200000 },
495 { 0, { 1881600, HFPLL, 1, 98 }, L2(19), 1040000, 3200000 },
496 { 0, { 1958400, HFPLL, 1, 102 }, L2(19), 1055000, 3200000 },
497 { 1, { 2035200, HFPLL, 1, 106 }, L2(19), 1070000, 3200000 },
498 { 0, { 2112000, HFPLL, 1, 110 }, L2(19), 1085000, 3200000 },
499 { 1, { 2150400, HFPLL, 1, 112 }, L2(19), 1100000, 3200000 },
500 { 0, { 0 } }
501};
502
503static struct acpu_level acpu_freq_tbl_2p2g_pvs1[] __initdata = {
504 { 1, { 300000, PLL_0, 0, 0 }, L2(0), 800000, 400000 },
505 { 0, { 345600, HFPLL, 2, 36 }, L2(3), 800000, 3200000 },
506 { 1, { 422400, HFPLL, 2, 44 }, L2(3), 800000, 3200000 },
507 { 0, { 499200, HFPLL, 2, 52 }, L2(6), 800000, 3200000 },
508 { 1, { 576000, HFPLL, 1, 30 }, L2(6), 810000, 3200000 },
509 { 1, { 652800, HFPLL, 1, 34 }, L2(7), 820000, 3200000 },
510 { 1, { 729600, HFPLL, 1, 38 }, L2(7), 830000, 3200000 },
511 { 0, { 806400, HFPLL, 1, 42 }, L2(10), 840000, 3200000 },
512 { 1, { 883200, HFPLL, 1, 46 }, L2(10), 850000, 3200000 },
513 { 0, { 960000, HFPLL, 1, 50 }, L2(10), 860000, 3200000 },
514 { 1, { 1036800, HFPLL, 1, 54 }, L2(10), 875000, 3200000 },
515 { 0, { 1113600, HFPLL, 1, 58 }, L2(12), 885000, 3200000 },
516 { 0, { 1190400, HFPLL, 1, 62 }, L2(12), 895000, 3200000 },
517 { 0, { 1267200, HFPLL, 1, 66 }, L2(12), 910000, 3200000 },
518 { 1, { 1344000, HFPLL, 1, 70 }, L2(12), 920000, 3200000 },
519 { 0, { 1420800, HFPLL, 1, 74 }, L2(16), 930000, 3200000 },
520 { 0, { 1497600, HFPLL, 1, 78 }, L2(16), 945000, 3200000 },
521 { 0, { 1574400, HFPLL, 1, 82 }, L2(16), 960000, 3200000 },
522 { 0, { 1651200, HFPLL, 1, 86 }, L2(16), 975000, 3200000 },
523 { 1, { 1728000, HFPLL, 1, 90 }, L2(16), 990000, 3200000 },
524 { 0, { 1804800, HFPLL, 1, 94 }, L2(19), 1005000, 3200000 },
525 { 0, { 1881600, HFPLL, 1, 98 }, L2(19), 1020000, 3200000 },
526 { 0, { 1958400, HFPLL, 1, 102 }, L2(19), 1030000, 3200000 },
527 { 1, { 2035200, HFPLL, 1, 106 }, L2(19), 1045000, 3200000 },
528 { 0, { 2112000, HFPLL, 1, 110 }, L2(19), 1060000, 3200000 },
529 { 1, { 2150400, HFPLL, 1, 112 }, L2(19), 1075000, 3200000 },
530 { 0, { 0 } }
531};
532
533static struct acpu_level acpu_freq_tbl_2p2g_pvs2[] __initdata = {
534 { 1, { 300000, PLL_0, 0, 0 }, L2(0), 775000, 400000 },
535 { 0, { 345600, HFPLL, 2, 36 }, L2(3), 775000, 3200000 },
536 { 1, { 422400, HFPLL, 2, 44 }, L2(3), 775000, 3200000 },
537 { 0, { 499200, HFPLL, 2, 52 }, L2(6), 785000, 3200000 },
538 { 1, { 576000, HFPLL, 1, 30 }, L2(6), 795000, 3200000 },
539 { 1, { 652800, HFPLL, 1, 34 }, L2(7), 805000, 3200000 },
540 { 1, { 729600, HFPLL, 1, 38 }, L2(7), 815000, 3200000 },
541 { 0, { 806400, HFPLL, 1, 42 }, L2(10), 825000, 3200000 },
542 { 1, { 883200, HFPLL, 1, 46 }, L2(10), 835000, 3200000 },
543 { 0, { 960000, HFPLL, 1, 50 }, L2(10), 845000, 3200000 },
544 { 1, { 1036800, HFPLL, 1, 54 }, L2(10), 855000, 3200000 },
545 { 0, { 1113600, HFPLL, 1, 58 }, L2(12), 865000, 3200000 },
546 { 0, { 1190400, HFPLL, 1, 62 }, L2(12), 875000, 3200000 },
547 { 0, { 1267200, HFPLL, 1, 66 }, L2(12), 890000, 3200000 },
548 { 1, { 1344000, HFPLL, 1, 70 }, L2(12), 900000, 3200000 },
549 { 0, { 1420800, HFPLL, 1, 74 }, L2(16), 910000, 3200000 },
550 { 0, { 1497600, HFPLL, 1, 78 }, L2(16), 925000, 3200000 },
551 { 0, { 1574400, HFPLL, 1, 82 }, L2(16), 940000, 3200000 },
552 { 0, { 1651200, HFPLL, 1, 86 }, L2(16), 955000, 3200000 },
553 { 1, { 1728000, HFPLL, 1, 90 }, L2(16), 970000, 3200000 },
554 { 0, { 1804800, HFPLL, 1, 94 }, L2(19), 980000, 3200000 },
555 { 0, { 1881600, HFPLL, 1, 98 }, L2(19), 995000, 3200000 },
556 { 0, { 1958400, HFPLL, 1, 102 }, L2(19), 1005000, 3200000 },
557 { 1, { 2035200, HFPLL, 1, 106 }, L2(19), 1020000, 3200000 },
558 { 0, { 2112000, HFPLL, 1, 110 }, L2(19), 1035000, 3200000 },
559 { 1, { 2150400, HFPLL, 1, 112 }, L2(19), 1050000, 3200000 },
560 { 0, { 0 } }
561};
562
563static struct acpu_level acpu_freq_tbl_2p2g_pvs3[] __initdata = {
564 { 1, { 300000, PLL_0, 0, 0 }, L2(0), 775000, 400000 },
565 { 0, { 345600, HFPLL, 2, 36 }, L2(3), 775000, 3200000 },
566 { 1, { 422400, HFPLL, 2, 44 }, L2(3), 775000, 3200000 },
567 { 0, { 499200, HFPLL, 2, 52 }, L2(6), 775000, 3200000 },
568 { 1, { 576000, HFPLL, 1, 30 }, L2(6), 780000, 3200000 },
569 { 1, { 652800, HFPLL, 1, 34 }, L2(7), 790000, 3200000 },
570 { 1, { 729600, HFPLL, 1, 38 }, L2(7), 800000, 3200000 },
571 { 0, { 806400, HFPLL, 1, 42 }, L2(10), 810000, 3200000 },
572 { 1, { 883200, HFPLL, 1, 46 }, L2(10), 820000, 3200000 },
573 { 0, { 960000, HFPLL, 1, 50 }, L2(10), 830000, 3200000 },
574 { 1, { 1036800, HFPLL, 1, 54 }, L2(10), 840000, 3200000 },
575 { 0, { 1113600, HFPLL, 1, 58 }, L2(12), 850000, 3200000 },
576 { 0, { 1190400, HFPLL, 1, 62 }, L2(12), 860000, 3200000 },
577 { 0, { 1267200, HFPLL, 1, 66 }, L2(12), 875000, 3200000 },
578 { 1, { 1344000, HFPLL, 1, 70 }, L2(12), 885000, 3200000 },
579 { 0, { 1420800, HFPLL, 1, 74 }, L2(16), 895000, 3200000 },
580 { 0, { 1497600, HFPLL, 1, 78 }, L2(16), 910000, 3200000 },
581 { 0, { 1574400, HFPLL, 1, 82 }, L2(16), 925000, 3200000 },
582 { 0, { 1651200, HFPLL, 1, 86 }, L2(16), 935000, 3200000 },
583 { 1, { 1728000, HFPLL, 1, 90 }, L2(16), 950000, 3200000 },
584 { 0, { 1804800, HFPLL, 1, 94 }, L2(19), 960000, 3200000 },
585 { 0, { 1881600, HFPLL, 1, 98 }, L2(19), 970000, 3200000 },
586 { 0, { 1958400, HFPLL, 1, 102 }, L2(19), 985000, 3200000 },
587 { 1, { 2035200, HFPLL, 1, 106 }, L2(19), 995000, 3200000 },
588 { 0, { 2112000, HFPLL, 1, 110 }, L2(19), 1010000, 3200000 },
589 { 1, { 2150400, HFPLL, 1, 112 }, L2(19), 1025000, 3200000 },
590 { 0, { 0 } }
591};
592
593static struct acpu_level acpu_freq_tbl_2p2g_pvs4[] __initdata = {
594 { 1, { 300000, PLL_0, 0, 0 }, L2(0), 775000, 400000 },
595 { 0, { 345600, HFPLL, 2, 36 }, L2(3), 775000, 3200000 },
596 { 1, { 422400, HFPLL, 2, 44 }, L2(3), 775000, 3200000 },
597 { 0, { 499200, HFPLL, 2, 52 }, L2(6), 775000, 3200000 },
598 { 1, { 576000, HFPLL, 1, 30 }, L2(6), 775000, 3200000 },
599 { 1, { 652800, HFPLL, 1, 34 }, L2(7), 780000, 3200000 },
600 { 1, { 729600, HFPLL, 1, 38 }, L2(7), 790000, 3200000 },
601 { 0, { 806400, HFPLL, 1, 42 }, L2(10), 800000, 3200000 },
602 { 1, { 883200, HFPLL, 1, 46 }, L2(10), 810000, 3200000 },
603 { 0, { 960000, HFPLL, 1, 50 }, L2(10), 820000, 3200000 },
604 { 1, { 1036800, HFPLL, 1, 54 }, L2(10), 830000, 3200000 },
605 { 0, { 1113600, HFPLL, 1, 58 }, L2(12), 840000, 3200000 },
606 { 0, { 1190400, HFPLL, 1, 62 }, L2(12), 850000, 3200000 },
607 { 0, { 1267200, HFPLL, 1, 66 }, L2(12), 860000, 3200000 },
608 { 1, { 1344000, HFPLL, 1, 70 }, L2(12), 870000, 3200000 },
609 { 0, { 1420800, HFPLL, 1, 74 }, L2(16), 880000, 3200000 },
610 { 0, { 1497600, HFPLL, 1, 78 }, L2(16), 895000, 3200000 },
611 { 0, { 1574400, HFPLL, 1, 82 }, L2(16), 910000, 3200000 },
612 { 0, { 1651200, HFPLL, 1, 86 }, L2(16), 920000, 3200000 },
613 { 1, { 1728000, HFPLL, 1, 90 }, L2(16), 930000, 3200000 },
614 { 0, { 1804800, HFPLL, 1, 94 }, L2(19), 940000, 3200000 },
615 { 0, { 1881600, HFPLL, 1, 98 }, L2(19), 950000, 3200000 },
616 { 0, { 1958400, HFPLL, 1, 102 }, L2(19), 960000, 3200000 },
617 { 1, { 2035200, HFPLL, 1, 106 }, L2(19), 975000, 3200000 },
618 { 0, { 2112000, HFPLL, 1, 110 }, L2(19), 985000, 3200000 },
619 { 1, { 2150400, HFPLL, 1, 112 }, L2(19), 1000000, 3200000 },
620 { 0, { 0 } }
621};
622
623static struct acpu_level acpu_freq_tbl_2p2g_pvs5[] __initdata = {
624 { 1, { 300000, PLL_0, 0, 0 }, L2(0), 750000, 400000 },
625 { 0, { 345600, HFPLL, 2, 36 }, L2(3), 750000, 3200000 },
626 { 1, { 422400, HFPLL, 2, 44 }, L2(3), 750000, 3200000 },
627 { 0, { 499200, HFPLL, 2, 52 }, L2(6), 750000, 3200000 },
628 { 1, { 576000, HFPLL, 1, 30 }, L2(6), 760000, 3200000 },
629 { 1, { 652800, HFPLL, 1, 34 }, L2(7), 770000, 3200000 },
630 { 1, { 729600, HFPLL, 1, 38 }, L2(7), 780000, 3200000 },
631 { 0, { 806400, HFPLL, 1, 42 }, L2(10), 790000, 3200000 },
632 { 1, { 883200, HFPLL, 1, 46 }, L2(10), 800000, 3200000 },
633 { 0, { 960000, HFPLL, 1, 50 }, L2(10), 810000, 3200000 },
634 { 1, { 1036800, HFPLL, 1, 54 }, L2(10), 820000, 3200000 },
635 { 0, { 1113600, HFPLL, 1, 58 }, L2(12), 830000, 3200000 },
636 { 0, { 1190400, HFPLL, 1, 62 }, L2(12), 840000, 3200000 },
637 { 0, { 1267200, HFPLL, 1, 66 }, L2(12), 850000, 3200000 },
638 { 1, { 1344000, HFPLL, 1, 70 }, L2(12), 860000, 3200000 },
639 { 0, { 1420800, HFPLL, 1, 74 }, L2(16), 870000, 3200000 },
640 { 0, { 1497600, HFPLL, 1, 78 }, L2(16), 880000, 3200000 },
641 { 0, { 1574400, HFPLL, 1, 82 }, L2(16), 890000, 3200000 },
642 { 0, { 1651200, HFPLL, 1, 86 }, L2(16), 900000, 3200000 },
643 { 1, { 1728000, HFPLL, 1, 90 }, L2(16), 910000, 3200000 },
644 { 0, { 1804800, HFPLL, 1, 94 }, L2(19), 920000, 3200000 },
645 { 0, { 1881600, HFPLL, 1, 98 }, L2(19), 930000, 3200000 },
646 { 0, { 1958400, HFPLL, 1, 102 }, L2(19), 940000, 3200000 },
647 { 1, { 2035200, HFPLL, 1, 106 }, L2(19), 955000, 3200000 },
648 { 0, { 2112000, HFPLL, 1, 110 }, L2(19), 965000, 3200000 },
649 { 1, { 2150400, HFPLL, 1, 112 }, L2(19), 975000, 3200000 },
650 { 0, { 0 } }
651};
652
653static struct acpu_level acpu_freq_tbl_2p2g_pvs6[] __initdata = {
654 { 1, { 300000, PLL_0, 0, 0 }, L2(0), 75000, 400000 },
655 { 0, { 345600, HFPLL, 2, 36 }, L2(3), 75000, 3200000 },
656 { 1, { 422400, HFPLL, 2, 44 }, L2(3), 75000, 3200000 },
657 { 0, { 499200, HFPLL, 2, 52 }, L2(6), 75000, 3200000 },
658 { 1, { 576000, HFPLL, 1, 30 }, L2(6), 75000, 3200000 },
659 { 1, { 652800, HFPLL, 1, 34 }, L2(7), 76000, 3200000 },
660 { 1, { 729600, HFPLL, 1, 38 }, L2(7), 77000, 3200000 },
661 { 0, { 806400, HFPLL, 1, 42 }, L2(10), 78000, 3200000 },
662 { 1, { 883200, HFPLL, 1, 46 }, L2(10), 79000, 3200000 },
663 { 0, { 960000, HFPLL, 1, 50 }, L2(10), 80000, 3200000 },
664 { 1, { 1036800, HFPLL, 1, 54 }, L2(10), 81000, 3200000 },
665 { 0, { 1113600, HFPLL, 1, 58 }, L2(12), 82000, 3200000 },
666 { 0, { 1190400, HFPLL, 1, 62 }, L2(12), 83000, 3200000 },
667 { 0, { 1267200, HFPLL, 1, 66 }, L2(12), 84000, 3200000 },
668 { 1, { 1344000, HFPLL, 1, 70 }, L2(12), 85000, 3200000 },
669 { 0, { 1420800, HFPLL, 1, 74 }, L2(16), 86000, 3200000 },
670 { 0, { 1497600, HFPLL, 1, 78 }, L2(16), 87000, 3200000 },
671 { 0, { 1574400, HFPLL, 1, 82 }, L2(16), 87500, 3200000 },
672 { 0, { 1651200, HFPLL, 1, 86 }, L2(16), 88500, 3200000 },
673 { 1, { 1728000, HFPLL, 1, 90 }, L2(16), 89500, 3200000 },
674 { 0, { 1804800, HFPLL, 1, 94 }, L2(19), 90500, 3200000 },
675 { 0, { 1881600, HFPLL, 1, 98 }, L2(19), 91500, 3200000 },
676 { 0, { 1958400, HFPLL, 1, 102 }, L2(19), 92000, 3200000 },
677 { 1, { 2035200, HFPLL, 1, 106 }, L2(19), 93000, 3200000 },
678 { 0, { 2112000, HFPLL, 1, 110 }, L2(19), 94000, 3200000 },
679 { 1, { 2150400, HFPLL, 1, 112 }, L2(19), 95000, 3200000 },
680 { 0, { 0 } }
681};
682
Matt Wagantallc8c0c3b2013-02-25 20:19:17 -0800683static struct acpu_level acpu_freq_tbl_2p3g_pvs0[] __initdata = {
684 { 1, { 300000, PLL_0, 0, 0 }, L2(0), 800000, 400000 },
685 { 0, { 345600, HFPLL, 2, 36 }, L2(3), 800000, 3200000 },
686 { 1, { 422400, HFPLL, 2, 44 }, L2(3), 800000, 3200000 },
687 { 0, { 499200, HFPLL, 2, 52 }, L2(6), 805000, 3200000 },
688 { 1, { 576000, HFPLL, 1, 30 }, L2(6), 815000, 3200000 },
689 { 1, { 652800, HFPLL, 1, 34 }, L2(7), 825000, 3200000 },
690 { 1, { 729600, HFPLL, 1, 38 }, L2(7), 835000, 3200000 },
691 { 0, { 806400, HFPLL, 1, 42 }, L2(10), 845000, 3200000 },
692 { 1, { 883200, HFPLL, 1, 46 }, L2(10), 855000, 3200000 },
693 { 0, { 960000, HFPLL, 1, 50 }, L2(10), 865000, 3200000 },
694 { 1, { 1036800, HFPLL, 1, 54 }, L2(10), 875000, 3200000 },
695 { 0, { 1113600, HFPLL, 1, 58 }, L2(12), 890000, 3200000 },
696 { 0, { 1190400, HFPLL, 1, 62 }, L2(12), 900000, 3200000 },
697 { 0, { 1267200, HFPLL, 1, 66 }, L2(12), 915000, 3200000 },
698 { 1, { 1344000, HFPLL, 1, 70 }, L2(12), 925000, 3200000 },
699 { 0, { 1420800, HFPLL, 1, 74 }, L2(16), 940000, 3200000 },
700 { 0, { 1497600, HFPLL, 1, 78 }, L2(16), 950000, 3200000 },
701 { 0, { 1574400, HFPLL, 1, 82 }, L2(16), 965000, 3200000 },
702 { 0, { 1651200, HFPLL, 1, 86 }, L2(16), 980000, 3200000 },
703 { 1, { 1728000, HFPLL, 1, 90 }, L2(16), 995000, 3200000 },
Matt Wagantall29b7b472013-03-07 17:09:58 -0800704 { 0, { 1804800, HFPLL, 1, 94 }, L2(19), 1010000, 3200000 },
705 { 0, { 1881600, HFPLL, 1, 98 }, L2(19), 1025000, 3200000 },
706 { 0, { 1958400, HFPLL, 1, 102 }, L2(19), 1040000, 3200000 },
707 { 1, { 2035200, HFPLL, 1, 106 }, L2(19), 1055000, 3200000 },
708 { 0, { 2112000, HFPLL, 1, 110 }, L2(19), 1070000, 3200000 },
709 { 0, { 2188800, HFPLL, 1, 114 }, L2(19), 1085000, 3200000 },
710 { 1, { 2265600, HFPLL, 1, 118 }, L2(19), 1100000, 3200000 },
Matt Wagantallc8c0c3b2013-02-25 20:19:17 -0800711 { 0, { 0 } }
712};
713
Matt Wagantalld33ed482013-03-12 16:54:59 -0700714static struct acpu_level acpu_freq_tbl_2p3g_pvs1[] __initdata = {
715 { 1, { 300000, PLL_0, 0, 0 }, L2(0), 800000, 400000 },
716 { 0, { 345600, HFPLL, 2, 36 }, L2(3), 800000, 3200000 },
717 { 1, { 422400, HFPLL, 2, 44 }, L2(3), 800000, 3200000 },
718 { 0, { 499200, HFPLL, 2, 52 }, L2(6), 800000, 3200000 },
719 { 1, { 576000, HFPLL, 1, 30 }, L2(6), 800000, 3200000 },
720 { 1, { 652800, HFPLL, 1, 34 }, L2(7), 810000, 3200000 },
721 { 1, { 729600, HFPLL, 1, 38 }, L2(7), 820000, 3200000 },
722 { 0, { 806400, HFPLL, 1, 42 }, L2(10), 830000, 3200000 },
723 { 1, { 883200, HFPLL, 1, 46 }, L2(10), 840000, 3200000 },
724 { 0, { 960000, HFPLL, 1, 50 }, L2(10), 850000, 3200000 },
725 { 1, { 1036800, HFPLL, 1, 54 }, L2(10), 860000, 3200000 },
726 { 0, { 1113600, HFPLL, 1, 58 }, L2(12), 875000, 3200000 },
727 { 0, { 1190400, HFPLL, 1, 62 }, L2(12), 885000, 3200000 },
728 { 0, { 1267200, HFPLL, 1, 66 }, L2(12), 895000, 3200000 },
729 { 1, { 1344000, HFPLL, 1, 70 }, L2(12), 910000, 3200000 },
730 { 0, { 1420800, HFPLL, 1, 74 }, L2(16), 920000, 3200000 },
731 { 0, { 1497600, HFPLL, 1, 78 }, L2(16), 930000, 3200000 },
732 { 0, { 1574400, HFPLL, 1, 82 }, L2(16), 945000, 3200000 },
733 { 0, { 1651200, HFPLL, 1, 86 }, L2(16), 960000, 3200000 },
734 { 1, { 1728000, HFPLL, 1, 90 }, L2(16), 975000, 3200000 },
735 { 0, { 1804800, HFPLL, 1, 94 }, L2(19), 990000, 3200000 },
736 { 0, { 1881600, HFPLL, 1, 98 }, L2(19), 1005000, 3200000 },
737 { 0, { 1958400, HFPLL, 1, 102 }, L2(19), 1020000, 3200000 },
738 { 1, { 2035200, HFPLL, 1, 106 }, L2(19), 1030000, 3200000 },
739 { 0, { 2112000, HFPLL, 1, 110 }, L2(19), 1045000, 3200000 },
740 { 0, { 2188800, HFPLL, 1, 114 }, L2(19), 1060000, 3200000 },
741 { 1, { 2265600, HFPLL, 1, 118 }, L2(19), 1075000, 3200000 },
742 { 0, { 0 } }
743};
744
745static struct acpu_level acpu_freq_tbl_2p3g_pvs2[] __initdata = {
746 { 1, { 300000, PLL_0, 0, 0 }, L2(0), 775000, 400000 },
747 { 0, { 345600, HFPLL, 2, 36 }, L2(3), 775000, 3200000 },
748 { 1, { 422400, HFPLL, 2, 44 }, L2(3), 775000, 3200000 },
749 { 0, { 499200, HFPLL, 2, 52 }, L2(6), 775000, 3200000 },
750 { 1, { 576000, HFPLL, 1, 30 }, L2(6), 785000, 3200000 },
751 { 1, { 652800, HFPLL, 1, 34 }, L2(7), 795000, 3200000 },
752 { 1, { 729600, HFPLL, 1, 38 }, L2(7), 805000, 3200000 },
753 { 0, { 806400, HFPLL, 1, 42 }, L2(10), 815000, 3200000 },
754 { 1, { 883200, HFPLL, 1, 46 }, L2(10), 825000, 3200000 },
755 { 0, { 960000, HFPLL, 1, 50 }, L2(10), 835000, 3200000 },
756 { 1, { 1036800, HFPLL, 1, 54 }, L2(10), 845000, 3200000 },
757 { 0, { 1113600, HFPLL, 1, 58 }, L2(12), 855000, 3200000 },
758 { 0, { 1190400, HFPLL, 1, 62 }, L2(12), 865000, 3200000 },
759 { 0, { 1267200, HFPLL, 1, 66 }, L2(12), 875000, 3200000 },
760 { 1, { 1344000, HFPLL, 1, 70 }, L2(12), 890000, 3200000 },
761 { 0, { 1420800, HFPLL, 1, 74 }, L2(16), 900000, 3200000 },
762 { 0, { 1497600, HFPLL, 1, 78 }, L2(16), 910000, 3200000 },
763 { 0, { 1574400, HFPLL, 1, 82 }, L2(16), 925000, 3200000 },
764 { 0, { 1651200, HFPLL, 1, 86 }, L2(16), 940000, 3200000 },
765 { 1, { 1728000, HFPLL, 1, 90 }, L2(16), 955000, 3200000 },
766 { 0, { 1804800, HFPLL, 1, 94 }, L2(19), 970000, 3200000 },
767 { 0, { 1881600, HFPLL, 1, 98 }, L2(19), 980000, 3200000 },
768 { 0, { 1958400, HFPLL, 1, 102 }, L2(19), 995000, 3200000 },
769 { 1, { 2035200, HFPLL, 1, 106 }, L2(19), 1005000, 3200000 },
770 { 0, { 2112000, HFPLL, 1, 110 }, L2(19), 1020000, 3200000 },
771 { 0, { 2188800, HFPLL, 1, 114 }, L2(19), 1035000, 3200000 },
772 { 1, { 2265600, HFPLL, 1, 118 }, L2(19), 1050000, 3200000 },
773 { 0, { 0 } }
774};
775
776static struct acpu_level acpu_freq_tbl_2p3g_pvs3[] __initdata = {
777 { 1, { 300000, PLL_0, 0, 0 }, L2(0), 775000, 400000 },
778 { 0, { 345600, HFPLL, 2, 36 }, L2(3), 775000, 3200000 },
779 { 1, { 422400, HFPLL, 2, 44 }, L2(3), 775000, 3200000 },
780 { 0, { 499200, HFPLL, 2, 52 }, L2(6), 775000, 3200000 },
781 { 1, { 576000, HFPLL, 1, 30 }, L2(6), 775000, 3200000 },
782 { 1, { 652800, HFPLL, 1, 34 }, L2(7), 780000, 3200000 },
783 { 1, { 729600, HFPLL, 1, 38 }, L2(7), 790000, 3200000 },
784 { 0, { 806400, HFPLL, 1, 42 }, L2(10), 800000, 3200000 },
785 { 1, { 883200, HFPLL, 1, 46 }, L2(10), 810000, 3200000 },
786 { 0, { 960000, HFPLL, 1, 50 }, L2(10), 820000, 3200000 },
787 { 1, { 1036800, HFPLL, 1, 54 }, L2(10), 830000, 3200000 },
788 { 0, { 1113600, HFPLL, 1, 58 }, L2(12), 840000, 3200000 },
789 { 0, { 1190400, HFPLL, 1, 62 }, L2(12), 850000, 3200000 },
790 { 0, { 1267200, HFPLL, 1, 66 }, L2(12), 860000, 3200000 },
791 { 1, { 1344000, HFPLL, 1, 70 }, L2(12), 875000, 3200000 },
792 { 0, { 1420800, HFPLL, 1, 74 }, L2(16), 885000, 3200000 },
793 { 0, { 1497600, HFPLL, 1, 78 }, L2(16), 895000, 3200000 },
794 { 0, { 1574400, HFPLL, 1, 82 }, L2(16), 910000, 3200000 },
795 { 0, { 1651200, HFPLL, 1, 86 }, L2(16), 925000, 3200000 },
796 { 1, { 1728000, HFPLL, 1, 90 }, L2(16), 935000, 3200000 },
797 { 0, { 1804800, HFPLL, 1, 94 }, L2(19), 950000, 3200000 },
798 { 0, { 1881600, HFPLL, 1, 98 }, L2(19), 960000, 3200000 },
799 { 0, { 1958400, HFPLL, 1, 102 }, L2(19), 970000, 3200000 },
800 { 1, { 2035200, HFPLL, 1, 106 }, L2(19), 985000, 3200000 },
801 { 0, { 2112000, HFPLL, 1, 110 }, L2(19), 995000, 3200000 },
802 { 0, { 2188800, HFPLL, 1, 114 }, L2(19), 1010000, 3200000 },
803 { 1, { 2265600, HFPLL, 1, 118 }, L2(19), 1025000, 3200000 },
804 { 0, { 0 } }
805};
806
807static struct acpu_level acpu_freq_tbl_2p3g_pvs4[] __initdata = {
808 { 1, { 300000, PLL_0, 0, 0 }, L2(0), 775000, 400000 },
809 { 0, { 345600, HFPLL, 2, 36 }, L2(3), 775000, 3200000 },
810 { 1, { 422400, HFPLL, 2, 44 }, L2(3), 775000, 3200000 },
811 { 0, { 499200, HFPLL, 2, 52 }, L2(6), 775000, 3200000 },
812 { 1, { 576000, HFPLL, 1, 30 }, L2(6), 775000, 3200000 },
813 { 1, { 652800, HFPLL, 1, 34 }, L2(7), 775000, 3200000 },
814 { 1, { 729600, HFPLL, 1, 38 }, L2(7), 780000, 3200000 },
815 { 0, { 806400, HFPLL, 1, 42 }, L2(10), 790000, 3200000 },
816 { 1, { 883200, HFPLL, 1, 46 }, L2(10), 800000, 3200000 },
817 { 0, { 960000, HFPLL, 1, 50 }, L2(10), 810000, 3200000 },
818 { 1, { 1036800, HFPLL, 1, 54 }, L2(10), 820000, 3200000 },
819 { 0, { 1113600, HFPLL, 1, 58 }, L2(12), 830000, 3200000 },
820 { 0, { 1190400, HFPLL, 1, 62 }, L2(12), 840000, 3200000 },
821 { 0, { 1267200, HFPLL, 1, 66 }, L2(12), 850000, 3200000 },
822 { 1, { 1344000, HFPLL, 1, 70 }, L2(12), 860000, 3200000 },
823 { 0, { 1420800, HFPLL, 1, 74 }, L2(16), 870000, 3200000 },
824 { 0, { 1497600, HFPLL, 1, 78 }, L2(16), 880000, 3200000 },
825 { 0, { 1574400, HFPLL, 1, 82 }, L2(16), 895000, 3200000 },
826 { 0, { 1651200, HFPLL, 1, 86 }, L2(16), 910000, 3200000 },
827 { 1, { 1728000, HFPLL, 1, 90 }, L2(16), 920000, 3200000 },
828 { 0, { 1804800, HFPLL, 1, 94 }, L2(19), 930000, 3200000 },
829 { 0, { 1881600, HFPLL, 1, 98 }, L2(19), 940000, 3200000 },
830 { 0, { 1958400, HFPLL, 1, 102 }, L2(19), 950000, 3200000 },
831 { 1, { 2035200, HFPLL, 1, 106 }, L2(19), 960000, 3200000 },
832 { 0, { 2112000, HFPLL, 1, 110 }, L2(19), 975000, 3200000 },
833 { 0, { 2188800, HFPLL, 1, 114 }, L2(19), 985000, 3200000 },
834 { 1, { 2265600, HFPLL, 1, 118 }, L2(19), 1000000, 3200000 },
835 { 0, { 0 } }
836};
837
838static struct acpu_level acpu_freq_tbl_2p3g_pvs5[] __initdata = {
839 { 1, { 300000, PLL_0, 0, 0 }, L2(0), 750000, 400000 },
840 { 0, { 345600, HFPLL, 2, 36 }, L2(3), 750000, 3200000 },
841 { 1, { 422400, HFPLL, 2, 44 }, L2(3), 750000, 3200000 },
842 { 0, { 499200, HFPLL, 2, 52 }, L2(6), 750000, 3200000 },
843 { 1, { 576000, HFPLL, 1, 30 }, L2(6), 750000, 3200000 },
844 { 1, { 652800, HFPLL, 1, 34 }, L2(7), 760000, 3200000 },
845 { 1, { 729600, HFPLL, 1, 38 }, L2(7), 770000, 3200000 },
846 { 0, { 806400, HFPLL, 1, 42 }, L2(10), 780000, 3200000 },
847 { 1, { 883200, HFPLL, 1, 46 }, L2(10), 790000, 3200000 },
848 { 0, { 960000, HFPLL, 1, 50 }, L2(10), 800000, 3200000 },
849 { 1, { 1036800, HFPLL, 1, 54 }, L2(10), 810000, 3200000 },
850 { 0, { 1113600, HFPLL, 1, 58 }, L2(12), 820000, 3200000 },
851 { 0, { 1190400, HFPLL, 1, 62 }, L2(12), 830000, 3200000 },
852 { 0, { 1267200, HFPLL, 1, 66 }, L2(12), 840000, 3200000 },
853 { 1, { 1344000, HFPLL, 1, 70 }, L2(12), 850000, 3200000 },
854 { 0, { 1420800, HFPLL, 1, 74 }, L2(16), 860000, 3200000 },
855 { 0, { 1497600, HFPLL, 1, 78 }, L2(16), 870000, 3200000 },
856 { 0, { 1574400, HFPLL, 1, 82 }, L2(16), 880000, 3200000 },
857 { 0, { 1651200, HFPLL, 1, 86 }, L2(16), 890000, 3200000 },
858 { 1, { 1728000, HFPLL, 1, 90 }, L2(16), 900000, 3200000 },
859 { 0, { 1804800, HFPLL, 1, 94 }, L2(19), 910000, 3200000 },
860 { 0, { 1881600, HFPLL, 1, 98 }, L2(19), 920000, 3200000 },
861 { 0, { 1958400, HFPLL, 1, 102 }, L2(19), 930000, 3200000 },
862 { 1, { 2035200, HFPLL, 1, 106 }, L2(19), 940000, 3200000 },
863 { 0, { 2112000, HFPLL, 1, 110 }, L2(19), 955000, 3200000 },
864 { 0, { 2188800, HFPLL, 1, 114 }, L2(19), 965000, 3200000 },
865 { 1, { 2265600, HFPLL, 1, 118 }, L2(19), 975000, 3200000 },
866 { 0, { 0 } }
867};
868
869static struct acpu_level acpu_freq_tbl_2p3g_pvs6[] __initdata = {
870 { 1, { 300000, PLL_0, 0, 0 }, L2(0), 750000, 400000 },
871 { 0, { 345600, HFPLL, 2, 36 }, L2(3), 750000, 3200000 },
872 { 1, { 422400, HFPLL, 2, 44 }, L2(3), 750000, 3200000 },
873 { 0, { 499200, HFPLL, 2, 52 }, L2(6), 750000, 3200000 },
874 { 1, { 576000, HFPLL, 1, 30 }, L2(6), 750000, 3200000 },
875 { 1, { 652800, HFPLL, 1, 34 }, L2(7), 750000, 3200000 },
876 { 1, { 729600, HFPLL, 1, 38 }, L2(7), 760000, 3200000 },
877 { 0, { 806400, HFPLL, 1, 42 }, L2(10), 770000, 3200000 },
878 { 1, { 883200, HFPLL, 1, 46 }, L2(10), 780000, 3200000 },
879 { 0, { 960000, HFPLL, 1, 50 }, L2(10), 790000, 3200000 },
880 { 1, { 1036800, HFPLL, 1, 54 }, L2(10), 800000, 3200000 },
881 { 0, { 1113600, HFPLL, 1, 58 }, L2(12), 810000, 3200000 },
882 { 0, { 1190400, HFPLL, 1, 62 }, L2(12), 820000, 3200000 },
883 { 0, { 1267200, HFPLL, 1, 66 }, L2(12), 830000, 3200000 },
884 { 1, { 1344000, HFPLL, 1, 70 }, L2(12), 840000, 3200000 },
885 { 0, { 1420800, HFPLL, 1, 74 }, L2(16), 850000, 3200000 },
886 { 0, { 1497600, HFPLL, 1, 78 }, L2(16), 860000, 3200000 },
887 { 0, { 1574400, HFPLL, 1, 82 }, L2(16), 870000, 3200000 },
888 { 0, { 1651200, HFPLL, 1, 86 }, L2(16), 875000, 3200000 },
889 { 1, { 1728000, HFPLL, 1, 90 }, L2(16), 885000, 3200000 },
890 { 0, { 1804800, HFPLL, 1, 94 }, L2(19), 895000, 3200000 },
891 { 0, { 1881600, HFPLL, 1, 98 }, L2(19), 905000, 3200000 },
892 { 0, { 1958400, HFPLL, 1, 102 }, L2(19), 915000, 3200000 },
893 { 1, { 2035200, HFPLL, 1, 106 }, L2(19), 920000, 3200000 },
894 { 0, { 2112000, HFPLL, 1, 110 }, L2(19), 930000, 3200000 },
895 { 0, { 2188800, HFPLL, 1, 114 }, L2(19), 940000, 3200000 },
896 { 1, { 2265600, HFPLL, 1, 118 }, L2(19), 950000, 3200000 },
897 { 0, { 0 } }
898};
899
Matt Wagantall75135922013-02-19 21:07:38 -0800900static struct pvs_table pvs_v1[NUM_SPEED_BINS][NUM_PVS] __initdata = {
Matt Wagantallc8c0c3b2013-02-25 20:19:17 -0800901 /* 8974v1 1.7GHz Parts */
902 [0][0] = { acpu_freq_tbl_v1_pvs0, sizeof(acpu_freq_tbl_v1_pvs0) },
903 [0][1] = { acpu_freq_tbl_v1_pvs1, sizeof(acpu_freq_tbl_v1_pvs1) },
904 [0][2] = { acpu_freq_tbl_v1_pvs2, sizeof(acpu_freq_tbl_v1_pvs2) },
905 [0][3] = { acpu_freq_tbl_v1_pvs3, sizeof(acpu_freq_tbl_v1_pvs3) },
906 [0][4] = { acpu_freq_tbl_v1_pvs4, sizeof(acpu_freq_tbl_v1_pvs4) },
Matt Wagantall75135922013-02-19 21:07:38 -0800907};
908
909static struct pvs_table pvs_v2[NUM_SPEED_BINS][NUM_PVS] __initdata = {
Matt Wagantallc8c0c3b2013-02-25 20:19:17 -0800910 /* 8974v2 2.0GHz Parts */
911 [0][0] = { acpu_freq_tbl_2g_pvs0, sizeof(acpu_freq_tbl_2g_pvs0) },
Matt Wagantalld33ed482013-03-12 16:54:59 -0700912 [0][1] = { acpu_freq_tbl_2g_pvs1, sizeof(acpu_freq_tbl_2g_pvs1) },
913 [0][2] = { acpu_freq_tbl_2g_pvs2, sizeof(acpu_freq_tbl_2g_pvs2) },
914 [0][3] = { acpu_freq_tbl_2g_pvs3, sizeof(acpu_freq_tbl_2g_pvs3) },
915 [0][4] = { acpu_freq_tbl_2g_pvs4, sizeof(acpu_freq_tbl_2g_pvs4) },
916 [0][5] = { acpu_freq_tbl_2g_pvs5, sizeof(acpu_freq_tbl_2g_pvs5) },
917 [0][6] = { acpu_freq_tbl_2g_pvs6, sizeof(acpu_freq_tbl_2g_pvs6) },
918 [0][7] = { acpu_freq_tbl_2g_pvs6, sizeof(acpu_freq_tbl_2g_pvs6) },
Matt Wagantallc8c0c3b2013-02-25 20:19:17 -0800919
920 /* 8974v2 2.3GHz Parts */
921 [1][0] = { acpu_freq_tbl_2p3g_pvs0, sizeof(acpu_freq_tbl_2p3g_pvs0) },
Matt Wagantalld33ed482013-03-12 16:54:59 -0700922 [1][1] = { acpu_freq_tbl_2p3g_pvs1, sizeof(acpu_freq_tbl_2p3g_pvs1) },
923 [1][2] = { acpu_freq_tbl_2p3g_pvs2, sizeof(acpu_freq_tbl_2p3g_pvs2) },
924 [1][3] = { acpu_freq_tbl_2p3g_pvs3, sizeof(acpu_freq_tbl_2p3g_pvs3) },
925 [1][4] = { acpu_freq_tbl_2p3g_pvs4, sizeof(acpu_freq_tbl_2p3g_pvs4) },
926 [1][5] = { acpu_freq_tbl_2p3g_pvs5, sizeof(acpu_freq_tbl_2p3g_pvs5) },
927 [1][6] = { acpu_freq_tbl_2p3g_pvs6, sizeof(acpu_freq_tbl_2p3g_pvs6) },
928 [1][7] = { acpu_freq_tbl_2p3g_pvs6, sizeof(acpu_freq_tbl_2p3g_pvs6) },
Matt Wagantallf169c7c2013-04-01 20:48:28 -0700929
930 /* 8974v2 2.0GHz Parts */
931 [2][0] = { acpu_freq_tbl_2p2g_pvs0, sizeof(acpu_freq_tbl_2p2g_pvs0) },
932 [2][1] = { acpu_freq_tbl_2p2g_pvs1, sizeof(acpu_freq_tbl_2p2g_pvs1) },
933 [2][2] = { acpu_freq_tbl_2p2g_pvs2, sizeof(acpu_freq_tbl_2p2g_pvs2) },
934 [2][3] = { acpu_freq_tbl_2p2g_pvs3, sizeof(acpu_freq_tbl_2p2g_pvs3) },
935 [2][4] = { acpu_freq_tbl_2p2g_pvs4, sizeof(acpu_freq_tbl_2p2g_pvs4) },
936 [2][5] = { acpu_freq_tbl_2p2g_pvs5, sizeof(acpu_freq_tbl_2p2g_pvs5) },
937 [2][6] = { acpu_freq_tbl_2p2g_pvs6, sizeof(acpu_freq_tbl_2p2g_pvs6) },
938 [2][7] = { acpu_freq_tbl_2p2g_pvs6, sizeof(acpu_freq_tbl_2p2g_pvs6) },
939
Matt Wagantall1f3762d2012-06-08 19:08:48 -0700940};
941
Matt Wagantall63ac3882013-03-07 16:51:14 -0800942static struct msm_bus_scale_pdata bus_scale_data __initdata = {
943 .usecase = bw_level_tbl_v2,
944 .num_usecases = ARRAY_SIZE(bw_level_tbl_v2),
945 .active_only = 1,
946 .name = "acpuclk-8974",
947};
948
Matt Wagantall1f3762d2012-06-08 19:08:48 -0700949static struct acpuclk_krait_params acpuclk_8974_params __initdata = {
Matt Wagantalle9b715a2012-01-04 18:16:14 -0800950 .scalable = scalable,
Matt Wagantall1f3762d2012-06-08 19:08:48 -0700951 .scalable_size = sizeof(scalable),
952 .hfpll_data = &hfpll_data,
Matt Wagantall75135922013-02-19 21:07:38 -0800953 .pvs_tables = pvs_v2,
Matt Wagantall29b7b472013-03-07 17:09:58 -0800954 .l2_freq_tbl = l2_freq_tbl_v2,
955 .l2_freq_tbl_size = sizeof(l2_freq_tbl_v2),
Matt Wagantall1f3762d2012-06-08 19:08:48 -0700956 .bus_scale = &bus_scale_data,
Matt Wagantallee2b4372012-09-17 17:51:06 -0700957 .pte_efuse_phys = 0xFC4B80B0,
Matt Wagantallf9a4d322013-01-14 18:01:24 -0800958 .get_bin_info = get_krait_bin_format_b,
Matt Wagantallb7c231b2012-07-24 18:40:17 -0700959 .stby_khz = 300000,
Matt Wagantalle9b715a2012-01-04 18:16:14 -0800960};
961
Matt Wagantall75135922013-02-19 21:07:38 -0800962static void __init apply_v1_l2_workaround(void)
Matt Wagantall2dd3f972013-01-08 12:03:43 -0800963{
964 static struct l2_level resticted_l2_tbl[] __initdata = {
965 [0] = { { 300000, PLL_0, 0, 0 }, LVL_LOW, 1050000, 0 },
966 [1] = { { 1497600, HFPLL, 1, 78 }, LVL_HIGH, 1050000, 7 },
967 { }
968 };
969 struct acpu_level *l;
970 int s, p;
971
972 for (s = 0; s < NUM_SPEED_BINS; s++)
973 for (p = 0; p < NUM_PVS; p++)
Matt Wagantall75135922013-02-19 21:07:38 -0800974 for (l = pvs_v1[s][p].table; l && l->speed.khz; l++)
Matt Wagantall2dd3f972013-01-08 12:03:43 -0800975 l->l2_level = l->l2_level > 5 ? 1 : 0;
976
977 acpuclk_8974_params.l2_freq_tbl = resticted_l2_tbl;
978 acpuclk_8974_params.l2_freq_tbl_size = sizeof(resticted_l2_tbl);
979}
980
Abhimanyu Kapur90ced6e2012-06-26 17:41:25 -0700981static int __init acpuclk_8974_probe(struct platform_device *pdev)
Matt Wagantalle9b715a2012-01-04 18:16:14 -0800982{
Matt Wagantall75135922013-02-19 21:07:38 -0800983 if (SOCINFO_VERSION_MAJOR(socinfo_get_version()) == 1) {
984 acpuclk_8974_params.pvs_tables = pvs_v1;
Matt Wagantall29b7b472013-03-07 17:09:58 -0800985 acpuclk_8974_params.l2_freq_tbl = l2_freq_tbl_v1;
Matt Wagantall63ac3882013-03-07 16:51:14 -0800986 bus_scale_data.usecase = bw_level_tbl_v1;
987 bus_scale_data.num_usecases = ARRAY_SIZE(bw_level_tbl_v1);
Matt Wagantall29b7b472013-03-07 17:09:58 -0800988 acpuclk_8974_params.l2_freq_tbl_size = sizeof(l2_freq_tbl_v1);
989
990 /*
991 * 8974 hardware revisions older than v1.2 may experience L2
992 * parity errors when running at some performance points between
993 * 300MHz and 1497.6MHz (non-inclusive), or when vdd_mx is less
994 * than 1.05V. Restrict L2 operation to safe performance points
995 * on these devices.
996 */
Matt Wagantall75135922013-02-19 21:07:38 -0800997 if (SOCINFO_VERSION_MINOR(socinfo_get_version()) < 2)
998 apply_v1_l2_workaround();
999 }
Matt Wagantall2dd3f972013-01-08 12:03:43 -08001000
Abhimanyu Kapur90ced6e2012-06-26 17:41:25 -07001001 return acpuclk_krait_init(&pdev->dev, &acpuclk_8974_params);
Matt Wagantalle9b715a2012-01-04 18:16:14 -08001002}
1003
Abhimanyu Kapur90ced6e2012-06-26 17:41:25 -07001004static struct of_device_id acpuclk_8974_match_table[] = {
1005 { .compatible = "qcom,acpuclk-8974" },
Matt Wagantalle9b715a2012-01-04 18:16:14 -08001006 {}
1007};
1008
Abhimanyu Kapur90ced6e2012-06-26 17:41:25 -07001009static struct platform_driver acpuclk_8974_driver = {
Matt Wagantalle9b715a2012-01-04 18:16:14 -08001010 .driver = {
Abhimanyu Kapur90ced6e2012-06-26 17:41:25 -07001011 .name = "acpuclk-8974",
1012 .of_match_table = acpuclk_8974_match_table,
Matt Wagantalle9b715a2012-01-04 18:16:14 -08001013 .owner = THIS_MODULE,
1014 },
1015};
1016
Abhimanyu Kapur90ced6e2012-06-26 17:41:25 -07001017static int __init acpuclk_8974_init(void)
Matt Wagantalle9b715a2012-01-04 18:16:14 -08001018{
Abhimanyu Kapur90ced6e2012-06-26 17:41:25 -07001019 return platform_driver_probe(&acpuclk_8974_driver,
1020 acpuclk_8974_probe);
Matt Wagantalle9b715a2012-01-04 18:16:14 -08001021}
Abhimanyu Kapur90ced6e2012-06-26 17:41:25 -07001022device_initcall(acpuclk_8974_init);