blob: ed3b8c2d4837366b3613cb4fbe0c90d5f6a12be2 [file] [log] [blame]
Manu Gautam5143b252012-01-05 19:25:23 -08001/* Copyright (c) 2011-2012, Code Aurora Forum. All rights reserved.
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002 *
3 * This program is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License version 2 and
5 * only version 2 as published by the Free Software Foundation.
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
11 */
12
13#include "clock.h"
Pankaj Kumar3912c982011-12-07 16:59:03 +053014#include "clock-pll.h"
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070015#include "clock-pcom.h"
16#include "clock-voter.h"
17
Pankaj Kumar3912c982011-12-07 16:59:03 +053018#include <mach/msm_iomap.h>
19#include <mach/socinfo.h>
20
21#define PLLn_MODE(n) (MSM_CLK_CTL_BASE + 0x300 + 28 * (n))
22#define PLL4_MODE (MSM_CLK_CTL_BASE + 0x374)
23
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070024static DEFINE_CLK_PCOM(adm_clk, ADM_CLK, CLKFLAG_SKIP_AUTO_OFF);
25static DEFINE_CLK_PCOM(adsp_clk, ADSP_CLK, CLKFLAG_SKIP_AUTO_OFF);
26static DEFINE_CLK_PCOM(ahb_m_clk, AHB_M_CLK, CLKFLAG_SKIP_AUTO_OFF);
27static DEFINE_CLK_PCOM(ahb_s_clk, AHB_S_CLK, CLKFLAG_SKIP_AUTO_OFF);
28static DEFINE_CLK_PCOM(cam_m_clk, CAM_M_CLK, CLKFLAG_SKIP_AUTO_OFF);
29static DEFINE_CLK_PCOM(axi_rotator_clk, AXI_ROTATOR_CLK, 0);
30static DEFINE_CLK_PCOM(ce_clk, CE_CLK, CLKFLAG_SKIP_AUTO_OFF);
31static DEFINE_CLK_PCOM(csi0_clk, CSI0_CLK, CLKFLAG_SKIP_AUTO_OFF);
32static DEFINE_CLK_PCOM(csi0_p_clk, CSI0_P_CLK, CLKFLAG_SKIP_AUTO_OFF);
33static DEFINE_CLK_PCOM(csi0_vfe_clk, CSI0_VFE_CLK, CLKFLAG_SKIP_AUTO_OFF);
34static DEFINE_CLK_PCOM(csi1_clk, CSI1_CLK, CLKFLAG_SKIP_AUTO_OFF);
35static DEFINE_CLK_PCOM(csi1_p_clk, CSI1_P_CLK, CLKFLAG_SKIP_AUTO_OFF);
36static DEFINE_CLK_PCOM(csi1_vfe_clk, CSI1_VFE_CLK, CLKFLAG_SKIP_AUTO_OFF);
37
Pankaj Kumar3912c982011-12-07 16:59:03 +053038static struct pll_shared_clk pll0_clk = {
39 .id = PLL_0,
40 .mode_reg = PLLn_MODE(0),
41 .c = {
42 .ops = &clk_pll_ops,
43 .dbg_name = "pll0_clk",
44 CLK_INIT(pll0_clk.c),
45 },
46};
47
48static struct pll_shared_clk pll1_clk = {
49 .id = PLL_1,
50 .mode_reg = PLLn_MODE(1),
51 .c = {
52 .ops = &clk_pll_ops,
53 .dbg_name = "pll1_clk",
54 CLK_INIT(pll1_clk.c),
55 },
56};
57
58static struct pll_shared_clk pll2_clk = {
59 .id = PLL_2,
60 .mode_reg = PLLn_MODE(2),
61 .c = {
62 .ops = &clk_pll_ops,
63 .dbg_name = "pll2_clk",
64 CLK_INIT(pll2_clk.c),
65 },
66};
67
68static struct pll_shared_clk pll4_clk = {
69 .id = PLL_4,
70 .mode_reg = PLL4_MODE,
71 .c = {
72 .ops = &clk_pll_ops,
73 .dbg_name = "pll4_clk",
74 CLK_INIT(pll4_clk.c),
75 },
76};
77
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070078static struct pcom_clk dsi_byte_clk = {
79 .id = P_DSI_BYTE_CLK,
80 .c = {
81 .ops = &clk_ops_pcom_ext_config,
82 .dbg_name = "dsi_byte_clk",
83 CLK_INIT(dsi_byte_clk.c),
84 },
85};
86
87static struct pcom_clk dsi_clk = {
88 .id = P_DSI_CLK,
89 .c = {
90 .ops = &clk_ops_pcom_ext_config,
91 .dbg_name = "dsi_clk",
92 CLK_INIT(dsi_clk.c),
93 },
94};
95
96static struct pcom_clk dsi_esc_clk = {
97 .id = P_DSI_ESC_CLK,
98 .c = {
99 .ops = &clk_ops_pcom_ext_config,
100 .dbg_name = "dsi_esc_clk",
101 CLK_INIT(dsi_esc_clk.c),
102 },
103};
104
105static struct pcom_clk dsi_pixel_clk = {
106 .id = P_DSI_PIXEL_CLK,
107 .c = {
108 .ops = &clk_ops_pcom_ext_config,
109 .dbg_name = "dsi_pixel_clk",
110 CLK_INIT(dsi_pixel_clk.c),
111 },
112};
113
114static DEFINE_CLK_PCOM(dsi_ref_clk, DSI_REF_CLK, 0);
115static DEFINE_CLK_PCOM(ebi1_clk, EBI1_CLK,
116 CLKFLAG_SKIP_AUTO_OFF | CLKFLAG_MIN);
117static DEFINE_CLK_PCOM(ebi2_clk, EBI2_CLK, CLKFLAG_SKIP_AUTO_OFF);
118static DEFINE_CLK_PCOM(ecodec_clk, ECODEC_CLK, CLKFLAG_SKIP_AUTO_OFF);
119static DEFINE_CLK_PCOM(emdh_clk, EMDH_CLK, CLKFLAG_MIN | CLKFLAG_MAX);
120static DEFINE_CLK_PCOM(gp_clk, GP_CLK, CLKFLAG_SKIP_AUTO_OFF);
121static DEFINE_CLK_PCOM(grp_2d_clk, GRP_2D_CLK, CLKFLAG_SKIP_AUTO_OFF);
122static DEFINE_CLK_PCOM(grp_2d_p_clk, GRP_2D_P_CLK, CLKFLAG_SKIP_AUTO_OFF);
123static DEFINE_CLK_PCOM(grp_3d_clk, GRP_3D_CLK, 0);
124static DEFINE_CLK_PCOM(grp_3d_p_clk, GRP_3D_P_CLK, CLKFLAG_SKIP_AUTO_OFF);
125static DEFINE_CLK_PCOM(gsbi1_qup_clk, GSBI1_QUP_CLK, 0);
126static DEFINE_CLK_PCOM(gsbi1_qup_p_clk, GSBI1_QUP_P_CLK, 0);
127static DEFINE_CLK_PCOM(gsbi2_qup_clk, GSBI2_QUP_CLK, 0);
128static DEFINE_CLK_PCOM(gsbi2_qup_p_clk, GSBI2_QUP_P_CLK, 0);
129static DEFINE_CLK_PCOM(gsbi_clk, GSBI_CLK, CLKFLAG_SKIP_AUTO_OFF);
130static DEFINE_CLK_PCOM(gsbi_p_clk, GSBI_P_CLK, CLKFLAG_SKIP_AUTO_OFF);
131static DEFINE_CLK_PCOM(hdmi_clk, HDMI_CLK, CLKFLAG_SKIP_AUTO_OFF);
132static DEFINE_CLK_PCOM(i2c_clk, I2C_CLK, CLKFLAG_SKIP_AUTO_OFF);
133static DEFINE_CLK_PCOM(icodec_rx_clk, ICODEC_RX_CLK, CLKFLAG_SKIP_AUTO_OFF);
134static DEFINE_CLK_PCOM(icodec_tx_clk, ICODEC_TX_CLK, CLKFLAG_SKIP_AUTO_OFF);
135static DEFINE_CLK_PCOM(imem_clk, IMEM_CLK, 0);
136static DEFINE_CLK_PCOM(mdc_clk, MDC_CLK, CLKFLAG_SKIP_AUTO_OFF);
Matt Wagantalla12cc952011-11-08 18:14:50 -0800137static DEFINE_CLK_PCOM(mdp_clk, MDP_CLK, CLKFLAG_MIN);
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700138static DEFINE_CLK_PCOM(mdp_lcdc_pad_pclk_clk, MDP_LCDC_PAD_PCLK_CLK,
139 CLKFLAG_SKIP_AUTO_OFF);
140static DEFINE_CLK_PCOM(mdp_lcdc_pclk_clk, MDP_LCDC_PCLK_CLK,
141 CLKFLAG_SKIP_AUTO_OFF);
142static DEFINE_CLK_PCOM(mdp_vsync_clk, MDP_VSYNC_CLK, 0);
143static DEFINE_CLK_PCOM(mdp_dsi_p_clk, MDP_DSI_P_CLK, 0);
144static DEFINE_CLK_PCOM(pbus_clk, PBUS_CLK,
145 CLKFLAG_SKIP_AUTO_OFF | CLKFLAG_MIN);
146static DEFINE_CLK_PCOM(pcm_clk, PCM_CLK, CLKFLAG_SKIP_AUTO_OFF);
147static DEFINE_CLK_PCOM(pmdh_clk, PMDH_CLK, CLKFLAG_MIN | CLKFLAG_MAX);
148static DEFINE_CLK_PCOM(sdac_clk, SDAC_CLK, 0);
149static DEFINE_CLK_PCOM(sdc1_clk, SDC1_CLK, 0);
150static DEFINE_CLK_PCOM(sdc1_p_clk, SDC1_P_CLK, 0);
151static DEFINE_CLK_PCOM(sdc2_clk, SDC2_CLK, 0);
152static DEFINE_CLK_PCOM(sdc2_p_clk, SDC2_P_CLK, 0);
153static DEFINE_CLK_PCOM(sdc3_clk, SDC3_CLK, 0);
154static DEFINE_CLK_PCOM(sdc3_p_clk, SDC3_P_CLK, 0);
155static DEFINE_CLK_PCOM(sdc4_clk, SDC4_CLK, 0);
156static DEFINE_CLK_PCOM(sdc4_p_clk, SDC4_P_CLK, 0);
157static DEFINE_CLK_PCOM(spi_clk, SPI_CLK, CLKFLAG_SKIP_AUTO_OFF);
158static DEFINE_CLK_PCOM(tsif_clk, TSIF_CLK, CLKFLAG_SKIP_AUTO_OFF);
159static DEFINE_CLK_PCOM(tsif_p_clk, TSIF_P_CLK, CLKFLAG_SKIP_AUTO_OFF);
160static DEFINE_CLK_PCOM(tsif_ref_clk, TSIF_REF_CLK, CLKFLAG_SKIP_AUTO_OFF);
161static DEFINE_CLK_PCOM(tv_dac_clk, TV_DAC_CLK, CLKFLAG_SKIP_AUTO_OFF);
162static DEFINE_CLK_PCOM(tv_enc_clk, TV_ENC_CLK, CLKFLAG_SKIP_AUTO_OFF);
163static DEFINE_CLK_PCOM(uart1_clk, UART1_CLK, 0);
164static DEFINE_CLK_PCOM(uart1dm_clk, UART1DM_CLK, 0);
165static DEFINE_CLK_PCOM(uart2_clk, UART2_CLK, 0);
166static DEFINE_CLK_PCOM(uart2dm_clk, UART2DM_CLK, 0);
167static DEFINE_CLK_PCOM(uart3_clk, UART3_CLK, 0);
168static DEFINE_CLK_PCOM(usb_hs2_clk, USB_HS2_CLK, 0);
169static DEFINE_CLK_PCOM(usb_hs2_p_clk, USB_HS2_P_CLK, 0);
170static DEFINE_CLK_PCOM(usb_hs3_clk, USB_HS3_CLK, 0);
171static DEFINE_CLK_PCOM(usb_hs3_p_clk, USB_HS3_P_CLK, 0);
172static DEFINE_CLK_PCOM(usb_hs_clk, USB_HS_CLK, 0);
173static DEFINE_CLK_PCOM(usb_hs_core_clk, USB_HS_CORE_CLK, 0);
174static DEFINE_CLK_PCOM(usb_hs_p_clk, USB_HS_P_CLK, 0);
175static DEFINE_CLK_PCOM(usb_otg_clk, USB_OTG_CLK, CLKFLAG_SKIP_AUTO_OFF);
176static DEFINE_CLK_PCOM(usb_phy_clk, USB_PHY_CLK, CLKFLAG_SKIP_AUTO_OFF);
177static DEFINE_CLK_PCOM(vdc_clk, VDC_CLK, CLKFLAG_MIN);
178static DEFINE_CLK_PCOM(vfe_axi_clk, VFE_AXI_CLK, 0);
179static DEFINE_CLK_PCOM(vfe_clk, VFE_CLK, 0);
180static DEFINE_CLK_PCOM(vfe_mdc_clk, VFE_MDC_CLK, 0);
181
182static DEFINE_CLK_VOTER(ebi_acpu_clk, &ebi1_clk.c);
Matt Wagantall9dc01632011-08-17 18:55:04 -0700183static DEFINE_CLK_VOTER(ebi_grp_3d_clk, &ebi1_clk.c);
184static DEFINE_CLK_VOTER(ebi_grp_2d_clk, &ebi1_clk.c);
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700185static DEFINE_CLK_VOTER(ebi_lcdc_clk, &ebi1_clk.c);
186static DEFINE_CLK_VOTER(ebi_mddi_clk, &ebi1_clk.c);
187static DEFINE_CLK_VOTER(ebi_tv_clk, &ebi1_clk.c);
188static DEFINE_CLK_VOTER(ebi_usb_clk, &ebi1_clk.c);
189static DEFINE_CLK_VOTER(ebi_vfe_clk, &ebi1_clk.c);
190static DEFINE_CLK_VOTER(ebi_adm_clk, &ebi1_clk.c);
191
Stephen Boydbb600ae2011-08-02 20:11:40 -0700192static struct clk_lookup msm_clocks_7x01a[] = {
Matt Wagantalle1a86062011-08-18 17:46:10 -0700193 CLK_LOOKUP("core_clk", adm_clk.c, "msm_dmov"),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700194 CLK_LOOKUP("adsp_clk", adsp_clk.c, NULL),
195 CLK_LOOKUP("ebi1_clk", ebi1_clk.c, NULL),
196 CLK_LOOKUP("ebi2_clk", ebi2_clk.c, NULL),
197 CLK_LOOKUP("ecodec_clk", ecodec_clk.c, NULL),
198 CLK_LOOKUP("emdh_clk", emdh_clk.c, NULL),
Matt Wagantallc00f95d2012-01-05 14:22:45 -0800199 CLK_LOOKUP("core_clk", gp_clk.c, ""),
Matt Wagantall9dc01632011-08-17 18:55:04 -0700200 CLK_LOOKUP("core_clk", grp_3d_clk.c, "kgsl-3d0.0"),
Matt Wagantallac294852011-08-17 15:44:58 -0700201 CLK_LOOKUP("core_clk", i2c_clk.c, "msm_i2c.0"),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700202 CLK_LOOKUP("icodec_rx_clk", icodec_rx_clk.c, NULL),
203 CLK_LOOKUP("icodec_tx_clk", icodec_tx_clk.c, NULL),
Matt Wagantall9dc01632011-08-17 18:55:04 -0700204 CLK_LOOKUP("mem_clk", imem_clk.c, NULL),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700205 CLK_LOOKUP("mdc_clk", mdc_clk.c, NULL),
206 CLK_LOOKUP("mddi_clk", pmdh_clk.c, NULL),
207 CLK_LOOKUP("mdp_clk", mdp_clk.c, NULL),
208 CLK_LOOKUP("pbus_clk", pbus_clk.c, NULL),
209 CLK_LOOKUP("pcm_clk", pcm_clk.c, NULL),
210 CLK_LOOKUP("sdac_clk", sdac_clk.c, NULL),
Matt Wagantall37ce3842011-08-17 16:00:36 -0700211 CLK_LOOKUP("core_clk", sdc1_clk.c, "msm_sdcc.1"),
212 CLK_LOOKUP("iface_clk", sdc1_p_clk.c, "msm_sdcc.1"),
213 CLK_LOOKUP("core_clk", sdc2_clk.c, "msm_sdcc.2"),
214 CLK_LOOKUP("iface_clk", sdc2_p_clk.c, "msm_sdcc.2"),
215 CLK_LOOKUP("core_clk", sdc3_clk.c, "msm_sdcc.3"),
216 CLK_LOOKUP("iface_clk", sdc3_p_clk.c, "msm_sdcc.3"),
217 CLK_LOOKUP("core_clk", sdc4_clk.c, "msm_sdcc.4"),
218 CLK_LOOKUP("iface_clk", sdc4_p_clk.c, "msm_sdcc.4"),
Matt Wagantall640e5fd2011-08-17 16:08:53 -0700219 CLK_LOOKUP("core_clk", tsif_clk.c, "msm_tsif.0"),
220 CLK_LOOKUP("ref_clk", tsif_ref_clk.c, "msm_tsif.0"),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700221 CLK_LOOKUP("tv_dac_clk", tv_dac_clk.c, NULL),
222 CLK_LOOKUP("tv_enc_clk", tv_enc_clk.c, NULL),
Matt Wagantalle2522372011-08-17 14:52:21 -0700223 CLK_LOOKUP("core_clk", uart1_clk.c, "msm_serial.0"),
224 CLK_LOOKUP("core_clk", uart2_clk.c, "msm_serial.1"),
225 CLK_LOOKUP("core_clk", uart3_clk.c, "msm_serial.2"),
226 CLK_LOOKUP("core_clk", uart1dm_clk.c, "msm_serial_hs.0"),
227 CLK_LOOKUP("core_clk", uart2dm_clk.c, "msm_serial_hs.1"),
Manu Gautam5143b252012-01-05 19:25:23 -0800228 CLK_LOOKUP("alt_core_clk", usb_hs_clk.c, "msm_otg"),
229 CLK_LOOKUP("iface_clk", usb_hs_p_clk.c, "msm_otg"),
230 CLK_LOOKUP("alt_core_clk", usb_hs_clk.c, "msm_hsusb_otg"),
231 CLK_LOOKUP("iface_clk", usb_hs_p_clk.c, "msm_hsusb_otg"),
232 CLK_LOOKUP("alt_core_clk", usb_hs_clk.c, "msm_hsusb_peripheral"),
233 CLK_LOOKUP("iface_clk", usb_hs_p_clk.c, "msm_hsusb_peripheral"),
234 CLK_LOOKUP("alt_core_clk", usb_otg_clk.c, NULL),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700235 CLK_LOOKUP("vdc_clk", vdc_clk.c, NULL),
236 CLK_LOOKUP("vfe_clk", vfe_clk.c, NULL),
237 CLK_LOOKUP("vfe_mdc_clk", vfe_mdc_clk.c, NULL),
238};
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700239
Stephen Boydbb600ae2011-08-02 20:11:40 -0700240struct clock_init_data msm7x01a_clock_init_data __initdata = {
241 .table = msm_clocks_7x01a,
242 .size = ARRAY_SIZE(msm_clocks_7x01a),
243};
244
245static struct clk_lookup msm_clocks_7x27[] = {
Matt Wagantalle1a86062011-08-18 17:46:10 -0700246 CLK_LOOKUP("core_clk", adm_clk.c, "msm_dmov"),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700247 CLK_LOOKUP("adsp_clk", adsp_clk.c, NULL),
248 CLK_LOOKUP("ebi1_clk", ebi1_clk.c, NULL),
249 CLK_LOOKUP("ebi2_clk", ebi2_clk.c, NULL),
250 CLK_LOOKUP("ecodec_clk", ecodec_clk.c, NULL),
Matt Wagantallc00f95d2012-01-05 14:22:45 -0800251 CLK_LOOKUP("core_clk", gp_clk.c, ""),
Matt Wagantall9dc01632011-08-17 18:55:04 -0700252 CLK_LOOKUP("core_clk", grp_3d_clk.c, "kgsl-3d0.0"),
Matt Wagantall49722712011-08-17 18:50:53 -0700253 CLK_LOOKUP("core_clk", grp_3d_clk.c, "footswitch-pcom.2"),
Matt Wagantall9dc01632011-08-17 18:55:04 -0700254 CLK_LOOKUP("iface_clk", grp_3d_p_clk.c, "kgsl-3d0.0"),
Matt Wagantallac294852011-08-17 15:44:58 -0700255 CLK_LOOKUP("core_clk", i2c_clk.c, "msm_i2c.0"),
Matt Wagantall49722712011-08-17 18:50:53 -0700256 CLK_LOOKUP("iface_clk", grp_3d_p_clk.c, "footswitch-pcom.2"),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700257 CLK_LOOKUP("icodec_rx_clk", icodec_rx_clk.c, NULL),
258 CLK_LOOKUP("icodec_tx_clk", icodec_tx_clk.c, NULL),
Matt Wagantall9dc01632011-08-17 18:55:04 -0700259 CLK_LOOKUP("mem_clk", imem_clk.c, NULL),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700260 CLK_LOOKUP("mdc_clk", mdc_clk.c, NULL),
261 CLK_LOOKUP("mddi_clk", pmdh_clk.c, NULL),
262 CLK_LOOKUP("mdp_clk", mdp_clk.c, NULL),
263 CLK_LOOKUP("mdp_lcdc_pclk_clk", mdp_lcdc_pclk_clk.c, NULL),
264 CLK_LOOKUP("mdp_lcdc_pad_pclk_clk", mdp_lcdc_pad_pclk_clk.c, NULL),
265 CLK_LOOKUP("mdp_vsync_clk", mdp_vsync_clk.c, NULL),
266 CLK_LOOKUP("pbus_clk", pbus_clk.c, NULL),
267 CLK_LOOKUP("pcm_clk", pcm_clk.c, NULL),
268 CLK_LOOKUP("sdac_clk", sdac_clk.c, NULL),
Matt Wagantall37ce3842011-08-17 16:00:36 -0700269 CLK_LOOKUP("core_clk", sdc1_clk.c, "msm_sdcc.1"),
270 CLK_LOOKUP("iface_clk", sdc1_p_clk.c, "msm_sdcc.1"),
271 CLK_LOOKUP("core_clk", sdc2_clk.c, "msm_sdcc.2"),
272 CLK_LOOKUP("iface_clk", sdc2_p_clk.c, "msm_sdcc.2"),
273 CLK_LOOKUP("core_clk", sdc3_clk.c, "msm_sdcc.3"),
274 CLK_LOOKUP("iface_clk", sdc3_p_clk.c, "msm_sdcc.3"),
275 CLK_LOOKUP("core_clk", sdc4_clk.c, "msm_sdcc.4"),
276 CLK_LOOKUP("iface_clk", sdc4_p_clk.c, "msm_sdcc.4"),
Matt Wagantall640e5fd2011-08-17 16:08:53 -0700277 CLK_LOOKUP("core_clk", tsif_clk.c, "msm_tsif.0"),
278 CLK_LOOKUP("ref_clk", tsif_ref_clk.c, "msm_tsif.0"),
279 CLK_LOOKUP("iface_clk", tsif_p_clk.c, "msm_tsif.0"),
Matt Wagantalle2522372011-08-17 14:52:21 -0700280 CLK_LOOKUP("core_clk", uart1_clk.c, "msm_serial.0"),
281 CLK_LOOKUP("core_clk", uart2_clk.c, "msm_serial.1"),
282 CLK_LOOKUP("core_clk", uart1dm_clk.c, "msm_serial_hs.0"),
283 CLK_LOOKUP("core_clk", uart2dm_clk.c, "msm_serial_hs.1"),
Manu Gautam5143b252012-01-05 19:25:23 -0800284 CLK_LOOKUP("alt_core_clk", usb_hs_clk.c, "msm_otg"),
285 CLK_LOOKUP("iface_clk", usb_hs_p_clk.c, "msm_otg"),
286 CLK_LOOKUP("alt_core_clk", usb_otg_clk.c, NULL),
287 CLK_LOOKUP("phy_clk", usb_phy_clk.c, "msm_otg"),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700288 CLK_LOOKUP("vdc_clk", vdc_clk.c, NULL),
Matt Wagantall49722712011-08-17 18:50:53 -0700289 CLK_LOOKUP("core_clk", vdc_clk.c, "footswitch-pcom.7"),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700290 CLK_LOOKUP("vfe_clk", vfe_clk.c, NULL),
Matt Wagantall49722712011-08-17 18:50:53 -0700291 CLK_LOOKUP("core_clk", vfe_clk.c, "footswitch-pcom.8"),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700292 CLK_LOOKUP("vfe_mdc_clk", vfe_mdc_clk.c, NULL),
293
294 CLK_LOOKUP("ebi1_acpu_clk", ebi_acpu_clk.c, NULL),
Matt Wagantall9dc01632011-08-17 18:55:04 -0700295 CLK_LOOKUP("bus_clk", ebi_grp_3d_clk.c, "kgsl-3d0.0"),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700296 CLK_LOOKUP("ebi1_lcdc_clk", ebi_lcdc_clk.c, NULL),
297 CLK_LOOKUP("ebi1_mddi_clk", ebi_mddi_clk.c, NULL),
Manu Gautam5143b252012-01-05 19:25:23 -0800298 CLK_LOOKUP("core_clk", ebi_usb_clk.c, "msm_otg"),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700299 CLK_LOOKUP("ebi1_vfe_clk", ebi_vfe_clk.c, NULL),
Matt Wagantalle1a86062011-08-18 17:46:10 -0700300 CLK_LOOKUP("mem_clk", ebi_adm_clk.c, "msm_dmov"),
Pankaj Kumar3912c982011-12-07 16:59:03 +0530301
302 CLK_LOOKUP("pll0_clk", pll0_clk.c, "acpu"),
303 CLK_LOOKUP("pll1_clk", pll1_clk.c, "acpu"),
304 CLK_LOOKUP("pll2_clk", pll2_clk.c, "acpu"),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700305};
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700306
Stephen Boydbb600ae2011-08-02 20:11:40 -0700307struct clock_init_data msm7x27_clock_init_data __initdata = {
308 .table = msm_clocks_7x27,
309 .size = ARRAY_SIZE(msm_clocks_7x27),
Matt Wagantallb64888f2012-04-02 21:35:07 -0700310 .pre_init = msm_shared_pll_control_init,
Stephen Boydbb600ae2011-08-02 20:11:40 -0700311};
312
Pankaj Kumar3912c982011-12-07 16:59:03 +0530313/* Clock table for common clocks between 7627a and 7625a */
314static struct clk_lookup msm_cmn_clk_7625a_7627a[] __initdata = {
Matt Wagantalle1a86062011-08-18 17:46:10 -0700315 CLK_LOOKUP("core_clk", adm_clk.c, "msm_dmov"),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700316 CLK_LOOKUP("adsp_clk", adsp_clk.c, NULL),
317 CLK_LOOKUP("ahb_m_clk", ahb_m_clk.c, NULL),
318 CLK_LOOKUP("ahb_s_clk", ahb_s_clk.c, NULL),
319 CLK_LOOKUP("cam_m_clk", cam_m_clk.c, NULL),
Sandeep Kodimelac6f78672012-03-07 10:44:04 +0530320 CLK_LOOKUP("cam_clk", cam_m_clk.c, "0-0036"),
321 CLK_LOOKUP("cam_clk", cam_m_clk.c, "0-001b"),
322 CLK_LOOKUP("cam_clk", cam_m_clk.c, "0-0010"),
Raju P.L.S.S.S.Ncc400972012-03-13 10:09:59 +0530323 CLK_LOOKUP("cam_clk", cam_m_clk.c, "0-0078"),
324 CLK_LOOKUP("cam_clk", cam_m_clk.c, "0-006c"),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700325 CLK_LOOKUP("csi_clk", csi0_clk.c, "msm_camera_ov9726.0"),
326 CLK_LOOKUP("csi_pclk", csi0_p_clk.c, "msm_camera_ov9726.0"),
327 CLK_LOOKUP("csi_vfe_clk", csi0_vfe_clk.c, "msm_camera_ov9726.0"),
Taniya Das7a22cdd2011-09-08 14:57:00 +0530328 CLK_LOOKUP("csi_clk", csi0_clk.c, "msm_camera_ov7692.0"),
329 CLK_LOOKUP("csi_pclk", csi0_p_clk.c, "msm_camera_ov7692.0"),
330 CLK_LOOKUP("csi_vfe_clk", csi0_vfe_clk.c, "msm_camera_ov7692.0"),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700331 CLK_LOOKUP("csi_clk", csi1_clk.c, NULL),
332 CLK_LOOKUP("csi_pclk", csi1_p_clk.c, NULL),
333 CLK_LOOKUP("csi_vfe_clk", csi1_vfe_clk.c, NULL),
Suresh Vankadara4d4d5c52012-01-18 00:45:49 +0530334 CLK_LOOKUP("csi_clk", csi0_clk.c, "msm_csic.0"),
335 CLK_LOOKUP("csi_pclk", csi0_p_clk.c, "msm_csic.0"),
336 CLK_LOOKUP("csi_vfe_clk", csi0_vfe_clk.c, "msm_csic.0"),
337 CLK_LOOKUP("csi_clk", csi1_clk.c, "msm_csic.1"),
338 CLK_LOOKUP("csi_pclk", csi1_p_clk.c, "msm_csic.1"),
339 CLK_LOOKUP("csi_vfe_clk", csi1_vfe_clk.c, "msm_csic.1"),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700340 CLK_LOOKUP("dsi_byte_clk", dsi_byte_clk.c, NULL),
341 CLK_LOOKUP("dsi_clk", dsi_clk.c, NULL),
342 CLK_LOOKUP("dsi_esc_clk", dsi_esc_clk.c, NULL),
343 CLK_LOOKUP("dsi_pixel_clk", dsi_pixel_clk.c, NULL),
344 CLK_LOOKUP("dsi_ref_clk", dsi_ref_clk.c, NULL),
345 CLK_LOOKUP("ebi1_clk", ebi1_clk.c, NULL),
346 CLK_LOOKUP("ebi2_clk", ebi2_clk.c, NULL),
347 CLK_LOOKUP("ecodec_clk", ecodec_clk.c, NULL),
Matt Wagantallc00f95d2012-01-05 14:22:45 -0800348 CLK_LOOKUP("core_clk", gp_clk.c, ""),
Matt Wagantall9dc01632011-08-17 18:55:04 -0700349 CLK_LOOKUP("core_clk", grp_3d_clk.c, "kgsl-3d0.0"),
Matt Wagantall49722712011-08-17 18:50:53 -0700350 CLK_LOOKUP("core_clk", grp_3d_clk.c, "footswitch-pcom.2"),
Matt Wagantall9dc01632011-08-17 18:55:04 -0700351 CLK_LOOKUP("iface_clk", grp_3d_p_clk.c, "kgsl-3d0.0"),
Matt Wagantall49722712011-08-17 18:50:53 -0700352 CLK_LOOKUP("iface_clk", grp_3d_p_clk.c, "footswitch-pcom.2"),
Matt Wagantallac294852011-08-17 15:44:58 -0700353 CLK_LOOKUP("core_clk", gsbi1_qup_clk.c, "qup_i2c.0"),
354 CLK_LOOKUP("core_clk", gsbi2_qup_clk.c, "qup_i2c.1"),
355 CLK_LOOKUP("iface_clk", gsbi1_qup_p_clk.c, "qup_i2c.0"),
356 CLK_LOOKUP("iface_clk", gsbi2_qup_p_clk.c, "qup_i2c.1"),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700357 CLK_LOOKUP("icodec_rx_clk", icodec_rx_clk.c, NULL),
358 CLK_LOOKUP("icodec_tx_clk", icodec_tx_clk.c, NULL),
Matt Wagantall9dc01632011-08-17 18:55:04 -0700359 CLK_LOOKUP("mem_clk", imem_clk.c, NULL),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700360 CLK_LOOKUP("mddi_clk", pmdh_clk.c, NULL),
361 CLK_LOOKUP("mdp_clk", mdp_clk.c, NULL),
362 CLK_LOOKUP("mdp_lcdc_pclk_clk", mdp_lcdc_pclk_clk.c, NULL),
363 CLK_LOOKUP("mdp_lcdc_pad_pclk_clk", mdp_lcdc_pad_pclk_clk.c, NULL),
364 CLK_LOOKUP("mdp_vsync_clk", mdp_vsync_clk.c, NULL),
365 CLK_LOOKUP("mdp_dsi_pclk", mdp_dsi_p_clk.c, NULL),
366 CLK_LOOKUP("pbus_clk", pbus_clk.c, NULL),
367 CLK_LOOKUP("pcm_clk", pcm_clk.c, NULL),
368 CLK_LOOKUP("sdac_clk", sdac_clk.c, NULL),
Matt Wagantall37ce3842011-08-17 16:00:36 -0700369 CLK_LOOKUP("core_clk", sdc1_clk.c, "msm_sdcc.1"),
370 CLK_LOOKUP("iface_clk", sdc1_p_clk.c, "msm_sdcc.1"),
371 CLK_LOOKUP("core_clk", sdc2_clk.c, "msm_sdcc.2"),
372 CLK_LOOKUP("iface_clk", sdc2_p_clk.c, "msm_sdcc.2"),
373 CLK_LOOKUP("core_clk", sdc3_clk.c, "msm_sdcc.3"),
374 CLK_LOOKUP("iface_clk", sdc3_p_clk.c, "msm_sdcc.3"),
375 CLK_LOOKUP("core_clk", sdc4_clk.c, "msm_sdcc.4"),
376 CLK_LOOKUP("iface_clk", sdc4_p_clk.c, "msm_sdcc.4"),
Matt Wagantall640e5fd2011-08-17 16:08:53 -0700377 CLK_LOOKUP("ref_clk", tsif_ref_clk.c, "msm_tsif.0"),
378 CLK_LOOKUP("iface_clk", tsif_p_clk.c, "msm_tsif.0"),
Matt Wagantalle2522372011-08-17 14:52:21 -0700379 CLK_LOOKUP("core_clk", uart1_clk.c, "msm_serial.0"),
380 CLK_LOOKUP("core_clk", uart2_clk.c, "msm_serial.1"),
381 CLK_LOOKUP("core_clk", uart1dm_clk.c, "msm_serial_hs.0"),
382 CLK_LOOKUP("core_clk", uart2dm_clk.c, "msm_serial_hsl.0"),
Manu Gautam5143b252012-01-05 19:25:23 -0800383 CLK_LOOKUP("core_clk", usb_hs_core_clk.c, "msm_otg"),
384 CLK_LOOKUP("alt_core_clk", usb_hs_clk.c, "msm_otg"),
385 CLK_LOOKUP("iface_clk", usb_hs_p_clk.c, "msm_otg"),
386 CLK_LOOKUP("phy_clk", usb_phy_clk.c, "msm_otg"),
387 CLK_LOOKUP("alt_core_clk", usb_hs2_clk.c, "msm_hsusb_host.0"),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700388 CLK_LOOKUP("vdc_clk", vdc_clk.c, NULL),
Matt Wagantall49722712011-08-17 18:50:53 -0700389 CLK_LOOKUP("core_clk", vdc_clk.c, "footswitch-pcom.7"),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700390 CLK_LOOKUP("vfe_clk", vfe_clk.c, NULL),
Suresh Vankadara4d4d5c52012-01-18 00:45:49 +0530391 CLK_LOOKUP("vfe_clk", vfe_clk.c, "msm_vfe.0"),
Matt Wagantall49722712011-08-17 18:50:53 -0700392 CLK_LOOKUP("core_clk", vfe_clk.c, "footswitch-pcom.8"),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700393 CLK_LOOKUP("vfe_mdc_clk", vfe_mdc_clk.c, NULL),
394
395 CLK_LOOKUP("ebi1_acpu_clk", ebi_acpu_clk.c, NULL),
Matt Wagantall9dc01632011-08-17 18:55:04 -0700396 CLK_LOOKUP("bus_clk", ebi_grp_3d_clk.c, "kgsl-3d0.0"),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700397 CLK_LOOKUP("ebi1_lcdc_clk", ebi_lcdc_clk.c, NULL),
398 CLK_LOOKUP("ebi1_mddi_clk", ebi_mddi_clk.c, NULL),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700399 CLK_LOOKUP("ebi1_vfe_clk", ebi_vfe_clk.c, NULL),
Matt Wagantalle1a86062011-08-18 17:46:10 -0700400 CLK_LOOKUP("mem_clk", ebi_adm_clk.c, "msm_dmov"),
Pankaj Kumar3912c982011-12-07 16:59:03 +0530401
402 CLK_LOOKUP("pll0_clk", pll0_clk.c, "acpu"),
403 CLK_LOOKUP("pll1_clk", pll1_clk.c, "acpu"),
404 CLK_LOOKUP("pll2_clk", pll2_clk.c, "acpu"),
405
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700406};
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700407
Pankaj Kumar3912c982011-12-07 16:59:03 +0530408/* PLL 4 clock is available for 7627a target. */
409static struct clk_lookup msm_clk_7627a[] __initdata = {
410 CLK_LOOKUP("pll4_clk", pll4_clk.c, "acpu"),
411};
412
413static struct clk_lookup msm_clk_7627a_7625a[ARRAY_SIZE(msm_cmn_clk_7625a_7627a)
414 + ARRAY_SIZE(msm_clk_7627a)];
415
Matt Wagantallb64888f2012-04-02 21:35:07 -0700416static void __init msm7627a_clock_pre_init(void)
Pankaj Kumar3912c982011-12-07 16:59:03 +0530417{
418 int size = ARRAY_SIZE(msm_cmn_clk_7625a_7627a);
419
420 /* Intialize shared PLL control structure */
421 msm_shared_pll_control_init();
422
423 memcpy(&msm_clk_7627a_7625a, &msm_cmn_clk_7625a_7627a,
424 sizeof(msm_cmn_clk_7625a_7627a));
425 if (!cpu_is_msm7x25a()) {
426 memcpy(&msm_clk_7627a_7625a[size],
427 &msm_clk_7627a, sizeof(msm_clk_7627a));
428 size += ARRAY_SIZE(msm_clk_7627a);
429 }
430 msm7x27a_clock_init_data.size = size;
431}
432
Stephen Boydbb600ae2011-08-02 20:11:40 -0700433struct clock_init_data msm7x27a_clock_init_data __initdata = {
Pankaj Kumar3912c982011-12-07 16:59:03 +0530434 .table = msm_clk_7627a_7625a,
Matt Wagantallb64888f2012-04-02 21:35:07 -0700435 .pre_init = msm7627a_clock_pre_init,
Stephen Boydbb600ae2011-08-02 20:11:40 -0700436};
437
438static struct clk_lookup msm_clocks_8x50[] = {
Matt Wagantalle1a86062011-08-18 17:46:10 -0700439 CLK_LOOKUP("core_clk", adm_clk.c, "msm_dmov"),
Matt Wagantallc4b3a4d2011-08-17 16:58:39 -0700440 CLK_LOOKUP("core_clk", ce_clk.c, "qce.0"),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700441 CLK_LOOKUP("ebi1_clk", ebi1_clk.c, NULL),
442 CLK_LOOKUP("ebi2_clk", ebi2_clk.c, NULL),
443 CLK_LOOKUP("ecodec_clk", ecodec_clk.c, NULL),
444 CLK_LOOKUP("emdh_clk", emdh_clk.c, NULL),
Matt Wagantallc00f95d2012-01-05 14:22:45 -0800445 CLK_LOOKUP("core_clk", gp_clk.c, ""),
Matt Wagantall9dc01632011-08-17 18:55:04 -0700446 CLK_LOOKUP("core_clk", grp_3d_clk.c, "kgsl-3d0.0"),
Matt Wagantallac294852011-08-17 15:44:58 -0700447 CLK_LOOKUP("core_clk", i2c_clk.c, "msm_i2c.0"),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700448 CLK_LOOKUP("icodec_rx_clk", icodec_rx_clk.c, NULL),
449 CLK_LOOKUP("icodec_tx_clk", icodec_tx_clk.c, NULL),
Matt Wagantall9dc01632011-08-17 18:55:04 -0700450 CLK_LOOKUP("mem_clk", imem_clk.c, NULL),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700451 CLK_LOOKUP("mdc_clk", mdc_clk.c, NULL),
452 CLK_LOOKUP("mddi_clk", pmdh_clk.c, NULL),
453 CLK_LOOKUP("mdp_clk", mdp_clk.c, NULL),
454 CLK_LOOKUP("mdp_lcdc_pclk_clk", mdp_lcdc_pclk_clk.c, NULL),
455 CLK_LOOKUP("mdp_lcdc_pad_pclk_clk", mdp_lcdc_pad_pclk_clk.c, NULL),
456 CLK_LOOKUP("mdp_vsync_clk", mdp_vsync_clk.c, NULL),
457 CLK_LOOKUP("pbus_clk", pbus_clk.c, NULL),
458 CLK_LOOKUP("pcm_clk", pcm_clk.c, NULL),
459 CLK_LOOKUP("sdac_clk", sdac_clk.c, NULL),
Matt Wagantall37ce3842011-08-17 16:00:36 -0700460 CLK_LOOKUP("core_clk", sdc1_clk.c, "msm_sdcc.1"),
461 CLK_LOOKUP("iface_clk", sdc1_p_clk.c, "msm_sdcc.1"),
462 CLK_LOOKUP("core_clk", sdc2_clk.c, "msm_sdcc.2"),
463 CLK_LOOKUP("iface_clk", sdc2_p_clk.c, "msm_sdcc.2"),
464 CLK_LOOKUP("core_clk", sdc3_clk.c, "msm_sdcc.3"),
465 CLK_LOOKUP("iface_clk", sdc3_p_clk.c, "msm_sdcc.3"),
466 CLK_LOOKUP("core_clk", sdc4_clk.c, "msm_sdcc.4"),
467 CLK_LOOKUP("iface_clk", sdc4_p_clk.c, "msm_sdcc.4"),
Matt Wagantallac294852011-08-17 15:44:58 -0700468 CLK_LOOKUP("core_clk", spi_clk.c, "spi_qsd.0"),
469 CLK_DUMMY("iface_clk", SPI_P_CLK, "spi_qsd.0", 0),
Matt Wagantall640e5fd2011-08-17 16:08:53 -0700470 CLK_LOOKUP("core_clk", tsif_clk.c, "msm_tsif.0"),
471 CLK_LOOKUP("ref_clk", tsif_ref_clk.c, "msm_tsif.0"),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700472 CLK_LOOKUP("tv_dac_clk", tv_dac_clk.c, NULL),
473 CLK_LOOKUP("tv_enc_clk", tv_enc_clk.c, NULL),
Matt Wagantalle2522372011-08-17 14:52:21 -0700474 CLK_LOOKUP("core_clk", uart1_clk.c, "msm_serial.0"),
475 CLK_LOOKUP("core_clk", uart2_clk.c, "msm_serial.1"),
476 CLK_LOOKUP("core_clk", uart3_clk.c, "msm_serial.2"),
477 CLK_LOOKUP("core_clk", uart1dm_clk.c, "msm_serial_hs.0"),
478 CLK_LOOKUP("core_clk", uart2dm_clk.c, "msm_serial_hs.1"),
Manu Gautam5143b252012-01-05 19:25:23 -0800479 CLK_LOOKUP("alt_core_clk", usb_hs_clk.c, "msm_otg"),
480 CLK_LOOKUP("iface_clk", usb_hs_p_clk.c, "msm_otg"),
481 CLK_LOOKUP("alt_core_clk", usb_otg_clk.c, NULL),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700482 CLK_LOOKUP("vdc_clk", vdc_clk.c, NULL),
483 CLK_LOOKUP("vfe_clk", vfe_clk.c, NULL),
484 CLK_LOOKUP("vfe_mdc_clk", vfe_mdc_clk.c, NULL),
485 CLK_LOOKUP("vfe_axi_clk", vfe_axi_clk.c, NULL),
Manu Gautam5143b252012-01-05 19:25:23 -0800486 CLK_LOOKUP("alt_core_clk", usb_hs2_clk.c, "msm_hsusb_host.0"),
487 CLK_LOOKUP("iface_clk", usb_hs2_p_clk.c, "msm_hsusb_host.0"),
Matt Wagantallc00f95d2012-01-05 14:22:45 -0800488 CLK_LOOKUP("alt_core_clk", usb_hs3_clk.c, ""),
489 CLK_LOOKUP("iface_clk", usb_hs3_p_clk.c, ""),
Manu Gautam5143b252012-01-05 19:25:23 -0800490 CLK_LOOKUP("phy_clk", usb_phy_clk.c, "msm_otg"),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700491
492 CLK_LOOKUP("ebi1_acpu_clk", ebi_acpu_clk.c, NULL),
Matt Wagantall9dc01632011-08-17 18:55:04 -0700493 CLK_LOOKUP("bus_clk", ebi_grp_3d_clk.c, "kgsl-3d0.0"),
494 CLK_LOOKUP("bus_clk", ebi_grp_2d_clk.c, "kgsl-2d0.0"),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700495 CLK_LOOKUP("ebi1_lcdc_clk", ebi_lcdc_clk.c, NULL),
496 CLK_LOOKUP("ebi1_mddi_clk", ebi_mddi_clk.c, NULL),
497 CLK_LOOKUP("ebi1_tv_clk", ebi_tv_clk.c, NULL),
Manu Gautam5143b252012-01-05 19:25:23 -0800498 CLK_LOOKUP("core_clk", ebi_usb_clk.c, "msm_otg"),
499 CLK_LOOKUP("core_clk", ebi_usb_clk.c, "msm_hsusb_host.0"),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700500 CLK_LOOKUP("ebi1_vfe_clk", ebi_vfe_clk.c, NULL),
Matt Wagantalle1a86062011-08-18 17:46:10 -0700501 CLK_LOOKUP("mem_clk", ebi_adm_clk.c, "msm_dmov"),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700502
Matt Wagantall9dc01632011-08-17 18:55:04 -0700503 CLK_LOOKUP("iface_clk", grp_3d_p_clk.c, "kgsl-3d0.0"),
504 CLK_LOOKUP("core_clk", grp_2d_clk.c, "kgsl-2d0.0"),
505 CLK_LOOKUP("iface_clk", grp_2d_p_clk.c, "kgsl-2d0.0"),
Matt Wagantallac294852011-08-17 15:44:58 -0700506 CLK_LOOKUP("core_clk", gsbi_clk.c, "qup_i2c.4"),
507 CLK_LOOKUP("iface_clk", gsbi_p_clk.c, "qup_i2c.4"),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700508};
Stephen Boydbb600ae2011-08-02 20:11:40 -0700509
510struct clock_init_data qds8x50_clock_init_data __initdata = {
511 .table = msm_clocks_8x50,
512 .size = ARRAY_SIZE(msm_clocks_8x50),
513};