blob: 786ed0f7b44e77a08453f8c7661f6e2d189cb7cf [file] [log] [blame]
Olav Haugana2eee312012-12-04 12:52:02 -08001/* Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -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 <linux/kernel.h>
14#include <linux/init.h>
15#include <linux/err.h>
16#include <linux/ctype.h>
17#include <linux/io.h>
18#include <linux/spinlock.h>
19#include <linux/delay.h>
20#include <linux/clk.h>
Vikram Mulukutla14ee37d2012-08-08 15:18:09 -070021#include <linux/iopoll.h>
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -070022
Vikram Mulukutlab7a1a742012-05-30 17:24:33 -070023#include <mach/rpm-regulator-smd.h>
Vikram Mulukutla19245e02012-07-23 15:58:04 -070024#include <mach/socinfo.h>
Vikram Mulukutla77140da2012-08-13 21:37:18 -070025#include <mach/rpm-smd.h>
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -070026
27#include "clock-local2.h"
28#include "clock-pll.h"
Vikram Mulukutlad08a1522012-05-24 15:24:01 -070029#include "clock-rpm.h"
30#include "clock-voter.h"
Vikram Mulukutlafe0f5a52012-08-16 16:51:08 -070031#include "clock-mdss-8974.h"
Matt Wagantall33d01f52012-02-23 23:27:44 -080032#include "clock.h"
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -070033
34enum {
35 GCC_BASE,
36 MMSS_BASE,
37 LPASS_BASE,
Matt Wagantalledf2fad2012-08-06 16:11:46 -070038 APCS_BASE,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -070039 N_BASES,
40};
41
42static void __iomem *virt_bases[N_BASES];
43
44#define GCC_REG_BASE(x) (void __iomem *)(virt_bases[GCC_BASE] + (x))
45#define MMSS_REG_BASE(x) (void __iomem *)(virt_bases[MMSS_BASE] + (x))
46#define LPASS_REG_BASE(x) (void __iomem *)(virt_bases[LPASS_BASE] + (x))
Matt Wagantalledf2fad2012-08-06 16:11:46 -070047#define APCS_REG_BASE(x) (void __iomem *)(virt_bases[APCS_BASE] + (x))
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -070048
49#define GPLL0_MODE_REG 0x0000
50#define GPLL0_L_REG 0x0004
51#define GPLL0_M_REG 0x0008
52#define GPLL0_N_REG 0x000C
53#define GPLL0_USER_CTL_REG 0x0010
54#define GPLL0_CONFIG_CTL_REG 0x0014
55#define GPLL0_TEST_CTL_REG 0x0018
56#define GPLL0_STATUS_REG 0x001C
57
58#define GPLL1_MODE_REG 0x0040
59#define GPLL1_L_REG 0x0044
60#define GPLL1_M_REG 0x0048
61#define GPLL1_N_REG 0x004C
62#define GPLL1_USER_CTL_REG 0x0050
63#define GPLL1_CONFIG_CTL_REG 0x0054
64#define GPLL1_TEST_CTL_REG 0x0058
65#define GPLL1_STATUS_REG 0x005C
66
67#define MMPLL0_MODE_REG 0x0000
68#define MMPLL0_L_REG 0x0004
69#define MMPLL0_M_REG 0x0008
70#define MMPLL0_N_REG 0x000C
71#define MMPLL0_USER_CTL_REG 0x0010
72#define MMPLL0_CONFIG_CTL_REG 0x0014
73#define MMPLL0_TEST_CTL_REG 0x0018
74#define MMPLL0_STATUS_REG 0x001C
75
76#define MMPLL1_MODE_REG 0x0040
77#define MMPLL1_L_REG 0x0044
78#define MMPLL1_M_REG 0x0048
79#define MMPLL1_N_REG 0x004C
80#define MMPLL1_USER_CTL_REG 0x0050
81#define MMPLL1_CONFIG_CTL_REG 0x0054
82#define MMPLL1_TEST_CTL_REG 0x0058
83#define MMPLL1_STATUS_REG 0x005C
84
85#define MMPLL3_MODE_REG 0x0080
86#define MMPLL3_L_REG 0x0084
87#define MMPLL3_M_REG 0x0088
88#define MMPLL3_N_REG 0x008C
89#define MMPLL3_USER_CTL_REG 0x0090
90#define MMPLL3_CONFIG_CTL_REG 0x0094
91#define MMPLL3_TEST_CTL_REG 0x0098
92#define MMPLL3_STATUS_REG 0x009C
93
94#define LPAPLL_MODE_REG 0x0000
95#define LPAPLL_L_REG 0x0004
96#define LPAPLL_M_REG 0x0008
97#define LPAPLL_N_REG 0x000C
98#define LPAPLL_USER_CTL_REG 0x0010
99#define LPAPLL_CONFIG_CTL_REG 0x0014
100#define LPAPLL_TEST_CTL_REG 0x0018
101#define LPAPLL_STATUS_REG 0x001C
102
103#define GCC_DEBUG_CLK_CTL_REG 0x1880
104#define CLOCK_FRQ_MEASURE_CTL_REG 0x1884
105#define CLOCK_FRQ_MEASURE_STATUS_REG 0x1888
106#define GCC_XO_DIV4_CBCR_REG 0x10C8
Matt Wagantall9a9b6f02012-08-07 23:12:26 -0700107#define GCC_PLLTEST_PAD_CFG_REG 0x188C
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700108#define APCS_GPLL_ENA_VOTE_REG 0x1480
109#define MMSS_PLL_VOTE_APCS_REG 0x0100
110#define MMSS_DEBUG_CLK_CTL_REG 0x0900
111#define LPASS_DEBUG_CLK_CTL_REG 0x29000
112#define LPASS_LPA_PLL_VOTE_APPS_REG 0x2000
113
Matt Wagantalledf2fad2012-08-06 16:11:46 -0700114#define GLB_CLK_DIAG_REG 0x001C
Matt Wagantall0976c4c2013-02-07 17:12:43 -0800115#define L2_CBCR_REG 0x004C
Matt Wagantalledf2fad2012-08-06 16:11:46 -0700116
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700117#define USB30_MASTER_CMD_RCGR 0x03D4
118#define USB30_MOCK_UTMI_CMD_RCGR 0x03E8
119#define USB_HSIC_SYSTEM_CMD_RCGR 0x041C
120#define USB_HSIC_CMD_RCGR 0x0440
121#define USB_HSIC_IO_CAL_CMD_RCGR 0x0458
122#define USB_HS_SYSTEM_CMD_RCGR 0x0490
Vikram Mulukutla3b98a6d2012-08-15 20:35:25 -0700123#define SYS_NOC_USB3_AXI_CBCR 0x0108
124#define USB30_SLEEP_CBCR 0x03CC
125#define USB2A_PHY_SLEEP_CBCR 0x04AC
126#define USB2B_PHY_SLEEP_CBCR 0x04B4
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700127#define SDCC1_APPS_CMD_RCGR 0x04D0
128#define SDCC2_APPS_CMD_RCGR 0x0510
129#define SDCC3_APPS_CMD_RCGR 0x0550
130#define SDCC4_APPS_CMD_RCGR 0x0590
131#define BLSP1_QUP1_SPI_APPS_CMD_RCGR 0x064C
Vikram Mulukutlaa57e6e42013-01-23 16:58:08 -0800132#define BLSP1_QUP1_I2C_APPS_CMD_RCGR 0x0660
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700133#define BLSP1_UART1_APPS_CMD_RCGR 0x068C
134#define BLSP1_QUP2_SPI_APPS_CMD_RCGR 0x06CC
Vikram Mulukutlaa57e6e42013-01-23 16:58:08 -0800135#define BLSP1_QUP2_I2C_APPS_CMD_RCGR 0x06E0
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700136#define BLSP1_UART2_APPS_CMD_RCGR 0x070C
137#define BLSP1_QUP3_SPI_APPS_CMD_RCGR 0x074C
Vikram Mulukutlaa57e6e42013-01-23 16:58:08 -0800138#define BLSP1_QUP3_I2C_APPS_CMD_RCGR 0x0760
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700139#define BLSP1_UART3_APPS_CMD_RCGR 0x078C
140#define BLSP1_QUP4_SPI_APPS_CMD_RCGR 0x07CC
Vikram Mulukutlaa57e6e42013-01-23 16:58:08 -0800141#define BLSP1_QUP4_I2C_APPS_CMD_RCGR 0x07E0
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700142#define BLSP1_UART4_APPS_CMD_RCGR 0x080C
143#define BLSP1_QUP5_SPI_APPS_CMD_RCGR 0x084C
Vikram Mulukutlaa57e6e42013-01-23 16:58:08 -0800144#define BLSP1_QUP5_I2C_APPS_CMD_RCGR 0x0860
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700145#define BLSP1_UART5_APPS_CMD_RCGR 0x088C
146#define BLSP1_QUP6_SPI_APPS_CMD_RCGR 0x08CC
Vikram Mulukutlaa57e6e42013-01-23 16:58:08 -0800147#define BLSP1_QUP6_I2C_APPS_CMD_RCGR 0x08E0
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700148#define BLSP1_UART6_APPS_CMD_RCGR 0x090C
149#define BLSP2_QUP1_SPI_APPS_CMD_RCGR 0x098C
Vikram Mulukutlaa57e6e42013-01-23 16:58:08 -0800150#define BLSP2_QUP1_I2C_APPS_CMD_RCGR 0x09A0
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700151#define BLSP2_UART1_APPS_CMD_RCGR 0x09CC
152#define BLSP2_QUP2_SPI_APPS_CMD_RCGR 0x0A0C
Vikram Mulukutlaa57e6e42013-01-23 16:58:08 -0800153#define BLSP2_QUP2_I2C_APPS_CMD_RCGR 0x0A20
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700154#define BLSP2_UART2_APPS_CMD_RCGR 0x0A4C
155#define BLSP2_QUP3_SPI_APPS_CMD_RCGR 0x0A8C
Vikram Mulukutlaa57e6e42013-01-23 16:58:08 -0800156#define BLSP2_QUP3_I2C_APPS_CMD_RCGR 0x0AA0
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700157#define BLSP2_UART3_APPS_CMD_RCGR 0x0ACC
158#define BLSP2_QUP4_SPI_APPS_CMD_RCGR 0x0B0C
Vikram Mulukutlaa57e6e42013-01-23 16:58:08 -0800159#define BLSP2_QUP4_I2C_APPS_CMD_RCGR 0x0B20
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700160#define BLSP2_UART4_APPS_CMD_RCGR 0x0B4C
161#define BLSP2_QUP5_SPI_APPS_CMD_RCGR 0x0B8C
Vikram Mulukutlaa57e6e42013-01-23 16:58:08 -0800162#define BLSP2_QUP5_I2C_APPS_CMD_RCGR 0x0BA0
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700163#define BLSP2_UART5_APPS_CMD_RCGR 0x0BCC
164#define BLSP2_QUP6_SPI_APPS_CMD_RCGR 0x0C0C
Vikram Mulukutlaa57e6e42013-01-23 16:58:08 -0800165#define BLSP2_QUP6_I2C_APPS_CMD_RCGR 0x0C20
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700166#define BLSP2_UART6_APPS_CMD_RCGR 0x0C4C
167#define PDM2_CMD_RCGR 0x0CD0
168#define TSIF_REF_CMD_RCGR 0x0D90
169#define CE1_CMD_RCGR 0x1050
170#define CE2_CMD_RCGR 0x1090
171#define GP1_CMD_RCGR 0x1904
172#define GP2_CMD_RCGR 0x1944
173#define GP3_CMD_RCGR 0x1984
174#define LPAIF_SPKR_CMD_RCGR 0xA000
175#define LPAIF_PRI_CMD_RCGR 0xB000
176#define LPAIF_SEC_CMD_RCGR 0xC000
177#define LPAIF_TER_CMD_RCGR 0xD000
178#define LPAIF_QUAD_CMD_RCGR 0xE000
179#define LPAIF_PCM0_CMD_RCGR 0xF000
180#define LPAIF_PCM1_CMD_RCGR 0x10000
181#define RESAMPLER_CMD_RCGR 0x11000
182#define SLIMBUS_CMD_RCGR 0x12000
183#define LPAIF_PCMOE_CMD_RCGR 0x13000
184#define AHBFABRIC_CMD_RCGR 0x18000
185#define VCODEC0_CMD_RCGR 0x1000
186#define PCLK0_CMD_RCGR 0x2000
187#define PCLK1_CMD_RCGR 0x2020
188#define MDP_CMD_RCGR 0x2040
189#define EXTPCLK_CMD_RCGR 0x2060
190#define VSYNC_CMD_RCGR 0x2080
191#define EDPPIXEL_CMD_RCGR 0x20A0
192#define EDPLINK_CMD_RCGR 0x20C0
193#define EDPAUX_CMD_RCGR 0x20E0
194#define HDMI_CMD_RCGR 0x2100
195#define BYTE0_CMD_RCGR 0x2120
196#define BYTE1_CMD_RCGR 0x2140
197#define ESC0_CMD_RCGR 0x2160
198#define ESC1_CMD_RCGR 0x2180
199#define CSI0PHYTIMER_CMD_RCGR 0x3000
200#define CSI1PHYTIMER_CMD_RCGR 0x3030
201#define CSI2PHYTIMER_CMD_RCGR 0x3060
202#define CSI0_CMD_RCGR 0x3090
203#define CSI1_CMD_RCGR 0x3100
204#define CSI2_CMD_RCGR 0x3160
205#define CSI3_CMD_RCGR 0x31C0
206#define CCI_CMD_RCGR 0x3300
207#define MCLK0_CMD_RCGR 0x3360
208#define MCLK1_CMD_RCGR 0x3390
209#define MCLK2_CMD_RCGR 0x33C0
210#define MCLK3_CMD_RCGR 0x33F0
211#define MMSS_GP0_CMD_RCGR 0x3420
212#define MMSS_GP1_CMD_RCGR 0x3450
213#define JPEG0_CMD_RCGR 0x3500
214#define JPEG1_CMD_RCGR 0x3520
215#define JPEG2_CMD_RCGR 0x3540
216#define VFE0_CMD_RCGR 0x3600
217#define VFE1_CMD_RCGR 0x3620
218#define CPP_CMD_RCGR 0x3640
219#define GFX3D_CMD_RCGR 0x4000
220#define RBCPR_CMD_RCGR 0x4060
221#define AHB_CMD_RCGR 0x5000
222#define AXI_CMD_RCGR 0x5040
223#define OCMEMNOC_CMD_RCGR 0x5090
Vikram Mulukutla274b2d92012-07-13 15:53:04 -0700224#define OCMEMCX_OCMEMNOC_CBCR 0x4058
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700225
226#define MMSS_BCR 0x0240
227#define USB_30_BCR 0x03C0
228#define USB3_PHY_BCR 0x03FC
229#define USB_HS_HSIC_BCR 0x0400
230#define USB_HS_BCR 0x0480
231#define SDCC1_BCR 0x04C0
232#define SDCC2_BCR 0x0500
233#define SDCC3_BCR 0x0540
234#define SDCC4_BCR 0x0580
235#define BLSP1_BCR 0x05C0
236#define BLSP1_QUP1_BCR 0x0640
237#define BLSP1_UART1_BCR 0x0680
238#define BLSP1_QUP2_BCR 0x06C0
239#define BLSP1_UART2_BCR 0x0700
240#define BLSP1_QUP3_BCR 0x0740
241#define BLSP1_UART3_BCR 0x0780
242#define BLSP1_QUP4_BCR 0x07C0
243#define BLSP1_UART4_BCR 0x0800
244#define BLSP1_QUP5_BCR 0x0840
245#define BLSP1_UART5_BCR 0x0880
246#define BLSP1_QUP6_BCR 0x08C0
247#define BLSP1_UART6_BCR 0x0900
248#define BLSP2_BCR 0x0940
249#define BLSP2_QUP1_BCR 0x0980
250#define BLSP2_UART1_BCR 0x09C0
251#define BLSP2_QUP2_BCR 0x0A00
252#define BLSP2_UART2_BCR 0x0A40
253#define BLSP2_QUP3_BCR 0x0A80
254#define BLSP2_UART3_BCR 0x0AC0
255#define BLSP2_QUP4_BCR 0x0B00
256#define BLSP2_UART4_BCR 0x0B40
257#define BLSP2_QUP5_BCR 0x0B80
258#define BLSP2_UART5_BCR 0x0BC0
259#define BLSP2_QUP6_BCR 0x0C00
260#define BLSP2_UART6_BCR 0x0C40
Vikram Mulukutlaa967db42012-05-10 16:20:40 -0700261#define BOOT_ROM_BCR 0x0E00
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700262#define PDM_BCR 0x0CC0
263#define PRNG_BCR 0x0D00
264#define BAM_DMA_BCR 0x0D40
265#define TSIF_BCR 0x0D80
266#define CE1_BCR 0x1040
267#define CE2_BCR 0x1080
268#define AUDIO_CORE_BCR 0x4000
269#define VENUS0_BCR 0x1020
270#define MDSS_BCR 0x2300
271#define CAMSS_PHY0_BCR 0x3020
272#define CAMSS_PHY1_BCR 0x3050
273#define CAMSS_PHY2_BCR 0x3080
274#define CAMSS_CSI0_BCR 0x30B0
275#define CAMSS_CSI0PHY_BCR 0x30C0
276#define CAMSS_CSI0RDI_BCR 0x30D0
277#define CAMSS_CSI0PIX_BCR 0x30E0
278#define CAMSS_CSI1_BCR 0x3120
279#define CAMSS_CSI1PHY_BCR 0x3130
280#define CAMSS_CSI1RDI_BCR 0x3140
281#define CAMSS_CSI1PIX_BCR 0x3150
282#define CAMSS_CSI2_BCR 0x3180
283#define CAMSS_CSI2PHY_BCR 0x3190
284#define CAMSS_CSI2RDI_BCR 0x31A0
285#define CAMSS_CSI2PIX_BCR 0x31B0
286#define CAMSS_CSI3_BCR 0x31E0
287#define CAMSS_CSI3PHY_BCR 0x31F0
288#define CAMSS_CSI3RDI_BCR 0x3200
289#define CAMSS_CSI3PIX_BCR 0x3210
290#define CAMSS_ISPIF_BCR 0x3220
291#define CAMSS_CCI_BCR 0x3340
292#define CAMSS_MCLK0_BCR 0x3380
293#define CAMSS_MCLK1_BCR 0x33B0
294#define CAMSS_MCLK2_BCR 0x33E0
295#define CAMSS_MCLK3_BCR 0x3410
296#define CAMSS_GP0_BCR 0x3440
297#define CAMSS_GP1_BCR 0x3470
298#define CAMSS_TOP_BCR 0x3480
299#define CAMSS_MICRO_BCR 0x3490
300#define CAMSS_JPEG_BCR 0x35A0
301#define CAMSS_VFE_BCR 0x36A0
302#define CAMSS_CSI_VFE0_BCR 0x3700
303#define CAMSS_CSI_VFE1_BCR 0x3710
304#define OCMEMNOC_BCR 0x50B0
305#define MMSSNOCAHB_BCR 0x5020
306#define MMSSNOCAXI_BCR 0x5060
307#define OXILI_GFX3D_CBCR 0x4028
308#define OXILICX_AHB_CBCR 0x403C
309#define OXILICX_AXI_CBCR 0x4038
310#define OXILI_BCR 0x4020
311#define OXILICX_BCR 0x4030
Vikram Mulukutlaa967db42012-05-10 16:20:40 -0700312#define LPASS_Q6SS_BCR 0x6000
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700313
314#define OCMEM_SYS_NOC_AXI_CBCR 0x0244
315#define OCMEM_NOC_CFG_AHB_CBCR 0x0248
316#define MMSS_NOC_CFG_AHB_CBCR 0x024C
317
318#define USB30_MASTER_CBCR 0x03C8
319#define USB30_MOCK_UTMI_CBCR 0x03D0
320#define USB_HSIC_AHB_CBCR 0x0408
321#define USB_HSIC_SYSTEM_CBCR 0x040C
322#define USB_HSIC_CBCR 0x0410
323#define USB_HSIC_IO_CAL_CBCR 0x0414
324#define USB_HS_SYSTEM_CBCR 0x0484
325#define USB_HS_AHB_CBCR 0x0488
326#define SDCC1_APPS_CBCR 0x04C4
327#define SDCC1_AHB_CBCR 0x04C8
328#define SDCC2_APPS_CBCR 0x0504
329#define SDCC2_AHB_CBCR 0x0508
330#define SDCC3_APPS_CBCR 0x0544
331#define SDCC3_AHB_CBCR 0x0548
332#define SDCC4_APPS_CBCR 0x0584
333#define SDCC4_AHB_CBCR 0x0588
334#define BLSP1_AHB_CBCR 0x05C4
335#define BLSP1_QUP1_SPI_APPS_CBCR 0x0644
336#define BLSP1_QUP1_I2C_APPS_CBCR 0x0648
337#define BLSP1_UART1_APPS_CBCR 0x0684
338#define BLSP1_UART1_SIM_CBCR 0x0688
339#define BLSP1_QUP2_SPI_APPS_CBCR 0x06C4
340#define BLSP1_QUP2_I2C_APPS_CBCR 0x06C8
341#define BLSP1_UART2_APPS_CBCR 0x0704
342#define BLSP1_UART2_SIM_CBCR 0x0708
343#define BLSP1_QUP3_SPI_APPS_CBCR 0x0744
344#define BLSP1_QUP3_I2C_APPS_CBCR 0x0748
345#define BLSP1_UART3_APPS_CBCR 0x0784
346#define BLSP1_UART3_SIM_CBCR 0x0788
347#define BLSP1_QUP4_SPI_APPS_CBCR 0x07C4
348#define BLSP1_QUP4_I2C_APPS_CBCR 0x07C8
349#define BLSP1_UART4_APPS_CBCR 0x0804
350#define BLSP1_UART4_SIM_CBCR 0x0808
351#define BLSP1_QUP5_SPI_APPS_CBCR 0x0844
352#define BLSP1_QUP5_I2C_APPS_CBCR 0x0848
353#define BLSP1_UART5_APPS_CBCR 0x0884
354#define BLSP1_UART5_SIM_CBCR 0x0888
355#define BLSP1_QUP6_SPI_APPS_CBCR 0x08C4
356#define BLSP1_QUP6_I2C_APPS_CBCR 0x08C8
357#define BLSP1_UART6_APPS_CBCR 0x0904
358#define BLSP1_UART6_SIM_CBCR 0x0908
359#define BLSP2_AHB_CBCR 0x0944
Vikram Mulukutlaa967db42012-05-10 16:20:40 -0700360#define BOOT_ROM_AHB_CBCR 0x0E04
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700361#define BLSP2_QUP1_SPI_APPS_CBCR 0x0984
362#define BLSP2_QUP1_I2C_APPS_CBCR 0x0988
363#define BLSP2_UART1_APPS_CBCR 0x09C4
364#define BLSP2_UART1_SIM_CBCR 0x09C8
365#define BLSP2_QUP2_SPI_APPS_CBCR 0x0A04
366#define BLSP2_QUP2_I2C_APPS_CBCR 0x0A08
367#define BLSP2_UART2_APPS_CBCR 0x0A44
368#define BLSP2_UART2_SIM_CBCR 0x0A48
369#define BLSP2_QUP3_SPI_APPS_CBCR 0x0A84
370#define BLSP2_QUP3_I2C_APPS_CBCR 0x0A88
371#define BLSP2_UART3_APPS_CBCR 0x0AC4
372#define BLSP2_UART3_SIM_CBCR 0x0AC8
373#define BLSP2_QUP4_SPI_APPS_CBCR 0x0B04
374#define BLSP2_QUP4_I2C_APPS_CBCR 0x0B08
375#define BLSP2_UART4_APPS_CBCR 0x0B44
376#define BLSP2_UART4_SIM_CBCR 0x0B48
377#define BLSP2_QUP5_SPI_APPS_CBCR 0x0B84
378#define BLSP2_QUP5_I2C_APPS_CBCR 0x0B88
379#define BLSP2_UART5_APPS_CBCR 0x0BC4
380#define BLSP2_UART5_SIM_CBCR 0x0BC8
381#define BLSP2_QUP6_SPI_APPS_CBCR 0x0C04
382#define BLSP2_QUP6_I2C_APPS_CBCR 0x0C08
383#define BLSP2_UART6_APPS_CBCR 0x0C44
384#define BLSP2_UART6_SIM_CBCR 0x0C48
385#define PDM_AHB_CBCR 0x0CC4
386#define PDM_XO4_CBCR 0x0CC8
387#define PDM2_CBCR 0x0CCC
388#define PRNG_AHB_CBCR 0x0D04
389#define BAM_DMA_AHB_CBCR 0x0D44
390#define TSIF_AHB_CBCR 0x0D84
391#define TSIF_REF_CBCR 0x0D88
392#define MSG_RAM_AHB_CBCR 0x0E44
393#define CE1_CBCR 0x1044
394#define CE1_AXI_CBCR 0x1048
395#define CE1_AHB_CBCR 0x104C
396#define CE2_CBCR 0x1084
397#define CE2_AXI_CBCR 0x1088
398#define CE2_AHB_CBCR 0x108C
399#define GCC_AHB_CBCR 0x10C0
400#define GP1_CBCR 0x1900
401#define GP2_CBCR 0x1940
402#define GP3_CBCR 0x1980
Vikram Mulukutla14ee37d2012-08-08 15:18:09 -0700403#define AUDIO_CORE_GDSCR 0x7000
Vikram Mulukutla6c0f1a72012-08-10 01:59:28 -0700404#define AUDIO_CORE_IXFABRIC_CBCR 0x1B000
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700405#define AUDIO_CORE_LPAIF_CODEC_SPKR_OSR_CBCR 0xA014
406#define AUDIO_CORE_LPAIF_CODEC_SPKR_IBIT_CBCR 0xA018
407#define AUDIO_CORE_LPAIF_CODEC_SPKR_EBIT_CBCR 0xA01C
408#define AUDIO_CORE_LPAIF_PRI_OSR_CBCR 0xB014
409#define AUDIO_CORE_LPAIF_PRI_IBIT_CBCR 0xB018
410#define AUDIO_CORE_LPAIF_PRI_EBIT_CBCR 0xB01C
411#define AUDIO_CORE_LPAIF_SEC_OSR_CBCR 0xC014
412#define AUDIO_CORE_LPAIF_SEC_IBIT_CBCR 0xC018
413#define AUDIO_CORE_LPAIF_SEC_EBIT_CBCR 0xC01C
414#define AUDIO_CORE_LPAIF_TER_OSR_CBCR 0xD014
415#define AUDIO_CORE_LPAIF_TER_IBIT_CBCR 0xD018
416#define AUDIO_CORE_LPAIF_TER_EBIT_CBCR 0xD01C
417#define AUDIO_CORE_LPAIF_QUAD_OSR_CBCR 0xE014
418#define AUDIO_CORE_LPAIF_QUAD_IBIT_CBCR 0xE018
419#define AUDIO_CORE_LPAIF_QUAD_EBIT_CBCR 0xE01C
420#define AUDIO_CORE_LPAIF_PCM0_IBIT_CBCR 0xF014
421#define AUDIO_CORE_LPAIF_PCM0_EBIT_CBCR 0xF018
422#define AUDIO_CORE_LPAIF_PCM1_IBIT_CBCR 0x10014
423#define AUDIO_CORE_LPAIF_PCM1_EBIT_CBCR 0x10018
424#define AUDIO_CORE_RESAMPLER_CORE_CBCR 0x11014
425#define AUDIO_CORE_RESAMPLER_LFABIF_CBCR 0x11018
426#define AUDIO_CORE_SLIMBUS_CORE_CBCR 0x12014
427#define AUDIO_CORE_SLIMBUS_LFABIF_CBCR 0x12018
428#define AUDIO_CORE_LPAIF_PCM_DATA_OE_CBCR 0x13014
429#define VENUS0_VCODEC0_CBCR 0x1028
430#define VENUS0_AHB_CBCR 0x1030
431#define VENUS0_AXI_CBCR 0x1034
432#define VENUS0_OCMEMNOC_CBCR 0x1038
433#define MDSS_AHB_CBCR 0x2308
434#define MDSS_HDMI_AHB_CBCR 0x230C
435#define MDSS_AXI_CBCR 0x2310
436#define MDSS_PCLK0_CBCR 0x2314
437#define MDSS_PCLK1_CBCR 0x2318
438#define MDSS_MDP_CBCR 0x231C
439#define MDSS_MDP_LUT_CBCR 0x2320
440#define MDSS_EXTPCLK_CBCR 0x2324
441#define MDSS_VSYNC_CBCR 0x2328
442#define MDSS_EDPPIXEL_CBCR 0x232C
443#define MDSS_EDPLINK_CBCR 0x2330
444#define MDSS_EDPAUX_CBCR 0x2334
445#define MDSS_HDMI_CBCR 0x2338
446#define MDSS_BYTE0_CBCR 0x233C
447#define MDSS_BYTE1_CBCR 0x2340
448#define MDSS_ESC0_CBCR 0x2344
449#define MDSS_ESC1_CBCR 0x2348
450#define CAMSS_PHY0_CSI0PHYTIMER_CBCR 0x3024
451#define CAMSS_PHY1_CSI1PHYTIMER_CBCR 0x3054
452#define CAMSS_PHY2_CSI2PHYTIMER_CBCR 0x3084
453#define CAMSS_CSI0_CBCR 0x30B4
454#define CAMSS_CSI0_AHB_CBCR 0x30BC
455#define CAMSS_CSI0PHY_CBCR 0x30C4
456#define CAMSS_CSI0RDI_CBCR 0x30D4
457#define CAMSS_CSI0PIX_CBCR 0x30E4
458#define CAMSS_CSI1_CBCR 0x3124
459#define CAMSS_CSI1_AHB_CBCR 0x3128
460#define CAMSS_CSI1PHY_CBCR 0x3134
461#define CAMSS_CSI1RDI_CBCR 0x3144
462#define CAMSS_CSI1PIX_CBCR 0x3154
463#define CAMSS_CSI2_CBCR 0x3184
464#define CAMSS_CSI2_AHB_CBCR 0x3188
465#define CAMSS_CSI2PHY_CBCR 0x3194
466#define CAMSS_CSI2RDI_CBCR 0x31A4
467#define CAMSS_CSI2PIX_CBCR 0x31B4
468#define CAMSS_CSI3_CBCR 0x31E4
469#define CAMSS_CSI3_AHB_CBCR 0x31E8
470#define CAMSS_CSI3PHY_CBCR 0x31F4
471#define CAMSS_CSI3RDI_CBCR 0x3204
472#define CAMSS_CSI3PIX_CBCR 0x3214
473#define CAMSS_ISPIF_AHB_CBCR 0x3224
474#define CAMSS_CCI_CCI_CBCR 0x3344
475#define CAMSS_CCI_CCI_AHB_CBCR 0x3348
476#define CAMSS_MCLK0_CBCR 0x3384
477#define CAMSS_MCLK1_CBCR 0x33B4
478#define CAMSS_MCLK2_CBCR 0x33E4
479#define CAMSS_MCLK3_CBCR 0x3414
480#define CAMSS_GP0_CBCR 0x3444
481#define CAMSS_GP1_CBCR 0x3474
482#define CAMSS_TOP_AHB_CBCR 0x3484
483#define CAMSS_MICRO_AHB_CBCR 0x3494
484#define CAMSS_JPEG_JPEG0_CBCR 0x35A8
485#define CAMSS_JPEG_JPEG1_CBCR 0x35AC
486#define CAMSS_JPEG_JPEG2_CBCR 0x35B0
487#define CAMSS_JPEG_JPEG_AHB_CBCR 0x35B4
488#define CAMSS_JPEG_JPEG_AXI_CBCR 0x35B8
489#define CAMSS_JPEG_JPEG_OCMEMNOC_CBCR 0x35BC
490#define CAMSS_VFE_VFE0_CBCR 0x36A8
491#define CAMSS_VFE_VFE1_CBCR 0x36AC
492#define CAMSS_VFE_CPP_CBCR 0x36B0
493#define CAMSS_VFE_CPP_AHB_CBCR 0x36B4
494#define CAMSS_VFE_VFE_AHB_CBCR 0x36B8
495#define CAMSS_VFE_VFE_AXI_CBCR 0x36BC
496#define CAMSS_VFE_VFE_OCMEMNOC_CBCR 0x36C0
497#define CAMSS_CSI_VFE0_CBCR 0x3704
498#define CAMSS_CSI_VFE1_CBCR 0x3714
499#define MMSS_MMSSNOC_AXI_CBCR 0x506C
500#define MMSS_MMSSNOC_AHB_CBCR 0x5024
501#define MMSS_MMSSNOC_BTO_AHB_CBCR 0x5028
502#define MMSS_MISC_AHB_CBCR 0x502C
503#define MMSS_S0_AXI_CBCR 0x5064
504#define OCMEMNOC_CBCR 0x50B4
Vikram Mulukutlaa967db42012-05-10 16:20:40 -0700505#define LPASS_Q6SS_AHB_LFABIF_CBCR 0x22000
506#define LPASS_Q6SS_XO_CBCR 0x26000
Vikram Mulukutla3454e9e2012-08-11 20:18:42 -0700507#define LPASS_Q6_AXI_CBCR 0x11C0
Vikram Mulukutlab5b311e2012-08-09 14:58:48 -0700508#define Q6SS_AHBM_CBCR 0x22004
Vikram Mulukutla97ac3342012-08-21 12:55:13 -0700509#define AUDIO_WRAPPER_BR_CBCR 0x24000
Vikram Mulukutlaa967db42012-05-10 16:20:40 -0700510#define MSS_CFG_AHB_CBCR 0x0280
Vikram Mulukutla31926eb2012-08-12 19:58:08 -0700511#define MSS_Q6_BIMC_AXI_CBCR 0x0284
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700512
513#define APCS_CLOCK_BRANCH_ENA_VOTE 0x1484
514#define APCS_CLOCK_SLEEP_ENA_VOTE 0x1488
515
516/* Mux source select values */
517#define cxo_source_val 0
518#define gpll0_source_val 1
519#define gpll1_source_val 2
520#define gnd_source_val 5
521#define mmpll0_mm_source_val 1
522#define mmpll1_mm_source_val 2
523#define mmpll3_mm_source_val 3
524#define gpll0_mm_source_val 5
525#define cxo_mm_source_val 0
526#define mm_gnd_source_val 6
527#define gpll1_hsic_source_val 4
528#define cxo_lpass_source_val 0
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700529#define gpll0_lpass_source_val 5
530#define edppll_270_mm_source_val 4
531#define edppll_350_mm_source_val 4
532#define dsipll_750_mm_source_val 1
Vikram Mulukutlafe0f5a52012-08-16 16:51:08 -0700533#define dsipll0_byte_mm_source_val 1
534#define dsipll0_pixel_mm_source_val 1
Vikram Mulukutla86b76342012-08-15 16:22:09 -0700535#define hdmipll_mm_source_val 3
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700536
Vikram Mulukutlad3dca652012-11-19 11:04:13 -0800537#define F_GCC_GND \
538 { \
539 .freq_hz = 0, \
540 .m_val = 0, \
541 .n_val = 0, \
542 .div_src_val = BVAL(4, 0, 1) | BVAL(10, 8, gnd_source_val), \
543 }
544
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700545#define F(f, s, div, m, n) \
546 { \
547 .freq_hz = (f), \
548 .src_clk = &s##_clk_src.c, \
549 .m_val = (m), \
Vikram Mulukutla60bfbb02012-08-08 00:49:20 -0700550 .n_val = ~((n)-(m)) * !!(n), \
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700551 .d_val = ~(n),\
552 .div_src_val = BVAL(4, 0, (int)(2*(div) - 1)) \
553 | BVAL(10, 8, s##_source_val), \
554 }
555
556#define F_MM(f, s, div, m, n) \
557 { \
558 .freq_hz = (f), \
559 .src_clk = &s##_clk_src.c, \
560 .m_val = (m), \
Vikram Mulukutla60bfbb02012-08-08 00:49:20 -0700561 .n_val = ~((n)-(m)) * !!(n), \
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700562 .d_val = ~(n),\
563 .div_src_val = BVAL(4, 0, (int)(2*(div) - 1)) \
564 | BVAL(10, 8, s##_mm_source_val), \
565 }
566
Vikram Mulukutla86b76342012-08-15 16:22:09 -0700567#define F_HDMI(f, s, div, m, n) \
568 { \
569 .freq_hz = (f), \
570 .src_clk = &s##_clk_src, \
571 .m_val = (m), \
572 .n_val = ~((n)-(m)) * !!(n), \
573 .d_val = ~(n),\
574 .div_src_val = BVAL(4, 0, (int)(2*(div) - 1)) \
575 | BVAL(10, 8, s##_mm_source_val), \
576 }
577
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700578#define F_MDSS(f, s, div, m, n) \
579 { \
580 .freq_hz = (f), \
581 .m_val = (m), \
Vikram Mulukutla60bfbb02012-08-08 00:49:20 -0700582 .n_val = ~((n)-(m)) * !!(n), \
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700583 .d_val = ~(n),\
584 .div_src_val = BVAL(4, 0, (int)(2*(div) - 1)) \
585 | BVAL(10, 8, s##_mm_source_val), \
586 }
587
588#define F_HSIC(f, s, div, m, n) \
589 { \
590 .freq_hz = (f), \
591 .src_clk = &s##_clk_src.c, \
592 .m_val = (m), \
Vikram Mulukutla60bfbb02012-08-08 00:49:20 -0700593 .n_val = ~((n)-(m)) * !!(n), \
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700594 .d_val = ~(n),\
595 .div_src_val = BVAL(4, 0, (int)(2*(div) - 1)) \
596 | BVAL(10, 8, s##_hsic_source_val), \
597 }
598
599#define F_LPASS(f, s, div, m, n) \
600 { \
601 .freq_hz = (f), \
602 .src_clk = &s##_clk_src.c, \
603 .m_val = (m), \
Vikram Mulukutla60bfbb02012-08-08 00:49:20 -0700604 .n_val = ~((n)-(m)) * !!(n), \
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700605 .d_val = ~(n),\
606 .div_src_val = BVAL(4, 0, (int)(2*(div) - 1)) \
607 | BVAL(10, 8, s##_lpass_source_val), \
608 }
609
610#define VDD_DIG_FMAX_MAP1(l1, f1) \
Saravana Kannan55e959d2012-10-15 22:16:04 -0700611 .vdd_class = &vdd_dig, \
612 .fmax = (unsigned long[VDD_DIG_NUM]) { \
613 [VDD_DIG_##l1] = (f1), \
614 }, \
615 .num_fmax = VDD_DIG_NUM
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700616#define VDD_DIG_FMAX_MAP2(l1, f1, l2, f2) \
Saravana Kannan55e959d2012-10-15 22:16:04 -0700617 .vdd_class = &vdd_dig, \
618 .fmax = (unsigned long[VDD_DIG_NUM]) { \
619 [VDD_DIG_##l1] = (f1), \
620 [VDD_DIG_##l2] = (f2), \
621 }, \
622 .num_fmax = VDD_DIG_NUM
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700623#define VDD_DIG_FMAX_MAP3(l1, f1, l2, f2, l3, f3) \
Saravana Kannan55e959d2012-10-15 22:16:04 -0700624 .vdd_class = &vdd_dig, \
625 .fmax = (unsigned long[VDD_DIG_NUM]) { \
626 [VDD_DIG_##l1] = (f1), \
627 [VDD_DIG_##l2] = (f2), \
628 [VDD_DIG_##l3] = (f3), \
629 }, \
630 .num_fmax = VDD_DIG_NUM
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700631
632enum vdd_dig_levels {
633 VDD_DIG_NONE,
634 VDD_DIG_LOW,
635 VDD_DIG_NOMINAL,
Saravana Kannan55e959d2012-10-15 22:16:04 -0700636 VDD_DIG_HIGH,
637 VDD_DIG_NUM
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700638};
639
Vikram Mulukutlab7a1a742012-05-30 17:24:33 -0700640static const int vdd_corner[] = {
641 [VDD_DIG_NONE] = RPM_REGULATOR_CORNER_NONE,
642 [VDD_DIG_LOW] = RPM_REGULATOR_CORNER_SVS_SOC,
643 [VDD_DIG_NOMINAL] = RPM_REGULATOR_CORNER_NORMAL,
644 [VDD_DIG_HIGH] = RPM_REGULATOR_CORNER_SUPER_TURBO,
645};
646
647static struct rpm_regulator *vdd_dig_reg;
648
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700649static int set_vdd_dig(struct clk_vdd_class *vdd_class, int level)
650{
Vikram Mulukutlab7a1a742012-05-30 17:24:33 -0700651 return rpm_regulator_set_voltage(vdd_dig_reg, vdd_corner[level],
652 RPM_REGULATOR_CORNER_SUPER_TURBO);
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700653}
654
Saravana Kannan55e959d2012-10-15 22:16:04 -0700655static DEFINE_VDD_CLASS(vdd_dig, set_vdd_dig, VDD_DIG_NUM);
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700656
Vikram Mulukutla80b7ab52012-07-26 19:03:15 -0700657#define RPM_MISC_CLK_TYPE 0x306b6c63
658#define RPM_BUS_CLK_TYPE 0x316b6c63
659#define RPM_MEM_CLK_TYPE 0x326b6c63
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700660
Vikram Mulukutla77140da2012-08-13 21:37:18 -0700661#define RPM_SMD_KEY_ENABLE 0x62616E45
662
663#define CXO_ID 0x0
664#define QDSS_ID 0x1
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700665
Vikram Mulukutla6ddff4e2012-06-22 15:11:28 -0700666#define PNOC_ID 0x0
667#define SNOC_ID 0x1
668#define CNOC_ID 0x2
Vikram Mulukutlac77922f2012-08-13 21:44:45 -0700669#define MMSSNOC_AHB_ID 0x3
Matt Wagantallc4388bf2012-05-14 23:03:00 -0700670
Vikram Mulukutla6ddff4e2012-06-22 15:11:28 -0700671#define BIMC_ID 0x0
Vikram Mulukutla1e6127d2012-08-21 21:05:24 -0700672#define OXILI_ID 0x1
673#define OCMEM_ID 0x2
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700674
Vikram Mulukutla02ea7112012-08-29 12:06:11 -0700675#define D0_ID 1
676#define D1_ID 2
Vikram Mulukutlab5a70392013-01-07 11:53:43 -0800677#define A0_ID 4
678#define A1_ID 5
679#define A2_ID 6
Vikram Mulukutla02ea7112012-08-29 12:06:11 -0700680#define DIFF_CLK_ID 7
Vikram Mulukutla8cb2bb52012-11-14 11:23:49 -0800681#define DIV_CLK1_ID 11
682#define DIV_CLK2_ID 12
Vikram Mulukutla80b7ab52012-07-26 19:03:15 -0700683
Vikram Mulukutla6ddff4e2012-06-22 15:11:28 -0700684DEFINE_CLK_RPM_SMD(pnoc_clk, pnoc_a_clk, RPM_BUS_CLK_TYPE, PNOC_ID, NULL);
685DEFINE_CLK_RPM_SMD(snoc_clk, snoc_a_clk, RPM_BUS_CLK_TYPE, SNOC_ID, NULL);
686DEFINE_CLK_RPM_SMD(cnoc_clk, cnoc_a_clk, RPM_BUS_CLK_TYPE, CNOC_ID, NULL);
Vikram Mulukutla09e20812012-07-12 11:32:42 -0700687DEFINE_CLK_RPM_SMD(mmssnoc_ahb_clk, mmssnoc_ahb_a_clk, RPM_BUS_CLK_TYPE,
688 MMSSNOC_AHB_ID, NULL);
Vikram Mulukutla6ddff4e2012-06-22 15:11:28 -0700689
690DEFINE_CLK_RPM_SMD(bimc_clk, bimc_a_clk, RPM_MEM_CLK_TYPE, BIMC_ID, NULL);
691DEFINE_CLK_RPM_SMD(ocmemgx_clk, ocmemgx_a_clk, RPM_MEM_CLK_TYPE, OCMEM_ID,
692 NULL);
Vikram Mulukutla1e6127d2012-08-21 21:05:24 -0700693DEFINE_CLK_RPM_SMD(gfx3d_clk_src, gfx3d_a_clk_src, RPM_MEM_CLK_TYPE, OXILI_ID,
694 NULL);
Vikram Mulukutla6ddff4e2012-06-22 15:11:28 -0700695
696DEFINE_CLK_RPM_SMD_BRANCH(cxo_clk_src, cxo_a_clk_src,
697 RPM_MISC_CLK_TYPE, CXO_ID, 19200000);
Vikram Mulukutla0f63e002012-06-28 14:29:44 -0700698DEFINE_CLK_RPM_SMD_QDSS(qdss_clk, qdss_a_clk, RPM_MISC_CLK_TYPE, QDSS_ID);
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700699
Vikram Mulukutla80b7ab52012-07-26 19:03:15 -0700700DEFINE_CLK_RPM_SMD_XO_BUFFER(cxo_d0, cxo_d0_a, D0_ID);
701DEFINE_CLK_RPM_SMD_XO_BUFFER(cxo_d1, cxo_d1_a, D1_ID);
702DEFINE_CLK_RPM_SMD_XO_BUFFER(cxo_a0, cxo_a0_a, A0_ID);
703DEFINE_CLK_RPM_SMD_XO_BUFFER(cxo_a1, cxo_a1_a, A1_ID);
704DEFINE_CLK_RPM_SMD_XO_BUFFER(cxo_a2, cxo_a2_a, A2_ID);
Vikram Mulukutla8cb2bb52012-11-14 11:23:49 -0800705DEFINE_CLK_RPM_SMD_XO_BUFFER(div_clk1, div_a_clk1, DIV_CLK1_ID);
706DEFINE_CLK_RPM_SMD_XO_BUFFER(div_clk2, div_a_clk2, DIV_CLK2_ID);
Vikram Mulukutla02ea7112012-08-29 12:06:11 -0700707DEFINE_CLK_RPM_SMD_XO_BUFFER(diff_clk, diff_a_clk, DIFF_CLK_ID);
Vikram Mulukutla80b7ab52012-07-26 19:03:15 -0700708
709DEFINE_CLK_RPM_SMD_XO_BUFFER_PINCTRL(cxo_d0_pin, cxo_d0_a_pin, D0_ID);
710DEFINE_CLK_RPM_SMD_XO_BUFFER_PINCTRL(cxo_d1_pin, cxo_d1_a_pin, D1_ID);
711DEFINE_CLK_RPM_SMD_XO_BUFFER_PINCTRL(cxo_a0_pin, cxo_a0_a_pin, A0_ID);
712DEFINE_CLK_RPM_SMD_XO_BUFFER_PINCTRL(cxo_a1_pin, cxo_a1_a_pin, A1_ID);
713DEFINE_CLK_RPM_SMD_XO_BUFFER_PINCTRL(cxo_a2_pin, cxo_a2_a_pin, A2_ID);
714
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700715static struct pll_vote_clk gpll0_clk_src = {
716 .en_reg = (void __iomem *)APCS_GPLL_ENA_VOTE_REG,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700717 .status_reg = (void __iomem *)GPLL0_STATUS_REG,
718 .status_mask = BIT(17),
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700719 .base = &virt_bases[GCC_BASE],
720 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -0700721 .parent = &cxo_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700722 .rate = 600000000,
723 .dbg_name = "gpll0_clk_src",
724 .ops = &clk_ops_pll_vote,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700725 CLK_INIT(gpll0_clk_src.c),
726 },
727};
728
729static struct pll_vote_clk gpll1_clk_src = {
730 .en_reg = (void __iomem *)APCS_GPLL_ENA_VOTE_REG,
731 .en_mask = BIT(1),
732 .status_reg = (void __iomem *)GPLL1_STATUS_REG,
733 .status_mask = BIT(17),
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700734 .base = &virt_bases[GCC_BASE],
735 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -0700736 .parent = &cxo_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700737 .rate = 480000000,
738 .dbg_name = "gpll1_clk_src",
739 .ops = &clk_ops_pll_vote,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700740 CLK_INIT(gpll1_clk_src.c),
741 },
742};
743
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700744static struct pll_vote_clk mmpll0_clk_src = {
745 .en_reg = (void __iomem *)MMSS_PLL_VOTE_APCS_REG,
746 .en_mask = BIT(0),
747 .status_reg = (void __iomem *)MMPLL0_STATUS_REG,
748 .status_mask = BIT(17),
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700749 .base = &virt_bases[MMSS_BASE],
750 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -0700751 .parent = &cxo_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700752 .dbg_name = "mmpll0_clk_src",
753 .rate = 800000000,
754 .ops = &clk_ops_pll_vote,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700755 CLK_INIT(mmpll0_clk_src.c),
756 },
757};
758
759static struct pll_vote_clk mmpll1_clk_src = {
760 .en_reg = (void __iomem *)MMSS_PLL_VOTE_APCS_REG,
761 .en_mask = BIT(1),
762 .status_reg = (void __iomem *)MMPLL1_STATUS_REG,
763 .status_mask = BIT(17),
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700764 .base = &virt_bases[MMSS_BASE],
765 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -0700766 .parent = &cxo_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700767 .dbg_name = "mmpll1_clk_src",
Vikram Mulukutlad16a8f12012-07-20 13:33:45 -0700768 .rate = 846000000,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700769 .ops = &clk_ops_pll_vote,
Vikram Mulukutla293c4692013-01-03 15:09:47 -0800770 /* May be reassigned at runtime; alloc memory at compile time */
771 VDD_DIG_FMAX_MAP1(LOW, 846000000),
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700772 CLK_INIT(mmpll1_clk_src.c),
773 },
774};
775
776static struct pll_clk mmpll3_clk_src = {
777 .mode_reg = (void __iomem *)MMPLL3_MODE_REG,
778 .status_reg = (void __iomem *)MMPLL3_STATUS_REG,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700779 .base = &virt_bases[MMSS_BASE],
780 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -0700781 .parent = &cxo_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700782 .dbg_name = "mmpll3_clk_src",
Vikram Mulukutla293c4692013-01-03 15:09:47 -0800783 .rate = 820000000,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700784 .ops = &clk_ops_local_pll,
785 CLK_INIT(mmpll3_clk_src.c),
786 },
787};
788
Vikram Mulukutlad08a1522012-05-24 15:24:01 -0700789static DEFINE_CLK_VOTER(pnoc_msmbus_clk, &pnoc_clk.c, LONG_MAX);
790static DEFINE_CLK_VOTER(snoc_msmbus_clk, &snoc_clk.c, LONG_MAX);
791static DEFINE_CLK_VOTER(cnoc_msmbus_clk, &cnoc_clk.c, LONG_MAX);
792static DEFINE_CLK_VOTER(pnoc_msmbus_a_clk, &pnoc_a_clk.c, LONG_MAX);
793static DEFINE_CLK_VOTER(snoc_msmbus_a_clk, &snoc_a_clk.c, LONG_MAX);
794static DEFINE_CLK_VOTER(cnoc_msmbus_a_clk, &cnoc_a_clk.c, LONG_MAX);
795
796static DEFINE_CLK_VOTER(bimc_msmbus_clk, &bimc_clk.c, LONG_MAX);
797static DEFINE_CLK_VOTER(bimc_msmbus_a_clk, &bimc_a_clk.c, LONG_MAX);
798static DEFINE_CLK_VOTER(bimc_acpu_a_clk, &bimc_a_clk.c, LONG_MAX);
Vikram Mulukutla1e6127d2012-08-21 21:05:24 -0700799static DEFINE_CLK_VOTER(oxili_gfx3d_clk_src, &gfx3d_clk_src.c, LONG_MAX);
Vikram Mulukutlad08a1522012-05-24 15:24:01 -0700800static DEFINE_CLK_VOTER(ocmemgx_msmbus_clk, &ocmemgx_clk.c, LONG_MAX);
801static DEFINE_CLK_VOTER(ocmemgx_msmbus_a_clk, &ocmemgx_a_clk.c, LONG_MAX);
Naveen Ramaraj65396b92012-08-15 17:05:07 -0700802static DEFINE_CLK_VOTER(ocmemgx_core_clk, &ocmemgx_clk.c, LONG_MAX);
Vikram Mulukutlad08a1522012-05-24 15:24:01 -0700803
Vikram Mulukutlab0ad9f32012-07-03 12:57:24 -0700804static DEFINE_CLK_VOTER(pnoc_sps_clk, &pnoc_clk.c, 0);
Vikram Mulukutlab0ad9f32012-07-03 12:57:24 -0700805
Vikram Mulukutla510f7492013-02-04 11:59:52 -0800806static DEFINE_CLK_BRANCH_VOTER(cxo_otg_clk, &cxo_clk_src.c);
807static DEFINE_CLK_BRANCH_VOTER(cxo_pil_lpass_clk, &cxo_clk_src.c);
808static DEFINE_CLK_BRANCH_VOTER(cxo_pil_mss_clk, &cxo_clk_src.c);
809static DEFINE_CLK_BRANCH_VOTER(cxo_wlan_clk, &cxo_clk_src.c);
810static DEFINE_CLK_BRANCH_VOTER(cxo_pil_pronto_clk, &cxo_clk_src.c);
Vijayavardhan Vennapusadec1fe62013-02-12 16:05:14 +0530811static DEFINE_CLK_BRANCH_VOTER(cxo_dwc3_clk, &cxo_clk_src.c);
Vikram Mulukutla510f7492013-02-04 11:59:52 -0800812
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -0700813static struct clk_freq_tbl ftbl_gcc_usb30_master_clk[] = {
814 F(125000000, gpll0, 1, 5, 24),
815 F_END
816};
817
818static struct rcg_clk usb30_master_clk_src = {
819 .cmd_rcgr_reg = USB30_MASTER_CMD_RCGR,
820 .set_rate = set_rate_mnd,
821 .freq_tbl = ftbl_gcc_usb30_master_clk,
822 .current_freq = &rcg_dummy_freq,
823 .base = &virt_bases[GCC_BASE],
824 .c = {
825 .dbg_name = "usb30_master_clk_src",
826 .ops = &clk_ops_rcg_mnd,
827 VDD_DIG_FMAX_MAP1(NOMINAL, 125000000),
828 CLK_INIT(usb30_master_clk_src.c),
829 },
830};
831
832static struct clk_freq_tbl ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk[] = {
833 F( 960000, cxo, 10, 1, 2),
834 F( 4800000, cxo, 4, 0, 0),
835 F( 9600000, cxo, 2, 0, 0),
836 F(15000000, gpll0, 10, 1, 4),
837 F(19200000, cxo, 1, 0, 0),
838 F(25000000, gpll0, 12, 1, 2),
839 F(50000000, gpll0, 12, 0, 0),
840 F_END
841};
842
843static struct rcg_clk blsp1_qup1_spi_apps_clk_src = {
844 .cmd_rcgr_reg = BLSP1_QUP1_SPI_APPS_CMD_RCGR,
845 .set_rate = set_rate_mnd,
846 .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk,
847 .current_freq = &rcg_dummy_freq,
848 .base = &virt_bases[GCC_BASE],
849 .c = {
850 .dbg_name = "blsp1_qup1_spi_apps_clk_src",
851 .ops = &clk_ops_rcg_mnd,
852 VDD_DIG_FMAX_MAP2(LOW, 25000000, NOMINAL, 50000000),
853 CLK_INIT(blsp1_qup1_spi_apps_clk_src.c),
854 },
855};
856
857static struct rcg_clk blsp1_qup2_spi_apps_clk_src = {
858 .cmd_rcgr_reg = BLSP1_QUP2_SPI_APPS_CMD_RCGR,
859 .set_rate = set_rate_mnd,
860 .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk,
861 .current_freq = &rcg_dummy_freq,
862 .base = &virt_bases[GCC_BASE],
863 .c = {
864 .dbg_name = "blsp1_qup2_spi_apps_clk_src",
865 .ops = &clk_ops_rcg_mnd,
866 VDD_DIG_FMAX_MAP2(LOW, 25000000, NOMINAL, 50000000),
867 CLK_INIT(blsp1_qup2_spi_apps_clk_src.c),
868 },
869};
870
871static struct rcg_clk blsp1_qup3_spi_apps_clk_src = {
872 .cmd_rcgr_reg = BLSP1_QUP3_SPI_APPS_CMD_RCGR,
873 .set_rate = set_rate_mnd,
874 .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk,
875 .current_freq = &rcg_dummy_freq,
876 .base = &virt_bases[GCC_BASE],
877 .c = {
878 .dbg_name = "blsp1_qup3_spi_apps_clk_src",
879 .ops = &clk_ops_rcg_mnd,
880 VDD_DIG_FMAX_MAP2(LOW, 25000000, NOMINAL, 50000000),
881 CLK_INIT(blsp1_qup3_spi_apps_clk_src.c),
882 },
883};
884
885static struct rcg_clk blsp1_qup4_spi_apps_clk_src = {
886 .cmd_rcgr_reg = BLSP1_QUP4_SPI_APPS_CMD_RCGR,
887 .set_rate = set_rate_mnd,
888 .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk,
889 .current_freq = &rcg_dummy_freq,
890 .base = &virt_bases[GCC_BASE],
891 .c = {
892 .dbg_name = "blsp1_qup4_spi_apps_clk_src",
893 .ops = &clk_ops_rcg_mnd,
894 VDD_DIG_FMAX_MAP2(LOW, 25000000, NOMINAL, 50000000),
895 CLK_INIT(blsp1_qup4_spi_apps_clk_src.c),
896 },
897};
898
899static struct rcg_clk blsp1_qup5_spi_apps_clk_src = {
900 .cmd_rcgr_reg = BLSP1_QUP5_SPI_APPS_CMD_RCGR,
901 .set_rate = set_rate_mnd,
902 .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk,
903 .current_freq = &rcg_dummy_freq,
904 .base = &virt_bases[GCC_BASE],
905 .c = {
906 .dbg_name = "blsp1_qup5_spi_apps_clk_src",
907 .ops = &clk_ops_rcg_mnd,
908 VDD_DIG_FMAX_MAP2(LOW, 25000000, NOMINAL, 50000000),
909 CLK_INIT(blsp1_qup5_spi_apps_clk_src.c),
910 },
911};
912
913static struct rcg_clk blsp1_qup6_spi_apps_clk_src = {
914 .cmd_rcgr_reg = BLSP1_QUP6_SPI_APPS_CMD_RCGR,
915 .set_rate = set_rate_mnd,
916 .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk,
917 .current_freq = &rcg_dummy_freq,
918 .base = &virt_bases[GCC_BASE],
919 .c = {
920 .dbg_name = "blsp1_qup6_spi_apps_clk_src",
921 .ops = &clk_ops_rcg_mnd,
922 VDD_DIG_FMAX_MAP2(LOW, 25000000, NOMINAL, 50000000),
923 CLK_INIT(blsp1_qup6_spi_apps_clk_src.c),
924 },
925};
926
Vikram Mulukutlaa57e6e42013-01-23 16:58:08 -0800927static struct clk_freq_tbl ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk[] = {
928 F(50000000, gpll0, 12, 0, 0),
929 F_END
930};
931
932static struct rcg_clk blsp1_qup1_i2c_apps_clk_src = {
933 .cmd_rcgr_reg = BLSP1_QUP1_I2C_APPS_CMD_RCGR,
934 .set_rate = set_rate_hid,
935 .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk,
936 .current_freq = &rcg_dummy_freq,
937 .base = &virt_bases[GCC_BASE],
938 .c = {
939 .dbg_name = "blsp1_qup1_i2c_apps_clk_src",
940 .ops = &clk_ops_rcg,
941 VDD_DIG_FMAX_MAP1(LOW, 50000000),
942 CLK_INIT(blsp1_qup1_i2c_apps_clk_src.c),
943 },
944};
945
946static struct rcg_clk blsp1_qup2_i2c_apps_clk_src = {
947 .cmd_rcgr_reg = BLSP1_QUP2_I2C_APPS_CMD_RCGR,
948 .set_rate = set_rate_hid,
949 .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk,
950 .current_freq = &rcg_dummy_freq,
951 .base = &virt_bases[GCC_BASE],
952 .c = {
953 .dbg_name = "blsp1_qup2_i2c_apps_clk_src",
954 .ops = &clk_ops_rcg,
955 VDD_DIG_FMAX_MAP1(LOW, 50000000),
956 CLK_INIT(blsp1_qup2_i2c_apps_clk_src.c),
957 },
958};
959
960static struct rcg_clk blsp1_qup3_i2c_apps_clk_src = {
961 .cmd_rcgr_reg = BLSP1_QUP3_I2C_APPS_CMD_RCGR,
962 .set_rate = set_rate_hid,
963 .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk,
964 .current_freq = &rcg_dummy_freq,
965 .base = &virt_bases[GCC_BASE],
966 .c = {
967 .dbg_name = "blsp1_qup3_i2c_apps_clk_src",
968 .ops = &clk_ops_rcg,
969 VDD_DIG_FMAX_MAP1(LOW, 50000000),
970 CLK_INIT(blsp1_qup3_i2c_apps_clk_src.c),
971 },
972};
973
974static struct rcg_clk blsp1_qup4_i2c_apps_clk_src = {
975 .cmd_rcgr_reg = BLSP1_QUP4_I2C_APPS_CMD_RCGR,
976 .set_rate = set_rate_hid,
977 .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk,
978 .current_freq = &rcg_dummy_freq,
979 .base = &virt_bases[GCC_BASE],
980 .c = {
981 .dbg_name = "blsp1_qup4_i2c_apps_clk_src",
982 .ops = &clk_ops_rcg,
983 VDD_DIG_FMAX_MAP1(LOW, 50000000),
984 CLK_INIT(blsp1_qup4_i2c_apps_clk_src.c),
985 },
986};
987
988static struct rcg_clk blsp1_qup5_i2c_apps_clk_src = {
989 .cmd_rcgr_reg = BLSP1_QUP5_I2C_APPS_CMD_RCGR,
990 .set_rate = set_rate_hid,
991 .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk,
992 .current_freq = &rcg_dummy_freq,
993 .base = &virt_bases[GCC_BASE],
994 .c = {
995 .dbg_name = "blsp1_qup5_i2c_apps_clk_src",
996 .ops = &clk_ops_rcg,
997 VDD_DIG_FMAX_MAP1(LOW, 50000000),
998 CLK_INIT(blsp1_qup5_i2c_apps_clk_src.c),
999 },
1000};
1001
1002static struct rcg_clk blsp1_qup6_i2c_apps_clk_src = {
1003 .cmd_rcgr_reg = BLSP1_QUP6_I2C_APPS_CMD_RCGR,
1004 .set_rate = set_rate_hid,
1005 .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk,
1006 .current_freq = &rcg_dummy_freq,
1007 .base = &virt_bases[GCC_BASE],
1008 .c = {
1009 .dbg_name = "blsp1_qup6_i2c_apps_clk_src",
1010 .ops = &clk_ops_rcg,
1011 VDD_DIG_FMAX_MAP1(LOW, 50000000),
1012 CLK_INIT(blsp1_qup6_i2c_apps_clk_src.c),
1013 },
1014};
1015
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001016static struct clk_freq_tbl ftbl_gcc_blsp1_2_uart1_6_apps_clk[] = {
Vikram Mulukutlad3dca652012-11-19 11:04:13 -08001017 F_GCC_GND,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001018 F( 3686400, gpll0, 1, 96, 15625),
1019 F( 7372800, gpll0, 1, 192, 15625),
1020 F(14745600, gpll0, 1, 384, 15625),
1021 F(16000000, gpll0, 5, 2, 15),
1022 F(19200000, cxo, 1, 0, 0),
1023 F(24000000, gpll0, 5, 1, 5),
1024 F(32000000, gpll0, 1, 4, 75),
1025 F(40000000, gpll0, 15, 0, 0),
1026 F(46400000, gpll0, 1, 29, 375),
1027 F(48000000, gpll0, 12.5, 0, 0),
1028 F(51200000, gpll0, 1, 32, 375),
1029 F(56000000, gpll0, 1, 7, 75),
1030 F(58982400, gpll0, 1, 1536, 15625),
1031 F(60000000, gpll0, 10, 0, 0),
Vikram Mulukutlaa89c9ec2013-01-08 18:39:02 -08001032 F(63160000, gpll0, 9.5, 0, 0),
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001033 F_END
1034};
1035
1036static struct rcg_clk blsp1_uart1_apps_clk_src = {
1037 .cmd_rcgr_reg = BLSP1_UART1_APPS_CMD_RCGR,
1038 .set_rate = set_rate_mnd,
1039 .freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk,
1040 .current_freq = &rcg_dummy_freq,
1041 .base = &virt_bases[GCC_BASE],
1042 .c = {
1043 .dbg_name = "blsp1_uart1_apps_clk_src",
1044 .ops = &clk_ops_rcg_mnd,
1045 VDD_DIG_FMAX_MAP2(LOW, 31580000, NOMINAL, 63160000),
1046 CLK_INIT(blsp1_uart1_apps_clk_src.c),
1047 },
1048};
1049
1050static struct rcg_clk blsp1_uart2_apps_clk_src = {
1051 .cmd_rcgr_reg = BLSP1_UART2_APPS_CMD_RCGR,
1052 .set_rate = set_rate_mnd,
1053 .freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk,
1054 .current_freq = &rcg_dummy_freq,
1055 .base = &virt_bases[GCC_BASE],
1056 .c = {
1057 .dbg_name = "blsp1_uart2_apps_clk_src",
1058 .ops = &clk_ops_rcg_mnd,
1059 VDD_DIG_FMAX_MAP2(LOW, 31580000, NOMINAL, 63160000),
1060 CLK_INIT(blsp1_uart2_apps_clk_src.c),
1061 },
1062};
1063
1064static struct rcg_clk blsp1_uart3_apps_clk_src = {
1065 .cmd_rcgr_reg = BLSP1_UART3_APPS_CMD_RCGR,
1066 .set_rate = set_rate_mnd,
1067 .freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk,
1068 .current_freq = &rcg_dummy_freq,
1069 .base = &virt_bases[GCC_BASE],
1070 .c = {
1071 .dbg_name = "blsp1_uart3_apps_clk_src",
1072 .ops = &clk_ops_rcg_mnd,
1073 VDD_DIG_FMAX_MAP2(LOW, 31580000, NOMINAL, 63160000),
1074 CLK_INIT(blsp1_uart3_apps_clk_src.c),
1075 },
1076};
1077
1078static struct rcg_clk blsp1_uart4_apps_clk_src = {
1079 .cmd_rcgr_reg = BLSP1_UART4_APPS_CMD_RCGR,
1080 .set_rate = set_rate_mnd,
1081 .freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk,
1082 .current_freq = &rcg_dummy_freq,
1083 .base = &virt_bases[GCC_BASE],
1084 .c = {
1085 .dbg_name = "blsp1_uart4_apps_clk_src",
1086 .ops = &clk_ops_rcg_mnd,
1087 VDD_DIG_FMAX_MAP2(LOW, 31580000, NOMINAL, 63160000),
1088 CLK_INIT(blsp1_uart4_apps_clk_src.c),
1089 },
1090};
1091
1092static struct rcg_clk blsp1_uart5_apps_clk_src = {
1093 .cmd_rcgr_reg = BLSP1_UART5_APPS_CMD_RCGR,
1094 .set_rate = set_rate_mnd,
1095 .freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk,
1096 .current_freq = &rcg_dummy_freq,
1097 .base = &virt_bases[GCC_BASE],
1098 .c = {
1099 .dbg_name = "blsp1_uart5_apps_clk_src",
1100 .ops = &clk_ops_rcg_mnd,
1101 VDD_DIG_FMAX_MAP2(LOW, 31580000, NOMINAL, 63160000),
1102 CLK_INIT(blsp1_uart5_apps_clk_src.c),
1103 },
1104};
1105
1106static struct rcg_clk blsp1_uart6_apps_clk_src = {
1107 .cmd_rcgr_reg = BLSP1_UART6_APPS_CMD_RCGR,
1108 .set_rate = set_rate_mnd,
1109 .freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk,
1110 .current_freq = &rcg_dummy_freq,
1111 .base = &virt_bases[GCC_BASE],
1112 .c = {
1113 .dbg_name = "blsp1_uart6_apps_clk_src",
1114 .ops = &clk_ops_rcg_mnd,
1115 VDD_DIG_FMAX_MAP2(LOW, 31580000, NOMINAL, 63160000),
1116 CLK_INIT(blsp1_uart6_apps_clk_src.c),
1117 },
1118};
1119
1120static struct rcg_clk blsp2_qup1_spi_apps_clk_src = {
1121 .cmd_rcgr_reg = BLSP2_QUP1_SPI_APPS_CMD_RCGR,
1122 .set_rate = set_rate_mnd,
1123 .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk,
1124 .current_freq = &rcg_dummy_freq,
1125 .base = &virt_bases[GCC_BASE],
1126 .c = {
1127 .dbg_name = "blsp2_qup1_spi_apps_clk_src",
1128 .ops = &clk_ops_rcg_mnd,
1129 VDD_DIG_FMAX_MAP2(LOW, 25000000, NOMINAL, 50000000),
1130 CLK_INIT(blsp2_qup1_spi_apps_clk_src.c),
1131 },
1132};
1133
1134static struct rcg_clk blsp2_qup2_spi_apps_clk_src = {
1135 .cmd_rcgr_reg = BLSP2_QUP2_SPI_APPS_CMD_RCGR,
1136 .set_rate = set_rate_mnd,
1137 .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk,
1138 .current_freq = &rcg_dummy_freq,
1139 .base = &virt_bases[GCC_BASE],
1140 .c = {
1141 .dbg_name = "blsp2_qup2_spi_apps_clk_src",
1142 .ops = &clk_ops_rcg_mnd,
1143 VDD_DIG_FMAX_MAP2(LOW, 25000000, NOMINAL, 50000000),
1144 CLK_INIT(blsp2_qup2_spi_apps_clk_src.c),
1145 },
1146};
1147
1148static struct rcg_clk blsp2_qup3_spi_apps_clk_src = {
1149 .cmd_rcgr_reg = BLSP2_QUP3_SPI_APPS_CMD_RCGR,
1150 .set_rate = set_rate_mnd,
1151 .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk,
1152 .current_freq = &rcg_dummy_freq,
1153 .base = &virt_bases[GCC_BASE],
1154 .c = {
1155 .dbg_name = "blsp2_qup3_spi_apps_clk_src",
1156 .ops = &clk_ops_rcg_mnd,
1157 VDD_DIG_FMAX_MAP2(LOW, 25000000, NOMINAL, 50000000),
1158 CLK_INIT(blsp2_qup3_spi_apps_clk_src.c),
1159 },
1160};
1161
1162static struct rcg_clk blsp2_qup4_spi_apps_clk_src = {
1163 .cmd_rcgr_reg = BLSP2_QUP4_SPI_APPS_CMD_RCGR,
1164 .set_rate = set_rate_mnd,
1165 .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk,
1166 .current_freq = &rcg_dummy_freq,
1167 .base = &virt_bases[GCC_BASE],
1168 .c = {
1169 .dbg_name = "blsp2_qup4_spi_apps_clk_src",
1170 .ops = &clk_ops_rcg_mnd,
1171 VDD_DIG_FMAX_MAP2(LOW, 25000000, NOMINAL, 50000000),
1172 CLK_INIT(blsp2_qup4_spi_apps_clk_src.c),
1173 },
1174};
1175
1176static struct rcg_clk blsp2_qup5_spi_apps_clk_src = {
1177 .cmd_rcgr_reg = BLSP2_QUP5_SPI_APPS_CMD_RCGR,
1178 .set_rate = set_rate_mnd,
1179 .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk,
1180 .current_freq = &rcg_dummy_freq,
1181 .base = &virt_bases[GCC_BASE],
1182 .c = {
1183 .dbg_name = "blsp2_qup5_spi_apps_clk_src",
1184 .ops = &clk_ops_rcg_mnd,
1185 VDD_DIG_FMAX_MAP2(LOW, 25000000, NOMINAL, 50000000),
1186 CLK_INIT(blsp2_qup5_spi_apps_clk_src.c),
1187 },
1188};
1189
1190static struct rcg_clk blsp2_qup6_spi_apps_clk_src = {
1191 .cmd_rcgr_reg = BLSP2_QUP6_SPI_APPS_CMD_RCGR,
1192 .set_rate = set_rate_mnd,
1193 .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk,
1194 .current_freq = &rcg_dummy_freq,
1195 .base = &virt_bases[GCC_BASE],
1196 .c = {
1197 .dbg_name = "blsp2_qup6_spi_apps_clk_src",
1198 .ops = &clk_ops_rcg_mnd,
1199 VDD_DIG_FMAX_MAP2(LOW, 25000000, NOMINAL, 50000000),
1200 CLK_INIT(blsp2_qup6_spi_apps_clk_src.c),
1201 },
1202};
1203
Vikram Mulukutlaa57e6e42013-01-23 16:58:08 -08001204static struct rcg_clk blsp2_qup1_i2c_apps_clk_src = {
1205 .cmd_rcgr_reg = BLSP2_QUP1_I2C_APPS_CMD_RCGR,
1206 .set_rate = set_rate_hid,
1207 .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk,
1208 .current_freq = &rcg_dummy_freq,
1209 .base = &virt_bases[GCC_BASE],
1210 .c = {
1211 .dbg_name = "blsp2_qup1_i2c_apps_clk_src",
1212 .ops = &clk_ops_rcg,
1213 VDD_DIG_FMAX_MAP1(LOW, 50000000),
1214 CLK_INIT(blsp2_qup1_i2c_apps_clk_src.c),
1215 },
1216};
1217
1218static struct rcg_clk blsp2_qup2_i2c_apps_clk_src = {
1219 .cmd_rcgr_reg = BLSP2_QUP2_I2C_APPS_CMD_RCGR,
1220 .set_rate = set_rate_hid,
1221 .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk,
1222 .current_freq = &rcg_dummy_freq,
1223 .base = &virt_bases[GCC_BASE],
1224 .c = {
1225 .dbg_name = "blsp2_qup2_i2c_apps_clk_src",
1226 .ops = &clk_ops_rcg,
1227 VDD_DIG_FMAX_MAP1(LOW, 50000000),
1228 CLK_INIT(blsp2_qup2_i2c_apps_clk_src.c),
1229 },
1230};
1231
1232static struct rcg_clk blsp2_qup3_i2c_apps_clk_src = {
1233 .cmd_rcgr_reg = BLSP2_QUP3_I2C_APPS_CMD_RCGR,
1234 .set_rate = set_rate_hid,
1235 .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk,
1236 .current_freq = &rcg_dummy_freq,
1237 .base = &virt_bases[GCC_BASE],
1238 .c = {
1239 .dbg_name = "blsp2_qup3_i2c_apps_clk_src",
1240 .ops = &clk_ops_rcg,
1241 VDD_DIG_FMAX_MAP1(LOW, 50000000),
1242 CLK_INIT(blsp2_qup3_i2c_apps_clk_src.c),
1243 },
1244};
1245
1246static struct rcg_clk blsp2_qup4_i2c_apps_clk_src = {
1247 .cmd_rcgr_reg = BLSP2_QUP4_I2C_APPS_CMD_RCGR,
1248 .set_rate = set_rate_hid,
1249 .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk,
1250 .current_freq = &rcg_dummy_freq,
1251 .base = &virt_bases[GCC_BASE],
1252 .c = {
1253 .dbg_name = "blsp2_qup4_i2c_apps_clk_src",
1254 .ops = &clk_ops_rcg,
1255 VDD_DIG_FMAX_MAP1(LOW, 50000000),
1256 CLK_INIT(blsp2_qup4_i2c_apps_clk_src.c),
1257 },
1258};
1259
1260static struct rcg_clk blsp2_qup5_i2c_apps_clk_src = {
1261 .cmd_rcgr_reg = BLSP2_QUP5_I2C_APPS_CMD_RCGR,
1262 .set_rate = set_rate_hid,
1263 .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk,
1264 .current_freq = &rcg_dummy_freq,
1265 .base = &virt_bases[GCC_BASE],
1266 .c = {
1267 .dbg_name = "blsp2_qup5_i2c_apps_clk_src",
1268 .ops = &clk_ops_rcg,
1269 VDD_DIG_FMAX_MAP1(LOW, 50000000),
1270 CLK_INIT(blsp2_qup5_i2c_apps_clk_src.c),
1271 },
1272};
1273
1274static struct rcg_clk blsp2_qup6_i2c_apps_clk_src = {
1275 .cmd_rcgr_reg = BLSP2_QUP6_I2C_APPS_CMD_RCGR,
1276 .set_rate = set_rate_hid,
1277 .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk,
1278 .current_freq = &rcg_dummy_freq,
1279 .base = &virt_bases[GCC_BASE],
1280 .c = {
1281 .dbg_name = "blsp2_qup6_i2c_apps_clk_src",
1282 .ops = &clk_ops_rcg,
1283 VDD_DIG_FMAX_MAP1(LOW, 50000000),
1284 CLK_INIT(blsp2_qup6_i2c_apps_clk_src.c),
1285 },
1286};
1287
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001288static struct rcg_clk blsp2_uart1_apps_clk_src = {
1289 .cmd_rcgr_reg = BLSP2_UART1_APPS_CMD_RCGR,
1290 .set_rate = set_rate_mnd,
1291 .freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk,
1292 .current_freq = &rcg_dummy_freq,
1293 .base = &virt_bases[GCC_BASE],
1294 .c = {
1295 .dbg_name = "blsp2_uart1_apps_clk_src",
1296 .ops = &clk_ops_rcg_mnd,
1297 VDD_DIG_FMAX_MAP2(LOW, 31580000, NOMINAL, 63160000),
1298 CLK_INIT(blsp2_uart1_apps_clk_src.c),
1299 },
1300};
1301
1302static struct rcg_clk blsp2_uart2_apps_clk_src = {
1303 .cmd_rcgr_reg = BLSP2_UART2_APPS_CMD_RCGR,
1304 .set_rate = set_rate_mnd,
1305 .freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk,
1306 .current_freq = &rcg_dummy_freq,
1307 .base = &virt_bases[GCC_BASE],
1308 .c = {
1309 .dbg_name = "blsp2_uart2_apps_clk_src",
1310 .ops = &clk_ops_rcg_mnd,
1311 VDD_DIG_FMAX_MAP2(LOW, 31580000, NOMINAL, 63160000),
1312 CLK_INIT(blsp2_uart2_apps_clk_src.c),
1313 },
1314};
1315
1316static struct rcg_clk blsp2_uart3_apps_clk_src = {
1317 .cmd_rcgr_reg = BLSP2_UART3_APPS_CMD_RCGR,
1318 .set_rate = set_rate_mnd,
1319 .freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk,
1320 .current_freq = &rcg_dummy_freq,
1321 .base = &virt_bases[GCC_BASE],
1322 .c = {
1323 .dbg_name = "blsp2_uart3_apps_clk_src",
1324 .ops = &clk_ops_rcg_mnd,
1325 VDD_DIG_FMAX_MAP2(LOW, 31580000, NOMINAL, 63160000),
1326 CLK_INIT(blsp2_uart3_apps_clk_src.c),
1327 },
1328};
1329
1330static struct rcg_clk blsp2_uart4_apps_clk_src = {
1331 .cmd_rcgr_reg = BLSP2_UART4_APPS_CMD_RCGR,
1332 .set_rate = set_rate_mnd,
1333 .freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk,
1334 .current_freq = &rcg_dummy_freq,
1335 .base = &virt_bases[GCC_BASE],
1336 .c = {
1337 .dbg_name = "blsp2_uart4_apps_clk_src",
1338 .ops = &clk_ops_rcg_mnd,
1339 VDD_DIG_FMAX_MAP2(LOW, 31580000, NOMINAL, 63160000),
1340 CLK_INIT(blsp2_uart4_apps_clk_src.c),
1341 },
1342};
1343
1344static struct rcg_clk blsp2_uart5_apps_clk_src = {
1345 .cmd_rcgr_reg = BLSP2_UART5_APPS_CMD_RCGR,
1346 .set_rate = set_rate_mnd,
1347 .freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk,
1348 .current_freq = &rcg_dummy_freq,
1349 .base = &virt_bases[GCC_BASE],
1350 .c = {
1351 .dbg_name = "blsp2_uart5_apps_clk_src",
1352 .ops = &clk_ops_rcg_mnd,
1353 VDD_DIG_FMAX_MAP2(LOW, 31580000, NOMINAL, 63160000),
1354 CLK_INIT(blsp2_uart5_apps_clk_src.c),
1355 },
1356};
1357
1358static struct rcg_clk blsp2_uart6_apps_clk_src = {
1359 .cmd_rcgr_reg = BLSP2_UART6_APPS_CMD_RCGR,
1360 .set_rate = set_rate_mnd,
1361 .freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk,
1362 .current_freq = &rcg_dummy_freq,
1363 .base = &virt_bases[GCC_BASE],
1364 .c = {
1365 .dbg_name = "blsp2_uart6_apps_clk_src",
1366 .ops = &clk_ops_rcg_mnd,
1367 VDD_DIG_FMAX_MAP2(LOW, 31580000, NOMINAL, 63160000),
1368 CLK_INIT(blsp2_uart6_apps_clk_src.c),
1369 },
1370};
1371
1372static struct clk_freq_tbl ftbl_gcc_ce1_clk[] = {
1373 F( 50000000, gpll0, 12, 0, 0),
1374 F(100000000, gpll0, 6, 0, 0),
1375 F_END
1376};
1377
1378static struct rcg_clk ce1_clk_src = {
1379 .cmd_rcgr_reg = CE1_CMD_RCGR,
1380 .set_rate = set_rate_hid,
1381 .freq_tbl = ftbl_gcc_ce1_clk,
1382 .current_freq = &rcg_dummy_freq,
1383 .base = &virt_bases[GCC_BASE],
1384 .c = {
1385 .dbg_name = "ce1_clk_src",
1386 .ops = &clk_ops_rcg,
1387 VDD_DIG_FMAX_MAP2(LOW, 50000000, NOMINAL, 100000000),
1388 CLK_INIT(ce1_clk_src.c),
1389 },
1390};
1391
1392static struct clk_freq_tbl ftbl_gcc_ce2_clk[] = {
1393 F( 50000000, gpll0, 12, 0, 0),
1394 F(100000000, gpll0, 6, 0, 0),
1395 F_END
1396};
1397
1398static struct rcg_clk ce2_clk_src = {
1399 .cmd_rcgr_reg = CE2_CMD_RCGR,
1400 .set_rate = set_rate_hid,
1401 .freq_tbl = ftbl_gcc_ce2_clk,
1402 .current_freq = &rcg_dummy_freq,
1403 .base = &virt_bases[GCC_BASE],
1404 .c = {
1405 .dbg_name = "ce2_clk_src",
1406 .ops = &clk_ops_rcg,
1407 VDD_DIG_FMAX_MAP2(LOW, 50000000, NOMINAL, 100000000),
1408 CLK_INIT(ce2_clk_src.c),
1409 },
1410};
1411
1412static struct clk_freq_tbl ftbl_gcc_gp_clk[] = {
1413 F(19200000, cxo, 1, 0, 0),
1414 F_END
1415};
1416
1417static struct rcg_clk gp1_clk_src = {
1418 .cmd_rcgr_reg = GP1_CMD_RCGR,
1419 .set_rate = set_rate_mnd,
1420 .freq_tbl = ftbl_gcc_gp_clk,
1421 .current_freq = &rcg_dummy_freq,
1422 .base = &virt_bases[GCC_BASE],
1423 .c = {
1424 .dbg_name = "gp1_clk_src",
1425 .ops = &clk_ops_rcg_mnd,
1426 VDD_DIG_FMAX_MAP2(LOW, 100000000, NOMINAL, 200000000),
1427 CLK_INIT(gp1_clk_src.c),
1428 },
1429};
1430
1431static struct rcg_clk gp2_clk_src = {
1432 .cmd_rcgr_reg = GP2_CMD_RCGR,
1433 .set_rate = set_rate_mnd,
1434 .freq_tbl = ftbl_gcc_gp_clk,
1435 .current_freq = &rcg_dummy_freq,
1436 .base = &virt_bases[GCC_BASE],
1437 .c = {
1438 .dbg_name = "gp2_clk_src",
1439 .ops = &clk_ops_rcg_mnd,
1440 VDD_DIG_FMAX_MAP2(LOW, 100000000, NOMINAL, 200000000),
1441 CLK_INIT(gp2_clk_src.c),
1442 },
1443};
1444
1445static struct rcg_clk gp3_clk_src = {
1446 .cmd_rcgr_reg = GP3_CMD_RCGR,
1447 .set_rate = set_rate_mnd,
1448 .freq_tbl = ftbl_gcc_gp_clk,
1449 .current_freq = &rcg_dummy_freq,
1450 .base = &virt_bases[GCC_BASE],
1451 .c = {
1452 .dbg_name = "gp3_clk_src",
1453 .ops = &clk_ops_rcg_mnd,
1454 VDD_DIG_FMAX_MAP2(LOW, 100000000, NOMINAL, 200000000),
1455 CLK_INIT(gp3_clk_src.c),
1456 },
1457};
1458
1459static struct clk_freq_tbl ftbl_gcc_pdm2_clk[] = {
1460 F(60000000, gpll0, 10, 0, 0),
1461 F_END
1462};
1463
1464static struct rcg_clk pdm2_clk_src = {
1465 .cmd_rcgr_reg = PDM2_CMD_RCGR,
1466 .set_rate = set_rate_hid,
1467 .freq_tbl = ftbl_gcc_pdm2_clk,
1468 .current_freq = &rcg_dummy_freq,
1469 .base = &virt_bases[GCC_BASE],
1470 .c = {
1471 .dbg_name = "pdm2_clk_src",
1472 .ops = &clk_ops_rcg,
1473 VDD_DIG_FMAX_MAP1(LOW, 60000000),
1474 CLK_INIT(pdm2_clk_src.c),
1475 },
1476};
1477
1478static struct clk_freq_tbl ftbl_gcc_sdcc1_2_apps_clk[] = {
1479 F( 144000, cxo, 16, 3, 25),
1480 F( 400000, cxo, 12, 1, 4),
1481 F( 20000000, gpll0, 15, 1, 2),
1482 F( 25000000, gpll0, 12, 1, 2),
1483 F( 50000000, gpll0, 12, 0, 0),
1484 F(100000000, gpll0, 6, 0, 0),
1485 F(200000000, gpll0, 3, 0, 0),
1486 F_END
1487};
1488
1489static struct clk_freq_tbl ftbl_gcc_sdcc3_4_apps_clk[] = {
1490 F( 144000, cxo, 16, 3, 25),
1491 F( 400000, cxo, 12, 1, 4),
1492 F( 20000000, gpll0, 15, 1, 2),
1493 F( 25000000, gpll0, 12, 1, 2),
1494 F( 50000000, gpll0, 12, 0, 0),
1495 F(100000000, gpll0, 6, 0, 0),
1496 F_END
1497};
1498
Vikram Mulukutla19245e02012-07-23 15:58:04 -07001499static struct clk_freq_tbl ftbl_gcc_sdcc_apps_rumi_clk[] = {
1500 F( 400000, cxo, 12, 1, 4),
1501 F( 19200000, cxo, 1, 0, 0),
1502 F_END
1503};
1504
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001505static struct rcg_clk sdcc1_apps_clk_src = {
1506 .cmd_rcgr_reg = SDCC1_APPS_CMD_RCGR,
1507 .set_rate = set_rate_mnd,
1508 .freq_tbl = ftbl_gcc_sdcc1_2_apps_clk,
1509 .current_freq = &rcg_dummy_freq,
1510 .base = &virt_bases[GCC_BASE],
1511 .c = {
1512 .dbg_name = "sdcc1_apps_clk_src",
1513 .ops = &clk_ops_rcg_mnd,
1514 VDD_DIG_FMAX_MAP2(LOW, 100000000, NOMINAL, 200000000),
1515 CLK_INIT(sdcc1_apps_clk_src.c),
1516 },
1517};
1518
1519static struct rcg_clk sdcc2_apps_clk_src = {
1520 .cmd_rcgr_reg = SDCC2_APPS_CMD_RCGR,
1521 .set_rate = set_rate_mnd,
1522 .freq_tbl = ftbl_gcc_sdcc1_2_apps_clk,
1523 .current_freq = &rcg_dummy_freq,
1524 .base = &virt_bases[GCC_BASE],
1525 .c = {
1526 .dbg_name = "sdcc2_apps_clk_src",
1527 .ops = &clk_ops_rcg_mnd,
1528 VDD_DIG_FMAX_MAP2(LOW, 100000000, NOMINAL, 200000000),
1529 CLK_INIT(sdcc2_apps_clk_src.c),
1530 },
1531};
1532
1533static struct rcg_clk sdcc3_apps_clk_src = {
1534 .cmd_rcgr_reg = SDCC3_APPS_CMD_RCGR,
1535 .set_rate = set_rate_mnd,
1536 .freq_tbl = ftbl_gcc_sdcc3_4_apps_clk,
1537 .current_freq = &rcg_dummy_freq,
1538 .base = &virt_bases[GCC_BASE],
1539 .c = {
1540 .dbg_name = "sdcc3_apps_clk_src",
1541 .ops = &clk_ops_rcg_mnd,
1542 VDD_DIG_FMAX_MAP2(LOW, 50000000, NOMINAL, 100000000),
1543 CLK_INIT(sdcc3_apps_clk_src.c),
1544 },
1545};
1546
1547static struct rcg_clk sdcc4_apps_clk_src = {
1548 .cmd_rcgr_reg = SDCC4_APPS_CMD_RCGR,
1549 .set_rate = set_rate_mnd,
1550 .freq_tbl = ftbl_gcc_sdcc3_4_apps_clk,
1551 .current_freq = &rcg_dummy_freq,
1552 .base = &virt_bases[GCC_BASE],
1553 .c = {
1554 .dbg_name = "sdcc4_apps_clk_src",
1555 .ops = &clk_ops_rcg_mnd,
1556 VDD_DIG_FMAX_MAP2(LOW, 50000000, NOMINAL, 100000000),
1557 CLK_INIT(sdcc4_apps_clk_src.c),
1558 },
1559};
1560
1561static struct clk_freq_tbl ftbl_gcc_tsif_ref_clk[] = {
1562 F(105000, cxo, 2, 1, 91),
1563 F_END
1564};
1565
1566static struct rcg_clk tsif_ref_clk_src = {
1567 .cmd_rcgr_reg = TSIF_REF_CMD_RCGR,
1568 .set_rate = set_rate_mnd,
1569 .freq_tbl = ftbl_gcc_tsif_ref_clk,
1570 .current_freq = &rcg_dummy_freq,
1571 .base = &virt_bases[GCC_BASE],
1572 .c = {
1573 .dbg_name = "tsif_ref_clk_src",
1574 .ops = &clk_ops_rcg_mnd,
1575 VDD_DIG_FMAX_MAP1(LOW, 105500),
1576 CLK_INIT(tsif_ref_clk_src.c),
1577 },
1578};
1579
1580static struct clk_freq_tbl ftbl_gcc_usb30_mock_utmi_clk[] = {
1581 F(60000000, gpll0, 10, 0, 0),
1582 F_END
1583};
1584
1585static struct rcg_clk usb30_mock_utmi_clk_src = {
1586 .cmd_rcgr_reg = USB30_MOCK_UTMI_CMD_RCGR,
1587 .set_rate = set_rate_hid,
1588 .freq_tbl = ftbl_gcc_usb30_mock_utmi_clk,
1589 .current_freq = &rcg_dummy_freq,
1590 .base = &virt_bases[GCC_BASE],
1591 .c = {
1592 .dbg_name = "usb30_mock_utmi_clk_src",
1593 .ops = &clk_ops_rcg,
1594 VDD_DIG_FMAX_MAP1(NOMINAL, 60000000),
1595 CLK_INIT(usb30_mock_utmi_clk_src.c),
1596 },
1597};
1598
1599static struct clk_freq_tbl ftbl_gcc_usb_hs_system_clk[] = {
1600 F(75000000, gpll0, 8, 0, 0),
1601 F_END
1602};
1603
1604static struct rcg_clk usb_hs_system_clk_src = {
1605 .cmd_rcgr_reg = USB_HS_SYSTEM_CMD_RCGR,
1606 .set_rate = set_rate_hid,
1607 .freq_tbl = ftbl_gcc_usb_hs_system_clk,
1608 .current_freq = &rcg_dummy_freq,
1609 .base = &virt_bases[GCC_BASE],
1610 .c = {
1611 .dbg_name = "usb_hs_system_clk_src",
1612 .ops = &clk_ops_rcg,
1613 VDD_DIG_FMAX_MAP2(LOW, 37500000, NOMINAL, 75000000),
1614 CLK_INIT(usb_hs_system_clk_src.c),
1615 },
1616};
1617
1618static struct clk_freq_tbl ftbl_gcc_usb_hsic_clk[] = {
1619 F_HSIC(480000000, gpll1, 1, 0, 0),
1620 F_END
1621};
1622
1623static struct rcg_clk usb_hsic_clk_src = {
1624 .cmd_rcgr_reg = USB_HSIC_CMD_RCGR,
1625 .set_rate = set_rate_hid,
1626 .freq_tbl = ftbl_gcc_usb_hsic_clk,
1627 .current_freq = &rcg_dummy_freq,
1628 .base = &virt_bases[GCC_BASE],
1629 .c = {
1630 .dbg_name = "usb_hsic_clk_src",
1631 .ops = &clk_ops_rcg,
1632 VDD_DIG_FMAX_MAP1(LOW, 480000000),
1633 CLK_INIT(usb_hsic_clk_src.c),
1634 },
1635};
1636
1637static struct clk_freq_tbl ftbl_gcc_usb_hsic_io_cal_clk[] = {
1638 F(9600000, cxo, 2, 0, 0),
1639 F_END
1640};
1641
1642static struct rcg_clk usb_hsic_io_cal_clk_src = {
1643 .cmd_rcgr_reg = USB_HSIC_IO_CAL_CMD_RCGR,
1644 .set_rate = set_rate_hid,
1645 .freq_tbl = ftbl_gcc_usb_hsic_io_cal_clk,
1646 .current_freq = &rcg_dummy_freq,
1647 .base = &virt_bases[GCC_BASE],
1648 .c = {
1649 .dbg_name = "usb_hsic_io_cal_clk_src",
1650 .ops = &clk_ops_rcg,
1651 VDD_DIG_FMAX_MAP1(LOW, 9600000),
1652 CLK_INIT(usb_hsic_io_cal_clk_src.c),
1653 },
1654};
1655
1656static struct clk_freq_tbl ftbl_gcc_usb_hsic_system_clk[] = {
1657 F(75000000, gpll0, 8, 0, 0),
1658 F_END
1659};
1660
1661static struct rcg_clk usb_hsic_system_clk_src = {
1662 .cmd_rcgr_reg = USB_HSIC_SYSTEM_CMD_RCGR,
1663 .set_rate = set_rate_hid,
1664 .freq_tbl = ftbl_gcc_usb_hsic_system_clk,
1665 .current_freq = &rcg_dummy_freq,
1666 .base = &virt_bases[GCC_BASE],
1667 .c = {
1668 .dbg_name = "usb_hsic_system_clk_src",
1669 .ops = &clk_ops_rcg,
1670 VDD_DIG_FMAX_MAP2(LOW, 37500000, NOMINAL, 75000000),
1671 CLK_INIT(usb_hsic_system_clk_src.c),
1672 },
1673};
1674
1675static struct local_vote_clk gcc_bam_dma_ahb_clk = {
1676 .cbcr_reg = BAM_DMA_AHB_CBCR,
1677 .vote_reg = APCS_CLOCK_BRANCH_ENA_VOTE,
1678 .en_mask = BIT(12),
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001679 .base = &virt_bases[GCC_BASE],
1680 .c = {
1681 .dbg_name = "gcc_bam_dma_ahb_clk",
1682 .ops = &clk_ops_vote,
1683 CLK_INIT(gcc_bam_dma_ahb_clk.c),
1684 },
1685};
1686
1687static struct local_vote_clk gcc_blsp1_ahb_clk = {
1688 .cbcr_reg = BLSP1_AHB_CBCR,
1689 .vote_reg = APCS_CLOCK_BRANCH_ENA_VOTE,
1690 .en_mask = BIT(17),
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001691 .base = &virt_bases[GCC_BASE],
1692 .c = {
1693 .dbg_name = "gcc_blsp1_ahb_clk",
1694 .ops = &clk_ops_vote,
1695 CLK_INIT(gcc_blsp1_ahb_clk.c),
1696 },
1697};
1698
1699static struct branch_clk gcc_blsp1_qup1_i2c_apps_clk = {
1700 .cbcr_reg = BLSP1_QUP1_I2C_APPS_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001701 .base = &virt_bases[GCC_BASE],
1702 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07001703 .parent = &cxo_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001704 .dbg_name = "gcc_blsp1_qup1_i2c_apps_clk",
1705 .ops = &clk_ops_branch,
1706 CLK_INIT(gcc_blsp1_qup1_i2c_apps_clk.c),
1707 },
1708};
1709
1710static struct branch_clk gcc_blsp1_qup1_spi_apps_clk = {
1711 .cbcr_reg = BLSP1_QUP1_SPI_APPS_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001712 .base = &virt_bases[GCC_BASE],
1713 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07001714 .parent = &blsp1_qup1_spi_apps_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001715 .dbg_name = "gcc_blsp1_qup1_spi_apps_clk",
1716 .ops = &clk_ops_branch,
1717 CLK_INIT(gcc_blsp1_qup1_spi_apps_clk.c),
1718 },
1719};
1720
1721static struct branch_clk gcc_blsp1_qup2_i2c_apps_clk = {
1722 .cbcr_reg = BLSP1_QUP2_I2C_APPS_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001723 .base = &virt_bases[GCC_BASE],
1724 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07001725 .parent = &cxo_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001726 .dbg_name = "gcc_blsp1_qup2_i2c_apps_clk",
1727 .ops = &clk_ops_branch,
1728 CLK_INIT(gcc_blsp1_qup2_i2c_apps_clk.c),
1729 },
1730};
1731
1732static struct branch_clk gcc_blsp1_qup2_spi_apps_clk = {
1733 .cbcr_reg = BLSP1_QUP2_SPI_APPS_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001734 .base = &virt_bases[GCC_BASE],
1735 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07001736 .parent = &blsp1_qup2_spi_apps_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001737 .dbg_name = "gcc_blsp1_qup2_spi_apps_clk",
1738 .ops = &clk_ops_branch,
1739 CLK_INIT(gcc_blsp1_qup2_spi_apps_clk.c),
1740 },
1741};
1742
1743static struct branch_clk gcc_blsp1_qup3_i2c_apps_clk = {
1744 .cbcr_reg = BLSP1_QUP3_I2C_APPS_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001745 .base = &virt_bases[GCC_BASE],
1746 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07001747 .parent = &cxo_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001748 .dbg_name = "gcc_blsp1_qup3_i2c_apps_clk",
1749 .ops = &clk_ops_branch,
1750 CLK_INIT(gcc_blsp1_qup3_i2c_apps_clk.c),
1751 },
1752};
1753
1754static struct branch_clk gcc_blsp1_qup3_spi_apps_clk = {
1755 .cbcr_reg = BLSP1_QUP3_SPI_APPS_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001756 .base = &virt_bases[GCC_BASE],
1757 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07001758 .parent = &blsp1_qup3_spi_apps_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001759 .dbg_name = "gcc_blsp1_qup3_spi_apps_clk",
1760 .ops = &clk_ops_branch,
1761 CLK_INIT(gcc_blsp1_qup3_spi_apps_clk.c),
1762 },
1763};
1764
1765static struct branch_clk gcc_blsp1_qup4_i2c_apps_clk = {
1766 .cbcr_reg = BLSP1_QUP4_I2C_APPS_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001767 .base = &virt_bases[GCC_BASE],
1768 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07001769 .parent = &cxo_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001770 .dbg_name = "gcc_blsp1_qup4_i2c_apps_clk",
1771 .ops = &clk_ops_branch,
1772 CLK_INIT(gcc_blsp1_qup4_i2c_apps_clk.c),
1773 },
1774};
1775
1776static struct branch_clk gcc_blsp1_qup4_spi_apps_clk = {
1777 .cbcr_reg = BLSP1_QUP4_SPI_APPS_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001778 .base = &virt_bases[GCC_BASE],
1779 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07001780 .parent = &blsp1_qup4_spi_apps_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001781 .dbg_name = "gcc_blsp1_qup4_spi_apps_clk",
1782 .ops = &clk_ops_branch,
1783 CLK_INIT(gcc_blsp1_qup4_spi_apps_clk.c),
1784 },
1785};
1786
1787static struct branch_clk gcc_blsp1_qup5_i2c_apps_clk = {
1788 .cbcr_reg = BLSP1_QUP5_I2C_APPS_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001789 .base = &virt_bases[GCC_BASE],
1790 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07001791 .parent = &cxo_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001792 .dbg_name = "gcc_blsp1_qup5_i2c_apps_clk",
1793 .ops = &clk_ops_branch,
1794 CLK_INIT(gcc_blsp1_qup5_i2c_apps_clk.c),
1795 },
1796};
1797
1798static struct branch_clk gcc_blsp1_qup5_spi_apps_clk = {
1799 .cbcr_reg = BLSP1_QUP5_SPI_APPS_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001800 .base = &virt_bases[GCC_BASE],
1801 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07001802 .parent = &blsp1_qup5_spi_apps_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001803 .dbg_name = "gcc_blsp1_qup5_spi_apps_clk",
1804 .ops = &clk_ops_branch,
1805 CLK_INIT(gcc_blsp1_qup5_spi_apps_clk.c),
1806 },
1807};
1808
1809static struct branch_clk gcc_blsp1_qup6_i2c_apps_clk = {
1810 .cbcr_reg = BLSP1_QUP6_I2C_APPS_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001811 .base = &virt_bases[GCC_BASE],
1812 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07001813 .parent = &cxo_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001814 .dbg_name = "gcc_blsp1_qup6_i2c_apps_clk",
1815 .ops = &clk_ops_branch,
1816 CLK_INIT(gcc_blsp1_qup6_i2c_apps_clk.c),
1817 },
1818};
1819
1820static struct branch_clk gcc_blsp1_qup6_spi_apps_clk = {
1821 .cbcr_reg = BLSP1_QUP6_SPI_APPS_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001822 .base = &virt_bases[GCC_BASE],
1823 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07001824 .parent = &blsp1_qup6_spi_apps_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001825 .dbg_name = "gcc_blsp1_qup6_spi_apps_clk",
1826 .ops = &clk_ops_branch,
1827 CLK_INIT(gcc_blsp1_qup6_spi_apps_clk.c),
1828 },
1829};
1830
1831static struct branch_clk gcc_blsp1_uart1_apps_clk = {
1832 .cbcr_reg = BLSP1_UART1_APPS_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001833 .base = &virt_bases[GCC_BASE],
1834 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07001835 .parent = &blsp1_uart1_apps_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001836 .dbg_name = "gcc_blsp1_uart1_apps_clk",
1837 .ops = &clk_ops_branch,
1838 CLK_INIT(gcc_blsp1_uart1_apps_clk.c),
1839 },
1840};
1841
1842static struct branch_clk gcc_blsp1_uart2_apps_clk = {
1843 .cbcr_reg = BLSP1_UART2_APPS_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001844 .base = &virt_bases[GCC_BASE],
1845 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07001846 .parent = &blsp1_uart2_apps_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001847 .dbg_name = "gcc_blsp1_uart2_apps_clk",
1848 .ops = &clk_ops_branch,
1849 CLK_INIT(gcc_blsp1_uart2_apps_clk.c),
1850 },
1851};
1852
1853static struct branch_clk gcc_blsp1_uart3_apps_clk = {
1854 .cbcr_reg = BLSP1_UART3_APPS_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001855 .base = &virt_bases[GCC_BASE],
1856 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07001857 .parent = &blsp1_uart3_apps_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001858 .dbg_name = "gcc_blsp1_uart3_apps_clk",
1859 .ops = &clk_ops_branch,
1860 CLK_INIT(gcc_blsp1_uart3_apps_clk.c),
1861 },
1862};
1863
1864static struct branch_clk gcc_blsp1_uart4_apps_clk = {
1865 .cbcr_reg = BLSP1_UART4_APPS_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001866 .base = &virt_bases[GCC_BASE],
1867 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07001868 .parent = &blsp1_uart4_apps_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001869 .dbg_name = "gcc_blsp1_uart4_apps_clk",
1870 .ops = &clk_ops_branch,
1871 CLK_INIT(gcc_blsp1_uart4_apps_clk.c),
1872 },
1873};
1874
1875static struct branch_clk gcc_blsp1_uart5_apps_clk = {
1876 .cbcr_reg = BLSP1_UART5_APPS_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001877 .base = &virt_bases[GCC_BASE],
1878 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07001879 .parent = &blsp1_uart5_apps_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001880 .dbg_name = "gcc_blsp1_uart5_apps_clk",
1881 .ops = &clk_ops_branch,
1882 CLK_INIT(gcc_blsp1_uart5_apps_clk.c),
1883 },
1884};
1885
1886static struct branch_clk gcc_blsp1_uart6_apps_clk = {
1887 .cbcr_reg = BLSP1_UART6_APPS_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001888 .base = &virt_bases[GCC_BASE],
1889 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07001890 .parent = &blsp1_uart6_apps_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001891 .dbg_name = "gcc_blsp1_uart6_apps_clk",
1892 .ops = &clk_ops_branch,
1893 CLK_INIT(gcc_blsp1_uart6_apps_clk.c),
1894 },
1895};
1896
Vikram Mulukutlaa967db42012-05-10 16:20:40 -07001897static struct local_vote_clk gcc_boot_rom_ahb_clk = {
1898 .cbcr_reg = BOOT_ROM_AHB_CBCR,
1899 .vote_reg = APCS_CLOCK_BRANCH_ENA_VOTE,
1900 .en_mask = BIT(10),
Vikram Mulukutlaa967db42012-05-10 16:20:40 -07001901 .base = &virt_bases[GCC_BASE],
1902 .c = {
1903 .dbg_name = "gcc_boot_rom_ahb_clk",
1904 .ops = &clk_ops_vote,
1905 CLK_INIT(gcc_boot_rom_ahb_clk.c),
1906 },
1907};
1908
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001909static struct local_vote_clk gcc_blsp2_ahb_clk = {
1910 .cbcr_reg = BLSP2_AHB_CBCR,
1911 .vote_reg = APCS_CLOCK_BRANCH_ENA_VOTE,
1912 .en_mask = BIT(15),
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001913 .base = &virt_bases[GCC_BASE],
1914 .c = {
1915 .dbg_name = "gcc_blsp2_ahb_clk",
1916 .ops = &clk_ops_vote,
1917 CLK_INIT(gcc_blsp2_ahb_clk.c),
1918 },
1919};
1920
1921static struct branch_clk gcc_blsp2_qup1_i2c_apps_clk = {
1922 .cbcr_reg = BLSP2_QUP1_I2C_APPS_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001923 .base = &virt_bases[GCC_BASE],
1924 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07001925 .parent = &cxo_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001926 .dbg_name = "gcc_blsp2_qup1_i2c_apps_clk",
1927 .ops = &clk_ops_branch,
1928 CLK_INIT(gcc_blsp2_qup1_i2c_apps_clk.c),
1929 },
1930};
1931
1932static struct branch_clk gcc_blsp2_qup1_spi_apps_clk = {
1933 .cbcr_reg = BLSP2_QUP1_SPI_APPS_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001934 .base = &virt_bases[GCC_BASE],
1935 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07001936 .parent = &blsp2_qup1_spi_apps_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001937 .dbg_name = "gcc_blsp2_qup1_spi_apps_clk",
1938 .ops = &clk_ops_branch,
1939 CLK_INIT(gcc_blsp2_qup1_spi_apps_clk.c),
1940 },
1941};
1942
1943static struct branch_clk gcc_blsp2_qup2_i2c_apps_clk = {
1944 .cbcr_reg = BLSP2_QUP2_I2C_APPS_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001945 .base = &virt_bases[GCC_BASE],
1946 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07001947 .parent = &cxo_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001948 .dbg_name = "gcc_blsp2_qup2_i2c_apps_clk",
1949 .ops = &clk_ops_branch,
1950 CLK_INIT(gcc_blsp2_qup2_i2c_apps_clk.c),
1951 },
1952};
1953
1954static struct branch_clk gcc_blsp2_qup2_spi_apps_clk = {
1955 .cbcr_reg = BLSP2_QUP2_SPI_APPS_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001956 .base = &virt_bases[GCC_BASE],
1957 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07001958 .parent = &blsp2_qup2_spi_apps_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001959 .dbg_name = "gcc_blsp2_qup2_spi_apps_clk",
1960 .ops = &clk_ops_branch,
1961 CLK_INIT(gcc_blsp2_qup2_spi_apps_clk.c),
1962 },
1963};
1964
1965static struct branch_clk gcc_blsp2_qup3_i2c_apps_clk = {
1966 .cbcr_reg = BLSP2_QUP3_I2C_APPS_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001967 .base = &virt_bases[GCC_BASE],
1968 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07001969 .parent = &cxo_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001970 .dbg_name = "gcc_blsp2_qup3_i2c_apps_clk",
1971 .ops = &clk_ops_branch,
1972 CLK_INIT(gcc_blsp2_qup3_i2c_apps_clk.c),
1973 },
1974};
1975
1976static struct branch_clk gcc_blsp2_qup3_spi_apps_clk = {
1977 .cbcr_reg = BLSP2_QUP3_SPI_APPS_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001978 .base = &virt_bases[GCC_BASE],
1979 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07001980 .parent = &blsp2_qup3_spi_apps_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001981 .dbg_name = "gcc_blsp2_qup3_spi_apps_clk",
1982 .ops = &clk_ops_branch,
1983 CLK_INIT(gcc_blsp2_qup3_spi_apps_clk.c),
1984 },
1985};
1986
1987static struct branch_clk gcc_blsp2_qup4_i2c_apps_clk = {
1988 .cbcr_reg = BLSP2_QUP4_I2C_APPS_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001989 .base = &virt_bases[GCC_BASE],
1990 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07001991 .parent = &cxo_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07001992 .dbg_name = "gcc_blsp2_qup4_i2c_apps_clk",
1993 .ops = &clk_ops_branch,
1994 CLK_INIT(gcc_blsp2_qup4_i2c_apps_clk.c),
1995 },
1996};
1997
1998static struct branch_clk gcc_blsp2_qup4_spi_apps_clk = {
1999 .cbcr_reg = BLSP2_QUP4_SPI_APPS_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002000 .base = &virt_bases[GCC_BASE],
2001 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07002002 .parent = &blsp2_qup4_spi_apps_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002003 .dbg_name = "gcc_blsp2_qup4_spi_apps_clk",
2004 .ops = &clk_ops_branch,
2005 CLK_INIT(gcc_blsp2_qup4_spi_apps_clk.c),
2006 },
2007};
2008
2009static struct branch_clk gcc_blsp2_qup5_i2c_apps_clk = {
2010 .cbcr_reg = BLSP2_QUP5_I2C_APPS_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002011 .base = &virt_bases[GCC_BASE],
2012 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07002013 .parent = &cxo_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002014 .dbg_name = "gcc_blsp2_qup5_i2c_apps_clk",
2015 .ops = &clk_ops_branch,
2016 CLK_INIT(gcc_blsp2_qup5_i2c_apps_clk.c),
2017 },
2018};
2019
2020static struct branch_clk gcc_blsp2_qup5_spi_apps_clk = {
2021 .cbcr_reg = BLSP2_QUP5_SPI_APPS_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002022 .base = &virt_bases[GCC_BASE],
2023 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07002024 .parent = &blsp2_qup5_spi_apps_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002025 .dbg_name = "gcc_blsp2_qup5_spi_apps_clk",
2026 .ops = &clk_ops_branch,
2027 CLK_INIT(gcc_blsp2_qup5_spi_apps_clk.c),
2028 },
2029};
2030
2031static struct branch_clk gcc_blsp2_qup6_i2c_apps_clk = {
2032 .cbcr_reg = BLSP2_QUP6_I2C_APPS_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002033 .base = &virt_bases[GCC_BASE],
2034 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07002035 .parent = &cxo_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002036 .dbg_name = "gcc_blsp2_qup6_i2c_apps_clk",
2037 .ops = &clk_ops_branch,
2038 CLK_INIT(gcc_blsp2_qup6_i2c_apps_clk.c),
2039 },
2040};
2041
2042static struct branch_clk gcc_blsp2_qup6_spi_apps_clk = {
2043 .cbcr_reg = BLSP2_QUP6_SPI_APPS_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002044 .base = &virt_bases[GCC_BASE],
2045 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07002046 .parent = &blsp2_qup6_spi_apps_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002047 .dbg_name = "gcc_blsp2_qup6_spi_apps_clk",
2048 .ops = &clk_ops_branch,
2049 CLK_INIT(gcc_blsp2_qup6_spi_apps_clk.c),
2050 },
2051};
2052
2053static struct branch_clk gcc_blsp2_uart1_apps_clk = {
2054 .cbcr_reg = BLSP2_UART1_APPS_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002055 .base = &virt_bases[GCC_BASE],
2056 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07002057 .parent = &blsp2_uart1_apps_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002058 .dbg_name = "gcc_blsp2_uart1_apps_clk",
2059 .ops = &clk_ops_branch,
2060 CLK_INIT(gcc_blsp2_uart1_apps_clk.c),
2061 },
2062};
2063
2064static struct branch_clk gcc_blsp2_uart2_apps_clk = {
2065 .cbcr_reg = BLSP2_UART2_APPS_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002066 .base = &virt_bases[GCC_BASE],
2067 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07002068 .parent = &blsp2_uart2_apps_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002069 .dbg_name = "gcc_blsp2_uart2_apps_clk",
2070 .ops = &clk_ops_branch,
2071 CLK_INIT(gcc_blsp2_uart2_apps_clk.c),
2072 },
2073};
2074
2075static struct branch_clk gcc_blsp2_uart3_apps_clk = {
2076 .cbcr_reg = BLSP2_UART3_APPS_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002077 .base = &virt_bases[GCC_BASE],
2078 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07002079 .parent = &blsp2_uart3_apps_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002080 .dbg_name = "gcc_blsp2_uart3_apps_clk",
2081 .ops = &clk_ops_branch,
2082 CLK_INIT(gcc_blsp2_uart3_apps_clk.c),
2083 },
2084};
2085
2086static struct branch_clk gcc_blsp2_uart4_apps_clk = {
2087 .cbcr_reg = BLSP2_UART4_APPS_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002088 .base = &virt_bases[GCC_BASE],
2089 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07002090 .parent = &blsp2_uart4_apps_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002091 .dbg_name = "gcc_blsp2_uart4_apps_clk",
2092 .ops = &clk_ops_branch,
2093 CLK_INIT(gcc_blsp2_uart4_apps_clk.c),
2094 },
2095};
2096
2097static struct branch_clk gcc_blsp2_uart5_apps_clk = {
2098 .cbcr_reg = BLSP2_UART5_APPS_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002099 .base = &virt_bases[GCC_BASE],
2100 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07002101 .parent = &blsp2_uart5_apps_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002102 .dbg_name = "gcc_blsp2_uart5_apps_clk",
2103 .ops = &clk_ops_branch,
2104 CLK_INIT(gcc_blsp2_uart5_apps_clk.c),
2105 },
2106};
2107
2108static struct branch_clk gcc_blsp2_uart6_apps_clk = {
2109 .cbcr_reg = BLSP2_UART6_APPS_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002110 .base = &virt_bases[GCC_BASE],
2111 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07002112 .parent = &blsp2_uart6_apps_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002113 .dbg_name = "gcc_blsp2_uart6_apps_clk",
2114 .ops = &clk_ops_branch,
2115 CLK_INIT(gcc_blsp2_uart6_apps_clk.c),
2116 },
2117};
2118
2119static struct local_vote_clk gcc_ce1_clk = {
2120 .cbcr_reg = CE1_CBCR,
2121 .vote_reg = APCS_CLOCK_BRANCH_ENA_VOTE,
2122 .en_mask = BIT(5),
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002123 .base = &virt_bases[GCC_BASE],
2124 .c = {
2125 .dbg_name = "gcc_ce1_clk",
2126 .ops = &clk_ops_vote,
2127 CLK_INIT(gcc_ce1_clk.c),
2128 },
2129};
2130
2131static struct local_vote_clk gcc_ce1_ahb_clk = {
2132 .cbcr_reg = CE1_AHB_CBCR,
2133 .vote_reg = APCS_CLOCK_BRANCH_ENA_VOTE,
2134 .en_mask = BIT(3),
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002135 .base = &virt_bases[GCC_BASE],
2136 .c = {
2137 .dbg_name = "gcc_ce1_ahb_clk",
2138 .ops = &clk_ops_vote,
2139 CLK_INIT(gcc_ce1_ahb_clk.c),
2140 },
2141};
2142
2143static struct local_vote_clk gcc_ce1_axi_clk = {
2144 .cbcr_reg = CE1_AXI_CBCR,
2145 .vote_reg = APCS_CLOCK_BRANCH_ENA_VOTE,
2146 .en_mask = BIT(4),
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002147 .base = &virt_bases[GCC_BASE],
2148 .c = {
2149 .dbg_name = "gcc_ce1_axi_clk",
2150 .ops = &clk_ops_vote,
2151 CLK_INIT(gcc_ce1_axi_clk.c),
2152 },
2153};
2154
2155static struct local_vote_clk gcc_ce2_clk = {
2156 .cbcr_reg = CE2_CBCR,
2157 .vote_reg = APCS_CLOCK_BRANCH_ENA_VOTE,
2158 .en_mask = BIT(2),
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002159 .base = &virt_bases[GCC_BASE],
2160 .c = {
2161 .dbg_name = "gcc_ce2_clk",
2162 .ops = &clk_ops_vote,
2163 CLK_INIT(gcc_ce2_clk.c),
2164 },
2165};
2166
2167static struct local_vote_clk gcc_ce2_ahb_clk = {
2168 .cbcr_reg = CE2_AHB_CBCR,
2169 .vote_reg = APCS_CLOCK_BRANCH_ENA_VOTE,
2170 .en_mask = BIT(0),
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002171 .base = &virt_bases[GCC_BASE],
2172 .c = {
Vikram Mulukutla3f580f82012-09-04 15:22:42 -07002173 .dbg_name = "gcc_ce2_ahb_clk",
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002174 .ops = &clk_ops_vote,
Vikram Mulukutla3f580f82012-09-04 15:22:42 -07002175 CLK_INIT(gcc_ce2_ahb_clk.c),
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002176 },
2177};
2178
2179static struct local_vote_clk gcc_ce2_axi_clk = {
2180 .cbcr_reg = CE2_AXI_CBCR,
2181 .vote_reg = APCS_CLOCK_BRANCH_ENA_VOTE,
2182 .en_mask = BIT(1),
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002183 .base = &virt_bases[GCC_BASE],
2184 .c = {
Vikram Mulukutla3f580f82012-09-04 15:22:42 -07002185 .dbg_name = "gcc_ce2_axi_clk",
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002186 .ops = &clk_ops_vote,
2187 CLK_INIT(gcc_ce2_axi_clk.c),
2188 },
2189};
2190
2191static struct branch_clk gcc_gp1_clk = {
2192 .cbcr_reg = GP1_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002193 .base = &virt_bases[GCC_BASE],
2194 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07002195 .parent = &gp1_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002196 .dbg_name = "gcc_gp1_clk",
2197 .ops = &clk_ops_branch,
2198 CLK_INIT(gcc_gp1_clk.c),
2199 },
2200};
2201
2202static struct branch_clk gcc_gp2_clk = {
2203 .cbcr_reg = GP2_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002204 .base = &virt_bases[GCC_BASE],
2205 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07002206 .parent = &gp2_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002207 .dbg_name = "gcc_gp2_clk",
2208 .ops = &clk_ops_branch,
2209 CLK_INIT(gcc_gp2_clk.c),
2210 },
2211};
2212
2213static struct branch_clk gcc_gp3_clk = {
2214 .cbcr_reg = GP3_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002215 .base = &virt_bases[GCC_BASE],
2216 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07002217 .parent = &gp3_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002218 .dbg_name = "gcc_gp3_clk",
2219 .ops = &clk_ops_branch,
2220 CLK_INIT(gcc_gp3_clk.c),
2221 },
2222};
2223
2224static struct branch_clk gcc_pdm2_clk = {
2225 .cbcr_reg = PDM2_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002226 .base = &virt_bases[GCC_BASE],
2227 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07002228 .parent = &pdm2_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002229 .dbg_name = "gcc_pdm2_clk",
2230 .ops = &clk_ops_branch,
2231 CLK_INIT(gcc_pdm2_clk.c),
2232 },
2233};
2234
2235static struct branch_clk gcc_pdm_ahb_clk = {
2236 .cbcr_reg = PDM_AHB_CBCR,
2237 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002238 .base = &virt_bases[GCC_BASE],
2239 .c = {
2240 .dbg_name = "gcc_pdm_ahb_clk",
2241 .ops = &clk_ops_branch,
2242 CLK_INIT(gcc_pdm_ahb_clk.c),
2243 },
2244};
2245
2246static struct local_vote_clk gcc_prng_ahb_clk = {
2247 .cbcr_reg = PRNG_AHB_CBCR,
2248 .vote_reg = APCS_CLOCK_BRANCH_ENA_VOTE,
2249 .en_mask = BIT(13),
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002250 .base = &virt_bases[GCC_BASE],
2251 .c = {
2252 .dbg_name = "gcc_prng_ahb_clk",
2253 .ops = &clk_ops_vote,
2254 CLK_INIT(gcc_prng_ahb_clk.c),
2255 },
2256};
2257
2258static struct branch_clk gcc_sdcc1_ahb_clk = {
2259 .cbcr_reg = SDCC1_AHB_CBCR,
2260 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002261 .base = &virt_bases[GCC_BASE],
2262 .c = {
2263 .dbg_name = "gcc_sdcc1_ahb_clk",
2264 .ops = &clk_ops_branch,
2265 CLK_INIT(gcc_sdcc1_ahb_clk.c),
2266 },
2267};
2268
2269static struct branch_clk gcc_sdcc1_apps_clk = {
2270 .cbcr_reg = SDCC1_APPS_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002271 .base = &virt_bases[GCC_BASE],
2272 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07002273 .parent = &sdcc1_apps_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002274 .dbg_name = "gcc_sdcc1_apps_clk",
2275 .ops = &clk_ops_branch,
2276 CLK_INIT(gcc_sdcc1_apps_clk.c),
2277 },
2278};
2279
2280static struct branch_clk gcc_sdcc2_ahb_clk = {
2281 .cbcr_reg = SDCC2_AHB_CBCR,
2282 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002283 .base = &virt_bases[GCC_BASE],
2284 .c = {
2285 .dbg_name = "gcc_sdcc2_ahb_clk",
2286 .ops = &clk_ops_branch,
2287 CLK_INIT(gcc_sdcc2_ahb_clk.c),
2288 },
2289};
2290
2291static struct branch_clk gcc_sdcc2_apps_clk = {
2292 .cbcr_reg = SDCC2_APPS_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002293 .base = &virt_bases[GCC_BASE],
2294 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07002295 .parent = &sdcc2_apps_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002296 .dbg_name = "gcc_sdcc2_apps_clk",
2297 .ops = &clk_ops_branch,
2298 CLK_INIT(gcc_sdcc2_apps_clk.c),
2299 },
2300};
2301
2302static struct branch_clk gcc_sdcc3_ahb_clk = {
2303 .cbcr_reg = SDCC3_AHB_CBCR,
2304 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002305 .base = &virt_bases[GCC_BASE],
2306 .c = {
2307 .dbg_name = "gcc_sdcc3_ahb_clk",
2308 .ops = &clk_ops_branch,
2309 CLK_INIT(gcc_sdcc3_ahb_clk.c),
2310 },
2311};
2312
2313static struct branch_clk gcc_sdcc3_apps_clk = {
2314 .cbcr_reg = SDCC3_APPS_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002315 .base = &virt_bases[GCC_BASE],
2316 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07002317 .parent = &sdcc3_apps_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002318 .dbg_name = "gcc_sdcc3_apps_clk",
2319 .ops = &clk_ops_branch,
2320 CLK_INIT(gcc_sdcc3_apps_clk.c),
2321 },
2322};
2323
2324static struct branch_clk gcc_sdcc4_ahb_clk = {
2325 .cbcr_reg = SDCC4_AHB_CBCR,
2326 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002327 .base = &virt_bases[GCC_BASE],
2328 .c = {
2329 .dbg_name = "gcc_sdcc4_ahb_clk",
2330 .ops = &clk_ops_branch,
2331 CLK_INIT(gcc_sdcc4_ahb_clk.c),
2332 },
2333};
2334
2335static struct branch_clk gcc_sdcc4_apps_clk = {
2336 .cbcr_reg = SDCC4_APPS_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002337 .base = &virt_bases[GCC_BASE],
2338 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07002339 .parent = &sdcc4_apps_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002340 .dbg_name = "gcc_sdcc4_apps_clk",
2341 .ops = &clk_ops_branch,
2342 CLK_INIT(gcc_sdcc4_apps_clk.c),
2343 },
2344};
2345
2346static struct branch_clk gcc_tsif_ahb_clk = {
2347 .cbcr_reg = TSIF_AHB_CBCR,
2348 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002349 .base = &virt_bases[GCC_BASE],
2350 .c = {
2351 .dbg_name = "gcc_tsif_ahb_clk",
2352 .ops = &clk_ops_branch,
2353 CLK_INIT(gcc_tsif_ahb_clk.c),
2354 },
2355};
2356
2357static struct branch_clk gcc_tsif_ref_clk = {
2358 .cbcr_reg = TSIF_REF_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002359 .base = &virt_bases[GCC_BASE],
2360 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07002361 .parent = &tsif_ref_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002362 .dbg_name = "gcc_tsif_ref_clk",
2363 .ops = &clk_ops_branch,
2364 CLK_INIT(gcc_tsif_ref_clk.c),
2365 },
2366};
2367
Vikram Mulukutla9e3512c2012-09-28 13:53:52 -07002368struct branch_clk gcc_sys_noc_usb3_axi_clk = {
2369 .cbcr_reg = SYS_NOC_USB3_AXI_CBCR,
Vikram Mulukutla9e3512c2012-09-28 13:53:52 -07002370 .has_sibling = 1,
2371 .base = &virt_bases[GCC_BASE],
2372 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07002373 .parent = &usb30_master_clk_src.c,
Vikram Mulukutla9e3512c2012-09-28 13:53:52 -07002374 .dbg_name = "gcc_sys_noc_usb3_axi_clk",
2375 .ops = &clk_ops_branch,
2376 CLK_INIT(gcc_sys_noc_usb3_axi_clk.c),
2377 },
2378};
2379
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002380static struct branch_clk gcc_usb30_master_clk = {
2381 .cbcr_reg = USB30_MASTER_CBCR,
Vikram Mulukutla777c3ce2012-07-03 20:02:55 -07002382 .bcr_reg = USB_30_BCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002383 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002384 .base = &virt_bases[GCC_BASE],
2385 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07002386 .parent = &usb30_master_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002387 .dbg_name = "gcc_usb30_master_clk",
2388 .ops = &clk_ops_branch,
2389 CLK_INIT(gcc_usb30_master_clk.c),
Vikram Mulukutla9e3512c2012-09-28 13:53:52 -07002390 .depends = &gcc_sys_noc_usb3_axi_clk.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002391 },
2392};
2393
2394static struct branch_clk gcc_usb30_mock_utmi_clk = {
2395 .cbcr_reg = USB30_MOCK_UTMI_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002396 .base = &virt_bases[GCC_BASE],
2397 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07002398 .parent = &usb30_mock_utmi_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002399 .dbg_name = "gcc_usb30_mock_utmi_clk",
2400 .ops = &clk_ops_branch,
2401 CLK_INIT(gcc_usb30_mock_utmi_clk.c),
2402 },
2403};
2404
Vikram Mulukutla3b98a6d2012-08-15 20:35:25 -07002405struct branch_clk gcc_usb30_sleep_clk = {
2406 .cbcr_reg = USB30_SLEEP_CBCR,
2407 .has_sibling = 1,
2408 .base = &virt_bases[GCC_BASE],
2409 .c = {
2410 .dbg_name = "gcc_usb30_sleep_clk",
2411 .ops = &clk_ops_branch,
2412 CLK_INIT(gcc_usb30_sleep_clk.c),
2413 },
2414};
2415
2416struct branch_clk gcc_usb2a_phy_sleep_clk = {
2417 .cbcr_reg = USB2A_PHY_SLEEP_CBCR,
2418 .has_sibling = 1,
2419 .base = &virt_bases[GCC_BASE],
2420 .c = {
2421 .dbg_name = "gcc_usb2a_phy_sleep_clk",
2422 .ops = &clk_ops_branch,
2423 CLK_INIT(gcc_usb2a_phy_sleep_clk.c),
2424 },
2425};
2426
2427struct branch_clk gcc_usb2b_phy_sleep_clk = {
2428 .cbcr_reg = USB2B_PHY_SLEEP_CBCR,
2429 .has_sibling = 1,
2430 .base = &virt_bases[GCC_BASE],
2431 .c = {
2432 .dbg_name = "gcc_usb2b_phy_sleep_clk",
2433 .ops = &clk_ops_branch,
2434 CLK_INIT(gcc_usb2b_phy_sleep_clk.c),
2435 },
2436};
2437
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002438static struct branch_clk gcc_usb_hs_ahb_clk = {
2439 .cbcr_reg = USB_HS_AHB_CBCR,
2440 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002441 .base = &virt_bases[GCC_BASE],
2442 .c = {
2443 .dbg_name = "gcc_usb_hs_ahb_clk",
2444 .ops = &clk_ops_branch,
2445 CLK_INIT(gcc_usb_hs_ahb_clk.c),
2446 },
2447};
2448
2449static struct branch_clk gcc_usb_hs_system_clk = {
2450 .cbcr_reg = USB_HS_SYSTEM_CBCR,
Vikram Mulukutla777c3ce2012-07-03 20:02:55 -07002451 .bcr_reg = USB_HS_BCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002452 .base = &virt_bases[GCC_BASE],
2453 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07002454 .parent = &usb_hs_system_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002455 .dbg_name = "gcc_usb_hs_system_clk",
2456 .ops = &clk_ops_branch,
2457 CLK_INIT(gcc_usb_hs_system_clk.c),
2458 },
2459};
2460
2461static struct branch_clk gcc_usb_hsic_ahb_clk = {
2462 .cbcr_reg = USB_HSIC_AHB_CBCR,
2463 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002464 .base = &virt_bases[GCC_BASE],
2465 .c = {
2466 .dbg_name = "gcc_usb_hsic_ahb_clk",
2467 .ops = &clk_ops_branch,
2468 CLK_INIT(gcc_usb_hsic_ahb_clk.c),
2469 },
2470};
2471
2472static struct branch_clk gcc_usb_hsic_clk = {
2473 .cbcr_reg = USB_HSIC_CBCR,
Vikram Mulukutla777c3ce2012-07-03 20:02:55 -07002474 .bcr_reg = USB_HS_HSIC_BCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002475 .base = &virt_bases[GCC_BASE],
2476 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07002477 .parent = &usb_hsic_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002478 .dbg_name = "gcc_usb_hsic_clk",
2479 .ops = &clk_ops_branch,
2480 CLK_INIT(gcc_usb_hsic_clk.c),
2481 },
2482};
2483
2484static struct branch_clk gcc_usb_hsic_io_cal_clk = {
2485 .cbcr_reg = USB_HSIC_IO_CAL_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002486 .base = &virt_bases[GCC_BASE],
2487 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07002488 .parent = &usb_hsic_io_cal_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002489 .dbg_name = "gcc_usb_hsic_io_cal_clk",
2490 .ops = &clk_ops_branch,
2491 CLK_INIT(gcc_usb_hsic_io_cal_clk.c),
2492 },
2493};
2494
2495static struct branch_clk gcc_usb_hsic_system_clk = {
2496 .cbcr_reg = USB_HSIC_SYSTEM_CBCR,
Vikram Mulukutla66fe3382012-12-10 20:23:34 -08002497 .bcr_reg = USB_HS_HSIC_BCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002498 .base = &virt_bases[GCC_BASE],
2499 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07002500 .parent = &usb_hsic_system_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002501 .dbg_name = "gcc_usb_hsic_system_clk",
2502 .ops = &clk_ops_branch,
2503 CLK_INIT(gcc_usb_hsic_system_clk.c),
2504 },
2505};
2506
Vikram Mulukutla274b2d92012-07-13 15:53:04 -07002507struct branch_clk gcc_mmss_noc_cfg_ahb_clk = {
2508 .cbcr_reg = MMSS_NOC_CFG_AHB_CBCR,
2509 .has_sibling = 1,
2510 .base = &virt_bases[GCC_BASE],
2511 .c = {
2512 .dbg_name = "gcc_mmss_noc_cfg_ahb_clk",
2513 .ops = &clk_ops_branch,
2514 CLK_INIT(gcc_mmss_noc_cfg_ahb_clk.c),
2515 },
2516};
2517
2518struct branch_clk gcc_ocmem_noc_cfg_ahb_clk = {
2519 .cbcr_reg = OCMEM_NOC_CFG_AHB_CBCR,
2520 .has_sibling = 1,
2521 .base = &virt_bases[GCC_BASE],
2522 .c = {
2523 .dbg_name = "gcc_ocmem_noc_cfg_ahb_clk",
2524 .ops = &clk_ops_branch,
2525 CLK_INIT(gcc_ocmem_noc_cfg_ahb_clk.c),
2526 },
2527};
2528
Vikram Mulukutlaa967db42012-05-10 16:20:40 -07002529static struct branch_clk gcc_mss_cfg_ahb_clk = {
2530 .cbcr_reg = MSS_CFG_AHB_CBCR,
2531 .has_sibling = 1,
2532 .base = &virt_bases[GCC_BASE],
2533 .c = {
2534 .dbg_name = "gcc_mss_cfg_ahb_clk",
2535 .ops = &clk_ops_branch,
2536 CLK_INIT(gcc_mss_cfg_ahb_clk.c),
2537 },
2538};
2539
Vikram Mulukutla31926eb2012-08-12 19:58:08 -07002540static struct branch_clk gcc_mss_q6_bimc_axi_clk = {
2541 .cbcr_reg = MSS_Q6_BIMC_AXI_CBCR,
2542 .has_sibling = 1,
2543 .base = &virt_bases[GCC_BASE],
2544 .c = {
2545 .dbg_name = "gcc_mss_q6_bimc_axi_clk",
2546 .ops = &clk_ops_branch,
2547 CLK_INIT(gcc_mss_q6_bimc_axi_clk.c),
2548 },
2549};
2550
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002551static struct clk_freq_tbl ftbl_mmss_axi_clk[] = {
Vikram Mulukutlad16a8f12012-07-20 13:33:45 -07002552 F_MM( 19200000, cxo, 1, 0, 0),
Vikram Mulukutla694fafd2012-09-20 19:24:22 -07002553 F_MM( 37500000, gpll0, 16, 0, 0),
2554 F_MM( 50000000, gpll0, 12, 0, 0),
2555 F_MM( 75000000, gpll0, 8, 0, 0),
2556 F_MM(100000000, gpll0, 6, 0, 0),
Vikram Mulukutlad16a8f12012-07-20 13:33:45 -07002557 F_MM(150000000, gpll0, 4, 0, 0),
2558 F_MM(282000000, mmpll1, 3, 0, 0),
Vikram Mulukutlad16a8f12012-07-20 13:33:45 -07002559 F_MM(400000000, mmpll0, 2, 0, 0),
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002560 F_END
2561};
2562
Vikram Mulukutla293c4692013-01-03 15:09:47 -08002563static struct clk_freq_tbl ftbl_mmss_axi_v2_clk[] = {
2564 F_MM( 19200000, cxo, 1, 0, 0),
2565 F_MM( 37500000, gpll0, 16, 0, 0),
2566 F_MM( 50000000, gpll0, 12, 0, 0),
2567 F_MM( 75000000, gpll0, 8, 0, 0),
2568 F_MM(100000000, gpll0, 6, 0, 0),
2569 F_MM(150000000, gpll0, 4, 0, 0),
2570 F_MM(333430000, mmpll1, 3.5, 0, 0),
2571 F_MM(400000000, mmpll0, 2, 0, 0),
2572 F_MM(466800000, mmpll1, 2.5, 0, 0),
2573 F_END
2574};
2575
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002576static struct rcg_clk axi_clk_src = {
2577 .cmd_rcgr_reg = 0x5040,
2578 .set_rate = set_rate_hid,
2579 .freq_tbl = ftbl_mmss_axi_clk,
2580 .current_freq = &rcg_dummy_freq,
2581 .base = &virt_bases[MMSS_BASE],
2582 .c = {
2583 .dbg_name = "axi_clk_src",
2584 .ops = &clk_ops_rcg,
Vikram Mulukutlad16a8f12012-07-20 13:33:45 -07002585 VDD_DIG_FMAX_MAP3(LOW, 150000000, NOMINAL, 282000000,
Vikram Mulukutla9f588e82012-08-31 20:46:30 -07002586 HIGH, 400000000),
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002587 CLK_INIT(axi_clk_src.c),
2588 },
2589};
2590
Vikram Mulukutlad08a1522012-05-24 15:24:01 -07002591static struct clk_freq_tbl ftbl_ocmemnoc_clk[] = {
2592 F_MM( 19200000, cxo, 1, 0, 0),
Vikram Mulukutla694fafd2012-09-20 19:24:22 -07002593 F_MM( 37500000, gpll0, 16, 0, 0),
2594 F_MM( 50000000, gpll0, 12, 0, 0),
2595 F_MM( 75000000, gpll0, 8, 0, 0),
2596 F_MM(100000000, gpll0, 6, 0, 0),
Vikram Mulukutlad08a1522012-05-24 15:24:01 -07002597 F_MM(150000000, gpll0, 4, 0, 0),
Vikram Mulukutlad16a8f12012-07-20 13:33:45 -07002598 F_MM(282000000, mmpll1, 3, 0, 0),
Vikram Mulukutlad08a1522012-05-24 15:24:01 -07002599 F_MM(400000000, mmpll0, 2, 0, 0),
2600 F_END
2601};
2602
Vikram Mulukutla293c4692013-01-03 15:09:47 -08002603static struct clk_freq_tbl ftbl_ocmemnoc_v2_clk[] = {
2604 F_MM( 19200000, cxo, 1, 0, 0),
2605 F_MM( 37500000, gpll0, 16, 0, 0),
2606 F_MM( 50000000, gpll0, 12, 0, 0),
2607 F_MM( 75000000, gpll0, 8, 0, 0),
2608 F_MM(100000000, gpll0, 6, 0, 0),
2609 F_MM(150000000, gpll0, 4, 0, 0),
2610 F_MM(333430000, mmpll1, 3.5, 0, 0),
2611 F_MM(400000000, mmpll0, 2, 0, 0),
2612 F_END
2613};
2614
Vikram Mulukutlad08a1522012-05-24 15:24:01 -07002615struct rcg_clk ocmemnoc_clk_src = {
2616 .cmd_rcgr_reg = OCMEMNOC_CMD_RCGR,
2617 .set_rate = set_rate_hid,
2618 .freq_tbl = ftbl_ocmemnoc_clk,
2619 .current_freq = &rcg_dummy_freq,
2620 .base = &virt_bases[MMSS_BASE],
2621 .c = {
2622 .dbg_name = "ocmemnoc_clk_src",
2623 .ops = &clk_ops_rcg,
Vikram Mulukutlad16a8f12012-07-20 13:33:45 -07002624 VDD_DIG_FMAX_MAP3(LOW, 150000000, NOMINAL, 282000000,
Vikram Mulukutlad08a1522012-05-24 15:24:01 -07002625 HIGH, 400000000),
2626 CLK_INIT(ocmemnoc_clk_src.c),
2627 },
2628};
2629
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002630static struct clk_freq_tbl ftbl_camss_csi0_3_clk[] = {
2631 F_MM(100000000, gpll0, 6, 0, 0),
2632 F_MM(200000000, mmpll0, 4, 0, 0),
2633 F_END
2634};
2635
2636static struct rcg_clk csi0_clk_src = {
2637 .cmd_rcgr_reg = CSI0_CMD_RCGR,
2638 .set_rate = set_rate_hid,
2639 .freq_tbl = ftbl_camss_csi0_3_clk,
2640 .current_freq = &rcg_dummy_freq,
2641 .base = &virt_bases[MMSS_BASE],
2642 .c = {
2643 .dbg_name = "csi0_clk_src",
2644 .ops = &clk_ops_rcg,
2645 VDD_DIG_FMAX_MAP2(LOW, 100000000, NOMINAL, 200000000),
2646 CLK_INIT(csi0_clk_src.c),
2647 },
2648};
2649
2650static struct rcg_clk csi1_clk_src = {
2651 .cmd_rcgr_reg = CSI1_CMD_RCGR,
2652 .set_rate = set_rate_hid,
2653 .freq_tbl = ftbl_camss_csi0_3_clk,
2654 .current_freq = &rcg_dummy_freq,
2655 .base = &virt_bases[MMSS_BASE],
2656 .c = {
2657 .dbg_name = "csi1_clk_src",
2658 .ops = &clk_ops_rcg,
2659 VDD_DIG_FMAX_MAP2(LOW, 100000000, NOMINAL, 200000000),
2660 CLK_INIT(csi1_clk_src.c),
2661 },
2662};
2663
2664static struct rcg_clk csi2_clk_src = {
2665 .cmd_rcgr_reg = CSI2_CMD_RCGR,
2666 .set_rate = set_rate_hid,
2667 .freq_tbl = ftbl_camss_csi0_3_clk,
2668 .current_freq = &rcg_dummy_freq,
2669 .base = &virt_bases[MMSS_BASE],
2670 .c = {
2671 .dbg_name = "csi2_clk_src",
2672 .ops = &clk_ops_rcg,
2673 VDD_DIG_FMAX_MAP2(LOW, 100000000, NOMINAL, 200000000),
2674 CLK_INIT(csi2_clk_src.c),
2675 },
2676};
2677
2678static struct rcg_clk csi3_clk_src = {
2679 .cmd_rcgr_reg = CSI3_CMD_RCGR,
2680 .set_rate = set_rate_hid,
2681 .freq_tbl = ftbl_camss_csi0_3_clk,
2682 .current_freq = &rcg_dummy_freq,
2683 .base = &virt_bases[MMSS_BASE],
2684 .c = {
2685 .dbg_name = "csi3_clk_src",
2686 .ops = &clk_ops_rcg,
2687 VDD_DIG_FMAX_MAP2(LOW, 100000000, NOMINAL, 200000000),
2688 CLK_INIT(csi3_clk_src.c),
2689 },
2690};
2691
2692static struct clk_freq_tbl ftbl_camss_vfe_vfe0_1_clk[] = {
2693 F_MM( 37500000, gpll0, 16, 0, 0),
2694 F_MM( 50000000, gpll0, 12, 0, 0),
2695 F_MM( 60000000, gpll0, 10, 0, 0),
2696 F_MM( 80000000, gpll0, 7.5, 0, 0),
2697 F_MM(100000000, gpll0, 6, 0, 0),
2698 F_MM(109090000, gpll0, 5.5, 0, 0),
2699 F_MM(150000000, gpll0, 4, 0, 0),
2700 F_MM(200000000, gpll0, 3, 0, 0),
2701 F_MM(228570000, mmpll0, 3.5, 0, 0),
2702 F_MM(266670000, mmpll0, 3, 0, 0),
2703 F_MM(320000000, mmpll0, 2.5, 0, 0),
2704 F_END
2705};
2706
2707static struct rcg_clk vfe0_clk_src = {
2708 .cmd_rcgr_reg = VFE0_CMD_RCGR,
2709 .set_rate = set_rate_hid,
2710 .freq_tbl = ftbl_camss_vfe_vfe0_1_clk,
2711 .current_freq = &rcg_dummy_freq,
2712 .base = &virt_bases[MMSS_BASE],
2713 .c = {
2714 .dbg_name = "vfe0_clk_src",
2715 .ops = &clk_ops_rcg,
2716 VDD_DIG_FMAX_MAP3(LOW, 133330000, NOMINAL, 266670000,
2717 HIGH, 320000000),
2718 CLK_INIT(vfe0_clk_src.c),
2719 },
2720};
2721
2722static struct rcg_clk vfe1_clk_src = {
2723 .cmd_rcgr_reg = VFE1_CMD_RCGR,
2724 .set_rate = set_rate_hid,
2725 .freq_tbl = ftbl_camss_vfe_vfe0_1_clk,
2726 .current_freq = &rcg_dummy_freq,
2727 .base = &virt_bases[MMSS_BASE],
2728 .c = {
2729 .dbg_name = "vfe1_clk_src",
2730 .ops = &clk_ops_rcg,
2731 VDD_DIG_FMAX_MAP3(LOW, 133330000, NOMINAL, 266670000,
2732 HIGH, 320000000),
2733 CLK_INIT(vfe1_clk_src.c),
2734 },
2735};
2736
2737static struct clk_freq_tbl ftbl_mdss_mdp_clk[] = {
2738 F_MM( 37500000, gpll0, 16, 0, 0),
2739 F_MM( 60000000, gpll0, 10, 0, 0),
2740 F_MM( 75000000, gpll0, 8, 0, 0),
2741 F_MM( 85710000, gpll0, 7, 0, 0),
2742 F_MM(100000000, gpll0, 6, 0, 0),
2743 F_MM(133330000, mmpll0, 6, 0, 0),
2744 F_MM(160000000, mmpll0, 5, 0, 0),
2745 F_MM(200000000, mmpll0, 4, 0, 0),
Vikram Mulukutla0c6143b2012-12-11 12:16:32 -08002746 F_MM(240000000, gpll0, 2.5, 0, 0),
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002747 F_MM(266670000, mmpll0, 3, 0, 0),
2748 F_MM(320000000, mmpll0, 2.5, 0, 0),
2749 F_END
2750};
2751
2752static struct rcg_clk mdp_clk_src = {
2753 .cmd_rcgr_reg = MDP_CMD_RCGR,
2754 .set_rate = set_rate_hid,
2755 .freq_tbl = ftbl_mdss_mdp_clk,
2756 .current_freq = &rcg_dummy_freq,
2757 .base = &virt_bases[MMSS_BASE],
2758 .c = {
2759 .dbg_name = "mdp_clk_src",
2760 .ops = &clk_ops_rcg,
2761 VDD_DIG_FMAX_MAP3(LOW, 133330000, NOMINAL, 266670000,
2762 HIGH, 320000000),
2763 CLK_INIT(mdp_clk_src.c),
2764 },
2765};
2766
2767static struct clk_freq_tbl ftbl_camss_cci_cci_clk[] = {
2768 F_MM(19200000, cxo, 1, 0, 0),
2769 F_END
2770};
2771
2772static struct rcg_clk cci_clk_src = {
2773 .cmd_rcgr_reg = CCI_CMD_RCGR,
2774 .set_rate = set_rate_hid,
2775 .freq_tbl = ftbl_camss_cci_cci_clk,
2776 .current_freq = &rcg_dummy_freq,
2777 .base = &virt_bases[MMSS_BASE],
2778 .c = {
2779 .dbg_name = "cci_clk_src",
2780 .ops = &clk_ops_rcg,
2781 VDD_DIG_FMAX_MAP2(LOW, 20000000, NOMINAL, 40000000),
2782 CLK_INIT(cci_clk_src.c),
2783 },
2784};
2785
2786static struct clk_freq_tbl ftbl_camss_gp0_1_clk[] = {
2787 F_MM( 10000, cxo, 16, 1, 120),
2788 F_MM( 20000, cxo, 16, 1, 50),
2789 F_MM( 6000000, gpll0, 10, 1, 10),
2790 F_MM(12000000, gpll0, 10, 1, 5),
2791 F_MM(13000000, gpll0, 10, 13, 60),
2792 F_MM(24000000, gpll0, 5, 1, 5),
2793 F_END
2794};
2795
2796static struct rcg_clk mmss_gp0_clk_src = {
2797 .cmd_rcgr_reg = MMSS_GP0_CMD_RCGR,
2798 .set_rate = set_rate_mnd,
2799 .freq_tbl = ftbl_camss_gp0_1_clk,
2800 .current_freq = &rcg_dummy_freq,
2801 .base = &virt_bases[MMSS_BASE],
2802 .c = {
2803 .dbg_name = "mmss_gp0_clk_src",
2804 .ops = &clk_ops_rcg_mnd,
2805 VDD_DIG_FMAX_MAP2(LOW, 100000000, NOMINAL, 200000000),
2806 CLK_INIT(mmss_gp0_clk_src.c),
2807 },
2808};
2809
2810static struct rcg_clk mmss_gp1_clk_src = {
2811 .cmd_rcgr_reg = MMSS_GP1_CMD_RCGR,
2812 .set_rate = set_rate_mnd,
2813 .freq_tbl = ftbl_camss_gp0_1_clk,
2814 .current_freq = &rcg_dummy_freq,
2815 .base = &virt_bases[MMSS_BASE],
2816 .c = {
2817 .dbg_name = "mmss_gp1_clk_src",
2818 .ops = &clk_ops_rcg_mnd,
2819 VDD_DIG_FMAX_MAP2(LOW, 100000000, NOMINAL, 200000000),
2820 CLK_INIT(mmss_gp1_clk_src.c),
2821 },
2822};
2823
2824static struct clk_freq_tbl ftbl_camss_jpeg_jpeg0_2_clk[] = {
2825 F_MM( 75000000, gpll0, 8, 0, 0),
2826 F_MM(150000000, gpll0, 4, 0, 0),
2827 F_MM(200000000, gpll0, 3, 0, 0),
2828 F_MM(228570000, mmpll0, 3.5, 0, 0),
2829 F_MM(266670000, mmpll0, 3, 0, 0),
2830 F_MM(320000000, mmpll0, 2.5, 0, 0),
2831 F_END
2832};
2833
2834static struct rcg_clk jpeg0_clk_src = {
2835 .cmd_rcgr_reg = JPEG0_CMD_RCGR,
2836 .set_rate = set_rate_hid,
2837 .freq_tbl = ftbl_camss_jpeg_jpeg0_2_clk,
2838 .current_freq = &rcg_dummy_freq,
2839 .base = &virt_bases[MMSS_BASE],
2840 .c = {
2841 .dbg_name = "jpeg0_clk_src",
2842 .ops = &clk_ops_rcg,
2843 VDD_DIG_FMAX_MAP3(LOW, 133330000, NOMINAL, 266670000,
2844 HIGH, 320000000),
2845 CLK_INIT(jpeg0_clk_src.c),
2846 },
2847};
2848
2849static struct rcg_clk jpeg1_clk_src = {
2850 .cmd_rcgr_reg = JPEG1_CMD_RCGR,
2851 .set_rate = set_rate_hid,
2852 .freq_tbl = ftbl_camss_jpeg_jpeg0_2_clk,
2853 .current_freq = &rcg_dummy_freq,
2854 .base = &virt_bases[MMSS_BASE],
2855 .c = {
2856 .dbg_name = "jpeg1_clk_src",
2857 .ops = &clk_ops_rcg,
2858 VDD_DIG_FMAX_MAP3(LOW, 133330000, NOMINAL, 266670000,
2859 HIGH, 320000000),
2860 CLK_INIT(jpeg1_clk_src.c),
2861 },
2862};
2863
2864static struct rcg_clk jpeg2_clk_src = {
2865 .cmd_rcgr_reg = JPEG2_CMD_RCGR,
2866 .set_rate = set_rate_hid,
2867 .freq_tbl = ftbl_camss_jpeg_jpeg0_2_clk,
2868 .current_freq = &rcg_dummy_freq,
2869 .base = &virt_bases[MMSS_BASE],
2870 .c = {
2871 .dbg_name = "jpeg2_clk_src",
2872 .ops = &clk_ops_rcg,
2873 VDD_DIG_FMAX_MAP3(LOW, 133330000, NOMINAL, 266670000,
2874 HIGH, 320000000),
2875 CLK_INIT(jpeg2_clk_src.c),
2876 },
2877};
2878
2879static struct clk_freq_tbl ftbl_camss_mclk0_3_clk[] = {
Vikram Mulukutla7dc75022012-08-23 16:50:56 -07002880 F_MM(19200000, cxo, 1, 0, 0),
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07002881 F_MM(66670000, gpll0, 9, 0, 0),
2882 F_END
2883};
2884
2885static struct rcg_clk mclk0_clk_src = {
2886 .cmd_rcgr_reg = MCLK0_CMD_RCGR,
2887 .set_rate = set_rate_hid,
2888 .freq_tbl = ftbl_camss_mclk0_3_clk,
2889 .current_freq = &rcg_dummy_freq,
2890 .base = &virt_bases[MMSS_BASE],
2891 .c = {
2892 .dbg_name = "mclk0_clk_src",
2893 .ops = &clk_ops_rcg,
2894 VDD_DIG_FMAX_MAP1(LOW, 66670000),
2895 CLK_INIT(mclk0_clk_src.c),
2896 },
2897};
2898
2899static struct rcg_clk mclk1_clk_src = {
2900 .cmd_rcgr_reg = MCLK1_CMD_RCGR,
2901 .set_rate = set_rate_hid,
2902 .freq_tbl = ftbl_camss_mclk0_3_clk,
2903 .current_freq = &rcg_dummy_freq,
2904 .base = &virt_bases[MMSS_BASE],
2905 .c = {
2906 .dbg_name = "mclk1_clk_src",
2907 .ops = &clk_ops_rcg,
2908 VDD_DIG_FMAX_MAP1(LOW, 66670000),
2909 CLK_INIT(mclk1_clk_src.c),
2910 },
2911};
2912
2913static struct rcg_clk mclk2_clk_src = {
2914 .cmd_rcgr_reg = MCLK2_CMD_RCGR,
2915 .set_rate = set_rate_hid,
2916 .freq_tbl = ftbl_camss_mclk0_3_clk,
2917 .current_freq = &rcg_dummy_freq,
2918 .base = &virt_bases[MMSS_BASE],
2919 .c = {
2920 .dbg_name = "mclk2_clk_src",
2921 .ops = &clk_ops_rcg,
2922 VDD_DIG_FMAX_MAP1(LOW, 66670000),
2923 CLK_INIT(mclk2_clk_src.c),
2924 },
2925};
2926
2927static struct rcg_clk mclk3_clk_src = {
2928 .cmd_rcgr_reg = MCLK3_CMD_RCGR,
2929 .set_rate = set_rate_hid,
2930 .freq_tbl = ftbl_camss_mclk0_3_clk,
2931 .current_freq = &rcg_dummy_freq,
2932 .base = &virt_bases[MMSS_BASE],
2933 .c = {
2934 .dbg_name = "mclk3_clk_src",
2935 .ops = &clk_ops_rcg,
2936 VDD_DIG_FMAX_MAP1(LOW, 66670000),
2937 CLK_INIT(mclk3_clk_src.c),
2938 },
2939};
2940
2941static struct clk_freq_tbl ftbl_camss_phy0_2_csi0_2phytimer_clk[] = {
2942 F_MM(100000000, gpll0, 6, 0, 0),
2943 F_MM(200000000, mmpll0, 4, 0, 0),
2944 F_END
2945};
2946
2947static struct rcg_clk csi0phytimer_clk_src = {
2948 .cmd_rcgr_reg = CSI0PHYTIMER_CMD_RCGR,
2949 .set_rate = set_rate_hid,
2950 .freq_tbl = ftbl_camss_phy0_2_csi0_2phytimer_clk,
2951 .current_freq = &rcg_dummy_freq,
2952 .base = &virt_bases[MMSS_BASE],
2953 .c = {
2954 .dbg_name = "csi0phytimer_clk_src",
2955 .ops = &clk_ops_rcg,
2956 VDD_DIG_FMAX_MAP2(LOW, 100000000, NOMINAL, 200000000),
2957 CLK_INIT(csi0phytimer_clk_src.c),
2958 },
2959};
2960
2961static struct rcg_clk csi1phytimer_clk_src = {
2962 .cmd_rcgr_reg = CSI1PHYTIMER_CMD_RCGR,
2963 .set_rate = set_rate_hid,
2964 .freq_tbl = ftbl_camss_phy0_2_csi0_2phytimer_clk,
2965 .current_freq = &rcg_dummy_freq,
2966 .base = &virt_bases[MMSS_BASE],
2967 .c = {
2968 .dbg_name = "csi1phytimer_clk_src",
2969 .ops = &clk_ops_rcg,
2970 VDD_DIG_FMAX_MAP2(LOW, 100000000, NOMINAL, 200000000),
2971 CLK_INIT(csi1phytimer_clk_src.c),
2972 },
2973};
2974
2975static struct rcg_clk csi2phytimer_clk_src = {
2976 .cmd_rcgr_reg = CSI2PHYTIMER_CMD_RCGR,
2977 .set_rate = set_rate_hid,
2978 .freq_tbl = ftbl_camss_phy0_2_csi0_2phytimer_clk,
2979 .current_freq = &rcg_dummy_freq,
2980 .base = &virt_bases[MMSS_BASE],
2981 .c = {
2982 .dbg_name = "csi2phytimer_clk_src",
2983 .ops = &clk_ops_rcg,
2984 VDD_DIG_FMAX_MAP2(LOW, 100000000, NOMINAL, 200000000),
2985 CLK_INIT(csi2phytimer_clk_src.c),
2986 },
2987};
2988
2989static struct clk_freq_tbl ftbl_camss_vfe_cpp_clk[] = {
2990 F_MM(150000000, gpll0, 4, 0, 0),
2991 F_MM(266670000, mmpll0, 3, 0, 0),
2992 F_MM(320000000, mmpll0, 2.5, 0, 0),
2993 F_END
2994};
2995
2996static struct rcg_clk cpp_clk_src = {
2997 .cmd_rcgr_reg = CPP_CMD_RCGR,
2998 .set_rate = set_rate_hid,
2999 .freq_tbl = ftbl_camss_vfe_cpp_clk,
3000 .current_freq = &rcg_dummy_freq,
3001 .base = &virt_bases[MMSS_BASE],
3002 .c = {
3003 .dbg_name = "cpp_clk_src",
3004 .ops = &clk_ops_rcg,
3005 VDD_DIG_FMAX_MAP3(LOW, 133330000, NOMINAL, 266670000,
3006 HIGH, 320000000),
3007 CLK_INIT(cpp_clk_src.c),
3008 },
3009};
3010
Vikram Mulukutlafe0f5a52012-08-16 16:51:08 -07003011static struct clk dsipll0_byte_clk_src = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07003012 .parent = &cxo_clk_src.c,
Vikram Mulukutlafe0f5a52012-08-16 16:51:08 -07003013 .dbg_name = "dsipll0_byte_clk_src",
3014 .ops = &clk_ops_dsi_byte_pll,
3015 CLK_INIT(dsipll0_byte_clk_src),
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003016};
3017
Vikram Mulukutlafe0f5a52012-08-16 16:51:08 -07003018static struct clk dsipll0_pixel_clk_src = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07003019 .parent = &cxo_clk_src.c,
Vikram Mulukutlafe0f5a52012-08-16 16:51:08 -07003020 .dbg_name = "dsipll0_pixel_clk_src",
3021 .ops = &clk_ops_dsi_pixel_pll,
3022 CLK_INIT(dsipll0_pixel_clk_src),
3023};
3024
3025static struct clk_freq_tbl byte_freq = {
3026 .src_clk = &dsipll0_byte_clk_src,
3027 .div_src_val = BVAL(10, 8, dsipll0_byte_mm_source_val),
3028};
3029static struct clk_freq_tbl pixel_freq = {
Vikram Mulukutla95714a52012-10-30 20:47:56 -07003030 .src_clk = &dsipll0_pixel_clk_src,
3031 .div_src_val = BVAL(10, 8, dsipll0_pixel_mm_source_val),
Vikram Mulukutlafe0f5a52012-08-16 16:51:08 -07003032};
3033static struct clk_ops clk_ops_byte;
3034static struct clk_ops clk_ops_pixel;
3035
3036#define CFG_RCGR_DIV_MASK BM(4, 0)
3037
3038static int set_rate_byte(struct clk *clk, unsigned long rate)
3039{
3040 struct rcg_clk *rcg = to_rcg_clk(clk);
3041 struct clk *pll = &dsipll0_byte_clk_src;
3042 unsigned long source_rate, div;
3043 int rc;
3044
3045 if (rate == 0)
3046 return -EINVAL;
3047
3048 rc = clk_set_rate(pll, rate);
3049 if (rc)
3050 return rc;
3051
3052 source_rate = clk_round_rate(pll, rate);
3053 if ((2 * source_rate) % rate)
3054 return -EINVAL;
3055
3056 div = ((2 * source_rate)/rate) - 1;
3057 if (div > CFG_RCGR_DIV_MASK)
3058 return -EINVAL;
3059
3060 byte_freq.div_src_val &= ~CFG_RCGR_DIV_MASK;
3061 byte_freq.div_src_val |= BVAL(4, 0, div);
Vikram Mulukutlaa42d7c22013-02-22 18:38:04 -08003062 set_rate_hid(rcg, &byte_freq);
Vikram Mulukutlafe0f5a52012-08-16 16:51:08 -07003063
3064 return 0;
3065}
3066
3067static int set_rate_pixel(struct clk *clk, unsigned long rate)
3068{
3069 struct rcg_clk *rcg = to_rcg_clk(clk);
3070 struct clk *pll = &dsipll0_pixel_clk_src;
3071 unsigned long source_rate, div;
3072 int rc;
3073
3074 if (rate == 0)
3075 return -EINVAL;
3076
3077 rc = clk_set_rate(pll, rate);
3078 if (rc)
3079 return rc;
3080
3081 source_rate = clk_round_rate(pll, rate);
3082 if ((2 * source_rate) % rate)
3083 return -EINVAL;
3084
3085 div = ((2 * source_rate)/rate) - 1;
3086 if (div > CFG_RCGR_DIV_MASK)
3087 return -EINVAL;
3088
3089 pixel_freq.div_src_val &= ~CFG_RCGR_DIV_MASK;
3090 pixel_freq.div_src_val |= BVAL(4, 0, div);
Vikram Mulukutlaa42d7c22013-02-22 18:38:04 -08003091 set_rate_mnd(rcg, &pixel_freq);
Vikram Mulukutlafe0f5a52012-08-16 16:51:08 -07003092
3093 return 0;
3094}
3095
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003096static struct rcg_clk byte0_clk_src = {
3097 .cmd_rcgr_reg = BYTE0_CMD_RCGR,
Vikram Mulukutlafe0f5a52012-08-16 16:51:08 -07003098 .current_freq = &byte_freq,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003099 .base = &virt_bases[MMSS_BASE],
3100 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07003101 .parent = &dsipll0_byte_clk_src,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003102 .dbg_name = "byte0_clk_src",
Vikram Mulukutlafe0f5a52012-08-16 16:51:08 -07003103 .ops = &clk_ops_byte,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003104 VDD_DIG_FMAX_MAP3(LOW, 93800000, NOMINAL, 187500000,
3105 HIGH, 188000000),
3106 CLK_INIT(byte0_clk_src.c),
3107 },
3108};
3109
3110static struct rcg_clk byte1_clk_src = {
3111 .cmd_rcgr_reg = BYTE1_CMD_RCGR,
Vikram Mulukutlafe0f5a52012-08-16 16:51:08 -07003112 .current_freq = &byte_freq,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003113 .base = &virt_bases[MMSS_BASE],
3114 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07003115 .parent = &dsipll0_byte_clk_src,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003116 .dbg_name = "byte1_clk_src",
Vikram Mulukutlafe0f5a52012-08-16 16:51:08 -07003117 .ops = &clk_ops_byte,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003118 VDD_DIG_FMAX_MAP3(LOW, 93800000, NOMINAL, 187500000,
3119 HIGH, 188000000),
3120 CLK_INIT(byte1_clk_src.c),
3121 },
3122};
3123
3124static struct clk_freq_tbl ftbl_mdss_edpaux_clk[] = {
3125 F_MM(19200000, cxo, 1, 0, 0),
3126 F_END
3127};
3128
3129static struct rcg_clk edpaux_clk_src = {
3130 .cmd_rcgr_reg = EDPAUX_CMD_RCGR,
3131 .set_rate = set_rate_hid,
3132 .freq_tbl = ftbl_mdss_edpaux_clk,
3133 .current_freq = &rcg_dummy_freq,
3134 .base = &virt_bases[MMSS_BASE],
3135 .c = {
3136 .dbg_name = "edpaux_clk_src",
3137 .ops = &clk_ops_rcg,
3138 VDD_DIG_FMAX_MAP2(LOW, 20000000, NOMINAL, 40000000),
3139 CLK_INIT(edpaux_clk_src.c),
3140 },
3141};
3142
3143static struct clk_freq_tbl ftbl_mdss_edplink_clk[] = {
Asaf Penso6b5251b2012-10-11 12:27:03 -07003144 F_MDSS(162000000, edppll_270, 2, 0, 0),
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003145 F_MDSS(270000000, edppll_270, 11, 0, 0),
3146 F_END
3147};
3148
3149static struct rcg_clk edplink_clk_src = {
3150 .cmd_rcgr_reg = EDPLINK_CMD_RCGR,
3151 .set_rate = set_rate_hid,
3152 .freq_tbl = ftbl_mdss_edplink_clk,
3153 .current_freq = &rcg_dummy_freq,
3154 .base = &virt_bases[MMSS_BASE],
3155 .c = {
3156 .dbg_name = "edplink_clk_src",
3157 .ops = &clk_ops_rcg,
3158 VDD_DIG_FMAX_MAP2(LOW, 135000000, NOMINAL, 270000000),
3159 CLK_INIT(edplink_clk_src.c),
3160 },
3161};
3162
3163static struct clk_freq_tbl ftbl_mdss_edppixel_clk[] = {
Asaf Penso56084db2012-11-15 20:14:54 +02003164 F_MDSS(138500000, edppll_350, 2, 0, 0),
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003165 F_MDSS(350000000, edppll_350, 11, 0, 0),
3166 F_END
3167};
3168
3169static struct rcg_clk edppixel_clk_src = {
3170 .cmd_rcgr_reg = EDPPIXEL_CMD_RCGR,
3171 .set_rate = set_rate_mnd,
3172 .freq_tbl = ftbl_mdss_edppixel_clk,
3173 .current_freq = &rcg_dummy_freq,
3174 .base = &virt_bases[MMSS_BASE],
3175 .c = {
3176 .dbg_name = "edppixel_clk_src",
3177 .ops = &clk_ops_rcg_mnd,
3178 VDD_DIG_FMAX_MAP2(LOW, 175000000, NOMINAL, 350000000),
3179 CLK_INIT(edppixel_clk_src.c),
3180 },
3181};
3182
3183static struct clk_freq_tbl ftbl_mdss_esc0_1_clk[] = {
3184 F_MM(19200000, cxo, 1, 0, 0),
3185 F_END
3186};
3187
3188static struct rcg_clk esc0_clk_src = {
3189 .cmd_rcgr_reg = ESC0_CMD_RCGR,
3190 .set_rate = set_rate_hid,
3191 .freq_tbl = ftbl_mdss_esc0_1_clk,
3192 .current_freq = &rcg_dummy_freq,
3193 .base = &virt_bases[MMSS_BASE],
3194 .c = {
3195 .dbg_name = "esc0_clk_src",
3196 .ops = &clk_ops_rcg,
3197 VDD_DIG_FMAX_MAP2(LOW, 20000000, NOMINAL, 40000000),
3198 CLK_INIT(esc0_clk_src.c),
3199 },
3200};
3201
3202static struct rcg_clk esc1_clk_src = {
3203 .cmd_rcgr_reg = ESC1_CMD_RCGR,
3204 .set_rate = set_rate_hid,
3205 .freq_tbl = ftbl_mdss_esc0_1_clk,
3206 .current_freq = &rcg_dummy_freq,
3207 .base = &virt_bases[MMSS_BASE],
3208 .c = {
3209 .dbg_name = "esc1_clk_src",
3210 .ops = &clk_ops_rcg,
3211 VDD_DIG_FMAX_MAP2(LOW, 20000000, NOMINAL, 40000000),
3212 CLK_INIT(esc1_clk_src.c),
3213 },
3214};
3215
Vikram Mulukutla86b76342012-08-15 16:22:09 -07003216static int hdmi_pll_clk_enable(struct clk *c)
3217{
Vikram Mulukutla5acd7932012-11-29 14:20:34 -08003218 return hdmi_pll_enable();
Vikram Mulukutla86b76342012-08-15 16:22:09 -07003219}
3220
3221static void hdmi_pll_clk_disable(struct clk *c)
3222{
Vikram Mulukutla86b76342012-08-15 16:22:09 -07003223 hdmi_pll_disable();
Vikram Mulukutla86b76342012-08-15 16:22:09 -07003224}
3225
3226static int hdmi_pll_clk_set_rate(struct clk *c, unsigned long rate)
3227{
Vikram Mulukutla5acd7932012-11-29 14:20:34 -08003228 return hdmi_pll_set_rate(rate);
Vikram Mulukutla86b76342012-08-15 16:22:09 -07003229}
3230
Vikram Mulukutla86b76342012-08-15 16:22:09 -07003231static struct clk_ops clk_ops_hdmi_pll = {
3232 .enable = hdmi_pll_clk_enable,
3233 .disable = hdmi_pll_clk_disable,
3234 .set_rate = hdmi_pll_clk_set_rate,
Vikram Mulukutla86b76342012-08-15 16:22:09 -07003235};
3236
3237static struct clk hdmipll_clk_src = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07003238 .parent = &cxo_clk_src.c,
Vikram Mulukutla86b76342012-08-15 16:22:09 -07003239 .dbg_name = "hdmipll_clk_src",
3240 .ops = &clk_ops_hdmi_pll,
3241 CLK_INIT(hdmipll_clk_src),
Vikram Mulukutla86b76342012-08-15 16:22:09 -07003242};
3243
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003244static struct clk_freq_tbl ftbl_mdss_extpclk_clk[] = {
Vikram Mulukutla86b76342012-08-15 16:22:09 -07003245 /*
3246 * The zero rate is required since suspend/resume wipes out the HDMI PHY
3247 * registers. This entry allows the HDMI driver to switch the cached
3248 * rate to zero before suspend and back to the real rate after resume.
3249 */
3250 F_HDMI( 0, hdmipll, 1, 0, 0),
3251 F_HDMI( 25200000, hdmipll, 1, 0, 0),
Ujwal Patele698fae2012-11-29 14:04:33 -08003252 F_HDMI( 27000000, hdmipll, 1, 0, 0),
Vikram Mulukutla86b76342012-08-15 16:22:09 -07003253 F_HDMI( 27030000, hdmipll, 1, 0, 0),
3254 F_HDMI( 74250000, hdmipll, 1, 0, 0),
3255 F_HDMI(148500000, hdmipll, 1, 0, 0),
Ujwal Patele698fae2012-11-29 14:04:33 -08003256 F_HDMI(268500000, hdmipll, 1, 0, 0),
Vikram Mulukutla86b76342012-08-15 16:22:09 -07003257 F_HDMI(297000000, hdmipll, 1, 0, 0),
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003258 F_END
3259};
3260
Vikram Mulukutla86b76342012-08-15 16:22:09 -07003261/*
3262 * Unlike other clocks, the HDMI rate is adjusted through PLL
3263 * re-programming. It is also routed through an HID divider.
3264 */
Vikram Mulukutla5acd7932012-11-29 14:20:34 -08003265static int rcg_clk_set_rate_hdmi(struct clk *c, unsigned long rate)
Vikram Mulukutla86b76342012-08-15 16:22:09 -07003266{
Vikram Mulukutla5acd7932012-11-29 14:20:34 -08003267 struct clk_freq_tbl *nf;
3268 struct rcg_clk *rcg = to_rcg_clk(c);
3269 int rc;
3270
3271 for (nf = rcg->freq_tbl; nf->freq_hz != rate; nf++)
3272 if (nf->freq_hz == FREQ_END) {
3273 rc = -EINVAL;
3274 goto out;
3275 }
3276
3277 rc = clk_set_rate(nf->src_clk, rate);
3278 if (rc < 0)
3279 goto out;
Vikram Mulukutla86b76342012-08-15 16:22:09 -07003280 set_rate_hid(rcg, nf);
Vikram Mulukutla5acd7932012-11-29 14:20:34 -08003281
3282 rcg->current_freq = nf;
3283 c->parent = nf->src_clk;
3284out:
3285 return rc;
Vikram Mulukutla86b76342012-08-15 16:22:09 -07003286}
3287
Vikram Mulukutla5acd7932012-11-29 14:20:34 -08003288static struct clk_ops clk_ops_rcg_hdmi;
3289
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003290static struct rcg_clk extpclk_clk_src = {
3291 .cmd_rcgr_reg = EXTPCLK_CMD_RCGR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003292 .freq_tbl = ftbl_mdss_extpclk_clk,
3293 .current_freq = &rcg_dummy_freq,
3294 .base = &virt_bases[MMSS_BASE],
3295 .c = {
3296 .dbg_name = "extpclk_clk_src",
Vikram Mulukutla5acd7932012-11-29 14:20:34 -08003297 .ops = &clk_ops_rcg_hdmi,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003298 VDD_DIG_FMAX_MAP2(LOW, 148500000, NOMINAL, 297000000),
3299 CLK_INIT(extpclk_clk_src.c),
3300 },
3301};
3302
3303static struct clk_freq_tbl ftbl_mdss_hdmi_clk[] = {
3304 F_MDSS(19200000, cxo, 1, 0, 0),
3305 F_END
3306};
3307
3308static struct rcg_clk hdmi_clk_src = {
3309 .cmd_rcgr_reg = HDMI_CMD_RCGR,
3310 .set_rate = set_rate_hid,
3311 .freq_tbl = ftbl_mdss_hdmi_clk,
3312 .current_freq = &rcg_dummy_freq,
3313 .base = &virt_bases[MMSS_BASE],
3314 .c = {
3315 .dbg_name = "hdmi_clk_src",
3316 .ops = &clk_ops_rcg,
3317 VDD_DIG_FMAX_MAP2(LOW, 20000000, NOMINAL, 40000000),
3318 CLK_INIT(hdmi_clk_src.c),
3319 },
3320};
3321
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003322
3323static struct rcg_clk pclk0_clk_src = {
3324 .cmd_rcgr_reg = PCLK0_CMD_RCGR,
Vikram Mulukutlafe0f5a52012-08-16 16:51:08 -07003325 .current_freq = &pixel_freq,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003326 .base = &virt_bases[MMSS_BASE],
3327 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07003328 .parent = &dsipll0_pixel_clk_src,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003329 .dbg_name = "pclk0_clk_src",
Vikram Mulukutlafe0f5a52012-08-16 16:51:08 -07003330 .ops = &clk_ops_pixel,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003331 VDD_DIG_FMAX_MAP2(LOW, 125000000, NOMINAL, 250000000),
3332 CLK_INIT(pclk0_clk_src.c),
3333 },
3334};
3335
3336static struct rcg_clk pclk1_clk_src = {
3337 .cmd_rcgr_reg = PCLK1_CMD_RCGR,
Vikram Mulukutlafe0f5a52012-08-16 16:51:08 -07003338 .current_freq = &pixel_freq,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003339 .base = &virt_bases[MMSS_BASE],
3340 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07003341 .parent = &dsipll0_pixel_clk_src,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003342 .dbg_name = "pclk1_clk_src",
Vikram Mulukutlafe0f5a52012-08-16 16:51:08 -07003343 .ops = &clk_ops_pixel,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003344 VDD_DIG_FMAX_MAP2(LOW, 125000000, NOMINAL, 250000000),
3345 CLK_INIT(pclk1_clk_src.c),
3346 },
3347};
3348
3349static struct clk_freq_tbl ftbl_mdss_vsync_clk[] = {
3350 F_MDSS(19200000, cxo, 1, 0, 0),
3351 F_END
3352};
3353
3354static struct rcg_clk vsync_clk_src = {
3355 .cmd_rcgr_reg = VSYNC_CMD_RCGR,
3356 .set_rate = set_rate_hid,
3357 .freq_tbl = ftbl_mdss_vsync_clk,
3358 .current_freq = &rcg_dummy_freq,
3359 .base = &virt_bases[MMSS_BASE],
3360 .c = {
3361 .dbg_name = "vsync_clk_src",
3362 .ops = &clk_ops_rcg,
3363 VDD_DIG_FMAX_MAP2(LOW, 20000000, NOMINAL, 40000000),
3364 CLK_INIT(vsync_clk_src.c),
3365 },
3366};
3367
3368static struct clk_freq_tbl ftbl_venus0_vcodec0_clk[] = {
3369 F_MM( 50000000, gpll0, 12, 0, 0),
3370 F_MM(100000000, gpll0, 6, 0, 0),
3371 F_MM(133330000, mmpll0, 6, 0, 0),
3372 F_MM(200000000, mmpll0, 4, 0, 0),
3373 F_MM(266670000, mmpll0, 3, 0, 0),
3374 F_MM(410000000, mmpll3, 2, 0, 0),
3375 F_END
3376};
3377
Vikram Mulukutla293c4692013-01-03 15:09:47 -08003378static struct clk_freq_tbl ftbl_venus0_vcodec0_v2_clk[] = {
3379 F_MM( 50000000, gpll0, 12, 0, 0),
3380 F_MM(100000000, gpll0, 6, 0, 0),
3381 F_MM(133330000, mmpll0, 6, 0, 0),
3382 F_MM(200000000, mmpll0, 4, 0, 0),
3383 F_MM(266670000, mmpll0, 3, 0, 0),
3384 F_MM(465000000, mmpll3, 2, 0, 0),
3385 F_END
3386};
3387
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003388static struct rcg_clk vcodec0_clk_src = {
3389 .cmd_rcgr_reg = VCODEC0_CMD_RCGR,
3390 .set_rate = set_rate_mnd,
3391 .freq_tbl = ftbl_venus0_vcodec0_clk,
3392 .current_freq = &rcg_dummy_freq,
3393 .base = &virt_bases[MMSS_BASE],
3394 .c = {
3395 .dbg_name = "vcodec0_clk_src",
3396 .ops = &clk_ops_rcg_mnd,
3397 VDD_DIG_FMAX_MAP3(LOW, 133330000, NOMINAL, 266670000,
3398 HIGH, 410000000),
3399 CLK_INIT(vcodec0_clk_src.c),
3400 },
3401};
3402
3403static struct branch_clk camss_cci_cci_ahb_clk = {
3404 .cbcr_reg = CAMSS_CCI_CCI_AHB_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003405 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003406 .base = &virt_bases[MMSS_BASE],
3407 .c = {
3408 .dbg_name = "camss_cci_cci_ahb_clk",
3409 .ops = &clk_ops_branch,
3410 CLK_INIT(camss_cci_cci_ahb_clk.c),
3411 },
3412};
3413
3414static struct branch_clk camss_cci_cci_clk = {
3415 .cbcr_reg = CAMSS_CCI_CCI_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003416 .has_sibling = 0,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003417 .base = &virt_bases[MMSS_BASE],
3418 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07003419 .parent = &cci_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003420 .dbg_name = "camss_cci_cci_clk",
3421 .ops = &clk_ops_branch,
3422 CLK_INIT(camss_cci_cci_clk.c),
3423 },
3424};
3425
3426static struct branch_clk camss_csi0_ahb_clk = {
3427 .cbcr_reg = CAMSS_CSI0_AHB_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003428 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003429 .base = &virt_bases[MMSS_BASE],
3430 .c = {
3431 .dbg_name = "camss_csi0_ahb_clk",
3432 .ops = &clk_ops_branch,
3433 CLK_INIT(camss_csi0_ahb_clk.c),
3434 },
3435};
3436
3437static struct branch_clk camss_csi0_clk = {
3438 .cbcr_reg = CAMSS_CSI0_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003439 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003440 .base = &virt_bases[MMSS_BASE],
3441 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07003442 .parent = &csi0_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003443 .dbg_name = "camss_csi0_clk",
3444 .ops = &clk_ops_branch,
3445 CLK_INIT(camss_csi0_clk.c),
3446 },
3447};
3448
3449static struct branch_clk camss_csi0phy_clk = {
3450 .cbcr_reg = CAMSS_CSI0PHY_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003451 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003452 .base = &virt_bases[MMSS_BASE],
3453 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07003454 .parent = &csi0_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003455 .dbg_name = "camss_csi0phy_clk",
3456 .ops = &clk_ops_branch,
3457 CLK_INIT(camss_csi0phy_clk.c),
3458 },
3459};
3460
3461static struct branch_clk camss_csi0pix_clk = {
3462 .cbcr_reg = CAMSS_CSI0PIX_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003463 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003464 .base = &virt_bases[MMSS_BASE],
3465 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07003466 .parent = &csi0_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003467 .dbg_name = "camss_csi0pix_clk",
3468 .ops = &clk_ops_branch,
3469 CLK_INIT(camss_csi0pix_clk.c),
3470 },
3471};
3472
3473static struct branch_clk camss_csi0rdi_clk = {
3474 .cbcr_reg = CAMSS_CSI0RDI_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003475 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003476 .base = &virt_bases[MMSS_BASE],
3477 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07003478 .parent = &csi0_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003479 .dbg_name = "camss_csi0rdi_clk",
3480 .ops = &clk_ops_branch,
3481 CLK_INIT(camss_csi0rdi_clk.c),
3482 },
3483};
3484
3485static struct branch_clk camss_csi1_ahb_clk = {
3486 .cbcr_reg = CAMSS_CSI1_AHB_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003487 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003488 .base = &virt_bases[MMSS_BASE],
3489 .c = {
3490 .dbg_name = "camss_csi1_ahb_clk",
3491 .ops = &clk_ops_branch,
3492 CLK_INIT(camss_csi1_ahb_clk.c),
3493 },
3494};
3495
3496static struct branch_clk camss_csi1_clk = {
3497 .cbcr_reg = CAMSS_CSI1_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003498 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003499 .base = &virt_bases[MMSS_BASE],
3500 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07003501 .parent = &csi1_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003502 .dbg_name = "camss_csi1_clk",
3503 .ops = &clk_ops_branch,
3504 CLK_INIT(camss_csi1_clk.c),
3505 },
3506};
3507
3508static struct branch_clk camss_csi1phy_clk = {
3509 .cbcr_reg = CAMSS_CSI1PHY_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003510 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003511 .base = &virt_bases[MMSS_BASE],
3512 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07003513 .parent = &csi1_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003514 .dbg_name = "camss_csi1phy_clk",
3515 .ops = &clk_ops_branch,
3516 CLK_INIT(camss_csi1phy_clk.c),
3517 },
3518};
3519
3520static struct branch_clk camss_csi1pix_clk = {
3521 .cbcr_reg = CAMSS_CSI1PIX_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003522 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003523 .base = &virt_bases[MMSS_BASE],
3524 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07003525 .parent = &csi1_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003526 .dbg_name = "camss_csi1pix_clk",
3527 .ops = &clk_ops_branch,
3528 CLK_INIT(camss_csi1pix_clk.c),
3529 },
3530};
3531
3532static struct branch_clk camss_csi1rdi_clk = {
3533 .cbcr_reg = CAMSS_CSI1RDI_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003534 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003535 .base = &virt_bases[MMSS_BASE],
3536 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07003537 .parent = &csi1_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003538 .dbg_name = "camss_csi1rdi_clk",
3539 .ops = &clk_ops_branch,
3540 CLK_INIT(camss_csi1rdi_clk.c),
3541 },
3542};
3543
3544static struct branch_clk camss_csi2_ahb_clk = {
3545 .cbcr_reg = CAMSS_CSI2_AHB_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003546 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003547 .base = &virt_bases[MMSS_BASE],
3548 .c = {
3549 .dbg_name = "camss_csi2_ahb_clk",
3550 .ops = &clk_ops_branch,
3551 CLK_INIT(camss_csi2_ahb_clk.c),
3552 },
3553};
3554
3555static struct branch_clk camss_csi2_clk = {
3556 .cbcr_reg = CAMSS_CSI2_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003557 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003558 .base = &virt_bases[MMSS_BASE],
3559 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07003560 .parent = &csi2_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003561 .dbg_name = "camss_csi2_clk",
3562 .ops = &clk_ops_branch,
3563 CLK_INIT(camss_csi2_clk.c),
3564 },
3565};
3566
3567static struct branch_clk camss_csi2phy_clk = {
3568 .cbcr_reg = CAMSS_CSI2PHY_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003569 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003570 .base = &virt_bases[MMSS_BASE],
3571 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07003572 .parent = &csi2_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003573 .dbg_name = "camss_csi2phy_clk",
3574 .ops = &clk_ops_branch,
3575 CLK_INIT(camss_csi2phy_clk.c),
3576 },
3577};
3578
3579static struct branch_clk camss_csi2pix_clk = {
3580 .cbcr_reg = CAMSS_CSI2PIX_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003581 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003582 .base = &virt_bases[MMSS_BASE],
3583 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07003584 .parent = &csi2_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003585 .dbg_name = "camss_csi2pix_clk",
3586 .ops = &clk_ops_branch,
3587 CLK_INIT(camss_csi2pix_clk.c),
3588 },
3589};
3590
3591static struct branch_clk camss_csi2rdi_clk = {
3592 .cbcr_reg = CAMSS_CSI2RDI_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003593 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003594 .base = &virt_bases[MMSS_BASE],
3595 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07003596 .parent = &csi2_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003597 .dbg_name = "camss_csi2rdi_clk",
3598 .ops = &clk_ops_branch,
3599 CLK_INIT(camss_csi2rdi_clk.c),
3600 },
3601};
3602
3603static struct branch_clk camss_csi3_ahb_clk = {
3604 .cbcr_reg = CAMSS_CSI3_AHB_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003605 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003606 .base = &virt_bases[MMSS_BASE],
3607 .c = {
3608 .dbg_name = "camss_csi3_ahb_clk",
3609 .ops = &clk_ops_branch,
3610 CLK_INIT(camss_csi3_ahb_clk.c),
3611 },
3612};
3613
3614static struct branch_clk camss_csi3_clk = {
3615 .cbcr_reg = CAMSS_CSI3_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003616 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003617 .base = &virt_bases[MMSS_BASE],
3618 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07003619 .parent = &csi3_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003620 .dbg_name = "camss_csi3_clk",
3621 .ops = &clk_ops_branch,
3622 CLK_INIT(camss_csi3_clk.c),
3623 },
3624};
3625
3626static struct branch_clk camss_csi3phy_clk = {
3627 .cbcr_reg = CAMSS_CSI3PHY_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003628 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003629 .base = &virt_bases[MMSS_BASE],
3630 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07003631 .parent = &csi3_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003632 .dbg_name = "camss_csi3phy_clk",
3633 .ops = &clk_ops_branch,
3634 CLK_INIT(camss_csi3phy_clk.c),
3635 },
3636};
3637
3638static struct branch_clk camss_csi3pix_clk = {
3639 .cbcr_reg = CAMSS_CSI3PIX_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003640 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003641 .base = &virt_bases[MMSS_BASE],
3642 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07003643 .parent = &csi3_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003644 .dbg_name = "camss_csi3pix_clk",
3645 .ops = &clk_ops_branch,
3646 CLK_INIT(camss_csi3pix_clk.c),
3647 },
3648};
3649
3650static struct branch_clk camss_csi3rdi_clk = {
3651 .cbcr_reg = CAMSS_CSI3RDI_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003652 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003653 .base = &virt_bases[MMSS_BASE],
3654 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07003655 .parent = &csi3_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003656 .dbg_name = "camss_csi3rdi_clk",
3657 .ops = &clk_ops_branch,
3658 CLK_INIT(camss_csi3rdi_clk.c),
3659 },
3660};
3661
3662static struct branch_clk camss_csi_vfe0_clk = {
3663 .cbcr_reg = CAMSS_CSI_VFE0_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003664 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003665 .base = &virt_bases[MMSS_BASE],
3666 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07003667 .parent = &vfe0_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003668 .dbg_name = "camss_csi_vfe0_clk",
3669 .ops = &clk_ops_branch,
3670 CLK_INIT(camss_csi_vfe0_clk.c),
3671 },
3672};
3673
3674static struct branch_clk camss_csi_vfe1_clk = {
3675 .cbcr_reg = CAMSS_CSI_VFE1_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003676 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003677 .base = &virt_bases[MMSS_BASE],
3678 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07003679 .parent = &vfe1_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003680 .dbg_name = "camss_csi_vfe1_clk",
3681 .ops = &clk_ops_branch,
3682 CLK_INIT(camss_csi_vfe1_clk.c),
3683 },
3684};
3685
3686static struct branch_clk camss_gp0_clk = {
3687 .cbcr_reg = CAMSS_GP0_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003688 .has_sibling = 0,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003689 .base = &virt_bases[MMSS_BASE],
3690 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07003691 .parent = &mmss_gp0_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003692 .dbg_name = "camss_gp0_clk",
3693 .ops = &clk_ops_branch,
3694 CLK_INIT(camss_gp0_clk.c),
3695 },
3696};
3697
3698static struct branch_clk camss_gp1_clk = {
3699 .cbcr_reg = CAMSS_GP1_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003700 .has_sibling = 0,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003701 .base = &virt_bases[MMSS_BASE],
3702 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07003703 .parent = &mmss_gp1_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003704 .dbg_name = "camss_gp1_clk",
3705 .ops = &clk_ops_branch,
3706 CLK_INIT(camss_gp1_clk.c),
3707 },
3708};
3709
3710static struct branch_clk camss_ispif_ahb_clk = {
3711 .cbcr_reg = CAMSS_ISPIF_AHB_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003712 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003713 .base = &virt_bases[MMSS_BASE],
3714 .c = {
3715 .dbg_name = "camss_ispif_ahb_clk",
3716 .ops = &clk_ops_branch,
3717 CLK_INIT(camss_ispif_ahb_clk.c),
3718 },
3719};
3720
3721static struct branch_clk camss_jpeg_jpeg0_clk = {
3722 .cbcr_reg = CAMSS_JPEG_JPEG0_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003723 .has_sibling = 0,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003724 .base = &virt_bases[MMSS_BASE],
3725 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07003726 .parent = &jpeg0_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003727 .dbg_name = "camss_jpeg_jpeg0_clk",
3728 .ops = &clk_ops_branch,
3729 CLK_INIT(camss_jpeg_jpeg0_clk.c),
3730 },
3731};
3732
3733static struct branch_clk camss_jpeg_jpeg1_clk = {
3734 .cbcr_reg = CAMSS_JPEG_JPEG1_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003735 .has_sibling = 0,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003736 .base = &virt_bases[MMSS_BASE],
3737 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07003738 .parent = &jpeg1_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003739 .dbg_name = "camss_jpeg_jpeg1_clk",
3740 .ops = &clk_ops_branch,
3741 CLK_INIT(camss_jpeg_jpeg1_clk.c),
3742 },
3743};
3744
3745static struct branch_clk camss_jpeg_jpeg2_clk = {
3746 .cbcr_reg = CAMSS_JPEG_JPEG2_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003747 .has_sibling = 0,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003748 .base = &virt_bases[MMSS_BASE],
3749 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07003750 .parent = &jpeg2_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003751 .dbg_name = "camss_jpeg_jpeg2_clk",
3752 .ops = &clk_ops_branch,
3753 CLK_INIT(camss_jpeg_jpeg2_clk.c),
3754 },
3755};
3756
3757static struct branch_clk camss_jpeg_jpeg_ahb_clk = {
3758 .cbcr_reg = CAMSS_JPEG_JPEG_AHB_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003759 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003760 .base = &virt_bases[MMSS_BASE],
3761 .c = {
3762 .dbg_name = "camss_jpeg_jpeg_ahb_clk",
3763 .ops = &clk_ops_branch,
3764 CLK_INIT(camss_jpeg_jpeg_ahb_clk.c),
3765 },
3766};
3767
3768static struct branch_clk camss_jpeg_jpeg_axi_clk = {
3769 .cbcr_reg = CAMSS_JPEG_JPEG_AXI_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003770 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003771 .base = &virt_bases[MMSS_BASE],
3772 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07003773 .parent = &axi_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003774 .dbg_name = "camss_jpeg_jpeg_axi_clk",
3775 .ops = &clk_ops_branch,
3776 CLK_INIT(camss_jpeg_jpeg_axi_clk.c),
3777 },
3778};
3779
3780static struct branch_clk camss_jpeg_jpeg_ocmemnoc_clk = {
3781 .cbcr_reg = CAMSS_JPEG_JPEG_OCMEMNOC_CBCR,
3782 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003783 .base = &virt_bases[MMSS_BASE],
3784 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07003785 .parent = &ocmemnoc_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003786 .dbg_name = "camss_jpeg_jpeg_ocmemnoc_clk",
3787 .ops = &clk_ops_branch,
3788 CLK_INIT(camss_jpeg_jpeg_ocmemnoc_clk.c),
3789 },
3790};
3791
3792static struct branch_clk camss_mclk0_clk = {
3793 .cbcr_reg = CAMSS_MCLK0_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003794 .has_sibling = 0,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003795 .base = &virt_bases[MMSS_BASE],
3796 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07003797 .parent = &mclk0_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003798 .dbg_name = "camss_mclk0_clk",
3799 .ops = &clk_ops_branch,
3800 CLK_INIT(camss_mclk0_clk.c),
3801 },
3802};
3803
3804static struct branch_clk camss_mclk1_clk = {
3805 .cbcr_reg = CAMSS_MCLK1_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003806 .has_sibling = 0,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003807 .base = &virt_bases[MMSS_BASE],
3808 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07003809 .parent = &mclk1_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003810 .dbg_name = "camss_mclk1_clk",
3811 .ops = &clk_ops_branch,
3812 CLK_INIT(camss_mclk1_clk.c),
3813 },
3814};
3815
3816static struct branch_clk camss_mclk2_clk = {
3817 .cbcr_reg = CAMSS_MCLK2_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003818 .has_sibling = 0,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003819 .base = &virt_bases[MMSS_BASE],
3820 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07003821 .parent = &mclk2_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003822 .dbg_name = "camss_mclk2_clk",
3823 .ops = &clk_ops_branch,
3824 CLK_INIT(camss_mclk2_clk.c),
3825 },
3826};
3827
3828static struct branch_clk camss_mclk3_clk = {
3829 .cbcr_reg = CAMSS_MCLK3_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003830 .has_sibling = 0,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003831 .base = &virt_bases[MMSS_BASE],
3832 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07003833 .parent = &mclk3_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003834 .dbg_name = "camss_mclk3_clk",
3835 .ops = &clk_ops_branch,
3836 CLK_INIT(camss_mclk3_clk.c),
3837 },
3838};
3839
3840static struct branch_clk camss_micro_ahb_clk = {
3841 .cbcr_reg = CAMSS_MICRO_AHB_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003842 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003843 .base = &virt_bases[MMSS_BASE],
3844 .c = {
3845 .dbg_name = "camss_micro_ahb_clk",
3846 .ops = &clk_ops_branch,
3847 CLK_INIT(camss_micro_ahb_clk.c),
3848 },
3849};
3850
3851static struct branch_clk camss_phy0_csi0phytimer_clk = {
3852 .cbcr_reg = CAMSS_PHY0_CSI0PHYTIMER_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003853 .has_sibling = 0,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003854 .base = &virt_bases[MMSS_BASE],
3855 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07003856 .parent = &csi0phytimer_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003857 .dbg_name = "camss_phy0_csi0phytimer_clk",
3858 .ops = &clk_ops_branch,
3859 CLK_INIT(camss_phy0_csi0phytimer_clk.c),
3860 },
3861};
3862
3863static struct branch_clk camss_phy1_csi1phytimer_clk = {
3864 .cbcr_reg = CAMSS_PHY1_CSI1PHYTIMER_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003865 .has_sibling = 0,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003866 .base = &virt_bases[MMSS_BASE],
3867 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07003868 .parent = &csi1phytimer_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003869 .dbg_name = "camss_phy1_csi1phytimer_clk",
3870 .ops = &clk_ops_branch,
3871 CLK_INIT(camss_phy1_csi1phytimer_clk.c),
3872 },
3873};
3874
3875static struct branch_clk camss_phy2_csi2phytimer_clk = {
3876 .cbcr_reg = CAMSS_PHY2_CSI2PHYTIMER_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003877 .has_sibling = 0,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003878 .base = &virt_bases[MMSS_BASE],
3879 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07003880 .parent = &csi2phytimer_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003881 .dbg_name = "camss_phy2_csi2phytimer_clk",
3882 .ops = &clk_ops_branch,
3883 CLK_INIT(camss_phy2_csi2phytimer_clk.c),
3884 },
3885};
3886
3887static struct branch_clk camss_top_ahb_clk = {
3888 .cbcr_reg = CAMSS_TOP_AHB_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003889 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003890 .base = &virt_bases[MMSS_BASE],
3891 .c = {
3892 .dbg_name = "camss_top_ahb_clk",
3893 .ops = &clk_ops_branch,
3894 CLK_INIT(camss_top_ahb_clk.c),
3895 },
3896};
3897
3898static struct branch_clk camss_vfe_cpp_ahb_clk = {
3899 .cbcr_reg = CAMSS_VFE_CPP_AHB_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003900 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003901 .base = &virt_bases[MMSS_BASE],
3902 .c = {
3903 .dbg_name = "camss_vfe_cpp_ahb_clk",
3904 .ops = &clk_ops_branch,
3905 CLK_INIT(camss_vfe_cpp_ahb_clk.c),
3906 },
3907};
3908
3909static struct branch_clk camss_vfe_cpp_clk = {
3910 .cbcr_reg = CAMSS_VFE_CPP_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003911 .has_sibling = 0,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003912 .base = &virt_bases[MMSS_BASE],
3913 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07003914 .parent = &cpp_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003915 .dbg_name = "camss_vfe_cpp_clk",
3916 .ops = &clk_ops_branch,
3917 CLK_INIT(camss_vfe_cpp_clk.c),
3918 },
3919};
3920
3921static struct branch_clk camss_vfe_vfe0_clk = {
3922 .cbcr_reg = CAMSS_VFE_VFE0_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003923 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003924 .base = &virt_bases[MMSS_BASE],
3925 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07003926 .parent = &vfe0_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003927 .dbg_name = "camss_vfe_vfe0_clk",
3928 .ops = &clk_ops_branch,
3929 CLK_INIT(camss_vfe_vfe0_clk.c),
3930 },
3931};
3932
3933static struct branch_clk camss_vfe_vfe1_clk = {
3934 .cbcr_reg = CAMSS_VFE_VFE1_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003935 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003936 .base = &virt_bases[MMSS_BASE],
3937 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07003938 .parent = &vfe1_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003939 .dbg_name = "camss_vfe_vfe1_clk",
3940 .ops = &clk_ops_branch,
3941 CLK_INIT(camss_vfe_vfe1_clk.c),
3942 },
3943};
3944
3945static struct branch_clk camss_vfe_vfe_ahb_clk = {
3946 .cbcr_reg = CAMSS_VFE_VFE_AHB_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003947 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003948 .base = &virt_bases[MMSS_BASE],
3949 .c = {
3950 .dbg_name = "camss_vfe_vfe_ahb_clk",
3951 .ops = &clk_ops_branch,
3952 CLK_INIT(camss_vfe_vfe_ahb_clk.c),
3953 },
3954};
3955
3956static struct branch_clk camss_vfe_vfe_axi_clk = {
3957 .cbcr_reg = CAMSS_VFE_VFE_AXI_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003958 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003959 .base = &virt_bases[MMSS_BASE],
3960 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07003961 .parent = &axi_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003962 .dbg_name = "camss_vfe_vfe_axi_clk",
3963 .ops = &clk_ops_branch,
3964 CLK_INIT(camss_vfe_vfe_axi_clk.c),
3965 },
3966};
3967
3968static struct branch_clk camss_vfe_vfe_ocmemnoc_clk = {
3969 .cbcr_reg = CAMSS_VFE_VFE_OCMEMNOC_CBCR,
3970 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003971 .base = &virt_bases[MMSS_BASE],
3972 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07003973 .parent = &ocmemnoc_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003974 .dbg_name = "camss_vfe_vfe_ocmemnoc_clk",
3975 .ops = &clk_ops_branch,
3976 CLK_INIT(camss_vfe_vfe_ocmemnoc_clk.c),
3977 },
3978};
3979
3980static struct branch_clk mdss_ahb_clk = {
3981 .cbcr_reg = MDSS_AHB_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003982 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003983 .base = &virt_bases[MMSS_BASE],
3984 .c = {
3985 .dbg_name = "mdss_ahb_clk",
3986 .ops = &clk_ops_branch,
3987 CLK_INIT(mdss_ahb_clk.c),
3988 },
3989};
3990
3991static struct branch_clk mdss_axi_clk = {
3992 .cbcr_reg = MDSS_AXI_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003993 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003994 .base = &virt_bases[MMSS_BASE],
3995 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07003996 .parent = &axi_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07003997 .dbg_name = "mdss_axi_clk",
3998 .ops = &clk_ops_branch,
3999 CLK_INIT(mdss_axi_clk.c),
4000 },
4001};
4002
4003static struct branch_clk mdss_byte0_clk = {
4004 .cbcr_reg = MDSS_BYTE0_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004005 .has_sibling = 0,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004006 .base = &virt_bases[MMSS_BASE],
4007 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07004008 .parent = &byte0_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004009 .dbg_name = "mdss_byte0_clk",
4010 .ops = &clk_ops_branch,
4011 CLK_INIT(mdss_byte0_clk.c),
4012 },
4013};
4014
4015static struct branch_clk mdss_byte1_clk = {
4016 .cbcr_reg = MDSS_BYTE1_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004017 .has_sibling = 0,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004018 .base = &virt_bases[MMSS_BASE],
4019 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07004020 .parent = &byte1_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004021 .dbg_name = "mdss_byte1_clk",
4022 .ops = &clk_ops_branch,
4023 CLK_INIT(mdss_byte1_clk.c),
4024 },
4025};
4026
4027static struct branch_clk mdss_edpaux_clk = {
4028 .cbcr_reg = MDSS_EDPAUX_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004029 .has_sibling = 0,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004030 .base = &virt_bases[MMSS_BASE],
4031 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07004032 .parent = &edpaux_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004033 .dbg_name = "mdss_edpaux_clk",
4034 .ops = &clk_ops_branch,
4035 CLK_INIT(mdss_edpaux_clk.c),
4036 },
4037};
4038
4039static struct branch_clk mdss_edplink_clk = {
4040 .cbcr_reg = MDSS_EDPLINK_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004041 .has_sibling = 0,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004042 .base = &virt_bases[MMSS_BASE],
4043 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07004044 .parent = &edplink_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004045 .dbg_name = "mdss_edplink_clk",
4046 .ops = &clk_ops_branch,
4047 CLK_INIT(mdss_edplink_clk.c),
4048 },
4049};
4050
4051static struct branch_clk mdss_edppixel_clk = {
4052 .cbcr_reg = MDSS_EDPPIXEL_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004053 .has_sibling = 0,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004054 .base = &virt_bases[MMSS_BASE],
4055 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07004056 .parent = &edppixel_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004057 .dbg_name = "mdss_edppixel_clk",
4058 .ops = &clk_ops_branch,
4059 CLK_INIT(mdss_edppixel_clk.c),
4060 },
4061};
4062
4063static struct branch_clk mdss_esc0_clk = {
4064 .cbcr_reg = MDSS_ESC0_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004065 .has_sibling = 0,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004066 .base = &virt_bases[MMSS_BASE],
4067 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07004068 .parent = &esc0_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004069 .dbg_name = "mdss_esc0_clk",
4070 .ops = &clk_ops_branch,
4071 CLK_INIT(mdss_esc0_clk.c),
4072 },
4073};
4074
4075static struct branch_clk mdss_esc1_clk = {
4076 .cbcr_reg = MDSS_ESC1_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004077 .has_sibling = 0,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004078 .base = &virt_bases[MMSS_BASE],
4079 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07004080 .parent = &esc1_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004081 .dbg_name = "mdss_esc1_clk",
4082 .ops = &clk_ops_branch,
4083 CLK_INIT(mdss_esc1_clk.c),
4084 },
4085};
4086
4087static struct branch_clk mdss_extpclk_clk = {
4088 .cbcr_reg = MDSS_EXTPCLK_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004089 .has_sibling = 0,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004090 .base = &virt_bases[MMSS_BASE],
4091 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07004092 .parent = &extpclk_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004093 .dbg_name = "mdss_extpclk_clk",
4094 .ops = &clk_ops_branch,
4095 CLK_INIT(mdss_extpclk_clk.c),
4096 },
4097};
4098
4099static struct branch_clk mdss_hdmi_ahb_clk = {
4100 .cbcr_reg = MDSS_HDMI_AHB_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004101 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004102 .base = &virt_bases[MMSS_BASE],
4103 .c = {
4104 .dbg_name = "mdss_hdmi_ahb_clk",
4105 .ops = &clk_ops_branch,
4106 CLK_INIT(mdss_hdmi_ahb_clk.c),
4107 },
4108};
4109
4110static struct branch_clk mdss_hdmi_clk = {
4111 .cbcr_reg = MDSS_HDMI_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004112 .has_sibling = 0,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004113 .base = &virt_bases[MMSS_BASE],
4114 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07004115 .parent = &hdmi_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004116 .dbg_name = "mdss_hdmi_clk",
4117 .ops = &clk_ops_branch,
4118 CLK_INIT(mdss_hdmi_clk.c),
4119 },
4120};
4121
4122static struct branch_clk mdss_mdp_clk = {
4123 .cbcr_reg = MDSS_MDP_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004124 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004125 .base = &virt_bases[MMSS_BASE],
4126 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07004127 .parent = &mdp_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004128 .dbg_name = "mdss_mdp_clk",
4129 .ops = &clk_ops_branch,
4130 CLK_INIT(mdss_mdp_clk.c),
4131 },
4132};
4133
4134static struct branch_clk mdss_mdp_lut_clk = {
4135 .cbcr_reg = MDSS_MDP_LUT_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004136 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004137 .base = &virt_bases[MMSS_BASE],
4138 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07004139 .parent = &mdp_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004140 .dbg_name = "mdss_mdp_lut_clk",
4141 .ops = &clk_ops_branch,
4142 CLK_INIT(mdss_mdp_lut_clk.c),
4143 },
4144};
4145
4146static struct branch_clk mdss_pclk0_clk = {
4147 .cbcr_reg = MDSS_PCLK0_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004148 .has_sibling = 0,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004149 .base = &virt_bases[MMSS_BASE],
4150 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07004151 .parent = &pclk0_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004152 .dbg_name = "mdss_pclk0_clk",
4153 .ops = &clk_ops_branch,
4154 CLK_INIT(mdss_pclk0_clk.c),
4155 },
4156};
4157
4158static struct branch_clk mdss_pclk1_clk = {
4159 .cbcr_reg = MDSS_PCLK1_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004160 .has_sibling = 0,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004161 .base = &virt_bases[MMSS_BASE],
4162 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07004163 .parent = &pclk1_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004164 .dbg_name = "mdss_pclk1_clk",
4165 .ops = &clk_ops_branch,
4166 CLK_INIT(mdss_pclk1_clk.c),
4167 },
4168};
4169
4170static struct branch_clk mdss_vsync_clk = {
4171 .cbcr_reg = MDSS_VSYNC_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004172 .has_sibling = 0,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004173 .base = &virt_bases[MMSS_BASE],
4174 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07004175 .parent = &vsync_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004176 .dbg_name = "mdss_vsync_clk",
4177 .ops = &clk_ops_branch,
4178 CLK_INIT(mdss_vsync_clk.c),
4179 },
4180};
4181
4182static struct branch_clk mmss_misc_ahb_clk = {
4183 .cbcr_reg = MMSS_MISC_AHB_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004184 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004185 .base = &virt_bases[MMSS_BASE],
4186 .c = {
4187 .dbg_name = "mmss_misc_ahb_clk",
4188 .ops = &clk_ops_branch,
4189 CLK_INIT(mmss_misc_ahb_clk.c),
4190 },
4191};
4192
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004193static struct branch_clk mmss_mmssnoc_bto_ahb_clk = {
4194 .cbcr_reg = MMSS_MMSSNOC_BTO_AHB_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004195 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004196 .base = &virt_bases[MMSS_BASE],
4197 .c = {
4198 .dbg_name = "mmss_mmssnoc_bto_ahb_clk",
4199 .ops = &clk_ops_branch,
4200 CLK_INIT(mmss_mmssnoc_bto_ahb_clk.c),
4201 },
4202};
4203
4204static struct branch_clk mmss_mmssnoc_axi_clk = {
4205 .cbcr_reg = MMSS_MMSSNOC_AXI_CBCR,
Vikram Mulukutlac15dac02012-08-09 13:31:08 -07004206 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004207 .base = &virt_bases[MMSS_BASE],
4208 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07004209 .parent = &axi_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004210 .dbg_name = "mmss_mmssnoc_axi_clk",
4211 .ops = &clk_ops_branch,
4212 CLK_INIT(mmss_mmssnoc_axi_clk.c),
4213 },
4214};
4215
4216static struct branch_clk mmss_s0_axi_clk = {
4217 .cbcr_reg = MMSS_S0_AXI_CBCR,
Vikram Mulukutlac15dac02012-08-09 13:31:08 -07004218 /* The bus driver needs set_rate to go through to the parent */
4219 .has_sibling = 0,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004220 .base = &virt_bases[MMSS_BASE],
4221 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07004222 .parent = &axi_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004223 .dbg_name = "mmss_s0_axi_clk",
4224 .ops = &clk_ops_branch,
4225 CLK_INIT(mmss_s0_axi_clk.c),
Vikram Mulukutlac15dac02012-08-09 13:31:08 -07004226 .depends = &mmss_mmssnoc_axi_clk.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004227 },
4228};
4229
Vikram Mulukutlad08a1522012-05-24 15:24:01 -07004230struct branch_clk ocmemnoc_clk = {
4231 .cbcr_reg = OCMEMNOC_CBCR,
Vikram Mulukutlad08a1522012-05-24 15:24:01 -07004232 .has_sibling = 0,
4233 .bcr_reg = 0x50b0,
4234 .base = &virt_bases[MMSS_BASE],
4235 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07004236 .parent = &ocmemnoc_clk_src.c,
Vikram Mulukutlad08a1522012-05-24 15:24:01 -07004237 .dbg_name = "ocmemnoc_clk",
4238 .ops = &clk_ops_branch,
4239 CLK_INIT(ocmemnoc_clk.c),
4240 },
4241};
4242
Vikram Mulukutla274b2d92012-07-13 15:53:04 -07004243struct branch_clk ocmemcx_ocmemnoc_clk = {
4244 .cbcr_reg = OCMEMCX_OCMEMNOC_CBCR,
Vikram Mulukutla274b2d92012-07-13 15:53:04 -07004245 .has_sibling = 1,
4246 .base = &virt_bases[MMSS_BASE],
4247 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07004248 .parent = &ocmemnoc_clk_src.c,
Vikram Mulukutla274b2d92012-07-13 15:53:04 -07004249 .dbg_name = "ocmemcx_ocmemnoc_clk",
4250 .ops = &clk_ops_branch,
4251 CLK_INIT(ocmemcx_ocmemnoc_clk.c),
4252 },
4253};
4254
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004255static struct branch_clk venus0_ahb_clk = {
4256 .cbcr_reg = VENUS0_AHB_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004257 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004258 .base = &virt_bases[MMSS_BASE],
4259 .c = {
4260 .dbg_name = "venus0_ahb_clk",
4261 .ops = &clk_ops_branch,
4262 CLK_INIT(venus0_ahb_clk.c),
4263 },
4264};
4265
4266static struct branch_clk venus0_axi_clk = {
4267 .cbcr_reg = VENUS0_AXI_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004268 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004269 .base = &virt_bases[MMSS_BASE],
4270 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07004271 .parent = &axi_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004272 .dbg_name = "venus0_axi_clk",
4273 .ops = &clk_ops_branch,
4274 CLK_INIT(venus0_axi_clk.c),
4275 },
4276};
4277
4278static struct branch_clk venus0_ocmemnoc_clk = {
4279 .cbcr_reg = VENUS0_OCMEMNOC_CBCR,
4280 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004281 .base = &virt_bases[MMSS_BASE],
4282 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07004283 .parent = &ocmemnoc_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004284 .dbg_name = "venus0_ocmemnoc_clk",
4285 .ops = &clk_ops_branch,
4286 CLK_INIT(venus0_ocmemnoc_clk.c),
4287 },
4288};
4289
4290static struct branch_clk venus0_vcodec0_clk = {
4291 .cbcr_reg = VENUS0_VCODEC0_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004292 .has_sibling = 0,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004293 .base = &virt_bases[MMSS_BASE],
4294 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07004295 .parent = &vcodec0_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004296 .dbg_name = "venus0_vcodec0_clk",
4297 .ops = &clk_ops_branch,
4298 CLK_INIT(venus0_vcodec0_clk.c),
4299 },
4300};
4301
Vikram Mulukutlae3b03062012-05-16 12:07:08 -07004302static struct branch_clk oxilicx_axi_clk = {
4303 .cbcr_reg = OXILICX_AXI_CBCR,
Vikram Mulukutlae3b03062012-05-16 12:07:08 -07004304 .has_sibling = 1,
4305 .base = &virt_bases[MMSS_BASE],
4306 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07004307 .parent = &axi_clk_src.c,
Vikram Mulukutlae3b03062012-05-16 12:07:08 -07004308 .dbg_name = "oxilicx_axi_clk",
4309 .ops = &clk_ops_branch,
4310 CLK_INIT(oxilicx_axi_clk.c),
4311 },
4312};
4313
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004314static struct branch_clk oxili_gfx3d_clk = {
4315 .cbcr_reg = OXILI_GFX3D_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004316 .base = &virt_bases[MMSS_BASE],
4317 .c = {
Saravana Kannan7a6532e2012-10-18 20:51:13 -07004318 .parent = &oxili_gfx3d_clk_src.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004319 .dbg_name = "oxili_gfx3d_clk",
4320 .ops = &clk_ops_branch,
4321 CLK_INIT(oxili_gfx3d_clk.c),
Vikram Mulukutlae3b03062012-05-16 12:07:08 -07004322 .depends = &oxilicx_axi_clk.c,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004323 },
4324};
4325
4326static struct branch_clk oxilicx_ahb_clk = {
4327 .cbcr_reg = OXILICX_AHB_CBCR,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004328 .has_sibling = 1,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004329 .base = &virt_bases[MMSS_BASE],
4330 .c = {
4331 .dbg_name = "oxilicx_ahb_clk",
4332 .ops = &clk_ops_branch,
4333 CLK_INIT(oxilicx_ahb_clk.c),
4334 },
4335};
4336
Vikram Mulukutlaa967db42012-05-10 16:20:40 -07004337static struct branch_clk q6ss_ahb_lfabif_clk = {
4338 .cbcr_reg = LPASS_Q6SS_AHB_LFABIF_CBCR,
4339 .has_sibling = 1,
4340 .base = &virt_bases[LPASS_BASE],
4341 .c = {
4342 .dbg_name = "q6ss_ahb_lfabif_clk",
4343 .ops = &clk_ops_branch,
4344 CLK_INIT(q6ss_ahb_lfabif_clk.c),
4345 },
4346};
4347
Vikram Mulukutla6c0f1a72012-08-10 01:59:28 -07004348
Vikram Mulukutla3454e9e2012-08-11 20:18:42 -07004349static struct branch_clk gcc_lpass_q6_axi_clk = {
4350 .cbcr_reg = LPASS_Q6_AXI_CBCR,
4351 .has_sibling = 1,
4352 .base = &virt_bases[GCC_BASE],
4353 .c = {
4354 .dbg_name = "gcc_lpass_q6_axi_clk",
4355 .ops = &clk_ops_branch,
4356 CLK_INIT(gcc_lpass_q6_axi_clk.c),
4357 },
4358};
4359
Vikram Mulukutlaa967db42012-05-10 16:20:40 -07004360static struct branch_clk q6ss_xo_clk = {
4361 .cbcr_reg = LPASS_Q6SS_XO_CBCR,
4362 .bcr_reg = LPASS_Q6SS_BCR,
4363 .has_sibling = 1,
4364 .base = &virt_bases[LPASS_BASE],
4365 .c = {
4366 .dbg_name = "q6ss_xo_clk",
4367 .ops = &clk_ops_branch,
4368 CLK_INIT(q6ss_xo_clk.c),
4369 },
4370};
4371
Vikram Mulukutlab5b311e2012-08-09 14:58:48 -07004372static struct branch_clk q6ss_ahbm_clk = {
4373 .cbcr_reg = Q6SS_AHBM_CBCR,
4374 .has_sibling = 1,
4375 .base = &virt_bases[LPASS_BASE],
4376 .c = {
4377 .dbg_name = "q6ss_ahbm_clk",
4378 .ops = &clk_ops_branch,
4379 CLK_INIT(q6ss_ahbm_clk.c),
4380 },
4381};
4382
Matt Wagantalledf2fad2012-08-06 16:11:46 -07004383static DEFINE_CLK_MEASURE(l2_m_clk);
4384static DEFINE_CLK_MEASURE(krait0_m_clk);
4385static DEFINE_CLK_MEASURE(krait1_m_clk);
4386static DEFINE_CLK_MEASURE(krait2_m_clk);
4387static DEFINE_CLK_MEASURE(krait3_m_clk);
4388
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004389#ifdef CONFIG_DEBUG_FS
4390
4391struct measure_mux_entry {
4392 struct clk *c;
4393 int base;
4394 u32 debug_mux;
4395};
4396
Matt Wagantall0976c4c2013-02-07 17:12:43 -08004397enum {
4398 M_ACPU0 = 0,
4399 M_ACPU1,
4400 M_ACPU2,
4401 M_ACPU3,
4402 M_L2,
4403};
4404
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004405struct measure_mux_entry measure_mux[] = {
Vikram Mulukutla9cd8f0f2012-07-27 14:15:24 -07004406 {&gcc_pdm_ahb_clk.c, GCC_BASE, 0x00d0},
4407 {&gcc_blsp2_qup1_i2c_apps_clk.c, GCC_BASE, 0x00ab},
4408 {&gcc_blsp2_qup3_spi_apps_clk.c, GCC_BASE, 0x00b3},
4409 {&gcc_blsp2_uart5_apps_clk.c, GCC_BASE, 0x00be},
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004410 {&gcc_usb30_master_clk.c, GCC_BASE, 0x0050},
Vikram Mulukutla9cd8f0f2012-07-27 14:15:24 -07004411 {&gcc_blsp2_qup3_i2c_apps_clk.c, GCC_BASE, 0x00b4},
4412 {&gcc_usb_hsic_system_clk.c, GCC_BASE, 0x0059},
4413 {&gcc_blsp2_uart3_apps_clk.c, GCC_BASE, 0x00b5},
4414 {&gcc_usb_hsic_io_cal_clk.c, GCC_BASE, 0x005b},
4415 {&gcc_ce2_axi_clk.c, GCC_BASE, 0x0141},
4416 {&gcc_sdcc3_ahb_clk.c, GCC_BASE, 0x0079},
4417 {&gcc_blsp1_qup5_i2c_apps_clk.c, GCC_BASE, 0x009d},
4418 {&gcc_blsp1_qup1_spi_apps_clk.c, GCC_BASE, 0x008a},
4419 {&gcc_blsp2_uart4_apps_clk.c, GCC_BASE, 0x00ba},
4420 {&gcc_ce2_clk.c, GCC_BASE, 0x0140},
4421 {&gcc_blsp1_uart2_apps_clk.c, GCC_BASE, 0x0091},
4422 {&gcc_sdcc1_ahb_clk.c, GCC_BASE, 0x0069},
4423 {&gcc_mss_cfg_ahb_clk.c, GCC_BASE, 0x0030},
4424 {&gcc_tsif_ahb_clk.c, GCC_BASE, 0x00e8},
4425 {&gcc_sdcc4_ahb_clk.c, GCC_BASE, 0x0081},
4426 {&gcc_blsp1_qup4_spi_apps_clk.c, GCC_BASE, 0x0098},
4427 {&gcc_blsp2_qup4_spi_apps_clk.c, GCC_BASE, 0x00b8},
4428 {&gcc_blsp1_qup3_spi_apps_clk.c, GCC_BASE, 0x0093},
4429 {&gcc_blsp1_qup6_i2c_apps_clk.c, GCC_BASE, 0x00a2},
4430 {&gcc_blsp2_qup6_i2c_apps_clk.c, GCC_BASE, 0x00c2},
4431 {&gcc_bam_dma_ahb_clk.c, GCC_BASE, 0x00e0},
4432 {&gcc_sdcc3_apps_clk.c, GCC_BASE, 0x0078},
4433 {&gcc_usb_hs_system_clk.c, GCC_BASE, 0x0060},
4434 {&gcc_blsp1_ahb_clk.c, GCC_BASE, 0x0088},
4435 {&gcc_sdcc1_apps_clk.c, GCC_BASE, 0x0068},
4436 {&gcc_blsp2_qup5_i2c_apps_clk.c, GCC_BASE, 0x00bd},
4437 {&gcc_blsp1_uart4_apps_clk.c, GCC_BASE, 0x009a},
4438 {&gcc_blsp2_qup2_spi_apps_clk.c, GCC_BASE, 0x00ae},
4439 {&gcc_blsp2_qup6_spi_apps_clk.c, GCC_BASE, 0x00c1},
4440 {&gcc_blsp2_uart2_apps_clk.c, GCC_BASE, 0x00b1},
4441 {&gcc_blsp1_qup2_spi_apps_clk.c, GCC_BASE, 0x008e},
4442 {&gcc_usb_hsic_ahb_clk.c, GCC_BASE, 0x0058},
4443 {&gcc_blsp1_uart3_apps_clk.c, GCC_BASE, 0x0095},
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004444 {&gcc_usb30_mock_utmi_clk.c, GCC_BASE, 0x0052},
Vikram Mulukutla9cd8f0f2012-07-27 14:15:24 -07004445 {&gcc_ce1_axi_clk.c, GCC_BASE, 0x0139},
4446 {&gcc_sdcc4_apps_clk.c, GCC_BASE, 0x0080},
4447 {&gcc_blsp1_qup5_spi_apps_clk.c, GCC_BASE, 0x009c},
4448 {&gcc_usb_hs_ahb_clk.c, GCC_BASE, 0x0061},
4449 {&gcc_blsp1_qup6_spi_apps_clk.c, GCC_BASE, 0x00a1},
4450 {&gcc_blsp2_qup2_i2c_apps_clk.c, GCC_BASE, 0x00b0},
4451 {&gcc_prng_ahb_clk.c, GCC_BASE, 0x00d8},
4452 {&gcc_blsp1_qup3_i2c_apps_clk.c, GCC_BASE, 0x0094},
4453 {&gcc_usb_hsic_clk.c, GCC_BASE, 0x005a},
4454 {&gcc_blsp1_uart6_apps_clk.c, GCC_BASE, 0x00a3},
4455 {&gcc_sdcc2_apps_clk.c, GCC_BASE, 0x0070},
4456 {&gcc_tsif_ref_clk.c, GCC_BASE, 0x00e9},
4457 {&gcc_blsp1_uart1_apps_clk.c, GCC_BASE, 0x008c},
4458 {&gcc_blsp2_qup5_spi_apps_clk.c, GCC_BASE, 0x00bc},
4459 {&gcc_blsp1_qup4_i2c_apps_clk.c, GCC_BASE, 0x0099},
4460 {&gcc_mmss_noc_cfg_ahb_clk.c, GCC_BASE, 0x002a},
4461 {&gcc_blsp2_ahb_clk.c, GCC_BASE, 0x00a8},
4462 {&gcc_boot_rom_ahb_clk.c, GCC_BASE, 0x00f8},
4463 {&gcc_ce1_ahb_clk.c, GCC_BASE, 0x013a},
4464 {&gcc_pdm2_clk.c, GCC_BASE, 0x00d2},
4465 {&gcc_blsp2_qup4_i2c_apps_clk.c, GCC_BASE, 0x00b9},
4466 {&gcc_ce2_ahb_clk.c, GCC_BASE, 0x0142},
4467 {&gcc_blsp1_uart5_apps_clk.c, GCC_BASE, 0x009e},
4468 {&gcc_blsp2_qup1_spi_apps_clk.c, GCC_BASE, 0x00aa},
4469 {&gcc_blsp1_qup2_i2c_apps_clk.c, GCC_BASE, 0x0090},
4470 {&gcc_blsp2_uart1_apps_clk.c, GCC_BASE, 0x00ac},
4471 {&gcc_blsp1_qup1_i2c_apps_clk.c, GCC_BASE, 0x008b},
4472 {&gcc_blsp2_uart6_apps_clk.c, GCC_BASE, 0x00c3},
4473 {&gcc_sdcc2_ahb_clk.c, GCC_BASE, 0x0071},
Vikram Mulukutla3b98a6d2012-08-15 20:35:25 -07004474 {&gcc_usb30_sleep_clk.c, GCC_BASE, 0x0051},
4475 {&gcc_usb2a_phy_sleep_clk.c, GCC_BASE, 0x0063},
4476 {&gcc_usb2b_phy_sleep_clk.c, GCC_BASE, 0x0064},
4477 {&gcc_sys_noc_usb3_axi_clk.c, GCC_BASE, 0x0001},
Vikram Mulukutla9cd8f0f2012-07-27 14:15:24 -07004478 {&gcc_ocmem_noc_cfg_ahb_clk.c, GCC_BASE, 0x0029},
4479 {&gcc_ce1_clk.c, GCC_BASE, 0x0138},
Vikram Mulukutla3454e9e2012-08-11 20:18:42 -07004480 {&gcc_lpass_q6_axi_clk.c, GCC_BASE, 0x0160},
Vikram Mulukutla31926eb2012-08-12 19:58:08 -07004481 {&gcc_mss_q6_bimc_axi_clk.c, GCC_BASE, 0x0031},
Vikram Mulukutlab5294732012-10-15 14:21:47 -07004482 {&cnoc_clk.c, GCC_BASE, 0x0008},
4483 {&pnoc_clk.c, GCC_BASE, 0x0010},
4484 {&snoc_clk.c, GCC_BASE, 0x0000},
4485 {&bimc_clk.c, GCC_BASE, 0x0155},
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004486 {&mmss_mmssnoc_axi_clk.c, MMSS_BASE, 0x0004},
Vikram Mulukutlad08a1522012-05-24 15:24:01 -07004487 {&ocmemnoc_clk.c, MMSS_BASE, 0x0007},
Vikram Mulukutla274b2d92012-07-13 15:53:04 -07004488 {&ocmemcx_ocmemnoc_clk.c, MMSS_BASE, 0x0009},
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004489 {&camss_cci_cci_ahb_clk.c, MMSS_BASE, 0x002e},
4490 {&camss_cci_cci_clk.c, MMSS_BASE, 0x002d},
4491 {&camss_csi0_ahb_clk.c, MMSS_BASE, 0x0042},
4492 {&camss_csi0_clk.c, MMSS_BASE, 0x0041},
4493 {&camss_csi0phy_clk.c, MMSS_BASE, 0x0043},
4494 {&camss_csi0pix_clk.c, MMSS_BASE, 0x0045},
4495 {&camss_csi0rdi_clk.c, MMSS_BASE, 0x0044},
4496 {&camss_csi1_ahb_clk.c, MMSS_BASE, 0x0047},
4497 {&camss_csi1_clk.c, MMSS_BASE, 0x0046},
4498 {&camss_csi1phy_clk.c, MMSS_BASE, 0x0048},
4499 {&camss_csi1pix_clk.c, MMSS_BASE, 0x004a},
4500 {&camss_csi1rdi_clk.c, MMSS_BASE, 0x0049},
4501 {&camss_csi2_ahb_clk.c, MMSS_BASE, 0x004c},
4502 {&camss_csi2_clk.c, MMSS_BASE, 0x004b},
4503 {&camss_csi2phy_clk.c, MMSS_BASE, 0x004d},
4504 {&camss_csi2pix_clk.c, MMSS_BASE, 0x004f},
4505 {&camss_csi2rdi_clk.c, MMSS_BASE, 0x004e},
4506 {&camss_csi3_ahb_clk.c, MMSS_BASE, 0x0051},
4507 {&camss_csi3_clk.c, MMSS_BASE, 0x0050},
4508 {&camss_csi3phy_clk.c, MMSS_BASE, 0x0052},
4509 {&camss_csi3pix_clk.c, MMSS_BASE, 0x0054},
4510 {&camss_csi3rdi_clk.c, MMSS_BASE, 0x0053},
4511 {&camss_csi_vfe0_clk.c, MMSS_BASE, 0x003f},
4512 {&camss_csi_vfe1_clk.c, MMSS_BASE, 0x0040},
4513 {&camss_gp0_clk.c, MMSS_BASE, 0x0027},
4514 {&camss_gp1_clk.c, MMSS_BASE, 0x0028},
4515 {&camss_ispif_ahb_clk.c, MMSS_BASE, 0x0055},
4516 {&camss_jpeg_jpeg0_clk.c, MMSS_BASE, 0x0032},
4517 {&camss_jpeg_jpeg1_clk.c, MMSS_BASE, 0x0033},
4518 {&camss_jpeg_jpeg2_clk.c, MMSS_BASE, 0x0034},
4519 {&camss_jpeg_jpeg_ahb_clk.c, MMSS_BASE, 0x0035},
4520 {&camss_jpeg_jpeg_axi_clk.c, MMSS_BASE, 0x0036},
4521 {&camss_jpeg_jpeg_ocmemnoc_clk.c, MMSS_BASE, 0x0037},
4522 {&camss_mclk0_clk.c, MMSS_BASE, 0x0029},
4523 {&camss_mclk1_clk.c, MMSS_BASE, 0x002a},
4524 {&camss_mclk2_clk.c, MMSS_BASE, 0x002b},
4525 {&camss_mclk3_clk.c, MMSS_BASE, 0x002c},
4526 {&camss_micro_ahb_clk.c, MMSS_BASE, 0x0026},
4527 {&camss_phy0_csi0phytimer_clk.c, MMSS_BASE, 0x002f},
4528 {&camss_phy1_csi1phytimer_clk.c, MMSS_BASE, 0x0030},
4529 {&camss_phy2_csi2phytimer_clk.c, MMSS_BASE, 0x0031},
4530 {&camss_top_ahb_clk.c, MMSS_BASE, 0x0025},
4531 {&camss_vfe_cpp_ahb_clk.c, MMSS_BASE, 0x003b},
4532 {&camss_vfe_cpp_clk.c, MMSS_BASE, 0x003a},
4533 {&camss_vfe_vfe0_clk.c, MMSS_BASE, 0x0038},
4534 {&camss_vfe_vfe1_clk.c, MMSS_BASE, 0x0039},
4535 {&camss_vfe_vfe_ahb_clk.c, MMSS_BASE, 0x003c},
4536 {&camss_vfe_vfe_axi_clk.c, MMSS_BASE, 0x003d},
4537 {&camss_vfe_vfe_ocmemnoc_clk.c, MMSS_BASE, 0x003e},
Vikram Mulukutladf04d532012-08-10 21:01:00 -07004538 {&oxilicx_axi_clk.c, MMSS_BASE, 0x000b},
4539 {&oxilicx_ahb_clk.c, MMSS_BASE, 0x000c},
4540 {&ocmemcx_ocmemnoc_clk.c, MMSS_BASE, 0x0009},
4541 {&oxili_gfx3d_clk.c, MMSS_BASE, 0x000d},
4542 {&venus0_axi_clk.c, MMSS_BASE, 0x000f},
4543 {&venus0_ocmemnoc_clk.c, MMSS_BASE, 0x0010},
4544 {&venus0_ahb_clk.c, MMSS_BASE, 0x0011},
4545 {&venus0_vcodec0_clk.c, MMSS_BASE, 0x000e},
4546 {&mmss_s0_axi_clk.c, MMSS_BASE, 0x0005},
4547 {&mmssnoc_ahb_clk.c, MMSS_BASE, 0x0001},
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004548 {&mdss_ahb_clk.c, MMSS_BASE, 0x0022},
4549 {&mdss_hdmi_clk.c, MMSS_BASE, 0x001d},
4550 {&mdss_mdp_clk.c, MMSS_BASE, 0x0014},
4551 {&mdss_mdp_lut_clk.c, MMSS_BASE, 0x0015},
4552 {&mdss_axi_clk.c, MMSS_BASE, 0x0024},
4553 {&mdss_vsync_clk.c, MMSS_BASE, 0x001c},
4554 {&mdss_esc0_clk.c, MMSS_BASE, 0x0020},
4555 {&mdss_esc1_clk.c, MMSS_BASE, 0x0021},
4556 {&mdss_edpaux_clk.c, MMSS_BASE, 0x001b},
4557 {&mdss_byte0_clk.c, MMSS_BASE, 0x001e},
4558 {&mdss_byte1_clk.c, MMSS_BASE, 0x001f},
4559 {&mdss_edplink_clk.c, MMSS_BASE, 0x001a},
4560 {&mdss_edppixel_clk.c, MMSS_BASE, 0x0019},
4561 {&mdss_extpclk_clk.c, MMSS_BASE, 0x0018},
4562 {&mdss_hdmi_ahb_clk.c, MMSS_BASE, 0x0023},
4563 {&mdss_pclk0_clk.c, MMSS_BASE, 0x0016},
4564 {&mdss_pclk1_clk.c, MMSS_BASE, 0x0017},
Vikram Mulukutlaa967db42012-05-10 16:20:40 -07004565 {&q6ss_xo_clk.c, LPASS_BASE, 0x002b},
4566 {&q6ss_ahb_lfabif_clk.c, LPASS_BASE, 0x001e},
Vikram Mulukutlab5b311e2012-08-09 14:58:48 -07004567 {&q6ss_ahbm_clk.c, LPASS_BASE, 0x001d},
Vikram Mulukutlaa967db42012-05-10 16:20:40 -07004568
Matt Wagantall0976c4c2013-02-07 17:12:43 -08004569 {&krait0_m_clk, APCS_BASE, M_ACPU0},
4570 {&krait1_m_clk, APCS_BASE, M_ACPU1},
4571 {&krait2_m_clk, APCS_BASE, M_ACPU2},
4572 {&krait3_m_clk, APCS_BASE, M_ACPU3},
4573 {&l2_m_clk, APCS_BASE, M_L2},
Matt Wagantalledf2fad2012-08-06 16:11:46 -07004574
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004575 {&dummy_clk, N_BASES, 0x0000},
4576};
4577
4578static int measure_clk_set_parent(struct clk *c, struct clk *parent)
4579{
4580 struct measure_clk *clk = to_measure_clk(c);
4581 unsigned long flags;
4582 u32 regval, clk_sel, i;
4583
4584 if (!parent)
4585 return -EINVAL;
4586
4587 for (i = 0; i < (ARRAY_SIZE(measure_mux) - 1); i++)
4588 if (measure_mux[i].c == parent)
4589 break;
4590
4591 if (measure_mux[i].c == &dummy_clk)
4592 return -EINVAL;
4593
4594 spin_lock_irqsave(&local_clock_reg_lock, flags);
4595 /*
4596 * Program the test vector, measurement period (sample_ticks)
4597 * and scaling multiplier.
4598 */
4599 clk->sample_ticks = 0x10000;
4600 clk->multiplier = 1;
4601
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004602 switch (measure_mux[i].base) {
4603
4604 case GCC_BASE:
Vikram Mulukutlaae7cfdb2012-08-10 15:30:21 -07004605 writel_relaxed(0, GCC_REG_BASE(GCC_DEBUG_CLK_CTL_REG));
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004606 clk_sel = measure_mux[i].debug_mux;
4607 break;
4608
4609 case MMSS_BASE:
Vikram Mulukutlaae7cfdb2012-08-10 15:30:21 -07004610 writel_relaxed(0, MMSS_REG_BASE(MMSS_DEBUG_CLK_CTL_REG));
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004611 clk_sel = 0x02C;
4612 regval = BVAL(11, 0, measure_mux[i].debug_mux);
4613 writel_relaxed(regval, MMSS_REG_BASE(MMSS_DEBUG_CLK_CTL_REG));
4614
4615 /* Activate debug clock output */
4616 regval |= BIT(16);
4617 writel_relaxed(regval, MMSS_REG_BASE(MMSS_DEBUG_CLK_CTL_REG));
4618 break;
4619
4620 case LPASS_BASE:
Vikram Mulukutlaae7cfdb2012-08-10 15:30:21 -07004621 writel_relaxed(0, LPASS_REG_BASE(LPASS_DEBUG_CLK_CTL_REG));
Vikram Mulukutla93537012012-08-08 14:44:33 -07004622 clk_sel = 0x161;
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004623 regval = BVAL(11, 0, measure_mux[i].debug_mux);
4624 writel_relaxed(regval, LPASS_REG_BASE(LPASS_DEBUG_CLK_CTL_REG));
4625
4626 /* Activate debug clock output */
Vikram Mulukutla93537012012-08-08 14:44:33 -07004627 regval |= BIT(20);
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004628 writel_relaxed(regval, LPASS_REG_BASE(LPASS_DEBUG_CLK_CTL_REG));
4629 break;
4630
Matt Wagantalledf2fad2012-08-06 16:11:46 -07004631 case APCS_BASE:
4632 clk->multiplier = 4;
4633 clk_sel = 0x16A;
Matt Wagantall0976c4c2013-02-07 17:12:43 -08004634
4635 if (SOCINFO_VERSION_MAJOR(socinfo_get_version()) == 1) {
4636 if (measure_mux[i].debug_mux == M_L2)
4637 regval = BIT(7)|BIT(0);
4638 else
4639 regval = BIT(7)|(measure_mux[i].debug_mux << 3);
4640 } else {
4641 if (measure_mux[i].debug_mux == M_L2)
4642 regval = BIT(12);
4643 else
4644 regval = measure_mux[i].debug_mux << 8;
4645 writel_relaxed(BIT(0), APCS_REG_BASE(L2_CBCR_REG));
4646 }
Matt Wagantalledf2fad2012-08-06 16:11:46 -07004647 writel_relaxed(regval, APCS_REG_BASE(GLB_CLK_DIAG_REG));
4648 break;
4649
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004650 default:
4651 return -EINVAL;
4652 }
4653
4654 /* Set debug mux clock index */
4655 regval = BVAL(8, 0, clk_sel);
4656 writel_relaxed(regval, GCC_REG_BASE(GCC_DEBUG_CLK_CTL_REG));
4657
4658 /* Activate debug clock output */
4659 regval |= BIT(16);
4660 writel_relaxed(regval, GCC_REG_BASE(GCC_DEBUG_CLK_CTL_REG));
4661
4662 /* Make sure test vector is set before starting measurements. */
4663 mb();
4664 spin_unlock_irqrestore(&local_clock_reg_lock, flags);
4665
4666 return 0;
4667}
4668
4669/* Sample clock for 'ticks' reference clock ticks. */
4670static u32 run_measurement(unsigned ticks)
4671{
4672 /* Stop counters and set the XO4 counter start value. */
4673 writel_relaxed(ticks, GCC_REG_BASE(CLOCK_FRQ_MEASURE_CTL_REG));
4674
4675 /* Wait for timer to become ready. */
4676 while ((readl_relaxed(GCC_REG_BASE(CLOCK_FRQ_MEASURE_STATUS_REG)) &
4677 BIT(25)) != 0)
4678 cpu_relax();
4679
4680 /* Run measurement and wait for completion. */
4681 writel_relaxed(BIT(20)|ticks, GCC_REG_BASE(CLOCK_FRQ_MEASURE_CTL_REG));
4682 while ((readl_relaxed(GCC_REG_BASE(CLOCK_FRQ_MEASURE_STATUS_REG)) &
4683 BIT(25)) == 0)
4684 cpu_relax();
4685
4686 /* Return measured ticks. */
4687 return readl_relaxed(GCC_REG_BASE(CLOCK_FRQ_MEASURE_STATUS_REG)) &
4688 BM(24, 0);
4689}
4690
4691/*
4692 * Perform a hardware rate measurement for a given clock.
4693 * FOR DEBUG USE ONLY: Measurements take ~15 ms!
4694 */
4695static unsigned long measure_clk_get_rate(struct clk *c)
4696{
4697 unsigned long flags;
4698 u32 gcc_xo4_reg_backup;
4699 u64 raw_count_short, raw_count_full;
4700 struct measure_clk *clk = to_measure_clk(c);
4701 unsigned ret;
4702
4703 ret = clk_prepare_enable(&cxo_clk_src.c);
4704 if (ret) {
4705 pr_warning("CXO clock failed to enable. Can't measure\n");
4706 return 0;
4707 }
4708
4709 spin_lock_irqsave(&local_clock_reg_lock, flags);
4710
4711 /* Enable CXO/4 and RINGOSC branch. */
4712 gcc_xo4_reg_backup = readl_relaxed(GCC_REG_BASE(GCC_XO_DIV4_CBCR_REG));
4713 writel_relaxed(0x1, GCC_REG_BASE(GCC_XO_DIV4_CBCR_REG));
4714
4715 /*
4716 * The ring oscillator counter will not reset if the measured clock
4717 * is not running. To detect this, run a short measurement before
4718 * the full measurement. If the raw results of the two are the same
4719 * then the clock must be off.
4720 */
4721
4722 /* Run a short measurement. (~1 ms) */
4723 raw_count_short = run_measurement(0x1000);
4724 /* Run a full measurement. (~14 ms) */
4725 raw_count_full = run_measurement(clk->sample_ticks);
4726
4727 writel_relaxed(gcc_xo4_reg_backup, GCC_REG_BASE(GCC_XO_DIV4_CBCR_REG));
4728
4729 /* Return 0 if the clock is off. */
4730 if (raw_count_full == raw_count_short) {
4731 ret = 0;
4732 } else {
4733 /* Compute rate in Hz. */
4734 raw_count_full = ((raw_count_full * 10) + 15) * 4800000;
4735 do_div(raw_count_full, ((clk->sample_ticks * 10) + 35));
4736 ret = (raw_count_full * clk->multiplier);
4737 }
4738
Matt Wagantall9a9b6f02012-08-07 23:12:26 -07004739 writel_relaxed(0x51A00, GCC_REG_BASE(GCC_PLLTEST_PAD_CFG_REG));
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004740 spin_unlock_irqrestore(&local_clock_reg_lock, flags);
4741
4742 clk_disable_unprepare(&cxo_clk_src.c);
4743
4744 return ret;
4745}
4746#else /* !CONFIG_DEBUG_FS */
4747static int measure_clk_set_parent(struct clk *clk, struct clk *parent)
4748{
4749 return -EINVAL;
4750}
4751
4752static unsigned long measure_clk_get_rate(struct clk *clk)
4753{
4754 return 0;
4755}
4756#endif /* CONFIG_DEBUG_FS */
4757
Matt Wagantallae053222012-05-14 19:42:07 -07004758static struct clk_ops clk_ops_measure = {
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004759 .set_parent = measure_clk_set_parent,
4760 .get_rate = measure_clk_get_rate,
4761};
4762
4763static struct measure_clk measure_clk = {
4764 .c = {
4765 .dbg_name = "measure_clk",
Matt Wagantallae053222012-05-14 19:42:07 -07004766 .ops = &clk_ops_measure,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004767 CLK_INIT(measure_clk.c),
4768 },
4769 .multiplier = 1,
4770};
4771
Vikram Mulukutla19245e02012-07-23 15:58:04 -07004772
4773static struct clk_lookup msm_clocks_8974_rumi[] = {
4774 CLK_LOOKUP("iface_clk", gcc_sdcc1_ahb_clk.c, "msm_sdcc.1"),
4775 CLK_LOOKUP("core_clk", gcc_sdcc1_apps_clk.c, "msm_sdcc.1"),
Vikram Mulukutla19245e02012-07-23 15:58:04 -07004776 CLK_LOOKUP("iface_clk", gcc_sdcc2_ahb_clk.c, "msm_sdcc.2"),
4777 CLK_LOOKUP("core_clk", gcc_sdcc2_apps_clk.c, "msm_sdcc.2"),
Vikram Mulukutla19245e02012-07-23 15:58:04 -07004778 CLK_LOOKUP("iface_clk", gcc_sdcc3_ahb_clk.c, "msm_sdcc.3"),
4779 CLK_LOOKUP("core_clk", gcc_sdcc3_apps_clk.c, "msm_sdcc.3"),
Vikram Mulukutla19245e02012-07-23 15:58:04 -07004780 CLK_LOOKUP("iface_clk", gcc_sdcc4_ahb_clk.c, "msm_sdcc.4"),
4781 CLK_LOOKUP("core_clk", gcc_sdcc4_apps_clk.c, "msm_sdcc.4"),
Vikram Mulukutla19245e02012-07-23 15:58:04 -07004782 CLK_DUMMY("xo", XO_CLK, NULL, OFF),
Tianyi Gou7fea5da2012-12-06 15:56:31 -08004783 CLK_DUMMY("xo", XO_CLK, "fb21b000.qcom,pronto", OFF),
Stepan Moskovchenkof97dede72012-08-08 17:40:44 -07004784 CLK_DUMMY("core_clk", BLSP2_UART_CLK, "f991f000.serial", OFF),
4785 CLK_DUMMY("iface_clk", BLSP2_UART_CLK, "f991f000.serial", OFF),
Vikram Mulukutla19245e02012-07-23 15:58:04 -07004786 CLK_DUMMY("core_clk", SDC1_CLK, NULL, OFF),
4787 CLK_DUMMY("iface_clk", SDC1_P_CLK, NULL, OFF),
4788 CLK_DUMMY("core_clk", SDC3_CLK, NULL, OFF),
4789 CLK_DUMMY("iface_clk", SDC3_P_CLK, NULL, OFF),
4790 CLK_DUMMY("phy_clk", NULL, "msm_otg", OFF),
4791 CLK_DUMMY("core_clk", NULL, "msm_otg", OFF),
4792 CLK_DUMMY("iface_clk", NULL, "msm_otg", OFF),
4793 CLK_DUMMY("xo", NULL, "msm_otg", OFF),
4794 CLK_DUMMY("dfab_clk", DFAB_CLK, NULL, 0),
4795 CLK_DUMMY("dma_bam_pclk", DMA_BAM_P_CLK, NULL, 0),
4796 CLK_DUMMY("mem_clk", NULL, NULL, 0),
4797 CLK_DUMMY("core_clk", SPI_CLK, "spi_qsd.1", OFF),
4798 CLK_DUMMY("iface_clk", SPI_P_CLK, "spi_qsd.1", OFF),
4799 CLK_DUMMY("core_clk", NULL, "f9966000.i2c", 0),
4800 CLK_DUMMY("iface_clk", NULL, "f9966000.i2c", 0),
4801 CLK_DUMMY("core_clk", NULL, "fe12f000.slim", OFF),
4802 CLK_DUMMY("core_clk", "mdp.0", NULL, 0),
4803 CLK_DUMMY("core_clk_src", "mdp.0", NULL, 0),
4804 CLK_DUMMY("lut_clk", "mdp.0", NULL, 0),
4805 CLK_DUMMY("vsync_clk", "mdp.0", NULL, 0),
4806 CLK_DUMMY("iface_clk", "mdp.0", NULL, 0),
4807 CLK_DUMMY("bus_clk", "mdp.0", NULL, 0),
Olav Haugan5bec5192013-01-21 17:59:17 -08004808 CLK_DUMMY("iface_clk", NULL, "fda64000.qcom,iommu", OFF),
4809 CLK_DUMMY("core_clk", NULL, "fda64000.qcom,iommu", OFF),
4810 CLK_DUMMY("alt_core_clk", NULL, "fda64000.qcom,iommu", OFF),
4811 CLK_DUMMY("iface_clk", NULL, "fda44000.qcom,iommu", OFF),
4812 CLK_DUMMY("core_clk", NULL, "fda44000.qcom,iommu", OFF),
4813 CLK_DUMMY("alt_core_clk", NULL, "fda44000.qcom,iommu", OFF),
4814 CLK_DUMMY("iface_clk", NULL, "fd928000.qcom,iommu", OFF),
4815 CLK_DUMMY("core_clk", NULL, "fd928000.qcom,iommu", oFF),
4816 CLK_DUMMY("core_clk", NULL, "fdb10000.qcom,iommu", OFF),
4817 CLK_DUMMY("iface_clk", NULL, "fdb10000.qcom,iommu", OFF),
4818 CLK_DUMMY("alt_core_clk", NULL, "fdb10000.qcom,iommu", OFF),
4819 CLK_DUMMY("iface_clk", NULL, "fdc84000.qcom,iommu", OFF),
4820 CLK_DUMMY("alt_core_clk", NULL, "fdc84000.qcom,iommu", oFF),
4821 CLK_DUMMY("core_clk", NULL, "fdc84000.qcom,iommu", oFF),
Vikram Mulukutla19245e02012-07-23 15:58:04 -07004822};
4823
Abhimanyu Kapur90ced6e2012-06-26 17:41:25 -07004824static struct clk_lookup msm_clocks_8974[] = {
Vikram Mulukutla510f7492013-02-04 11:59:52 -08004825 CLK_LOOKUP("xo", cxo_otg_clk.c, "msm_otg"),
4826 CLK_LOOKUP("xo", cxo_pil_lpass_clk.c, "fe200000.qcom,lpass"),
4827 CLK_LOOKUP("xo", cxo_pil_mss_clk.c, "fc880000.qcom,mss"),
4828 CLK_LOOKUP("xo", cxo_wlan_clk.c, "fb000000.qcom,wcnss-wlan"),
4829 CLK_LOOKUP("xo", cxo_pil_pronto_clk.c, "fb21b000.qcom,pronto"),
Vijayavardhan Vennapusadec1fe62013-02-12 16:05:14 +05304830 CLK_LOOKUP("xo", cxo_dwc3_clk.c, "msm_dwc3"),
Vikram Mulukutla510f7492013-02-04 11:59:52 -08004831
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004832 CLK_LOOKUP("measure", measure_clk.c, "debug"),
4833
4834 CLK_LOOKUP("dma_bam_pclk", gcc_bam_dma_ahb_clk.c, "msm_sps"),
Stepan Moskovchenkof97dede72012-08-08 17:40:44 -07004835 CLK_LOOKUP("iface_clk", gcc_blsp1_ahb_clk.c, "f991f000.serial"),
Amy Malochebc7e9672012-08-15 10:30:40 -07004836 CLK_LOOKUP("iface_clk", gcc_blsp1_ahb_clk.c, "f9924000.i2c"),
Stepan Moskovchenko5269b602012-08-08 17:57:09 -07004837 CLK_LOOKUP("iface_clk", gcc_blsp1_ahb_clk.c, "f991e000.serial"),
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004838 CLK_LOOKUP("core_clk", gcc_blsp1_qup1_i2c_apps_clk.c, ""),
Amy Malochebc7e9672012-08-15 10:30:40 -07004839 CLK_LOOKUP("core_clk", gcc_blsp1_qup2_i2c_apps_clk.c, "f9924000.i2c"),
4840 CLK_LOOKUP("core_clk", gcc_blsp1_qup2_spi_apps_clk.c, ""),
Subbaraman Narayanamurthy3f93ab12012-08-17 19:39:47 -07004841 CLK_LOOKUP("core_clk", gcc_blsp1_qup1_spi_apps_clk.c, "f9923000.spi"),
4842 CLK_LOOKUP("iface_clk", gcc_blsp1_ahb_clk.c, "f9923000.spi"),
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004843 CLK_LOOKUP("core_clk", gcc_blsp1_qup3_i2c_apps_clk.c, ""),
4844 CLK_LOOKUP("core_clk", gcc_blsp1_qup3_spi_apps_clk.c, ""),
4845 CLK_LOOKUP("core_clk", gcc_blsp1_qup4_i2c_apps_clk.c, ""),
4846 CLK_LOOKUP("core_clk", gcc_blsp1_qup4_spi_apps_clk.c, ""),
4847 CLK_LOOKUP("core_clk", gcc_blsp1_qup5_i2c_apps_clk.c, ""),
4848 CLK_LOOKUP("core_clk", gcc_blsp1_qup5_spi_apps_clk.c, ""),
4849 CLK_LOOKUP("core_clk", gcc_blsp1_qup6_i2c_apps_clk.c, ""),
4850 CLK_LOOKUP("core_clk", gcc_blsp1_qup6_spi_apps_clk.c, ""),
4851 CLK_LOOKUP("core_clk", gcc_blsp1_uart1_apps_clk.c, ""),
Stepan Moskovchenko5269b602012-08-08 17:57:09 -07004852 CLK_LOOKUP("core_clk", gcc_blsp1_uart2_apps_clk.c, "f991e000.serial"),
Stepan Moskovchenkof97dede72012-08-08 17:40:44 -07004853 CLK_LOOKUP("core_clk", gcc_blsp1_uart3_apps_clk.c, "f991f000.serial"),
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004854 CLK_LOOKUP("core_clk", gcc_blsp1_uart4_apps_clk.c, ""),
4855 CLK_LOOKUP("core_clk", gcc_blsp1_uart5_apps_clk.c, ""),
4856 CLK_LOOKUP("core_clk", gcc_blsp1_uart6_apps_clk.c, ""),
4857
Sagar Dharia8a73da92012-08-11 16:41:25 -06004858 CLK_LOOKUP("iface_clk", gcc_blsp2_ahb_clk.c, "f9967000.i2c"),
Sagar Dhariae0bb6502012-08-10 20:25:51 -06004859 CLK_LOOKUP("iface_clk", gcc_blsp2_ahb_clk.c, "f9966000.spi"),
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004860 CLK_LOOKUP("iface_clk", gcc_blsp2_ahb_clk.c, "f995e000.serial"),
Saket Saurabhf34322b2013-01-15 11:57:25 +05304861 CLK_LOOKUP("iface_clk", gcc_blsp2_ahb_clk.c, "f995d000.uart"),
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004862 CLK_LOOKUP("core_clk", gcc_blsp2_qup1_i2c_apps_clk.c, ""),
4863 CLK_LOOKUP("core_clk", gcc_blsp2_qup1_spi_apps_clk.c, ""),
4864 CLK_LOOKUP("core_clk", gcc_blsp2_qup2_i2c_apps_clk.c, ""),
4865 CLK_LOOKUP("core_clk", gcc_blsp2_qup2_spi_apps_clk.c, ""),
Vikram Mulukutla82da88d2012-05-04 11:24:03 -07004866 CLK_LOOKUP("core_clk", gcc_blsp2_qup3_i2c_apps_clk.c, ""),
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004867 CLK_LOOKUP("core_clk", gcc_blsp2_qup3_spi_apps_clk.c, ""),
Sagar Dharia8a73da92012-08-11 16:41:25 -06004868 CLK_LOOKUP("core_clk", gcc_blsp2_qup4_i2c_apps_clk.c, ""),
Sagar Dharia8a73da92012-08-11 16:41:25 -06004869 CLK_LOOKUP("core_clk", gcc_blsp2_qup5_i2c_apps_clk.c, "f9967000.i2c"),
Sagar Dhariae0bb6502012-08-10 20:25:51 -06004870 CLK_LOOKUP("core_clk", gcc_blsp2_qup4_spi_apps_clk.c, "f9966000.spi"),
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004871 CLK_LOOKUP("core_clk", gcc_blsp2_qup5_spi_apps_clk.c, ""),
4872 CLK_LOOKUP("core_clk", gcc_blsp2_qup6_i2c_apps_clk.c, ""),
4873 CLK_LOOKUP("core_clk", gcc_blsp2_qup6_spi_apps_clk.c, ""),
Saket Saurabhf34322b2013-01-15 11:57:25 +05304874 CLK_LOOKUP("core_clk", gcc_blsp2_uart1_apps_clk.c, "f995d000.uart"),
Vikram Mulukutla82da88d2012-05-04 11:24:03 -07004875 CLK_LOOKUP("core_clk", gcc_blsp2_uart2_apps_clk.c, "f995e000.serial"),
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004876 CLK_LOOKUP("core_clk", gcc_blsp2_uart3_apps_clk.c, ""),
4877 CLK_LOOKUP("core_clk", gcc_blsp2_uart4_apps_clk.c, ""),
4878 CLK_LOOKUP("core_clk", gcc_blsp2_uart5_apps_clk.c, ""),
4879 CLK_LOOKUP("core_clk", gcc_blsp2_uart6_apps_clk.c, ""),
4880
Vikram Mulukutla3f580f82012-09-04 15:22:42 -07004881 CLK_LOOKUP("core_clk_src", ce1_clk_src.c, ""),
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004882 CLK_LOOKUP("core_clk", gcc_ce1_clk.c, ""),
4883 CLK_LOOKUP("core_clk", gcc_ce2_clk.c, ""),
4884 CLK_LOOKUP("iface_clk", gcc_ce1_ahb_clk.c, ""),
4885 CLK_LOOKUP("iface_clk", gcc_ce2_ahb_clk.c, ""),
4886 CLK_LOOKUP("bus_clk", gcc_ce1_axi_clk.c, ""),
4887 CLK_LOOKUP("bus_clk", gcc_ce2_axi_clk.c, ""),
4888
Mona Hossainb43e94b2012-05-07 08:52:06 -07004889 CLK_LOOKUP("core_clk", gcc_ce2_clk.c, "qcedev.0"),
4890 CLK_LOOKUP("iface_clk", gcc_ce2_ahb_clk.c, "qcedev.0"),
4891 CLK_LOOKUP("bus_clk", gcc_ce2_axi_clk.c, "qcedev.0"),
4892 CLK_LOOKUP("core_clk_src", ce2_clk_src.c, "qcedev.0"),
4893
4894 CLK_LOOKUP("core_clk", gcc_ce2_clk.c, "qcrypto.0"),
4895 CLK_LOOKUP("iface_clk", gcc_ce2_ahb_clk.c, "qcrypto.0"),
4896 CLK_LOOKUP("bus_clk", gcc_ce2_axi_clk.c, "qcrypto.0"),
4897 CLK_LOOKUP("core_clk_src", ce2_clk_src.c, "qcrypto.0"),
4898
Ramesh Masavarapuff377032012-09-14 12:11:32 -07004899 CLK_LOOKUP("core_clk", gcc_ce1_clk.c, "qseecom"),
4900 CLK_LOOKUP("iface_clk", gcc_ce1_ahb_clk.c, "qseecom"),
4901 CLK_LOOKUP("bus_clk", gcc_ce1_axi_clk.c, "qseecom"),
4902 CLK_LOOKUP("core_clk_src", ce1_clk_src.c, "qseecom"),
4903
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004904 CLK_LOOKUP("core_clk", gcc_gp1_clk.c, ""),
4905 CLK_LOOKUP("core_clk", gcc_gp2_clk.c, ""),
4906 CLK_LOOKUP("core_clk", gcc_gp3_clk.c, ""),
4907
4908 CLK_LOOKUP("core_clk", gcc_pdm2_clk.c, ""),
4909 CLK_LOOKUP("iface_clk", gcc_pdm_ahb_clk.c, ""),
4910 CLK_LOOKUP("iface_clk", gcc_prng_ahb_clk.c, ""),
4911
4912 CLK_LOOKUP("iface_clk", gcc_sdcc1_ahb_clk.c, "msm_sdcc.1"),
4913 CLK_LOOKUP("core_clk", gcc_sdcc1_apps_clk.c, "msm_sdcc.1"),
4914 CLK_LOOKUP("iface_clk", gcc_sdcc2_ahb_clk.c, "msm_sdcc.2"),
4915 CLK_LOOKUP("core_clk", gcc_sdcc2_apps_clk.c, "msm_sdcc.2"),
4916 CLK_LOOKUP("iface_clk", gcc_sdcc3_ahb_clk.c, "msm_sdcc.3"),
4917 CLK_LOOKUP("core_clk", gcc_sdcc3_apps_clk.c, "msm_sdcc.3"),
4918 CLK_LOOKUP("iface_clk", gcc_sdcc4_ahb_clk.c, "msm_sdcc.4"),
4919 CLK_LOOKUP("core_clk", gcc_sdcc4_apps_clk.c, "msm_sdcc.4"),
4920
Liron Kuch59339922013-01-01 18:29:47 +02004921 CLK_LOOKUP("iface_clk", gcc_tsif_ahb_clk.c, "f99d8000.msm_tspp"),
4922 CLK_LOOKUP("ref_clk", gcc_tsif_ref_clk.c, "f99d8000.msm_tspp"),
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004923
Manu Gautam1fd82ac2012-08-22 10:27:36 -07004924 CLK_LOOKUP("mem_clk", gcc_usb30_master_clk.c, "usb_bam"),
4925 CLK_LOOKUP("mem_iface_clk", gcc_sys_noc_usb3_axi_clk.c, "usb_bam"),
Manu Gautam51be9712012-06-06 14:54:52 +05304926 CLK_LOOKUP("core_clk", gcc_usb30_master_clk.c, "msm_dwc3"),
4927 CLK_LOOKUP("utmi_clk", gcc_usb30_mock_utmi_clk.c, "msm_dwc3"),
Vikram Mulukutla3b98a6d2012-08-15 20:35:25 -07004928 CLK_LOOKUP("iface_clk", gcc_sys_noc_usb3_axi_clk.c, "msm_dwc3"),
Gagan Macf095ded2012-10-16 16:37:39 -06004929 CLK_LOOKUP("iface_clk", gcc_sys_noc_usb3_axi_clk.c, "msm_usb3"),
Vikram Mulukutla3b98a6d2012-08-15 20:35:25 -07004930 CLK_LOOKUP("sleep_clk", gcc_usb30_sleep_clk.c, "msm_dwc3"),
4931 CLK_LOOKUP("sleep_a_clk", gcc_usb2a_phy_sleep_clk.c, "msm_dwc3"),
4932 CLK_LOOKUP("sleep_b_clk", gcc_usb2b_phy_sleep_clk.c, "msm_dwc3"),
Vikram Mulukutla02ea7112012-08-29 12:06:11 -07004933 CLK_LOOKUP("ref_clk", diff_clk.c, "msm_dwc3"),
Manu Gautam51be9712012-06-06 14:54:52 +05304934 CLK_LOOKUP("iface_clk", gcc_usb_hs_ahb_clk.c, "msm_otg"),
4935 CLK_LOOKUP("core_clk", gcc_usb_hs_system_clk.c, "msm_otg"),
4936 CLK_LOOKUP("iface_clk", gcc_usb_hsic_ahb_clk.c, "msm_hsic_host"),
4937 CLK_LOOKUP("phy_clk", gcc_usb_hsic_clk.c, "msm_hsic_host"),
4938 CLK_LOOKUP("cal_clk", gcc_usb_hsic_io_cal_clk.c, "msm_hsic_host"),
4939 CLK_LOOKUP("core_clk", gcc_usb_hsic_system_clk.c, "msm_hsic_host"),
Vikram Mulukutla8cb2bb52012-11-14 11:23:49 -08004940 CLK_LOOKUP("ref_clk", div_clk2.c, "msm_smsc_hub"),
Vijayavardhan Vennapusa1f5da0b2013-01-08 20:03:57 +05304941 CLK_LOOKUP("iface_clk", gcc_usb_hs_ahb_clk.c, "msm_ehci_host"),
4942 CLK_LOOKUP("core_clk", gcc_usb_hs_system_clk.c, "msm_ehci_host"),
4943 CLK_LOOKUP("sleep_clk", gcc_usb2b_phy_sleep_clk.c, "msm_ehci_host"),
Amy Maloche527acc42012-12-07 18:40:54 -08004944 CLK_LOOKUP("pwm_clk", div_clk2.c, "0-0048"),
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004945
4946 /* Multimedia clocks */
4947 CLK_LOOKUP("bus_clk_src", axi_clk_src.c, ""),
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07004948 CLK_LOOKUP("bus_clk", mmss_mmssnoc_axi_clk.c, ""),
Vikram Mulukutlabc59ee82012-11-07 18:22:36 -08004949 CLK_LOOKUP("bus_clk", mmssnoc_ahb_clk.c, ""),
Asaf Penso6b5251b2012-10-11 12:27:03 -07004950 CLK_LOOKUP("core_clk", mdss_edpaux_clk.c, "fd923400.qcom,mdss_edp"),
4951 CLK_LOOKUP("pixel_clk", mdss_edppixel_clk.c, "fd923400.qcom,mdss_edp"),
4952 CLK_LOOKUP("link_clk", mdss_edplink_clk.c, "fd923400.qcom,mdss_edp"),
Chandan Uddaraju19203fa2012-07-31 00:28:02 -07004953 CLK_LOOKUP("byte_clk", mdss_byte0_clk.c, "fd922800.qcom,mdss_dsi"),
Chandan Uddarajufcd5ef42012-12-11 10:36:39 -08004954 CLK_LOOKUP("byte_clk", mdss_byte1_clk.c, "fd922e00.qcom,mdss_dsi"),
Chandan Uddaraju19203fa2012-07-31 00:28:02 -07004955 CLK_LOOKUP("core_clk", mdss_esc0_clk.c, "fd922800.qcom,mdss_dsi"),
Chandan Uddarajufcd5ef42012-12-11 10:36:39 -08004956 CLK_LOOKUP("core_clk", mdss_esc1_clk.c, "fd922e00.qcom,mdss_dsi"),
Chandan Uddaraju09adf322012-08-16 02:55:23 -07004957 CLK_LOOKUP("pixel_clk", mdss_pclk0_clk.c, "fd922800.qcom,mdss_dsi"),
Chandan Uddarajufcd5ef42012-12-11 10:36:39 -08004958 CLK_LOOKUP("pixel_clk", mdss_pclk1_clk.c, "fd922e00.qcom,mdss_dsi"),
Ujwal Patel9faae9a2012-09-10 19:00:02 -07004959 CLK_LOOKUP("iface_clk", mdss_ahb_clk.c, "fd922100.qcom,hdmi_tx"),
4960 CLK_LOOKUP("alt_iface_clk", mdss_hdmi_ahb_clk.c,
4961 "fd922100.qcom,hdmi_tx"),
Ujwal Patel7232cde2012-08-13 22:50:13 -07004962 CLK_LOOKUP("core_clk", mdss_hdmi_clk.c, "fd922100.qcom,hdmi_tx"),
4963 CLK_LOOKUP("extp_clk", mdss_extpclk_clk.c, "fd922100.qcom,hdmi_tx"),
Adrian Salido-Moreno5ef3ac02012-05-14 18:40:47 -07004964 CLK_LOOKUP("core_clk", mdss_mdp_clk.c, "mdp.0"),
4965 CLK_LOOKUP("lut_clk", mdss_mdp_lut_clk.c, "mdp.0"),
4966 CLK_LOOKUP("core_clk_src", mdp_clk_src.c, "mdp.0"),
4967 CLK_LOOKUP("vsync_clk", mdss_vsync_clk.c, "mdp.0"),
Kevin Chanb4b5f862012-08-23 14:34:33 -07004968
4969 /* MM sensor clocks */
Sreesudhan Ramakrish Ramkumar9f2ea272012-08-28 18:31:25 -07004970 CLK_LOOKUP("cam_src_clk", mclk0_clk_src.c, "6e.qcom,camera"),
Sreesudhan Ramakrish Ramkumar39074612012-10-11 20:48:51 -07004971 CLK_LOOKUP("cam_src_clk", mclk2_clk_src.c, "6c.qcom,camera"),
Sreesudhan Ramakrish Ramkumar6be27812012-09-19 16:42:06 -07004972 CLK_LOOKUP("cam_src_clk", mclk1_clk_src.c, "90.qcom,camera"),
Sreesudhan Ramakrish Ramkumar9f2ea272012-08-28 18:31:25 -07004973 CLK_LOOKUP("cam_clk", camss_mclk0_clk.c, "6e.qcom,camera"),
Sreesudhan Ramakrish Ramkumar39074612012-10-11 20:48:51 -07004974 CLK_LOOKUP("cam_clk", camss_mclk2_clk.c, "6c.qcom,camera"),
Sreesudhan Ramakrish Ramkumar6be27812012-09-19 16:42:06 -07004975 CLK_LOOKUP("cam_clk", camss_mclk1_clk.c, "90.qcom,camera"),
Kevin Chanb4b5f862012-08-23 14:34:33 -07004976 CLK_LOOKUP("cam_clk", camss_mclk1_clk.c, ""),
4977 CLK_LOOKUP("cam_clk", camss_mclk2_clk.c, ""),
4978 CLK_LOOKUP("cam_clk", camss_mclk3_clk.c, ""),
4979 CLK_LOOKUP("cam_gp0_src_clk", mmss_gp0_clk_src.c, ""),
4980 CLK_LOOKUP("cam_gp1_src_clk", mmss_gp1_clk_src.c, ""),
4981 CLK_LOOKUP("cam_gp0_clk", camss_gp0_clk.c, ""),
4982 CLK_LOOKUP("cam_gp1_clk", camss_gp1_clk.c, ""),
4983 /* CCI clocks */
4984 CLK_LOOKUP("camss_top_ahb_clk", camss_top_ahb_clk.c,
4985 "fda0c000.qcom,cci"),
4986 CLK_LOOKUP("cci_ahb_clk", camss_cci_cci_ahb_clk.c, "fda0c000.qcom,cci"),
4987 CLK_LOOKUP("cci_src_clk", cci_clk_src.c, "fda0c000.qcom,cci"),
4988 CLK_LOOKUP("cci_clk", camss_cci_cci_clk.c, "fda0c000.qcom,cci"),
4989 /* CSIPHY clocks */
Shuzhen Wang65765c22013-01-08 14:37:15 -08004990 CLK_LOOKUP("camss_top_ahb_clk", camss_top_ahb_clk.c,
4991 "fda0ac00.qcom,csiphy"),
Kevin Chanb4b5f862012-08-23 14:34:33 -07004992 CLK_LOOKUP("ispif_ahb_clk", camss_ispif_ahb_clk.c,
4993 "fda0ac00.qcom,csiphy"),
4994 CLK_LOOKUP("csiphy_timer_src_clk", csi0phytimer_clk_src.c,
4995 "fda0ac00.qcom,csiphy"),
4996 CLK_LOOKUP("csiphy_timer_clk", camss_phy0_csi0phytimer_clk.c,
4997 "fda0ac00.qcom,csiphy"),
Shuzhen Wang65765c22013-01-08 14:37:15 -08004998 CLK_LOOKUP("camss_top_ahb_clk", camss_top_ahb_clk.c,
4999 "fda0b000.qcom,csiphy"),
Kevin Chanb4b5f862012-08-23 14:34:33 -07005000 CLK_LOOKUP("ispif_ahb_clk", camss_ispif_ahb_clk.c,
5001 "fda0b000.qcom,csiphy"),
5002 CLK_LOOKUP("csiphy_timer_src_clk", csi1phytimer_clk_src.c,
5003 "fda0b000.qcom,csiphy"),
5004 CLK_LOOKUP("csiphy_timer_clk", camss_phy1_csi1phytimer_clk.c,
5005 "fda0b000.qcom,csiphy"),
Shuzhen Wang65765c22013-01-08 14:37:15 -08005006 CLK_LOOKUP("camss_top_ahb_clk", camss_top_ahb_clk.c,
5007 "fda0b400.qcom,csiphy"),
Kevin Chanb4b5f862012-08-23 14:34:33 -07005008 CLK_LOOKUP("ispif_ahb_clk", camss_ispif_ahb_clk.c,
5009 "fda0b400.qcom,csiphy"),
5010 CLK_LOOKUP("csiphy_timer_src_clk", csi2phytimer_clk_src.c,
5011 "fda0b400.qcom,csiphy"),
5012 CLK_LOOKUP("csiphy_timer_clk", camss_phy2_csi2phytimer_clk.c,
5013 "fda0b400.qcom,csiphy"),
5014 /* CSID clocks */
Shuzhen Wang65765c22013-01-08 14:37:15 -08005015 CLK_LOOKUP("camss_top_ahb_clk", camss_top_ahb_clk.c,
5016 "fda08000.qcom,csid"),
5017 CLK_LOOKUP("ispif_ahb_clk", camss_ispif_ahb_clk.c,
5018 "fda08000.qcom,csid"),
Sreesudhan Ramakrish Ramkumar4f9d27f2012-08-28 23:51:38 -07005019 CLK_LOOKUP("csi0_ahb_clk", camss_csi0_ahb_clk.c, "fda08000.qcom,csid"),
5020 CLK_LOOKUP("csi0_src_clk", csi0_clk_src.c, "fda08000.qcom,csid"),
5021 CLK_LOOKUP("csi0_phy_clk", camss_csi0phy_clk.c, "fda08000.qcom,csid"),
5022 CLK_LOOKUP("csi0_clk", camss_csi0_clk.c, "fda08000.qcom,csid"),
5023 CLK_LOOKUP("csi0_pix_clk", camss_csi0pix_clk.c, "fda08000.qcom,csid"),
5024 CLK_LOOKUP("csi0_rdi_clk", camss_csi0rdi_clk.c, "fda08000.qcom,csid"),
5025
Shuzhen Wang65765c22013-01-08 14:37:15 -08005026 CLK_LOOKUP("camss_top_ahb_clk", camss_top_ahb_clk.c,
5027 "fda08400.qcom,csid"),
5028 CLK_LOOKUP("ispif_ahb_clk", camss_ispif_ahb_clk.c,
5029 "fda08400.qcom,csid"),
Sreesudhan Ramakrish Ramkumar4f9d27f2012-08-28 23:51:38 -07005030 CLK_LOOKUP("csi0_ahb_clk", camss_csi0_ahb_clk.c, "fda08400.qcom,csid"),
5031 CLK_LOOKUP("csi1_ahb_clk", camss_csi1_ahb_clk.c, "fda08400.qcom,csid"),
5032 CLK_LOOKUP("csi0_src_clk", csi0_clk_src.c, "fda08400.qcom,csid"),
5033 CLK_LOOKUP("csi1_src_clk", csi1_clk_src.c, "fda08400.qcom,csid"),
5034 CLK_LOOKUP("csi0_phy_clk", camss_csi0phy_clk.c, "fda08400.qcom,csid"),
5035 CLK_LOOKUP("csi1_phy_clk", camss_csi1phy_clk.c, "fda08400.qcom,csid"),
5036 CLK_LOOKUP("csi0_clk", camss_csi0_clk.c, "fda08400.qcom,csid"),
5037 CLK_LOOKUP("csi1_clk", camss_csi1_clk.c, "fda08400.qcom,csid"),
5038 CLK_LOOKUP("csi0_pix_clk", camss_csi0pix_clk.c, "fda08400.qcom,csid"),
5039 CLK_LOOKUP("csi1_pix_clk", camss_csi1pix_clk.c, "fda08400.qcom,csid"),
5040 CLK_LOOKUP("csi0_rdi_clk", camss_csi0rdi_clk.c, "fda08400.qcom,csid"),
5041 CLK_LOOKUP("csi1_rdi_clk", camss_csi1rdi_clk.c, "fda08400.qcom,csid"),
5042
Shuzhen Wang65765c22013-01-08 14:37:15 -08005043 CLK_LOOKUP("camss_top_ahb_clk", camss_top_ahb_clk.c,
5044 "fda08800.qcom,csid"),
5045 CLK_LOOKUP("ispif_ahb_clk", camss_ispif_ahb_clk.c,
5046 "fda08800.qcom,csid"),
Sreesudhan Ramakrish Ramkumar4f9d27f2012-08-28 23:51:38 -07005047 CLK_LOOKUP("csi0_ahb_clk", camss_csi0_ahb_clk.c, "fda08800.qcom,csid"),
5048 CLK_LOOKUP("csi2_ahb_clk", camss_csi2_ahb_clk.c, "fda08800.qcom,csid"),
5049 CLK_LOOKUP("csi0_src_clk", csi0_clk_src.c, "fda08800.qcom,csid"),
5050 CLK_LOOKUP("csi2_src_clk", csi2_clk_src.c, "fda08800.qcom,csid"),
5051 CLK_LOOKUP("csi0_phy_clk", camss_csi0phy_clk.c, "fda08800.qcom,csid"),
5052 CLK_LOOKUP("csi2_phy_clk", camss_csi2phy_clk.c, "fda08800.qcom,csid"),
5053 CLK_LOOKUP("csi0_clk", camss_csi0_clk.c, "fda08800.qcom,csid"),
5054 CLK_LOOKUP("csi2_clk", camss_csi2_clk.c, "fda08800.qcom,csid"),
5055 CLK_LOOKUP("csi0_pix_clk", camss_csi0pix_clk.c, "fda08800.qcom,csid"),
5056 CLK_LOOKUP("csi2_pix_clk", camss_csi2pix_clk.c, "fda08800.qcom,csid"),
5057 CLK_LOOKUP("csi0_rdi_clk", camss_csi0rdi_clk.c, "fda08800.qcom,csid"),
5058 CLK_LOOKUP("csi2_rdi_clk", camss_csi2rdi_clk.c, "fda08800.qcom,csid"),
5059
Shuzhen Wang65765c22013-01-08 14:37:15 -08005060 CLK_LOOKUP("camss_top_ahb_clk", camss_top_ahb_clk.c,
5061 "fda08c00.qcom,csid"),
5062 CLK_LOOKUP("ispif_ahb_clk", camss_ispif_ahb_clk.c,
5063 "fda08c00.qcom,csid"),
Sreesudhan Ramakrish Ramkumar4f9d27f2012-08-28 23:51:38 -07005064 CLK_LOOKUP("csi0_ahb_clk", camss_csi0_ahb_clk.c, "fda08c00.qcom,csid"),
5065 CLK_LOOKUP("csi3_ahb_clk", camss_csi3_ahb_clk.c, "fda08c00.qcom,csid"),
5066 CLK_LOOKUP("csi0_src_clk", csi0_clk_src.c, "fda08c00.qcom,csid"),
5067 CLK_LOOKUP("csi3_src_clk", csi3_clk_src.c, "fda08c00.qcom,csid"),
5068 CLK_LOOKUP("csi0_phy_clk", camss_csi0phy_clk.c, "fda08c00.qcom,csid"),
5069 CLK_LOOKUP("csi3_phy_clk", camss_csi3phy_clk.c, "fda08c00.qcom,csid"),
5070 CLK_LOOKUP("csi0_clk", camss_csi0_clk.c, "fda08c00.qcom,csid"),
5071 CLK_LOOKUP("csi3_clk", camss_csi3_clk.c, "fda08c00.qcom,csid"),
5072 CLK_LOOKUP("csi0_pix_clk", camss_csi0pix_clk.c, "fda08c00.qcom,csid"),
5073 CLK_LOOKUP("csi3_pix_clk", camss_csi3pix_clk.c, "fda08c00.qcom,csid"),
5074 CLK_LOOKUP("csi0_rdi_clk", camss_csi0rdi_clk.c, "fda08c00.qcom,csid"),
5075 CLK_LOOKUP("csi3_rdi_clk", camss_csi3rdi_clk.c, "fda08c00.qcom,csid"),
5076
Kevin Chan1d5fd4a2013-01-11 14:08:14 -08005077 /* ISPIF clocks */
5078 CLK_LOOKUP("camss_vfe_vfe_clk", camss_vfe_vfe0_clk.c,
5079 "fda0a000.qcom,ispif"),
5080 CLK_LOOKUP("camss_csi_vfe_clk", camss_csi_vfe0_clk.c,
5081 "fda0a000.qcom,ispif"),
5082 CLK_LOOKUP("camss_vfe_vfe_clk1", camss_vfe_vfe1_clk.c,
5083 "fda0a000.qcom,ispif"),
5084 CLK_LOOKUP("camss_csi_vfe_clk1", camss_csi_vfe1_clk.c,
5085 "fda0a000.qcom,ispif"),
5086
Kevin Chanb4b5f862012-08-23 14:34:33 -07005087 /*VFE clocks*/
5088 CLK_LOOKUP("camss_top_ahb_clk", camss_top_ahb_clk.c,
5089 "fda10000.qcom,vfe"),
5090 CLK_LOOKUP("vfe_clk_src", vfe0_clk_src.c, "fda10000.qcom,vfe"),
5091 CLK_LOOKUP("camss_vfe_vfe_clk", camss_vfe_vfe0_clk.c,
5092 "fda10000.qcom,vfe"),
5093 CLK_LOOKUP("camss_csi_vfe_clk", camss_csi_vfe0_clk.c,
5094 "fda10000.qcom,vfe"),
5095 CLK_LOOKUP("iface_clk", camss_vfe_vfe_ahb_clk.c, "fda10000.qcom,vfe"),
5096 CLK_LOOKUP("bus_clk", camss_vfe_vfe_axi_clk.c, "fda10000.qcom,vfe"),
5097 CLK_LOOKUP("alt_bus_clk", camss_vfe_vfe_ocmemnoc_clk.c,
5098 "fda10000.qcom,vfe"),
5099 CLK_LOOKUP("camss_top_ahb_clk", camss_top_ahb_clk.c,
5100 "fda14000.qcom,vfe"),
5101 CLK_LOOKUP("vfe_clk_src", vfe1_clk_src.c, "fda14000.qcom,vfe"),
5102 CLK_LOOKUP("camss_vfe_vfe_clk", camss_vfe_vfe1_clk.c,
5103 "fda14000.qcom,vfe"),
5104 CLK_LOOKUP("camss_csi_vfe_clk", camss_csi_vfe1_clk.c,
5105 "fda14000.qcom,vfe"),
5106 CLK_LOOKUP("iface_clk", camss_vfe_vfe_ahb_clk.c, "fda14000.qcom,vfe"),
5107 CLK_LOOKUP("bus_clk", camss_vfe_vfe_axi_clk.c, "fda14000.qcom,vfe"),
5108 CLK_LOOKUP("alt_bus_clk", camss_vfe_vfe_ocmemnoc_clk.c,
5109 "fda14000.qcom,vfe"),
Ashwini Raoef0ff762012-08-28 16:36:45 -07005110 /*Jpeg Clocks*/
5111 CLK_LOOKUP("core_clk", camss_jpeg_jpeg0_clk.c, "fda1c000.qcom,jpeg"),
5112 CLK_LOOKUP("core_clk", camss_jpeg_jpeg1_clk.c, "fda20000.qcom,jpeg"),
5113 CLK_LOOKUP("core_clk", camss_jpeg_jpeg2_clk.c, "fda24000.qcom,jpeg"),
5114 CLK_LOOKUP("iface_clk", camss_jpeg_jpeg_ahb_clk.c,
5115 "fda1c000.qcom,jpeg"),
5116 CLK_LOOKUP("iface_clk", camss_jpeg_jpeg_ahb_clk.c,
5117 "fda20000.qcom,jpeg"),
5118 CLK_LOOKUP("iface_clk", camss_jpeg_jpeg_ahb_clk.c,
5119 "fda24000.qcom,jpeg"),
Sathish Ambleyd1b89ed2012-02-07 21:47:47 -08005120 CLK_LOOKUP("iface_clk", camss_jpeg_jpeg_ahb_clk.c,
5121 "fda64000.qcom,iommu"),
5122 CLK_LOOKUP("core_clk", camss_jpeg_jpeg_axi_clk.c,
5123 "fda64000.qcom,iommu"),
Olav Haugana2eee312012-12-04 12:52:02 -08005124 CLK_LOOKUP("alt_core_clk", camss_top_ahb_clk.c, "fda64000.qcom,iommu"),
Ashwini Raoef0ff762012-08-28 16:36:45 -07005125 CLK_LOOKUP("bus_clk0", camss_jpeg_jpeg_axi_clk.c, "fda1c000.qcom,jpeg"),
5126 CLK_LOOKUP("bus_clk0", camss_jpeg_jpeg_axi_clk.c, "fda20000.qcom,jpeg"),
5127 CLK_LOOKUP("bus_clk0", camss_jpeg_jpeg_axi_clk.c, "fda24000.qcom,jpeg"),
5128 CLK_LOOKUP("alt_bus_clk", camss_jpeg_jpeg_ocmemnoc_clk.c,
5129 "fda1c000.qcom,jpeg"),
5130 CLK_LOOKUP("alt_bus_clk", camss_jpeg_jpeg_ocmemnoc_clk.c,
5131 "fda20000.qcom,jpeg"),
5132 CLK_LOOKUP("alt_bus_clk", camss_jpeg_jpeg_ocmemnoc_clk.c,
5133 "fda24000.qcom,jpeg"),
5134 CLK_LOOKUP("camss_top_ahb_clk", camss_top_ahb_clk.c,
5135 "fda1c000.qcom,jpeg"),
5136 CLK_LOOKUP("camss_top_ahb_clk", camss_top_ahb_clk.c,
5137 "fda20000.qcom,jpeg"),
5138 CLK_LOOKUP("camss_top_ahb_clk", camss_top_ahb_clk.c,
5139 "fda24000.qcom,jpeg"),
Sreesudhan Ramakrish Ramkumar9f79f602012-11-21 18:26:40 -08005140 CLK_LOOKUP("micro_iface_clk", camss_micro_ahb_clk.c,
5141 "fda04000.qcom,cpp"),
5142 CLK_LOOKUP("camss_top_ahb_clk", camss_top_ahb_clk.c,
5143 "fda04000.qcom,cpp"),
5144 CLK_LOOKUP("cpp_iface_clk", camss_vfe_cpp_ahb_clk.c,
5145 "fda04000.qcom,cpp"),
5146 CLK_LOOKUP("cpp_core_clk", camss_vfe_cpp_clk.c, "fda04000.qcom,cpp"),
5147 CLK_LOOKUP("cpp_bus_clk", camss_vfe_vfe_axi_clk.c, "fda04000.qcom,cpp"),
5148 CLK_LOOKUP("vfe_clk_src", vfe0_clk_src.c, "fda04000.qcom,cpp"),
5149 CLK_LOOKUP("camss_vfe_vfe_clk", camss_vfe_vfe0_clk.c,
5150 "fda04000.qcom,cpp"),
5151 CLK_LOOKUP("iface_clk", camss_vfe_vfe_ahb_clk.c, "fda04000.qcom,cpp"),
5152
5153
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07005154 CLK_LOOKUP("iface_clk", camss_micro_ahb_clk.c, ""),
Olav Haugana2eee312012-12-04 12:52:02 -08005155 CLK_LOOKUP("iface_clk", camss_vfe_vfe_ahb_clk.c, "fda44000.qcom,iommu"),
5156 CLK_LOOKUP("core_clk", camss_vfe_vfe_axi_clk.c, "fda44000.qcom,iommu"),
5157 CLK_LOOKUP("alt_core_clk", camss_top_ahb_clk.c, "fda44000.qcom,iommu"),
Adrian Salido-Moreno5ef3ac02012-05-14 18:40:47 -07005158 CLK_LOOKUP("iface_clk", mdss_ahb_clk.c, "mdp.0"),
Chandan Uddaraju09adf322012-08-16 02:55:23 -07005159 CLK_LOOKUP("iface_clk", mdss_ahb_clk.c, "mdss_dsi_clk_ctrl"),
Asaf Penso6b5251b2012-10-11 12:27:03 -07005160 CLK_LOOKUP("iface_clk", mdss_ahb_clk.c, "fd923400.qcom,mdss_edp"),
Sathish Ambleyd1b89ed2012-02-07 21:47:47 -08005161 CLK_LOOKUP("iface_clk", mdss_ahb_clk.c, "fd928000.qcom,iommu"),
5162 CLK_LOOKUP("core_clk", mdss_axi_clk.c, "fd928000.qcom,iommu"),
Adrian Salido-Moreno5ef3ac02012-05-14 18:40:47 -07005163 CLK_LOOKUP("bus_clk", mdss_axi_clk.c, "mdp.0"),
Vikram Mulukutlae3b03062012-05-16 12:07:08 -07005164 CLK_LOOKUP("core_clk", oxili_gfx3d_clk.c, "fdb00000.qcom,kgsl-3d0"),
5165 CLK_LOOKUP("iface_clk", oxilicx_ahb_clk.c, "fdb00000.qcom,kgsl-3d0"),
Vikram Mulukutla274b2d92012-07-13 15:53:04 -07005166 CLK_LOOKUP("mem_iface_clk", ocmemcx_ocmemnoc_clk.c,
5167 "fdb00000.qcom,kgsl-3d0"),
Vikram Mulukutlae3b03062012-05-16 12:07:08 -07005168 CLK_LOOKUP("core_clk", oxilicx_axi_clk.c, "fdb10000.qcom,iommu"),
5169 CLK_LOOKUP("iface_clk", oxilicx_ahb_clk.c, "fdb10000.qcom,iommu"),
Stepan Moskovchenkob26b8ca2012-07-24 19:42:44 -07005170 CLK_LOOKUP("alt_core_clk", oxili_gfx3d_clk.c, "fdb10000.qcom,iommu"),
Naveen Ramarajbea2d5d2012-08-15 17:26:43 -07005171 CLK_LOOKUP("core_clk", ocmemgx_core_clk.c, "fdd00000.qcom,ocmem"),
5172 CLK_LOOKUP("iface_clk", ocmemcx_ocmemnoc_clk.c, "fdd00000.qcom,ocmem"),
Sathish Ambleyd1b89ed2012-02-07 21:47:47 -08005173 CLK_LOOKUP("iface_clk", venus0_ahb_clk.c, "fdc84000.qcom,iommu"),
Stepan Moskovchenkob26b8ca2012-07-24 19:42:44 -07005174 CLK_LOOKUP("alt_core_clk", venus0_vcodec0_clk.c, "fdc84000.qcom,iommu"),
Sathish Ambleyd1b89ed2012-02-07 21:47:47 -08005175 CLK_LOOKUP("core_clk", venus0_axi_clk.c, "fdc84000.qcom,iommu"),
5176 CLK_LOOKUP("bus_clk", venus0_axi_clk.c, ""),
Tianyi Gou828798d2012-05-02 21:12:38 -07005177 CLK_LOOKUP("src_clk", vcodec0_clk_src.c, "fdce0000.qcom,venus"),
5178 CLK_LOOKUP("core_clk", venus0_vcodec0_clk.c, "fdce0000.qcom,venus"),
5179 CLK_LOOKUP("iface_clk", venus0_ahb_clk.c, "fdce0000.qcom,venus"),
5180 CLK_LOOKUP("bus_clk", venus0_axi_clk.c, "fdce0000.qcom,venus"),
5181 CLK_LOOKUP("mem_clk", venus0_ocmemnoc_clk.c, "fdce0000.qcom,venus"),
Vinay Kalia40680aa2012-07-23 12:45:39 -07005182 CLK_LOOKUP("core_clk", venus0_vcodec0_clk.c, "fdc00000.qcom,vidc"),
5183 CLK_LOOKUP("iface_clk", venus0_ahb_clk.c, "fdc00000.qcom,vidc"),
5184 CLK_LOOKUP("bus_clk", venus0_axi_clk.c, "fdc00000.qcom,vidc"),
5185 CLK_LOOKUP("mem_clk", venus0_ocmemnoc_clk.c, "fdc00000.qcom,vidc"),
Tianyi Gou828798d2012-05-02 21:12:38 -07005186
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07005187
5188 /* LPASS clocks */
Tianyi Gou7fea5da2012-12-06 15:56:31 -08005189 CLK_LOOKUP("bus_clk", gcc_mss_q6_bimc_axi_clk.c, "fc880000.qcom,mss"),
5190 CLK_LOOKUP("iface_clk", gcc_mss_cfg_ahb_clk.c, "fc880000.qcom,mss"),
5191 CLK_LOOKUP("mem_clk", gcc_boot_rom_ahb_clk.c, "fc880000.qcom,mss"),
Vikram Mulukutla31926eb2012-08-12 19:58:08 -07005192
Tianyi Gou7fea5da2012-12-06 15:56:31 -08005193 CLK_LOOKUP("core_clk", q6ss_xo_clk.c, "fe200000.qcom,lpass"),
5194 CLK_LOOKUP("bus_clk", gcc_lpass_q6_axi_clk.c, "fe200000.qcom,lpass"),
5195 CLK_LOOKUP("iface_clk", q6ss_ahb_lfabif_clk.c, "fe200000.qcom,lpass"),
5196 CLK_LOOKUP("reg_clk", q6ss_ahbm_clk.c, "fe200000.qcom,lpass"),
Hariprasad Dhalinarasimhade991f02012-05-31 13:15:51 -07005197 CLK_LOOKUP("core_clk", gcc_prng_ahb_clk.c, "msm_rng"),
Vikram Mulukutlaa967db42012-05-10 16:20:40 -07005198
Vikram Mulukutlab0ad9f32012-07-03 12:57:24 -07005199 CLK_LOOKUP("dfab_clk", pnoc_sps_clk.c, "msm_sps"),
Vikram Mulukutlad08a1522012-05-24 15:24:01 -07005200
5201 CLK_LOOKUP("bus_clk", snoc_clk.c, ""),
5202 CLK_LOOKUP("bus_clk", pnoc_clk.c, ""),
5203 CLK_LOOKUP("bus_clk", cnoc_clk.c, ""),
5204 CLK_LOOKUP("mem_clk", bimc_clk.c, ""),
5205 CLK_LOOKUP("mem_clk", ocmemgx_clk.c, ""),
5206 CLK_LOOKUP("bus_clk", snoc_a_clk.c, ""),
5207 CLK_LOOKUP("bus_clk", pnoc_a_clk.c, ""),
5208 CLK_LOOKUP("bus_clk", cnoc_a_clk.c, ""),
5209 CLK_LOOKUP("mem_clk", bimc_a_clk.c, ""),
5210 CLK_LOOKUP("mem_clk", ocmemgx_a_clk.c, ""),
5211
5212 CLK_LOOKUP("bus_clk", cnoc_msmbus_clk.c, "msm_config_noc"),
5213 CLK_LOOKUP("bus_a_clk", cnoc_msmbus_a_clk.c, "msm_config_noc"),
5214 CLK_LOOKUP("bus_clk", snoc_msmbus_clk.c, "msm_sys_noc"),
5215 CLK_LOOKUP("bus_a_clk", snoc_msmbus_a_clk.c, "msm_sys_noc"),
5216 CLK_LOOKUP("bus_clk", pnoc_msmbus_clk.c, "msm_periph_noc"),
5217 CLK_LOOKUP("bus_a_clk", pnoc_msmbus_a_clk.c, "msm_periph_noc"),
5218 CLK_LOOKUP("mem_clk", bimc_msmbus_clk.c, "msm_bimc"),
5219 CLK_LOOKUP("mem_a_clk", bimc_msmbus_a_clk.c, "msm_bimc"),
5220 CLK_LOOKUP("mem_clk", bimc_acpu_a_clk.c, ""),
5221 CLK_LOOKUP("ocmem_clk", ocmemgx_msmbus_clk.c, "msm_bus"),
5222 CLK_LOOKUP("ocmem_a_clk", ocmemgx_msmbus_a_clk.c, "msm_bus"),
5223 CLK_LOOKUP("bus_clk", ocmemnoc_clk.c, "msm_ocmem_noc"),
5224 CLK_LOOKUP("bus_a_clk", ocmemnoc_clk.c, "msm_ocmem_noc"),
Vikram Mulukutlac15dac02012-08-09 13:31:08 -07005225 CLK_LOOKUP("bus_clk", mmss_s0_axi_clk.c, "msm_mmss_noc"),
5226 CLK_LOOKUP("bus_a_clk", mmss_s0_axi_clk.c, "msm_mmss_noc"),
Vikram Mulukutla274b2d92012-07-13 15:53:04 -07005227 CLK_LOOKUP("iface_clk", gcc_mmss_noc_cfg_ahb_clk.c, ""),
5228 CLK_LOOKUP("iface_clk", gcc_ocmem_noc_cfg_ahb_clk.c, ""),
Vikram Mulukutla0f63e002012-06-28 14:29:44 -07005229
5230 CLK_LOOKUP("core_clk", qdss_clk.c, "coresight-tmc-etr"),
5231 CLK_LOOKUP("core_clk", qdss_clk.c, "coresight-tpiu"),
5232 CLK_LOOKUP("core_clk", qdss_clk.c, "coresight-replicator"),
5233 CLK_LOOKUP("core_clk", qdss_clk.c, "coresight-tmc-etf"),
5234 CLK_LOOKUP("core_clk", qdss_clk.c, "coresight-funnel-merg"),
5235 CLK_LOOKUP("core_clk", qdss_clk.c, "coresight-funnel-in0"),
5236 CLK_LOOKUP("core_clk", qdss_clk.c, "coresight-funnel-in1"),
5237 CLK_LOOKUP("core_clk", qdss_clk.c, "coresight-funnel-kpss"),
5238 CLK_LOOKUP("core_clk", qdss_clk.c, "coresight-funnel-mmss"),
5239 CLK_LOOKUP("core_clk", qdss_clk.c, "coresight-stm"),
5240 CLK_LOOKUP("core_clk", qdss_clk.c, "coresight-etm0"),
5241 CLK_LOOKUP("core_clk", qdss_clk.c, "coresight-etm1"),
5242 CLK_LOOKUP("core_clk", qdss_clk.c, "coresight-etm2"),
5243 CLK_LOOKUP("core_clk", qdss_clk.c, "coresight-etm3"),
5244
5245 CLK_LOOKUP("core_a_clk", qdss_a_clk.c, "coresight-tmc-etr"),
5246 CLK_LOOKUP("core_a_clk", qdss_a_clk.c, "coresight-tpiu"),
5247 CLK_LOOKUP("core_a_clk", qdss_a_clk.c, "coresight-replicator"),
5248 CLK_LOOKUP("core_a_clk", qdss_a_clk.c, "coresight-tmc-etf"),
5249 CLK_LOOKUP("core_a_clk", qdss_a_clk.c, "coresight-funnel-merg"),
5250 CLK_LOOKUP("core_a_clk", qdss_a_clk.c, "coresight-funnel-in0"),
5251 CLK_LOOKUP("core_a_clk", qdss_a_clk.c, "coresight-funnel-in1"),
5252 CLK_LOOKUP("core_a_clk", qdss_a_clk.c, "coresight-funnel-kpss"),
5253 CLK_LOOKUP("core_a_clk", qdss_a_clk.c, "coresight-funnel-mmss"),
5254 CLK_LOOKUP("core_a_clk", qdss_a_clk.c, "coresight-stm"),
5255 CLK_LOOKUP("core_a_clk", qdss_a_clk.c, "coresight-etm0"),
5256 CLK_LOOKUP("core_a_clk", qdss_a_clk.c, "coresight-etm1"),
5257 CLK_LOOKUP("core_a_clk", qdss_a_clk.c, "coresight-etm2"),
5258 CLK_LOOKUP("core_a_clk", qdss_a_clk.c, "coresight-etm3"),
Matt Wagantalledf2fad2012-08-06 16:11:46 -07005259
5260 CLK_LOOKUP("l2_m_clk", l2_m_clk, ""),
5261 CLK_LOOKUP("krait0_m_clk", krait0_m_clk, ""),
5262 CLK_LOOKUP("krait1_m_clk", krait1_m_clk, ""),
5263 CLK_LOOKUP("krait2_m_clk", krait2_m_clk, ""),
5264 CLK_LOOKUP("krait3_m_clk", krait3_m_clk, ""),
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07005265};
5266
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07005267static struct pll_config_regs mmpll0_regs __initdata = {
5268 .l_reg = (void __iomem *)MMPLL0_L_REG,
5269 .m_reg = (void __iomem *)MMPLL0_M_REG,
5270 .n_reg = (void __iomem *)MMPLL0_N_REG,
5271 .config_reg = (void __iomem *)MMPLL0_USER_CTL_REG,
5272 .mode_reg = (void __iomem *)MMPLL0_MODE_REG,
5273 .base = &virt_bases[MMSS_BASE],
5274};
5275
5276/* MMPLL0 at 800 MHz, main output enabled. */
5277static struct pll_config mmpll0_config __initdata = {
5278 .l = 0x29,
5279 .m = 0x2,
5280 .n = 0x3,
5281 .vco_val = 0x0,
5282 .vco_mask = BM(21, 20),
5283 .pre_div_val = 0x0,
5284 .pre_div_mask = BM(14, 12),
5285 .post_div_val = 0x0,
5286 .post_div_mask = BM(9, 8),
5287 .mn_ena_val = BIT(24),
5288 .mn_ena_mask = BIT(24),
5289 .main_output_val = BIT(0),
5290 .main_output_mask = BIT(0),
5291};
5292
5293static struct pll_config_regs mmpll1_regs __initdata = {
5294 .l_reg = (void __iomem *)MMPLL1_L_REG,
5295 .m_reg = (void __iomem *)MMPLL1_M_REG,
5296 .n_reg = (void __iomem *)MMPLL1_N_REG,
5297 .config_reg = (void __iomem *)MMPLL1_USER_CTL_REG,
5298 .mode_reg = (void __iomem *)MMPLL1_MODE_REG,
5299 .base = &virt_bases[MMSS_BASE],
5300};
5301
Vikram Mulukutla293c4692013-01-03 15:09:47 -08005302/* MMPLL1 at 846 MHz, main output enabled. */
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07005303static struct pll_config mmpll1_config __initdata = {
Vikram Mulukutlad16a8f12012-07-20 13:33:45 -07005304 .l = 0x2C,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07005305 .m = 0x1,
Vikram Mulukutlad16a8f12012-07-20 13:33:45 -07005306 .n = 0x10,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07005307 .vco_val = 0x0,
5308 .vco_mask = BM(21, 20),
5309 .pre_div_val = 0x0,
5310 .pre_div_mask = BM(14, 12),
5311 .post_div_val = 0x0,
5312 .post_div_mask = BM(9, 8),
5313 .mn_ena_val = BIT(24),
5314 .mn_ena_mask = BIT(24),
5315 .main_output_val = BIT(0),
5316 .main_output_mask = BIT(0),
5317};
5318
Vikram Mulukutla293c4692013-01-03 15:09:47 -08005319/* MMPLL1 at 1167 MHz, main output enabled. */
5320static struct pll_config mmpll1_v2_config __initdata = {
5321 .l = 60,
5322 .m = 25,
5323 .n = 32,
5324 .vco_val = 0x0,
5325 .vco_mask = BM(21, 20),
5326 .pre_div_val = 0x0,
5327 .pre_div_mask = BM(14, 12),
5328 .post_div_val = 0x0,
5329 .post_div_mask = BM(9, 8),
5330 .mn_ena_val = BIT(24),
5331 .mn_ena_mask = BIT(24),
5332 .main_output_val = BIT(0),
5333 .main_output_mask = BIT(0),
5334};
5335
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07005336static struct pll_config_regs mmpll3_regs __initdata = {
5337 .l_reg = (void __iomem *)MMPLL3_L_REG,
5338 .m_reg = (void __iomem *)MMPLL3_M_REG,
5339 .n_reg = (void __iomem *)MMPLL3_N_REG,
5340 .config_reg = (void __iomem *)MMPLL3_USER_CTL_REG,
5341 .mode_reg = (void __iomem *)MMPLL3_MODE_REG,
5342 .base = &virt_bases[MMSS_BASE],
5343};
5344
5345/* MMPLL3 at 820 MHz, main output enabled. */
5346static struct pll_config mmpll3_config __initdata = {
5347 .l = 0x2A,
5348 .m = 0x11,
5349 .n = 0x18,
5350 .vco_val = 0x0,
5351 .vco_mask = BM(21, 20),
5352 .pre_div_val = 0x0,
5353 .pre_div_mask = BM(14, 12),
5354 .post_div_val = 0x0,
5355 .post_div_mask = BM(9, 8),
5356 .mn_ena_val = BIT(24),
5357 .mn_ena_mask = BIT(24),
5358 .main_output_val = BIT(0),
5359 .main_output_mask = BIT(0),
5360};
5361
Vikram Mulukutla293c4692013-01-03 15:09:47 -08005362/* MMPLL3 at 930 MHz, main output enabled. */
5363static struct pll_config mmpll3_v2_config __initdata = {
5364 .l = 48,
5365 .m = 7,
5366 .n = 16,
5367 .vco_val = 0x0,
5368 .vco_mask = BM(21, 20),
5369 .pre_div_val = 0x0,
5370 .pre_div_mask = BM(14, 12),
5371 .post_div_val = 0x0,
5372 .post_div_mask = BM(9, 8),
5373 .mn_ena_val = BIT(24),
5374 .mn_ena_mask = BIT(24),
5375 .main_output_val = BIT(0),
5376 .main_output_mask = BIT(0),
5377};
5378
Vikram Mulukutla14ee37d2012-08-08 15:18:09 -07005379#define PWR_ON_MASK BIT(31)
5380#define EN_REST_WAIT_MASK (0xF << 20)
5381#define EN_FEW_WAIT_MASK (0xF << 16)
5382#define CLK_DIS_WAIT_MASK (0xF << 12)
5383#define SW_OVERRIDE_MASK BIT(2)
5384#define HW_CONTROL_MASK BIT(1)
5385#define SW_COLLAPSE_MASK BIT(0)
5386
5387/* Wait 2^n CXO cycles between all states. Here, n=2 (4 cycles). */
5388#define EN_REST_WAIT_VAL (0x2 << 20)
5389#define EN_FEW_WAIT_VAL (0x2 << 16)
5390#define CLK_DIS_WAIT_VAL (0x2 << 12)
5391#define GDSC_TIMEOUT_US 50000
5392
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07005393static void __init reg_init(void)
5394{
Vikram Mulukutla6cce1552013-02-12 19:08:59 -08005395 u32 regval;
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07005396
Vikram Mulukutla6da35d32012-07-18 13:55:31 -07005397 configure_sr_hpm_lp_pll(&mmpll0_config, &mmpll0_regs, 1);
Vikram Mulukutla293c4692013-01-03 15:09:47 -08005398
5399 if (SOCINFO_VERSION_MAJOR(socinfo_get_version()) == 2) {
5400 configure_sr_hpm_lp_pll(&mmpll1_v2_config, &mmpll1_regs, 1);
5401 configure_sr_hpm_lp_pll(&mmpll3_v2_config, &mmpll3_regs, 0);
5402 } else {
5403 configure_sr_hpm_lp_pll(&mmpll1_config, &mmpll1_regs, 1);
5404 configure_sr_hpm_lp_pll(&mmpll3_config, &mmpll3_regs, 0);
5405 }
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07005406
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07005407 /* Vote for GPLL0 to turn on. Needed by acpuclock. */
5408 regval = readl_relaxed(GCC_REG_BASE(APCS_GPLL_ENA_VOTE_REG));
5409 regval |= BIT(0);
5410 writel_relaxed(regval, GCC_REG_BASE(APCS_GPLL_ENA_VOTE_REG));
5411
5412 /*
Vikram Mulukutla4e2a89c2013-02-06 22:39:38 -08005413 * V2 requires additional votes to allow the LPASS and MMSS
5414 * controllers to use GPLL0.
5415 */
5416 if (SOCINFO_VERSION_MAJOR(socinfo_get_version()) == 2) {
5417 regval = readl_relaxed(
5418 GCC_REG_BASE(APCS_CLOCK_BRANCH_ENA_VOTE));
5419 writel_relaxed(regval | BIT(26) | BIT(25),
5420 GCC_REG_BASE(APCS_CLOCK_BRANCH_ENA_VOTE));
5421 }
5422
5423 /*
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07005424 * TODO: Confirm that no clocks need to be voted on in this sleep vote
5425 * register.
5426 */
5427 writel_relaxed(0x0, GCC_REG_BASE(APCS_CLOCK_SLEEP_ENA_VOTE));
5428}
5429
Vikram Mulukutlafe0f5a52012-08-16 16:51:08 -07005430static void __init mdss_clock_setup(void)
5431{
Vikram Mulukutlaa42d7c22013-02-22 18:38:04 -08005432 clk_ops_byte = clk_ops_rcg;
Vikram Mulukutlafe0f5a52012-08-16 16:51:08 -07005433 clk_ops_byte.set_rate = set_rate_byte;
Vikram Mulukutlafe0f5a52012-08-16 16:51:08 -07005434
Vikram Mulukutlaa42d7c22013-02-22 18:38:04 -08005435 clk_ops_pixel = clk_ops_rcg_mnd;
Vikram Mulukutlafe0f5a52012-08-16 16:51:08 -07005436 clk_ops_pixel.set_rate = set_rate_pixel;
Vikram Mulukutlafe0f5a52012-08-16 16:51:08 -07005437
Vikram Mulukutla5acd7932012-11-29 14:20:34 -08005438 clk_ops_rcg_hdmi = clk_ops_rcg;
5439 clk_ops_rcg_hdmi.set_rate = rcg_clk_set_rate_hdmi;
5440
Vikram Mulukutlafe0f5a52012-08-16 16:51:08 -07005441 mdss_clk_ctrl_init();
5442}
5443
Abhimanyu Kapur90ced6e2012-06-26 17:41:25 -07005444static void __init msm8974_clock_post_init(void)
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07005445{
Vikram Mulukutla293c4692013-01-03 15:09:47 -08005446 if (SOCINFO_VERSION_MAJOR(socinfo_get_version()) == 2) {
5447 clk_set_rate(&axi_clk_src.c, 333430000);
5448 clk_set_rate(&ocmemnoc_clk_src.c, 333430000);
5449 } else {
5450 clk_set_rate(&axi_clk_src.c, 282000000);
5451 clk_set_rate(&ocmemnoc_clk_src.c, 282000000);
5452 }
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07005453
Vikram Mulukutlaf8634bb2012-06-28 16:21:21 -07005454 /*
Vikram Mulukutla09e20812012-07-12 11:32:42 -07005455 * Hold an active set vote at a rate of 40MHz for the MMSS NOC AHB
5456 * source. Sleep set vote is 0.
5457 */
5458 clk_set_rate(&mmssnoc_ahb_a_clk.c, 40000000);
5459 clk_prepare_enable(&mmssnoc_ahb_a_clk.c);
5460
5461 /*
Vikram Mulukutlaf8634bb2012-06-28 16:21:21 -07005462 * Hold an active set vote for CXO; this is because CXO is expected
5463 * to remain on whenever CPUs aren't power collapsed.
5464 */
5465 clk_prepare_enable(&cxo_a_clk_src.c);
5466
Vikram Mulukutla274b2d92012-07-13 15:53:04 -07005467 /*
5468 * TODO: Temporarily enable NOC configuration AHB clocks. Remove when
5469 * the bus driver is ready.
5470 */
5471 clk_prepare_enable(&gcc_mmss_noc_cfg_ahb_clk.c);
5472 clk_prepare_enable(&gcc_ocmem_noc_cfg_ahb_clk.c);
5473
Vikram Mulukutlafe0f5a52012-08-16 16:51:08 -07005474 mdss_clock_setup();
5475
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07005476 /* Set rates for single-rate clocks. */
5477 clk_set_rate(&usb30_master_clk_src.c,
5478 usb30_master_clk_src.freq_tbl[0].freq_hz);
5479 clk_set_rate(&tsif_ref_clk_src.c,
5480 tsif_ref_clk_src.freq_tbl[0].freq_hz);
5481 clk_set_rate(&usb_hs_system_clk_src.c,
5482 usb_hs_system_clk_src.freq_tbl[0].freq_hz);
5483 clk_set_rate(&usb_hsic_clk_src.c,
5484 usb_hsic_clk_src.freq_tbl[0].freq_hz);
5485 clk_set_rate(&usb_hsic_io_cal_clk_src.c,
5486 usb_hsic_io_cal_clk_src.freq_tbl[0].freq_hz);
5487 clk_set_rate(&usb_hsic_system_clk_src.c,
5488 usb_hsic_system_clk_src.freq_tbl[0].freq_hz);
5489 clk_set_rate(&usb30_mock_utmi_clk_src.c,
5490 usb30_mock_utmi_clk_src.freq_tbl[0].freq_hz);
5491 clk_set_rate(&pdm2_clk_src.c, pdm2_clk_src.freq_tbl[0].freq_hz);
5492 clk_set_rate(&cci_clk_src.c, cci_clk_src.freq_tbl[0].freq_hz);
5493 clk_set_rate(&mclk0_clk_src.c, mclk0_clk_src.freq_tbl[0].freq_hz);
5494 clk_set_rate(&mclk1_clk_src.c, mclk1_clk_src.freq_tbl[0].freq_hz);
5495 clk_set_rate(&mclk2_clk_src.c, mclk2_clk_src.freq_tbl[0].freq_hz);
5496 clk_set_rate(&edpaux_clk_src.c, edpaux_clk_src.freq_tbl[0].freq_hz);
5497 clk_set_rate(&esc0_clk_src.c, esc0_clk_src.freq_tbl[0].freq_hz);
5498 clk_set_rate(&esc1_clk_src.c, esc1_clk_src.freq_tbl[0].freq_hz);
5499 clk_set_rate(&hdmi_clk_src.c, hdmi_clk_src.freq_tbl[0].freq_hz);
5500 clk_set_rate(&vsync_clk_src.c, vsync_clk_src.freq_tbl[0].freq_hz);
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07005501}
5502
Matt Wagantalledf2fad2012-08-06 16:11:46 -07005503#define GCC_CC_PHYS 0xFC400000
5504#define GCC_CC_SIZE SZ_16K
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07005505
Matt Wagantalledf2fad2012-08-06 16:11:46 -07005506#define MMSS_CC_PHYS 0xFD8C0000
5507#define MMSS_CC_SIZE SZ_256K
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07005508
Matt Wagantalledf2fad2012-08-06 16:11:46 -07005509#define LPASS_CC_PHYS 0xFE000000
5510#define LPASS_CC_SIZE SZ_256K
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07005511
Matt Wagantalledf2fad2012-08-06 16:11:46 -07005512#define APCS_GCC_CC_PHYS 0xF9011000
5513#define APCS_GCC_CC_SIZE SZ_4K
Vikram Mulukutlaa967db42012-05-10 16:20:40 -07005514
Vikram Mulukutlaa57e6e42013-01-23 16:58:08 -08005515static struct clk *qup_i2c_clks[][2] __initdata = {
5516 {&gcc_blsp1_qup1_i2c_apps_clk.c, &blsp1_qup1_i2c_apps_clk_src.c,},
5517 {&gcc_blsp1_qup2_i2c_apps_clk.c, &blsp1_qup2_i2c_apps_clk_src.c,},
5518 {&gcc_blsp1_qup3_i2c_apps_clk.c, &blsp1_qup3_i2c_apps_clk_src.c,},
5519 {&gcc_blsp1_qup4_i2c_apps_clk.c, &blsp1_qup4_i2c_apps_clk_src.c,},
5520 {&gcc_blsp1_qup5_i2c_apps_clk.c, &blsp1_qup5_i2c_apps_clk_src.c,},
5521 {&gcc_blsp1_qup6_i2c_apps_clk.c, &blsp1_qup6_i2c_apps_clk_src.c,},
5522 {&gcc_blsp2_qup1_i2c_apps_clk.c, &blsp2_qup1_i2c_apps_clk_src.c,},
5523 {&gcc_blsp2_qup2_i2c_apps_clk.c, &blsp2_qup2_i2c_apps_clk_src.c,},
5524 {&gcc_blsp2_qup3_i2c_apps_clk.c, &blsp2_qup3_i2c_apps_clk_src.c,},
5525 {&gcc_blsp2_qup4_i2c_apps_clk.c, &blsp2_qup4_i2c_apps_clk_src.c,},
5526 {&gcc_blsp2_qup5_i2c_apps_clk.c, &blsp2_qup5_i2c_apps_clk_src.c,},
5527 {&gcc_blsp2_qup6_i2c_apps_clk.c, &blsp2_qup6_i2c_apps_clk_src.c,},
5528};
5529
Abhimanyu Kapur90ced6e2012-06-26 17:41:25 -07005530static void __init msm8974_clock_pre_init(void)
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07005531{
5532 virt_bases[GCC_BASE] = ioremap(GCC_CC_PHYS, GCC_CC_SIZE);
5533 if (!virt_bases[GCC_BASE])
Abhimanyu Kapur90ced6e2012-06-26 17:41:25 -07005534 panic("clock-8974: Unable to ioremap GCC memory!");
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07005535
5536 virt_bases[MMSS_BASE] = ioremap(MMSS_CC_PHYS, MMSS_CC_SIZE);
5537 if (!virt_bases[MMSS_BASE])
Abhimanyu Kapur90ced6e2012-06-26 17:41:25 -07005538 panic("clock-8974: Unable to ioremap MMSS_CC memory!");
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07005539
5540 virt_bases[LPASS_BASE] = ioremap(LPASS_CC_PHYS, LPASS_CC_SIZE);
5541 if (!virt_bases[LPASS_BASE])
Abhimanyu Kapur90ced6e2012-06-26 17:41:25 -07005542 panic("clock-8974: Unable to ioremap LPASS_CC memory!");
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07005543
Matt Wagantalledf2fad2012-08-06 16:11:46 -07005544 virt_bases[APCS_BASE] = ioremap(APCS_GCC_CC_PHYS, APCS_GCC_CC_SIZE);
5545 if (!virt_bases[APCS_BASE])
5546 panic("clock-8974: Unable to ioremap APCS_GCC_CC memory!");
5547
Vikram Mulukutla6da35d32012-07-18 13:55:31 -07005548 clk_ops_local_pll.enable = sr_hpm_lp_pll_clk_enable;
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07005549
Vikram Mulukutlab7a1a742012-05-30 17:24:33 -07005550 vdd_dig_reg = rpm_regulator_get(NULL, "vdd_dig");
5551 if (IS_ERR(vdd_dig_reg))
Vikram Mulukutla19245e02012-07-23 15:58:04 -07005552 panic("clock-8974: Unable to get the vdd_dig regulator!");
Vikram Mulukutlab7a1a742012-05-30 17:24:33 -07005553
5554 /*
5555 * TODO: Set a voltage and enable vdd_dig, leaving the voltage high
5556 * until late_init. This may not be necessary with clock handoff;
5557 * Investigate this code on a real non-simulator target to determine
5558 * its necessity.
5559 */
5560 vote_vdd_level(&vdd_dig, VDD_DIG_HIGH);
5561 rpm_regulator_enable(vdd_dig_reg);
5562
Vikram Mulukutla77140da2012-08-13 21:37:18 -07005563 enable_rpm_scaling();
5564
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07005565 reg_init();
Vikram Mulukutla293c4692013-01-03 15:09:47 -08005566
5567 /* v2 specific changes */
5568 if (SOCINFO_VERSION_MAJOR(socinfo_get_version()) == 2) {
Vikram Mulukutlaa57e6e42013-01-23 16:58:08 -08005569 int i;
5570
Vikram Mulukutla293c4692013-01-03 15:09:47 -08005571 mmpll3_clk_src.c.rate = 930000000;
5572 mmpll1_clk_src.c.rate = 1167000000;
5573 mmpll1_clk_src.c.fmax[VDD_DIG_NOMINAL] = 1167000000;
5574
5575 ocmemnoc_clk_src.freq_tbl = ftbl_ocmemnoc_v2_clk;
5576 ocmemnoc_clk_src.c.fmax[VDD_DIG_NOMINAL] = 333430000;
5577
5578 axi_clk_src.freq_tbl = ftbl_mmss_axi_v2_clk;
5579 axi_clk_src.c.fmax[VDD_DIG_NOMINAL] = 333430000;
5580 axi_clk_src.c.fmax[VDD_DIG_HIGH] = 466800000;
5581
5582 vcodec0_clk_src.freq_tbl = ftbl_venus0_vcodec0_v2_clk;
5583 vcodec0_clk_src.c.fmax[VDD_DIG_HIGH] = 465000000;
5584
5585 mdp_clk_src.c.fmax[VDD_DIG_NOMINAL] = 240000000;
Vikram Mulukutlaa57e6e42013-01-23 16:58:08 -08005586
5587 /* The parent of each of the QUP I2C clocks is an RCG on V2 */
5588 for (i = 0; i < ARRAY_SIZE(qup_i2c_clks); i++)
5589 qup_i2c_clks[i][0]->parent = qup_i2c_clks[i][1];
Vikram Mulukutla293c4692013-01-03 15:09:47 -08005590 }
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07005591}
5592
Vikram Mulukutlab7a1a742012-05-30 17:24:33 -07005593static int __init msm8974_clock_late_init(void)
5594{
5595 return unvote_vdd_level(&vdd_dig, VDD_DIG_HIGH);
5596}
5597
Vikram Mulukutla19245e02012-07-23 15:58:04 -07005598static void __init msm8974_rumi_clock_pre_init(void)
5599{
5600 virt_bases[GCC_BASE] = ioremap(GCC_CC_PHYS, GCC_CC_SIZE);
5601 if (!virt_bases[GCC_BASE])
5602 panic("clock-8974: Unable to ioremap GCC memory!");
5603
5604 /* SDCC clocks are partially emulated in the RUMI */
5605 sdcc1_apps_clk_src.freq_tbl = ftbl_gcc_sdcc_apps_rumi_clk;
5606 sdcc2_apps_clk_src.freq_tbl = ftbl_gcc_sdcc_apps_rumi_clk;
5607 sdcc3_apps_clk_src.freq_tbl = ftbl_gcc_sdcc_apps_rumi_clk;
5608 sdcc4_apps_clk_src.freq_tbl = ftbl_gcc_sdcc_apps_rumi_clk;
5609
5610 vdd_dig_reg = rpm_regulator_get(NULL, "vdd_dig");
5611 if (IS_ERR(vdd_dig_reg))
5612 panic("clock-8974: Unable to get the vdd_dig regulator!");
5613
5614 /*
5615 * TODO: Set a voltage and enable vdd_dig, leaving the voltage high
5616 * until late_init. This may not be necessary with clock handoff;
5617 * Investigate this code on a real non-simulator target to determine
5618 * its necessity.
5619 */
5620 vote_vdd_level(&vdd_dig, VDD_DIG_HIGH);
5621 rpm_regulator_enable(vdd_dig_reg);
5622}
5623
Abhimanyu Kapur90ced6e2012-06-26 17:41:25 -07005624struct clock_init_data msm8974_clock_init_data __initdata = {
5625 .table = msm_clocks_8974,
5626 .size = ARRAY_SIZE(msm_clocks_8974),
5627 .pre_init = msm8974_clock_pre_init,
5628 .post_init = msm8974_clock_post_init,
Vikram Mulukutlab7a1a742012-05-30 17:24:33 -07005629 .late_init = msm8974_clock_late_init,
Vikram Mulukutlaaa3e0112012-04-23 14:40:51 -07005630};
Vikram Mulukutla19245e02012-07-23 15:58:04 -07005631
5632struct clock_init_data msm8974_rumi_clock_init_data __initdata = {
5633 .table = msm_clocks_8974_rumi,
5634 .size = ARRAY_SIZE(msm_clocks_8974_rumi),
5635 .pre_init = msm8974_rumi_clock_pre_init,
5636};