blob: e729a63e8eb30cc32d111e01adfe4ab255da5a4b [file] [log] [blame]
Manu Gautam5143b252012-01-05 19:25:23 -08001/* Copyright (c) 2011-2012, Code Aurora Forum. All rights reserved.
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002 *
3 * This program is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License version 2 and
5 * only version 2 as published by the Free Software Foundation.
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
11 *
12 */
13
14#include <linux/kernel.h>
15#include <linux/list.h>
16#include <linux/platform_device.h>
17#include <linux/msm_rotator.h>
18#include <linux/clkdev.h>
Hemant Kumard86c4882012-01-24 19:39:37 -080019#include <linux/dma-mapping.h>
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070020#include <mach/irqs-8064.h>
21#include <mach/board.h>
22#include <mach/msm_iomap.h>
Yan He06913ce2011-08-26 16:33:46 -070023#include <mach/usbdiag.h>
24#include <mach/msm_sps.h>
Jeff Ohlstein905f1ce2011-09-07 18:50:18 -070025#include <mach/dma.h>
Jin Hongd3024e62012-02-09 16:13:32 -080026#include <mach/msm_dsps.h>
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -080027#include <sound/msm-dai-q6.h>
28#include <sound/apr_audio.h>
Gagan Mac8a7a5d32011-11-11 16:43:06 -070029#include <mach/msm_bus_board.h>
Praveen Chidambaram78499012011-11-01 17:15:17 -060030#include <mach/rpm.h>
Joel Kingdacbc822012-01-25 13:30:57 -080031#include <mach/mdm2.h>
Eric Holmberg023d25c2012-03-01 12:27:55 -070032#include <mach/msm_smd.h>
Praveen Chidambaram5c8adf22012-02-23 18:44:37 -070033#include <mach/msm_dcvs.h>
Pratik Patel212ab362012-03-16 12:30:07 -070034#include <mach/qdss.h>
Mohan Kumar Gubbihalli Lachma Naik7f72edd2012-02-06 17:26:47 -080035#include <linux/ion.h>
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070036#include "clock.h"
37#include "devices.h"
Matt Wagantall1875d322012-02-22 16:11:33 -080038#include "footswitch.h"
Jeff Ohlstein7e668552011-10-06 16:17:25 -070039#include "msm_watchdog.h"
Praveen Chidambaram78499012011-11-01 17:15:17 -060040#include "rpm_stats.h"
41#include "rpm_log.h"
Subhash Jadavani909e04f2012-04-12 10:52:50 +053042#include <mach/mpm.h>
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070043
44/* Address of GSBI blocks */
Stepan Moskovchenko2701a442011-08-19 13:47:22 -070045#define MSM_GSBI1_PHYS 0x12440000
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070046#define MSM_GSBI3_PHYS 0x16200000
Harini Jayaramanc4c58692011-07-19 14:50:10 -060047#define MSM_GSBI4_PHYS 0x16300000
48#define MSM_GSBI5_PHYS 0x1A200000
49#define MSM_GSBI6_PHYS 0x16500000
50#define MSM_GSBI7_PHYS 0x16600000
51
Kenneth Heitke748593a2011-07-15 15:45:11 -060052/* GSBI UART devices */
Stepan Moskovchenko2701a442011-08-19 13:47:22 -070053#define MSM_UART1DM_PHYS (MSM_GSBI1_PHYS + 0x10000)
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070054#define MSM_UART3DM_PHYS (MSM_GSBI3_PHYS + 0x40000)
Jin Hong4bbbfba2012-02-02 21:48:07 -080055#define MSM_UART7DM_PHYS (MSM_GSBI7_PHYS + 0x40000)
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070056
Harini Jayaramanc4c58692011-07-19 14:50:10 -060057/* GSBI QUP devices */
David Keitel3c40fc52012-02-09 17:53:52 -080058#define MSM_GSBI1_QUP_PHYS (MSM_GSBI1_PHYS + 0x20000)
Harini Jayaramanc4c58692011-07-19 14:50:10 -060059#define MSM_GSBI3_QUP_PHYS (MSM_GSBI3_PHYS + 0x80000)
60#define MSM_GSBI4_QUP_PHYS (MSM_GSBI4_PHYS + 0x80000)
61#define MSM_GSBI5_QUP_PHYS (MSM_GSBI5_PHYS + 0x80000)
62#define MSM_GSBI6_QUP_PHYS (MSM_GSBI6_PHYS + 0x80000)
63#define MSM_GSBI7_QUP_PHYS (MSM_GSBI7_PHYS + 0x80000)
64#define MSM_QUP_SIZE SZ_4K
65
Kenneth Heitke36920d32011-07-20 16:44:30 -060066/* Address of SSBI CMD */
67#define MSM_PMIC1_SSBI_CMD_PHYS 0x00500000
68#define MSM_PMIC2_SSBI_CMD_PHYS 0x00C00000
69#define MSM_PMIC_SSBI_SIZE SZ_4K
Harini Jayaramanc4c58692011-07-19 14:50:10 -060070
Hemant Kumarcaa09092011-07-30 00:26:33 -070071/* Address of HS USBOTG1 */
Hemant Kumard86c4882012-01-24 19:39:37 -080072#define MSM_HSUSB1_PHYS 0x12500000
73#define MSM_HSUSB1_SIZE SZ_4K
Hemant Kumarcaa09092011-07-30 00:26:33 -070074
Manu Gautam91223e02011-11-08 15:27:22 +053075/* Address of HS USB3 */
76#define MSM_HSUSB3_PHYS 0x12520000
77#define MSM_HSUSB3_SIZE SZ_4K
78
Hemant Kumar1d66e1c2012-02-13 15:24:59 -080079/* Address of HS USB4 */
80#define MSM_HSUSB4_PHYS 0x12530000
81#define MSM_HSUSB4_SIZE SZ_4K
82
83
Jeff Ohlstein7e668552011-10-06 16:17:25 -070084static struct msm_watchdog_pdata msm_watchdog_pdata = {
85 .pet_time = 10000,
86 .bark_time = 11000,
87 .has_secure = true,
Joel Kinge7ca6f72012-02-09 20:51:25 -080088 .needs_expired_enable = true,
Jeff Ohlstein7e668552011-10-06 16:17:25 -070089};
90
91struct platform_device msm8064_device_watchdog = {
92 .name = "msm_watchdog",
93 .id = -1,
94 .dev = {
95 .platform_data = &msm_watchdog_pdata,
96 },
97};
98
Joel King0581896d2011-07-19 16:43:28 -070099static struct resource msm_dmov_resource[] = {
100 {
Jeff Ohlstein4af72692011-11-07 15:59:17 -0800101 .start = ADM_0_SCSS_1_IRQ,
Joel King0581896d2011-07-19 16:43:28 -0700102 .flags = IORESOURCE_IRQ,
103 },
Jeff Ohlstein905f1ce2011-09-07 18:50:18 -0700104 {
Jeff Ohlstein4af72692011-11-07 15:59:17 -0800105 .start = 0x18320000,
106 .end = 0x18320000 + SZ_1M - 1,
Jeff Ohlstein905f1ce2011-09-07 18:50:18 -0700107 .flags = IORESOURCE_MEM,
108 },
109};
110
111static struct msm_dmov_pdata msm_dmov_pdata = {
Jeff Ohlstein4af72692011-11-07 15:59:17 -0800112 .sd = 1,
Jeff Ohlstein905f1ce2011-09-07 18:50:18 -0700113 .sd_size = 0x800,
Joel King0581896d2011-07-19 16:43:28 -0700114};
115
Stepan Moskovchenkodf13d342011-08-03 19:01:25 -0700116struct platform_device apq8064_device_dmov = {
Joel King0581896d2011-07-19 16:43:28 -0700117 .name = "msm_dmov",
118 .id = -1,
119 .resource = msm_dmov_resource,
120 .num_resources = ARRAY_SIZE(msm_dmov_resource),
Jeff Ohlstein905f1ce2011-09-07 18:50:18 -0700121 .dev = {
122 .platform_data = &msm_dmov_pdata,
123 },
Joel King0581896d2011-07-19 16:43:28 -0700124};
125
Stepan Moskovchenko2701a442011-08-19 13:47:22 -0700126static struct resource resources_uart_gsbi1[] = {
127 {
128 .start = APQ8064_GSBI1_UARTDM_IRQ,
129 .end = APQ8064_GSBI1_UARTDM_IRQ,
130 .flags = IORESOURCE_IRQ,
131 },
132 {
133 .start = MSM_UART1DM_PHYS,
134 .end = MSM_UART1DM_PHYS + PAGE_SIZE - 1,
135 .name = "uartdm_resource",
136 .flags = IORESOURCE_MEM,
137 },
138 {
139 .start = MSM_GSBI1_PHYS,
140 .end = MSM_GSBI1_PHYS + PAGE_SIZE - 1,
141 .name = "gsbi_resource",
142 .flags = IORESOURCE_MEM,
143 },
144};
145
146struct platform_device apq8064_device_uart_gsbi1 = {
147 .name = "msm_serial_hsl",
Jin Hong4bbbfba2012-02-02 21:48:07 -0800148 .id = 1,
Stepan Moskovchenko2701a442011-08-19 13:47:22 -0700149 .num_resources = ARRAY_SIZE(resources_uart_gsbi1),
150 .resource = resources_uart_gsbi1,
151};
152
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700153static struct resource resources_uart_gsbi3[] = {
154 {
155 .start = GSBI3_UARTDM_IRQ,
156 .end = GSBI3_UARTDM_IRQ,
157 .flags = IORESOURCE_IRQ,
158 },
159 {
160 .start = MSM_UART3DM_PHYS,
161 .end = MSM_UART3DM_PHYS + PAGE_SIZE - 1,
162 .name = "uartdm_resource",
163 .flags = IORESOURCE_MEM,
164 },
165 {
166 .start = MSM_GSBI3_PHYS,
167 .end = MSM_GSBI3_PHYS + PAGE_SIZE - 1,
168 .name = "gsbi_resource",
169 .flags = IORESOURCE_MEM,
170 },
171};
172
173struct platform_device apq8064_device_uart_gsbi3 = {
174 .name = "msm_serial_hsl",
175 .id = 0,
176 .num_resources = ARRAY_SIZE(resources_uart_gsbi3),
177 .resource = resources_uart_gsbi3,
178};
179
Jing Lin04601f92012-02-05 15:36:07 -0800180static struct resource resources_qup_i2c_gsbi3[] = {
181 {
182 .name = "gsbi_qup_i2c_addr",
183 .start = MSM_GSBI3_PHYS,
184 .end = MSM_GSBI3_PHYS + 4 - 1,
185 .flags = IORESOURCE_MEM,
186 },
187 {
188 .name = "qup_phys_addr",
189 .start = MSM_GSBI3_QUP_PHYS,
190 .end = MSM_GSBI3_QUP_PHYS + MSM_QUP_SIZE - 1,
191 .flags = IORESOURCE_MEM,
192 },
193 {
194 .name = "qup_err_intr",
195 .start = GSBI3_QUP_IRQ,
196 .end = GSBI3_QUP_IRQ,
197 .flags = IORESOURCE_IRQ,
198 },
199 {
200 .name = "i2c_clk",
201 .start = 9,
202 .end = 9,
203 .flags = IORESOURCE_IO,
204 },
205 {
206 .name = "i2c_sda",
207 .start = 8,
208 .end = 8,
209 .flags = IORESOURCE_IO,
210 },
211};
212
David Keitel3c40fc52012-02-09 17:53:52 -0800213static struct resource resources_qup_i2c_gsbi1[] = {
214 {
215 .name = "gsbi_qup_i2c_addr",
216 .start = MSM_GSBI1_PHYS,
217 .end = MSM_GSBI1_PHYS + 4 - 1,
218 .flags = IORESOURCE_MEM,
219 },
220 {
221 .name = "qup_phys_addr",
222 .start = MSM_GSBI1_QUP_PHYS,
223 .end = MSM_GSBI1_QUP_PHYS + MSM_QUP_SIZE - 1,
224 .flags = IORESOURCE_MEM,
225 },
226 {
227 .name = "qup_err_intr",
228 .start = APQ8064_GSBI1_QUP_IRQ,
229 .end = APQ8064_GSBI1_QUP_IRQ,
230 .flags = IORESOURCE_IRQ,
231 },
232 {
233 .name = "i2c_clk",
234 .start = 21,
235 .end = 21,
236 .flags = IORESOURCE_IO,
237 },
238 {
239 .name = "i2c_sda",
240 .start = 20,
241 .end = 20,
242 .flags = IORESOURCE_IO,
243 },
244};
245
246struct platform_device apq8064_device_qup_i2c_gsbi1 = {
247 .name = "qup_i2c",
248 .id = 0,
249 .num_resources = ARRAY_SIZE(resources_qup_i2c_gsbi1),
250 .resource = resources_qup_i2c_gsbi1,
251};
252
Jing Lin04601f92012-02-05 15:36:07 -0800253struct platform_device apq8064_device_qup_i2c_gsbi3 = {
254 .name = "qup_i2c",
255 .id = 3,
256 .num_resources = ARRAY_SIZE(resources_qup_i2c_gsbi3),
257 .resource = resources_qup_i2c_gsbi3,
258};
259
Kenneth Heitke748593a2011-07-15 15:45:11 -0600260static struct resource resources_qup_i2c_gsbi4[] = {
261 {
262 .name = "gsbi_qup_i2c_addr",
263 .start = MSM_GSBI4_PHYS,
Harini Jayaramane1554a92011-09-15 14:43:02 -0600264 .end = MSM_GSBI4_PHYS + 4 - 1,
Kenneth Heitke748593a2011-07-15 15:45:11 -0600265 .flags = IORESOURCE_MEM,
266 },
267 {
268 .name = "qup_phys_addr",
269 .start = MSM_GSBI4_QUP_PHYS,
Harini Jayaramane1554a92011-09-15 14:43:02 -0600270 .end = MSM_GSBI4_QUP_PHYS + MSM_QUP_SIZE - 1,
Kenneth Heitke748593a2011-07-15 15:45:11 -0600271 .flags = IORESOURCE_MEM,
272 },
273 {
274 .name = "qup_err_intr",
275 .start = GSBI4_QUP_IRQ,
276 .end = GSBI4_QUP_IRQ,
277 .flags = IORESOURCE_IRQ,
278 },
Kevin Chand07220e2012-02-13 15:52:22 -0800279 {
280 .name = "i2c_clk",
281 .start = 11,
282 .end = 11,
283 .flags = IORESOURCE_IO,
284 },
285 {
286 .name = "i2c_sda",
287 .start = 10,
288 .end = 10,
289 .flags = IORESOURCE_IO,
290 },
Kenneth Heitke748593a2011-07-15 15:45:11 -0600291};
292
293struct platform_device apq8064_device_qup_i2c_gsbi4 = {
294 .name = "qup_i2c",
295 .id = 4,
296 .num_resources = ARRAY_SIZE(resources_qup_i2c_gsbi4),
297 .resource = resources_qup_i2c_gsbi4,
298};
299
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700300static struct resource resources_qup_spi_gsbi5[] = {
301 {
302 .name = "spi_base",
303 .start = MSM_GSBI5_QUP_PHYS,
304 .end = MSM_GSBI5_QUP_PHYS + SZ_4K - 1,
305 .flags = IORESOURCE_MEM,
306 },
307 {
308 .name = "gsbi_base",
309 .start = MSM_GSBI5_PHYS,
310 .end = MSM_GSBI5_PHYS + 4 - 1,
311 .flags = IORESOURCE_MEM,
312 },
313 {
314 .name = "spi_irq_in",
315 .start = GSBI5_QUP_IRQ,
316 .end = GSBI5_QUP_IRQ,
317 .flags = IORESOURCE_IRQ,
318 },
319};
320
321struct platform_device apq8064_device_qup_spi_gsbi5 = {
322 .name = "spi_qsd",
323 .id = 0,
324 .num_resources = ARRAY_SIZE(resources_qup_spi_gsbi5),
325 .resource = resources_qup_spi_gsbi5,
326};
327
Joel King8f839b92012-04-01 14:37:46 -0700328static struct resource resources_qup_i2c_gsbi5[] = {
329 {
330 .name = "gsbi_qup_i2c_addr",
331 .start = MSM_GSBI5_PHYS,
332 .end = MSM_GSBI5_PHYS + 4 - 1,
333 .flags = IORESOURCE_MEM,
334 },
335 {
336 .name = "qup_phys_addr",
337 .start = MSM_GSBI5_QUP_PHYS,
338 .end = MSM_GSBI5_QUP_PHYS + MSM_QUP_SIZE - 1,
339 .flags = IORESOURCE_MEM,
340 },
341 {
342 .name = "qup_err_intr",
343 .start = GSBI5_QUP_IRQ,
344 .end = GSBI5_QUP_IRQ,
345 .flags = IORESOURCE_IRQ,
346 },
347 {
348 .name = "i2c_clk",
349 .start = 54,
350 .end = 54,
351 .flags = IORESOURCE_IO,
352 },
353 {
354 .name = "i2c_sda",
355 .start = 53,
356 .end = 53,
357 .flags = IORESOURCE_IO,
358 },
359};
360
361struct platform_device mpq8064_device_qup_i2c_gsbi5 = {
362 .name = "qup_i2c",
363 .id = 5,
364 .num_resources = ARRAY_SIZE(resources_qup_i2c_gsbi5),
365 .resource = resources_qup_i2c_gsbi5,
366};
367
Jin Hong4bbbfba2012-02-02 21:48:07 -0800368static struct resource resources_uart_gsbi7[] = {
369 {
370 .start = GSBI7_UARTDM_IRQ,
371 .end = GSBI7_UARTDM_IRQ,
372 .flags = IORESOURCE_IRQ,
373 },
374 {
375 .start = MSM_UART7DM_PHYS,
376 .end = MSM_UART7DM_PHYS + PAGE_SIZE - 1,
377 .name = "uartdm_resource",
378 .flags = IORESOURCE_MEM,
379 },
380 {
381 .start = MSM_GSBI7_PHYS,
382 .end = MSM_GSBI7_PHYS + PAGE_SIZE - 1,
383 .name = "gsbi_resource",
384 .flags = IORESOURCE_MEM,
385 },
386};
387
388struct platform_device apq8064_device_uart_gsbi7 = {
389 .name = "msm_serial_hsl",
390 .id = 0,
391 .num_resources = ARRAY_SIZE(resources_uart_gsbi7),
392 .resource = resources_uart_gsbi7,
393};
394
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800395struct platform_device apq_pcm = {
396 .name = "msm-pcm-dsp",
397 .id = -1,
398};
399
400struct platform_device apq_pcm_routing = {
401 .name = "msm-pcm-routing",
402 .id = -1,
403};
404
405struct platform_device apq_cpudai0 = {
406 .name = "msm-dai-q6",
407 .id = 0x4000,
408};
409
410struct platform_device apq_cpudai1 = {
411 .name = "msm-dai-q6",
412 .id = 0x4001,
413};
Santosh Mardieff9a742012-04-09 23:23:39 +0530414struct platform_device mpq_cpudai_sec_i2s_rx = {
415 .name = "msm-dai-q6",
416 .id = 4,
417};
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800418struct platform_device apq_cpudai_hdmi_rx = {
Swaminathan Sathappanfd9dbad2012-02-15 16:56:44 -0800419 .name = "msm-dai-q6-hdmi",
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800420 .id = 8,
421};
422
423struct platform_device apq_cpudai_bt_rx = {
424 .name = "msm-dai-q6",
425 .id = 0x3000,
426};
427
428struct platform_device apq_cpudai_bt_tx = {
429 .name = "msm-dai-q6",
430 .id = 0x3001,
431};
432
433struct platform_device apq_cpudai_fm_rx = {
434 .name = "msm-dai-q6",
435 .id = 0x3004,
436};
437
438struct platform_device apq_cpudai_fm_tx = {
439 .name = "msm-dai-q6",
440 .id = 0x3005,
441};
442
443/*
444 * Machine specific data for AUX PCM Interface
445 * which the driver will be unware of.
446 */
Kiran Kandi5f4ab692012-02-23 11:23:56 -0800447struct msm_dai_auxpcm_pdata apq_auxpcm_pdata = {
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800448 .clk = "pcm_clk",
449 .mode = AFE_PCM_CFG_MODE_PCM,
450 .sync = AFE_PCM_CFG_SYNC_INT,
451 .frame = AFE_PCM_CFG_FRM_256BPF,
452 .quant = AFE_PCM_CFG_QUANT_LINEAR_NOPAD,
453 .slot = 0,
454 .data = AFE_PCM_CFG_CDATAOE_MASTER,
455 .pcm_clk_rate = 2048000,
456};
457
458struct platform_device apq_cpudai_auxpcm_rx = {
459 .name = "msm-dai-q6",
460 .id = 2,
461 .dev = {
Kiran Kandi5f4ab692012-02-23 11:23:56 -0800462 .platform_data = &apq_auxpcm_pdata,
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800463 },
464};
465
466struct platform_device apq_cpudai_auxpcm_tx = {
467 .name = "msm-dai-q6",
468 .id = 3,
Kiran Kandi5f4ab692012-02-23 11:23:56 -0800469 .dev = {
470 .platform_data = &apq_auxpcm_pdata,
471 },
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800472};
473
474struct platform_device apq_cpu_fe = {
475 .name = "msm-dai-fe",
476 .id = -1,
477};
478
479struct platform_device apq_stub_codec = {
480 .name = "msm-stub-codec",
481 .id = 1,
482};
483
484struct platform_device apq_voice = {
485 .name = "msm-pcm-voice",
486 .id = -1,
487};
488
489struct platform_device apq_voip = {
490 .name = "msm-voip-dsp",
491 .id = -1,
492};
493
494struct platform_device apq_lpa_pcm = {
495 .name = "msm-pcm-lpa",
496 .id = -1,
497};
498
Krishnankutty Kolathappilly4374e332012-03-18 22:27:30 -0700499struct platform_device apq_compr_dsp = {
500 .name = "msm-compr-dsp",
501 .id = -1,
502};
503
504struct platform_device apq_multi_ch_pcm = {
505 .name = "msm-multi-ch-pcm-dsp",
506 .id = -1,
507};
508
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800509struct platform_device apq_pcm_hostless = {
510 .name = "msm-pcm-hostless",
511 .id = -1,
512};
513
514struct platform_device apq_cpudai_afe_01_rx = {
515 .name = "msm-dai-q6",
516 .id = 0xE0,
517};
518
519struct platform_device apq_cpudai_afe_01_tx = {
520 .name = "msm-dai-q6",
521 .id = 0xF0,
522};
523
524struct platform_device apq_cpudai_afe_02_rx = {
525 .name = "msm-dai-q6",
526 .id = 0xF1,
527};
528
529struct platform_device apq_cpudai_afe_02_tx = {
530 .name = "msm-dai-q6",
531 .id = 0xE1,
532};
533
534struct platform_device apq_pcm_afe = {
535 .name = "msm-pcm-afe",
536 .id = -1,
537};
538
Neema Shetty8427c262012-02-16 11:23:43 -0800539struct platform_device apq_cpudai_stub = {
540 .name = "msm-dai-stub",
541 .id = -1,
542};
543
Neema Shetty3c9d2862012-03-11 01:25:32 -0800544struct platform_device apq_cpudai_slimbus_1_rx = {
545 .name = "msm-dai-q6",
546 .id = 0x4002,
547};
548
549struct platform_device apq_cpudai_slimbus_1_tx = {
550 .name = "msm-dai-q6",
551 .id = 0x4003,
552};
553
Kiran Kandi1e6371d2012-03-29 11:48:57 -0700554struct platform_device apq_cpudai_slimbus_2_tx = {
555 .name = "msm-dai-q6",
556 .id = 0x4005,
557};
558
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700559static struct resource resources_ssbi_pmic1[] = {
560 {
561 .start = MSM_PMIC1_SSBI_CMD_PHYS,
562 .end = MSM_PMIC1_SSBI_CMD_PHYS + MSM_PMIC_SSBI_SIZE - 1,
563 .flags = IORESOURCE_MEM,
564 },
565};
566
Sagar Dharia8bdcdaf2011-09-16 16:01:15 -0600567#define LPASS_SLIMBUS_PHYS 0x28080000
568#define LPASS_SLIMBUS_BAM_PHYS 0x28084000
Swaminathan Sathappan2316e082012-02-03 14:07:17 -0800569#define LPASS_SLIMBUS_SLEW (MSM8960_TLMM_PHYS + 0x207C)
Sagar Dharia8bdcdaf2011-09-16 16:01:15 -0600570/* Board info for the slimbus slave device */
571static struct resource slimbus_res[] = {
572 {
573 .start = LPASS_SLIMBUS_PHYS,
574 .end = LPASS_SLIMBUS_PHYS + 8191,
575 .flags = IORESOURCE_MEM,
576 .name = "slimbus_physical",
577 },
578 {
579 .start = LPASS_SLIMBUS_BAM_PHYS,
580 .end = LPASS_SLIMBUS_BAM_PHYS + 8191,
581 .flags = IORESOURCE_MEM,
582 .name = "slimbus_bam_physical",
583 },
584 {
Swaminathan Sathappan2316e082012-02-03 14:07:17 -0800585 .start = LPASS_SLIMBUS_SLEW,
586 .end = LPASS_SLIMBUS_SLEW + 4 - 1,
587 .flags = IORESOURCE_MEM,
588 .name = "slimbus_slew_reg",
589 },
590 {
Sagar Dharia8bdcdaf2011-09-16 16:01:15 -0600591 .start = SLIMBUS0_CORE_EE1_IRQ,
592 .end = SLIMBUS0_CORE_EE1_IRQ,
593 .flags = IORESOURCE_IRQ,
594 .name = "slimbus_irq",
595 },
596 {
597 .start = SLIMBUS0_BAM_EE1_IRQ,
598 .end = SLIMBUS0_BAM_EE1_IRQ,
599 .flags = IORESOURCE_IRQ,
600 .name = "slimbus_bam_irq",
601 },
602};
603
604struct platform_device apq8064_slim_ctrl = {
605 .name = "msm_slim_ctrl",
606 .id = 1,
607 .num_resources = ARRAY_SIZE(slimbus_res),
608 .resource = slimbus_res,
609 .dev = {
610 .coherent_dma_mask = 0xffffffffULL,
611 },
612};
613
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700614struct platform_device apq8064_device_ssbi_pmic1 = {
615 .name = "msm_ssbi",
616 .id = 0,
617 .resource = resources_ssbi_pmic1,
618 .num_resources = ARRAY_SIZE(resources_ssbi_pmic1),
619};
620
621static struct resource resources_ssbi_pmic2[] = {
622 {
623 .start = MSM_PMIC2_SSBI_CMD_PHYS,
624 .end = MSM_PMIC2_SSBI_CMD_PHYS + MSM_PMIC_SSBI_SIZE - 1,
625 .flags = IORESOURCE_MEM,
626 },
627};
628
629struct platform_device apq8064_device_ssbi_pmic2 = {
630 .name = "msm_ssbi",
631 .id = 1,
632 .resource = resources_ssbi_pmic2,
633 .num_resources = ARRAY_SIZE(resources_ssbi_pmic2),
634};
635
636static struct resource resources_otg[] = {
637 {
Hemant Kumard86c4882012-01-24 19:39:37 -0800638 .start = MSM_HSUSB1_PHYS,
639 .end = MSM_HSUSB1_PHYS + MSM_HSUSB1_SIZE - 1,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700640 .flags = IORESOURCE_MEM,
641 },
642 {
643 .start = USB1_HS_IRQ,
644 .end = USB1_HS_IRQ,
645 .flags = IORESOURCE_IRQ,
646 },
647};
648
Stepan Moskovchenko14aa6492011-08-08 15:15:01 -0700649struct platform_device apq8064_device_otg = {
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700650 .name = "msm_otg",
651 .id = -1,
652 .num_resources = ARRAY_SIZE(resources_otg),
653 .resource = resources_otg,
654 .dev = {
655 .coherent_dma_mask = 0xffffffff,
656 },
657};
658
659static struct resource resources_hsusb[] = {
660 {
Hemant Kumard86c4882012-01-24 19:39:37 -0800661 .start = MSM_HSUSB1_PHYS,
662 .end = MSM_HSUSB1_PHYS + MSM_HSUSB1_SIZE - 1,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700663 .flags = IORESOURCE_MEM,
664 },
665 {
666 .start = USB1_HS_IRQ,
667 .end = USB1_HS_IRQ,
668 .flags = IORESOURCE_IRQ,
669 },
670};
671
Stepan Moskovchenko14aa6492011-08-08 15:15:01 -0700672struct platform_device apq8064_device_gadget_peripheral = {
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700673 .name = "msm_hsusb",
674 .id = -1,
675 .num_resources = ARRAY_SIZE(resources_hsusb),
676 .resource = resources_hsusb,
677 .dev = {
678 .coherent_dma_mask = 0xffffffff,
679 },
680};
681
Hemant Kumard86c4882012-01-24 19:39:37 -0800682static struct resource resources_hsusb_host[] = {
683 {
684 .start = MSM_HSUSB1_PHYS,
685 .end = MSM_HSUSB1_PHYS + MSM_HSUSB1_SIZE - 1,
686 .flags = IORESOURCE_MEM,
687 },
688 {
689 .start = USB1_HS_IRQ,
690 .end = USB1_HS_IRQ,
691 .flags = IORESOURCE_IRQ,
692 },
693};
694
Hemant Kumara945b472012-01-25 15:08:06 -0800695static struct resource resources_hsic_host[] = {
696 {
697 .start = 0x12510000,
698 .end = 0x12510000 + SZ_4K - 1,
699 .flags = IORESOURCE_MEM,
700 },
701 {
702 .start = USB2_HSIC_IRQ,
703 .end = USB2_HSIC_IRQ,
704 .flags = IORESOURCE_IRQ,
705 },
706 {
707 .start = MSM_GPIO_TO_INT(49),
708 .end = MSM_GPIO_TO_INT(49),
709 .name = "peripheral_status_irq",
710 .flags = IORESOURCE_IRQ,
711 },
Vamsi Krishna6921cbe2012-02-21 18:34:43 -0800712 {
713 .start = MSM_GPIO_TO_INT(88),
714 .end = MSM_GPIO_TO_INT(88),
715 .name = "wakeup_irq",
716 .flags = IORESOURCE_IRQ,
717 },
Hemant Kumara945b472012-01-25 15:08:06 -0800718};
719
Hemant Kumard86c4882012-01-24 19:39:37 -0800720static u64 dma_mask = DMA_BIT_MASK(32);
721struct platform_device apq8064_device_hsusb_host = {
722 .name = "msm_hsusb_host",
723 .id = -1,
724 .num_resources = ARRAY_SIZE(resources_hsusb_host),
725 .resource = resources_hsusb_host,
726 .dev = {
727 .dma_mask = &dma_mask,
728 .coherent_dma_mask = 0xffffffff,
729 },
730};
731
Hemant Kumara945b472012-01-25 15:08:06 -0800732struct platform_device apq8064_device_hsic_host = {
733 .name = "msm_hsic_host",
734 .id = -1,
735 .num_resources = ARRAY_SIZE(resources_hsic_host),
736 .resource = resources_hsic_host,
737 .dev = {
738 .dma_mask = &dma_mask,
739 .coherent_dma_mask = DMA_BIT_MASK(32),
740 },
741};
742
Manu Gautam91223e02011-11-08 15:27:22 +0530743static struct resource resources_ehci_host3[] = {
744{
745 .start = MSM_HSUSB3_PHYS,
746 .end = MSM_HSUSB3_PHYS + MSM_HSUSB3_SIZE - 1,
747 .flags = IORESOURCE_MEM,
748 },
749 {
750 .start = USB3_HS_IRQ,
751 .end = USB3_HS_IRQ,
752 .flags = IORESOURCE_IRQ,
753 },
754};
755
756struct platform_device apq8064_device_ehci_host3 = {
757 .name = "msm_ehci_host",
758 .id = 0,
759 .num_resources = ARRAY_SIZE(resources_ehci_host3),
760 .resource = resources_ehci_host3,
761 .dev = {
762 .dma_mask = &dma_mask,
763 .coherent_dma_mask = 0xffffffff,
764 },
765};
766
Hemant Kumar1d66e1c2012-02-13 15:24:59 -0800767static struct resource resources_ehci_host4[] = {
768{
769 .start = MSM_HSUSB4_PHYS,
770 .end = MSM_HSUSB4_PHYS + MSM_HSUSB4_SIZE - 1,
771 .flags = IORESOURCE_MEM,
772 },
773 {
774 .start = USB4_HS_IRQ,
775 .end = USB4_HS_IRQ,
776 .flags = IORESOURCE_IRQ,
777 },
778};
779
780struct platform_device apq8064_device_ehci_host4 = {
781 .name = "msm_ehci_host",
782 .id = 1,
783 .num_resources = ARRAY_SIZE(resources_ehci_host4),
784 .resource = resources_ehci_host4,
785 .dev = {
786 .dma_mask = &dma_mask,
787 .coherent_dma_mask = 0xffffffff,
788 },
789};
790
Mohan Kumar Gubbihalli Lachma Naik7f72edd2012-02-06 17:26:47 -0800791/* MSM Video core device */
792#ifdef CONFIG_MSM_BUS_SCALING
793static struct msm_bus_vectors vidc_init_vectors[] = {
794 {
795 .src = MSM_BUS_MASTER_VIDEO_ENC,
796 .dst = MSM_BUS_SLAVE_EBI_CH0,
797 .ab = 0,
798 .ib = 0,
799 },
800 {
801 .src = MSM_BUS_MASTER_VIDEO_DEC,
802 .dst = MSM_BUS_SLAVE_EBI_CH0,
803 .ab = 0,
804 .ib = 0,
805 },
806 {
807 .src = MSM_BUS_MASTER_AMPSS_M0,
808 .dst = MSM_BUS_SLAVE_EBI_CH0,
809 .ab = 0,
810 .ib = 0,
811 },
812 {
813 .src = MSM_BUS_MASTER_AMPSS_M0,
814 .dst = MSM_BUS_SLAVE_EBI_CH0,
815 .ab = 0,
816 .ib = 0,
817 },
818};
819static struct msm_bus_vectors vidc_venc_vga_vectors[] = {
820 {
821 .src = MSM_BUS_MASTER_VIDEO_ENC,
822 .dst = MSM_BUS_SLAVE_EBI_CH0,
823 .ab = 54525952,
824 .ib = 436207616,
825 },
826 {
827 .src = MSM_BUS_MASTER_VIDEO_DEC,
828 .dst = MSM_BUS_SLAVE_EBI_CH0,
829 .ab = 72351744,
830 .ib = 289406976,
831 },
832 {
833 .src = MSM_BUS_MASTER_AMPSS_M0,
834 .dst = MSM_BUS_SLAVE_EBI_CH0,
835 .ab = 500000,
836 .ib = 1000000,
837 },
838 {
839 .src = MSM_BUS_MASTER_AMPSS_M0,
840 .dst = MSM_BUS_SLAVE_EBI_CH0,
841 .ab = 500000,
842 .ib = 1000000,
843 },
844};
845static struct msm_bus_vectors vidc_vdec_vga_vectors[] = {
846 {
847 .src = MSM_BUS_MASTER_VIDEO_ENC,
848 .dst = MSM_BUS_SLAVE_EBI_CH0,
849 .ab = 40894464,
850 .ib = 327155712,
851 },
852 {
853 .src = MSM_BUS_MASTER_VIDEO_DEC,
854 .dst = MSM_BUS_SLAVE_EBI_CH0,
855 .ab = 48234496,
856 .ib = 192937984,
857 },
858 {
859 .src = MSM_BUS_MASTER_AMPSS_M0,
860 .dst = MSM_BUS_SLAVE_EBI_CH0,
861 .ab = 500000,
862 .ib = 2000000,
863 },
864 {
865 .src = MSM_BUS_MASTER_AMPSS_M0,
866 .dst = MSM_BUS_SLAVE_EBI_CH0,
867 .ab = 500000,
868 .ib = 2000000,
869 },
870};
871static struct msm_bus_vectors vidc_venc_720p_vectors[] = {
872 {
873 .src = MSM_BUS_MASTER_VIDEO_ENC,
874 .dst = MSM_BUS_SLAVE_EBI_CH0,
875 .ab = 163577856,
876 .ib = 1308622848,
877 },
878 {
879 .src = MSM_BUS_MASTER_VIDEO_DEC,
880 .dst = MSM_BUS_SLAVE_EBI_CH0,
881 .ab = 219152384,
882 .ib = 876609536,
883 },
884 {
885 .src = MSM_BUS_MASTER_AMPSS_M0,
886 .dst = MSM_BUS_SLAVE_EBI_CH0,
887 .ab = 1750000,
888 .ib = 3500000,
889 },
890 {
891 .src = MSM_BUS_MASTER_AMPSS_M0,
892 .dst = MSM_BUS_SLAVE_EBI_CH0,
893 .ab = 1750000,
894 .ib = 3500000,
895 },
896};
897static struct msm_bus_vectors vidc_vdec_720p_vectors[] = {
898 {
899 .src = MSM_BUS_MASTER_VIDEO_ENC,
900 .dst = MSM_BUS_SLAVE_EBI_CH0,
901 .ab = 121634816,
902 .ib = 973078528,
903 },
904 {
905 .src = MSM_BUS_MASTER_VIDEO_DEC,
906 .dst = MSM_BUS_SLAVE_EBI_CH0,
907 .ab = 155189248,
908 .ib = 620756992,
909 },
910 {
911 .src = MSM_BUS_MASTER_AMPSS_M0,
912 .dst = MSM_BUS_SLAVE_EBI_CH0,
913 .ab = 1750000,
914 .ib = 7000000,
915 },
916 {
917 .src = MSM_BUS_MASTER_AMPSS_M0,
918 .dst = MSM_BUS_SLAVE_EBI_CH0,
919 .ab = 1750000,
920 .ib = 7000000,
921 },
922};
923static struct msm_bus_vectors vidc_venc_1080p_vectors[] = {
924 {
925 .src = MSM_BUS_MASTER_VIDEO_ENC,
926 .dst = MSM_BUS_SLAVE_EBI_CH0,
927 .ab = 372244480,
928 .ib = 2560000000U,
929 },
930 {
931 .src = MSM_BUS_MASTER_VIDEO_DEC,
932 .dst = MSM_BUS_SLAVE_EBI_CH0,
933 .ab = 501219328,
934 .ib = 2560000000U,
935 },
936 {
937 .src = MSM_BUS_MASTER_AMPSS_M0,
938 .dst = MSM_BUS_SLAVE_EBI_CH0,
939 .ab = 2500000,
940 .ib = 5000000,
941 },
942 {
943 .src = MSM_BUS_MASTER_AMPSS_M0,
944 .dst = MSM_BUS_SLAVE_EBI_CH0,
945 .ab = 2500000,
946 .ib = 5000000,
947 },
948};
949static struct msm_bus_vectors vidc_vdec_1080p_vectors[] = {
950 {
951 .src = MSM_BUS_MASTER_VIDEO_ENC,
952 .dst = MSM_BUS_SLAVE_EBI_CH0,
953 .ab = 222298112,
954 .ib = 2560000000U,
955 },
956 {
957 .src = MSM_BUS_MASTER_VIDEO_DEC,
958 .dst = MSM_BUS_SLAVE_EBI_CH0,
959 .ab = 330301440,
960 .ib = 2560000000U,
961 },
962 {
963 .src = MSM_BUS_MASTER_AMPSS_M0,
964 .dst = MSM_BUS_SLAVE_EBI_CH0,
965 .ab = 2500000,
966 .ib = 700000000,
967 },
968 {
969 .src = MSM_BUS_MASTER_AMPSS_M0,
970 .dst = MSM_BUS_SLAVE_EBI_CH0,
971 .ab = 2500000,
972 .ib = 10000000,
973 },
974};
975
976static struct msm_bus_paths vidc_bus_client_config[] = {
977 {
978 ARRAY_SIZE(vidc_init_vectors),
979 vidc_init_vectors,
980 },
981 {
982 ARRAY_SIZE(vidc_venc_vga_vectors),
983 vidc_venc_vga_vectors,
984 },
985 {
986 ARRAY_SIZE(vidc_vdec_vga_vectors),
987 vidc_vdec_vga_vectors,
988 },
989 {
990 ARRAY_SIZE(vidc_venc_720p_vectors),
991 vidc_venc_720p_vectors,
992 },
993 {
994 ARRAY_SIZE(vidc_vdec_720p_vectors),
995 vidc_vdec_720p_vectors,
996 },
997 {
998 ARRAY_SIZE(vidc_venc_1080p_vectors),
999 vidc_venc_1080p_vectors,
1000 },
1001 {
1002 ARRAY_SIZE(vidc_vdec_1080p_vectors),
1003 vidc_vdec_1080p_vectors,
1004 },
1005};
1006
1007static struct msm_bus_scale_pdata vidc_bus_client_data = {
1008 vidc_bus_client_config,
1009 ARRAY_SIZE(vidc_bus_client_config),
1010 .name = "vidc",
1011};
1012#endif
1013
1014
1015#define APQ8064_VIDC_BASE_PHYS 0x04400000
1016#define APQ8064_VIDC_BASE_SIZE 0x00100000
1017
1018static struct resource apq8064_device_vidc_resources[] = {
1019 {
1020 .start = APQ8064_VIDC_BASE_PHYS,
1021 .end = APQ8064_VIDC_BASE_PHYS + APQ8064_VIDC_BASE_SIZE - 1,
1022 .flags = IORESOURCE_MEM,
1023 },
1024 {
1025 .start = VCODEC_IRQ,
1026 .end = VCODEC_IRQ,
1027 .flags = IORESOURCE_IRQ,
1028 },
1029};
1030
1031struct msm_vidc_platform_data apq8064_vidc_platform_data = {
1032#ifdef CONFIG_MSM_BUS_SCALING
1033 .vidc_bus_client_pdata = &vidc_bus_client_data,
1034#endif
1035#ifdef CONFIG_MSM_MULTIMEDIA_USE_ION
1036 .memtype = ION_CP_MM_HEAP_ID,
1037 .enable_ion = 1,
1038#else
1039 .memtype = MEMTYPE_EBI1,
1040 .enable_ion = 0,
1041#endif
1042 .disable_dmx = 0,
1043 .disable_fullhd = 0,
1044};
1045
1046struct platform_device apq8064_msm_device_vidc = {
1047 .name = "msm_vidc",
1048 .id = 0,
1049 .num_resources = ARRAY_SIZE(apq8064_device_vidc_resources),
1050 .resource = apq8064_device_vidc_resources,
1051 .dev = {
1052 .platform_data = &apq8064_vidc_platform_data,
1053 },
1054};
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001055#define MSM_SDC1_BASE 0x12400000
1056#define MSM_SDC1_DML_BASE (MSM_SDC1_BASE + 0x800)
1057#define MSM_SDC1_BAM_BASE (MSM_SDC1_BASE + 0x2000)
1058#define MSM_SDC2_BASE 0x12140000
1059#define MSM_SDC2_DML_BASE (MSM_SDC2_BASE + 0x800)
1060#define MSM_SDC2_BAM_BASE (MSM_SDC2_BASE + 0x2000)
1061#define MSM_SDC3_BASE 0x12180000
1062#define MSM_SDC3_DML_BASE (MSM_SDC3_BASE + 0x800)
1063#define MSM_SDC3_BAM_BASE (MSM_SDC3_BASE + 0x2000)
1064#define MSM_SDC4_BASE 0x121C0000
1065#define MSM_SDC4_DML_BASE (MSM_SDC4_BASE + 0x800)
1066#define MSM_SDC4_BAM_BASE (MSM_SDC4_BASE + 0x2000)
1067
1068static struct resource resources_sdc1[] = {
1069 {
1070 .name = "core_mem",
1071 .flags = IORESOURCE_MEM,
1072 .start = MSM_SDC1_BASE,
1073 .end = MSM_SDC1_DML_BASE - 1,
1074 },
1075 {
1076 .name = "core_irq",
1077 .flags = IORESOURCE_IRQ,
1078 .start = SDC1_IRQ_0,
1079 .end = SDC1_IRQ_0
1080 },
1081#ifdef CONFIG_MMC_MSM_SPS_SUPPORT
1082 {
1083 .name = "sdcc_dml_addr",
1084 .start = MSM_SDC1_DML_BASE,
1085 .end = MSM_SDC1_BAM_BASE - 1,
1086 .flags = IORESOURCE_MEM,
1087 },
1088 {
1089 .name = "sdcc_bam_addr",
1090 .start = MSM_SDC1_BAM_BASE,
1091 .end = MSM_SDC1_BAM_BASE + (2 * SZ_4K) - 1,
1092 .flags = IORESOURCE_MEM,
1093 },
1094 {
1095 .name = "sdcc_bam_irq",
1096 .start = SDC1_BAM_IRQ,
1097 .end = SDC1_BAM_IRQ,
1098 .flags = IORESOURCE_IRQ,
1099 },
1100#endif
1101};
1102
1103static struct resource resources_sdc2[] = {
1104 {
1105 .name = "core_mem",
1106 .flags = IORESOURCE_MEM,
1107 .start = MSM_SDC2_BASE,
1108 .end = MSM_SDC2_DML_BASE - 1,
1109 },
1110 {
1111 .name = "core_irq",
1112 .flags = IORESOURCE_IRQ,
1113 .start = SDC2_IRQ_0,
1114 .end = SDC2_IRQ_0
1115 },
1116#ifdef CONFIG_MMC_MSM_SPS_SUPPORT
1117 {
1118 .name = "sdcc_dml_addr",
1119 .start = MSM_SDC2_DML_BASE,
1120 .end = MSM_SDC2_BAM_BASE - 1,
1121 .flags = IORESOURCE_MEM,
1122 },
1123 {
1124 .name = "sdcc_bam_addr",
1125 .start = MSM_SDC2_BAM_BASE,
1126 .end = MSM_SDC2_BAM_BASE + (2 * SZ_4K) - 1,
1127 .flags = IORESOURCE_MEM,
1128 },
1129 {
1130 .name = "sdcc_bam_irq",
1131 .start = SDC2_BAM_IRQ,
1132 .end = SDC2_BAM_IRQ,
1133 .flags = IORESOURCE_IRQ,
1134 },
1135#endif
1136};
1137
1138static struct resource resources_sdc3[] = {
1139 {
1140 .name = "core_mem",
1141 .flags = IORESOURCE_MEM,
1142 .start = MSM_SDC3_BASE,
1143 .end = MSM_SDC3_DML_BASE - 1,
1144 },
1145 {
1146 .name = "core_irq",
1147 .flags = IORESOURCE_IRQ,
1148 .start = SDC3_IRQ_0,
1149 .end = SDC3_IRQ_0
1150 },
1151#ifdef CONFIG_MMC_MSM_SPS_SUPPORT
1152 {
1153 .name = "sdcc_dml_addr",
1154 .start = MSM_SDC3_DML_BASE,
1155 .end = MSM_SDC3_BAM_BASE - 1,
1156 .flags = IORESOURCE_MEM,
1157 },
1158 {
1159 .name = "sdcc_bam_addr",
1160 .start = MSM_SDC3_BAM_BASE,
1161 .end = MSM_SDC3_BAM_BASE + (2 * SZ_4K) - 1,
1162 .flags = IORESOURCE_MEM,
1163 },
1164 {
1165 .name = "sdcc_bam_irq",
1166 .start = SDC3_BAM_IRQ,
1167 .end = SDC3_BAM_IRQ,
1168 .flags = IORESOURCE_IRQ,
1169 },
1170#endif
1171};
1172
1173static struct resource resources_sdc4[] = {
1174 {
1175 .name = "core_mem",
1176 .flags = IORESOURCE_MEM,
1177 .start = MSM_SDC4_BASE,
1178 .end = MSM_SDC4_DML_BASE - 1,
1179 },
1180 {
1181 .name = "core_irq",
1182 .flags = IORESOURCE_IRQ,
1183 .start = SDC4_IRQ_0,
1184 .end = SDC4_IRQ_0
1185 },
1186#ifdef CONFIG_MMC_MSM_SPS_SUPPORT
1187 {
1188 .name = "sdcc_dml_addr",
1189 .start = MSM_SDC4_DML_BASE,
1190 .end = MSM_SDC4_BAM_BASE - 1,
1191 .flags = IORESOURCE_MEM,
1192 },
1193 {
1194 .name = "sdcc_bam_addr",
1195 .start = MSM_SDC4_BAM_BASE,
1196 .end = MSM_SDC4_BAM_BASE + (2 * SZ_4K) - 1,
1197 .flags = IORESOURCE_MEM,
1198 },
1199 {
1200 .name = "sdcc_bam_irq",
1201 .start = SDC4_BAM_IRQ,
1202 .end = SDC4_BAM_IRQ,
1203 .flags = IORESOURCE_IRQ,
1204 },
1205#endif
1206};
1207
1208struct platform_device apq8064_device_sdc1 = {
1209 .name = "msm_sdcc",
1210 .id = 1,
1211 .num_resources = ARRAY_SIZE(resources_sdc1),
1212 .resource = resources_sdc1,
1213 .dev = {
1214 .coherent_dma_mask = 0xffffffff,
1215 },
1216};
1217
1218struct platform_device apq8064_device_sdc2 = {
1219 .name = "msm_sdcc",
1220 .id = 2,
1221 .num_resources = ARRAY_SIZE(resources_sdc2),
1222 .resource = resources_sdc2,
1223 .dev = {
1224 .coherent_dma_mask = 0xffffffff,
1225 },
1226};
1227
1228struct platform_device apq8064_device_sdc3 = {
1229 .name = "msm_sdcc",
1230 .id = 3,
1231 .num_resources = ARRAY_SIZE(resources_sdc3),
1232 .resource = resources_sdc3,
1233 .dev = {
1234 .coherent_dma_mask = 0xffffffff,
1235 },
1236};
1237
1238struct platform_device apq8064_device_sdc4 = {
1239 .name = "msm_sdcc",
1240 .id = 4,
1241 .num_resources = ARRAY_SIZE(resources_sdc4),
1242 .resource = resources_sdc4,
1243 .dev = {
1244 .coherent_dma_mask = 0xffffffff,
1245 },
1246};
1247
1248static struct platform_device *apq8064_sdcc_devices[] __initdata = {
1249 &apq8064_device_sdc1,
1250 &apq8064_device_sdc2,
1251 &apq8064_device_sdc3,
1252 &apq8064_device_sdc4,
1253};
1254
1255int __init apq8064_add_sdcc(unsigned int controller,
1256 struct mmc_platform_data *plat)
1257{
1258 struct platform_device *pdev;
1259
1260 if (!plat)
1261 return 0;
1262 if (controller < 1 || controller > 4)
1263 return -EINVAL;
1264
1265 pdev = apq8064_sdcc_devices[controller-1];
1266 pdev->dev.platform_data = plat;
1267 return platform_device_register(pdev);
1268}
1269
Yan He06913ce2011-08-26 16:33:46 -07001270static struct resource resources_sps[] = {
1271 {
1272 .name = "pipe_mem",
1273 .start = 0x12800000,
1274 .end = 0x12800000 + 0x4000 - 1,
1275 .flags = IORESOURCE_MEM,
1276 },
1277 {
1278 .name = "bamdma_dma",
1279 .start = 0x12240000,
1280 .end = 0x12240000 + 0x1000 - 1,
1281 .flags = IORESOURCE_MEM,
1282 },
1283 {
1284 .name = "bamdma_bam",
1285 .start = 0x12244000,
1286 .end = 0x12244000 + 0x4000 - 1,
1287 .flags = IORESOURCE_MEM,
1288 },
1289 {
1290 .name = "bamdma_irq",
1291 .start = SPS_BAM_DMA_IRQ,
1292 .end = SPS_BAM_DMA_IRQ,
1293 .flags = IORESOURCE_IRQ,
1294 },
1295};
1296
Gagan Mac8a7a5d32011-11-11 16:43:06 -07001297struct platform_device msm_bus_8064_sys_fabric = {
1298 .name = "msm_bus_fabric",
1299 .id = MSM_BUS_FAB_SYSTEM,
1300};
1301struct platform_device msm_bus_8064_apps_fabric = {
1302 .name = "msm_bus_fabric",
1303 .id = MSM_BUS_FAB_APPSS,
1304};
1305struct platform_device msm_bus_8064_mm_fabric = {
1306 .name = "msm_bus_fabric",
1307 .id = MSM_BUS_FAB_MMSS,
1308};
1309struct platform_device msm_bus_8064_sys_fpb = {
1310 .name = "msm_bus_fabric",
1311 .id = MSM_BUS_FAB_SYSTEM_FPB,
1312};
1313struct platform_device msm_bus_8064_cpss_fpb = {
1314 .name = "msm_bus_fabric",
1315 .id = MSM_BUS_FAB_CPSS_FPB,
1316};
1317
Yan He06913ce2011-08-26 16:33:46 -07001318static struct msm_sps_platform_data msm_sps_pdata = {
1319 .bamdma_restricted_pipes = 0x06,
1320};
1321
1322struct platform_device msm_device_sps_apq8064 = {
1323 .name = "msm_sps",
1324 .id = -1,
1325 .num_resources = ARRAY_SIZE(resources_sps),
1326 .resource = resources_sps,
1327 .dev.platform_data = &msm_sps_pdata,
1328};
1329
Eric Holmberg023d25c2012-03-01 12:27:55 -07001330static struct resource smd_resource[] = {
1331 {
1332 .name = "a9_m2a_0",
1333 .start = INT_A9_M2A_0,
1334 .flags = IORESOURCE_IRQ,
1335 },
1336 {
1337 .name = "a9_m2a_5",
1338 .start = INT_A9_M2A_5,
1339 .flags = IORESOURCE_IRQ,
1340 },
1341 {
1342 .name = "adsp_a11",
1343 .start = INT_ADSP_A11,
1344 .flags = IORESOURCE_IRQ,
1345 },
1346 {
1347 .name = "adsp_a11_smsm",
1348 .start = INT_ADSP_A11_SMSM,
1349 .flags = IORESOURCE_IRQ,
1350 },
1351 {
1352 .name = "dsps_a11",
1353 .start = INT_DSPS_A11,
1354 .flags = IORESOURCE_IRQ,
1355 },
1356 {
1357 .name = "dsps_a11_smsm",
1358 .start = INT_DSPS_A11_SMSM,
1359 .flags = IORESOURCE_IRQ,
1360 },
1361 {
1362 .name = "wcnss_a11",
1363 .start = INT_WCNSS_A11,
1364 .flags = IORESOURCE_IRQ,
1365 },
1366 {
1367 .name = "wcnss_a11_smsm",
1368 .start = INT_WCNSS_A11_SMSM,
1369 .flags = IORESOURCE_IRQ,
1370 },
1371};
1372
1373static struct smd_subsystem_config smd_config_list[] = {
1374 {
1375 .irq_config_id = SMD_MODEM,
1376 .subsys_name = "gss",
1377 .edge = SMD_APPS_MODEM,
1378
1379 .smd_int.irq_name = "a9_m2a_0",
1380 .smd_int.flags = IRQF_TRIGGER_RISING,
1381 .smd_int.irq_id = -1,
1382 .smd_int.device_name = "smd_dev",
1383 .smd_int.dev_id = 0,
1384 .smd_int.out_bit_pos = 1 << 3,
1385 .smd_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1386 .smd_int.out_offset = 0x8,
1387
1388 .smsm_int.irq_name = "a9_m2a_5",
1389 .smsm_int.flags = IRQF_TRIGGER_RISING,
1390 .smsm_int.irq_id = -1,
1391 .smsm_int.device_name = "smd_smsm",
1392 .smsm_int.dev_id = 0,
1393 .smsm_int.out_bit_pos = 1 << 4,
1394 .smsm_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1395 .smsm_int.out_offset = 0x8,
1396 },
1397 {
1398 .irq_config_id = SMD_Q6,
1399 .subsys_name = "q6",
1400 .edge = SMD_APPS_QDSP,
1401
1402 .smd_int.irq_name = "adsp_a11",
1403 .smd_int.flags = IRQF_TRIGGER_RISING,
1404 .smd_int.irq_id = -1,
1405 .smd_int.device_name = "smd_dev",
1406 .smd_int.dev_id = 0,
1407 .smd_int.out_bit_pos = 1 << 15,
1408 .smd_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1409 .smd_int.out_offset = 0x8,
1410
1411 .smsm_int.irq_name = "adsp_a11_smsm",
1412 .smsm_int.flags = IRQF_TRIGGER_RISING,
1413 .smsm_int.irq_id = -1,
1414 .smsm_int.device_name = "smd_smsm",
1415 .smsm_int.dev_id = 0,
1416 .smsm_int.out_bit_pos = 1 << 14,
1417 .smsm_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1418 .smsm_int.out_offset = 0x8,
1419 },
1420 {
1421 .irq_config_id = SMD_DSPS,
1422 .subsys_name = "dsps",
1423 .edge = SMD_APPS_DSPS,
1424
1425 .smd_int.irq_name = "dsps_a11",
1426 .smd_int.flags = IRQF_TRIGGER_RISING,
1427 .smd_int.irq_id = -1,
1428 .smd_int.device_name = "smd_dev",
1429 .smd_int.dev_id = 0,
1430 .smd_int.out_bit_pos = 1,
1431 .smd_int.out_base = (void __iomem *)MSM_SIC_NON_SECURE_BASE,
1432 .smd_int.out_offset = 0x4080,
1433
1434 .smsm_int.irq_name = "dsps_a11_smsm",
1435 .smsm_int.flags = IRQF_TRIGGER_RISING,
1436 .smsm_int.irq_id = -1,
1437 .smsm_int.device_name = "smd_smsm",
1438 .smsm_int.dev_id = 0,
1439 .smsm_int.out_bit_pos = 1,
1440 .smsm_int.out_base = (void __iomem *)MSM_SIC_NON_SECURE_BASE,
1441 .smsm_int.out_offset = 0x4094,
1442 },
1443 {
1444 .irq_config_id = SMD_WCNSS,
1445 .subsys_name = "wcnss",
1446 .edge = SMD_APPS_WCNSS,
1447
1448 .smd_int.irq_name = "wcnss_a11",
1449 .smd_int.flags = IRQF_TRIGGER_RISING,
1450 .smd_int.irq_id = -1,
1451 .smd_int.device_name = "smd_dev",
1452 .smd_int.dev_id = 0,
1453 .smd_int.out_bit_pos = 1 << 25,
1454 .smd_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1455 .smd_int.out_offset = 0x8,
1456
1457 .smsm_int.irq_name = "wcnss_a11_smsm",
1458 .smsm_int.flags = IRQF_TRIGGER_RISING,
1459 .smsm_int.irq_id = -1,
1460 .smsm_int.device_name = "smd_smsm",
1461 .smsm_int.dev_id = 0,
1462 .smsm_int.out_bit_pos = 1 << 23,
1463 .smsm_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1464 .smsm_int.out_offset = 0x8,
1465 },
1466};
1467
Eric Holmberg2bb6ccd2012-03-13 13:05:14 -06001468static struct smd_subsystem_restart_config smd_ssr_config = {
1469 .disable_smsm_reset_handshake = 1,
1470};
1471
Eric Holmberg023d25c2012-03-01 12:27:55 -07001472static struct smd_platform smd_platform_data = {
1473 .num_ss_configs = ARRAY_SIZE(smd_config_list),
1474 .smd_ss_configs = smd_config_list,
Eric Holmberg2bb6ccd2012-03-13 13:05:14 -06001475 .smd_ssr_config = &smd_ssr_config,
Eric Holmberg023d25c2012-03-01 12:27:55 -07001476};
1477
Jeff Hugo0c0f5e92011-09-28 13:55:45 -06001478struct platform_device msm_device_smd_apq8064 = {
1479 .name = "msm_smd",
1480 .id = -1,
Eric Holmberg023d25c2012-03-01 12:27:55 -07001481 .resource = smd_resource,
1482 .num_resources = ARRAY_SIZE(smd_resource),
1483 .dev = {
1484 .platform_data = &smd_platform_data,
1485 },
Jeff Hugo0c0f5e92011-09-28 13:55:45 -06001486};
1487
Ramesh Masavarapuf46be1b2011-11-03 11:13:41 -07001488#ifdef CONFIG_HW_RANDOM_MSM
1489/* PRNG device */
1490#define MSM_PRNG_PHYS 0x1A500000
1491static struct resource rng_resources = {
1492 .flags = IORESOURCE_MEM,
1493 .start = MSM_PRNG_PHYS,
1494 .end = MSM_PRNG_PHYS + SZ_512 - 1,
1495};
1496
1497struct platform_device apq8064_device_rng = {
1498 .name = "msm_rng",
1499 .id = 0,
1500 .num_resources = 1,
1501 .resource = &rng_resources,
1502};
1503#endif
1504
Matt Wagantall292aace2012-01-26 19:12:34 -08001505static struct resource msm_gss_resources[] = {
1506 {
1507 .start = 0x10000000,
1508 .end = 0x10000000 + SZ_256 - 1,
1509 .flags = IORESOURCE_MEM,
1510 },
Matt Wagantall19ac4fd2012-02-03 20:18:23 -08001511 {
1512 .start = 0x10008000,
1513 .end = 0x10008000 + SZ_256 - 1,
1514 .flags = IORESOURCE_MEM,
1515 },
Matt Wagantall292aace2012-01-26 19:12:34 -08001516};
1517
1518struct platform_device msm_gss = {
1519 .name = "pil_gss",
1520 .id = -1,
1521 .num_resources = ARRAY_SIZE(msm_gss_resources),
1522 .resource = msm_gss_resources,
1523};
1524
Matt Wagantall1875d322012-02-22 16:11:33 -08001525struct platform_device *apq8064_fs_devices[] = {
1526 FS_8X60(FS_ROT, "fs_rot"),
1527 FS_8X60(FS_IJPEG, "fs_ijpeg"),
1528 FS_8X60(FS_VFE, "fs_vfe"),
1529 FS_8X60(FS_VPE, "fs_vpe"),
1530 FS_8X60(FS_GFX3D, "fs_gfx3d"),
1531 FS_8X60(FS_VED, "fs_ved"),
1532 FS_8X60(FS_VCAP, "fs_vcap"),
1533};
1534unsigned apq8064_num_fs_devices = ARRAY_SIZE(apq8064_fs_devices);
1535
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001536static struct clk_lookup msm_clocks_8064_dummy[] = {
1537 CLK_DUMMY("pll2", PLL2, NULL, 0),
1538 CLK_DUMMY("pll8", PLL8, NULL, 0),
1539 CLK_DUMMY("pll4", PLL4, NULL, 0),
1540
1541 CLK_DUMMY("afab_clk", AFAB_CLK, NULL, 0),
1542 CLK_DUMMY("afab_a_clk", AFAB_A_CLK, NULL, 0),
1543 CLK_DUMMY("cfpb_clk", CFPB_CLK, NULL, 0),
1544 CLK_DUMMY("cfpb_a_clk", CFPB_A_CLK, NULL, 0),
1545 CLK_DUMMY("dfab_clk", DFAB_CLK, NULL, 0),
1546 CLK_DUMMY("dfab_a_clk", DFAB_A_CLK, NULL, 0),
1547 CLK_DUMMY("ebi1_clk", EBI1_CLK, NULL, 0),
1548 CLK_DUMMY("ebi1_a_clk", EBI1_A_CLK, NULL, 0),
1549 CLK_DUMMY("mmfab_clk", MMFAB_CLK, NULL, 0),
1550 CLK_DUMMY("mmfab_a_clk", MMFAB_A_CLK, NULL, 0),
1551 CLK_DUMMY("mmfpb_clk", MMFPB_CLK, NULL, 0),
1552 CLK_DUMMY("mmfpb_a_clk", MMFPB_A_CLK, NULL, 0),
1553 CLK_DUMMY("sfab_clk", SFAB_CLK, NULL, 0),
1554 CLK_DUMMY("sfab_a_clk", SFAB_A_CLK, NULL, 0),
1555 CLK_DUMMY("sfpb_clk", SFPB_CLK, NULL, 0),
1556 CLK_DUMMY("sfpb_a_clk", SFPB_A_CLK, NULL, 0),
1557
Matt Wagantalle2522372011-08-17 14:52:21 -07001558 CLK_DUMMY("core_clk", GSBI1_UART_CLK, NULL, OFF),
1559 CLK_DUMMY("core_clk", GSBI2_UART_CLK, NULL, OFF),
1560 CLK_DUMMY("core_clk", GSBI3_UART_CLK,
Jing Lin04601f92012-02-05 15:36:07 -08001561 NULL, OFF),
Matt Wagantalle2522372011-08-17 14:52:21 -07001562 CLK_DUMMY("core_clk", GSBI4_UART_CLK, NULL, OFF),
1563 CLK_DUMMY("core_clk", GSBI5_UART_CLK, NULL, OFF),
1564 CLK_DUMMY("core_clk", GSBI6_UART_CLK, NULL, OFF),
1565 CLK_DUMMY("core_clk", GSBI7_UART_CLK, NULL, OFF),
1566 CLK_DUMMY("core_clk", GSBI8_UART_CLK, NULL, OFF),
1567 CLK_DUMMY("core_clk", GSBI9_UART_CLK, NULL, OFF),
1568 CLK_DUMMY("core_clk", GSBI10_UART_CLK, NULL, OFF),
1569 CLK_DUMMY("core_clk", GSBI11_UART_CLK, NULL, OFF),
1570 CLK_DUMMY("core_clk", GSBI12_UART_CLK, NULL, OFF),
Matt Wagantall62cf63e2011-08-17 16:34:47 -07001571 CLK_DUMMY("core_clk", GSBI1_QUP_CLK, NULL, OFF),
1572 CLK_DUMMY("core_clk", GSBI2_QUP_CLK, NULL, OFF),
Jing Lin04601f92012-02-05 15:36:07 -08001573 CLK_DUMMY("core_clk", GSBI3_QUP_CLK, "qup_i2c.3", OFF),
Matt Wagantallac294852011-08-17 15:44:58 -07001574 CLK_DUMMY("core_clk", GSBI4_QUP_CLK, "qup_i2c.4", OFF),
1575 CLK_DUMMY("core_clk", GSBI5_QUP_CLK, "spi_qsd.0", OFF),
Matt Wagantall62cf63e2011-08-17 16:34:47 -07001576 CLK_DUMMY("core_clk", GSBI6_QUP_CLK, NULL, OFF),
1577 CLK_DUMMY("core_clk", GSBI7_QUP_CLK, NULL, OFF),
Matt Wagantallb86ad262011-10-24 19:50:29 -07001578 CLK_DUMMY("core_clk", PDM_CLK, NULL, OFF),
Matt Wagantalld86d6832011-08-17 14:06:55 -07001579 CLK_DUMMY("mem_clk", PMEM_CLK, NULL, OFF),
Ramesh Masavarapuf46be1b2011-11-03 11:13:41 -07001580 CLK_DUMMY("core_clk", PRNG_CLK, "msm_rng.0", OFF),
Matt Wagantall37ce3842011-08-17 16:00:36 -07001581 CLK_DUMMY("core_clk", SDC1_CLK, NULL, OFF),
1582 CLK_DUMMY("core_clk", SDC2_CLK, NULL, OFF),
1583 CLK_DUMMY("core_clk", SDC3_CLK, NULL, OFF),
1584 CLK_DUMMY("core_clk", SDC4_CLK, NULL, OFF),
Matt Wagantall640e5fd2011-08-17 16:08:53 -07001585 CLK_DUMMY("ref_clk", TSIF_REF_CLK, NULL, OFF),
Matt Wagantallb86ad262011-10-24 19:50:29 -07001586 CLK_DUMMY("core_clk", TSSC_CLK, NULL, OFF),
Manu Gautam5143b252012-01-05 19:25:23 -08001587 CLK_DUMMY("alt_core_clk", USB_HS1_XCVR_CLK, NULL, OFF),
1588 CLK_DUMMY("alt_core_clk", USB_HS3_XCVR_CLK, NULL, OFF),
1589 CLK_DUMMY("alt_core_clk", USB_HS4_XCVR_CLK, NULL, OFF),
1590 CLK_DUMMY("phy_clk", USB_PHY0_CLK, NULL, OFF),
1591 CLK_DUMMY("src_clk", USB_FS1_SRC_CLK, NULL, OFF),
1592 CLK_DUMMY("alt_core_clk", USB_FS1_XCVR_CLK, NULL, OFF),
1593 CLK_DUMMY("sys_clk", USB_FS1_SYS_CLK, NULL, OFF),
Matt Wagantallc4b3a4d2011-08-17 16:58:39 -07001594 CLK_DUMMY("core_clk", CE2_CLK, NULL, OFF),
1595 CLK_DUMMY("core_clk", CE1_CORE_CLK, NULL, OFF),
1596 CLK_DUMMY("core_clk", CE3_CORE_CLK, NULL, OFF),
1597 CLK_DUMMY("iface_clk", CE3_P_CLK, NULL, OFF),
Tianyi Gou86bb4722011-08-09 13:28:02 -07001598 CLK_DUMMY("pcie_pclk", PCIE_P_CLK, NULL, OFF),
1599 CLK_DUMMY("pcie_alt_ref_clk", PCIE_ALT_REF_CLK, NULL, OFF),
1600 CLK_DUMMY("sata_rxoob_clk", SATA_RXOOB_CLK, NULL, OFF),
1601 CLK_DUMMY("sata_pmalive_clk", SATA_PMALIVE_CLK, NULL, OFF),
Matt Wagantallb86ad262011-10-24 19:50:29 -07001602 CLK_DUMMY("ref_clk", SATA_PHY_REF_CLK, NULL, OFF),
Matt Wagantall62cf63e2011-08-17 16:34:47 -07001603 CLK_DUMMY("iface_clk", GSBI1_P_CLK, NULL, OFF),
1604 CLK_DUMMY("iface_clk", GSBI2_P_CLK, NULL, OFF),
Jing Lin04601f92012-02-05 15:36:07 -08001605 CLK_DUMMY("iface_clk", GSBI3_P_CLK, "qup_i2c.3", OFF),
Matt Wagantallac294852011-08-17 15:44:58 -07001606 CLK_DUMMY("iface_clk", GSBI4_P_CLK, "qup_i2c.4", OFF),
1607 CLK_DUMMY("iface_clk", GSBI5_P_CLK, "spi_qsd.0", OFF),
Matt Wagantalle2522372011-08-17 14:52:21 -07001608 CLK_DUMMY("iface_clk", GSBI6_P_CLK, NULL, OFF),
Matt Wagantall62cf63e2011-08-17 16:34:47 -07001609 CLK_DUMMY("iface_clk", GSBI7_P_CLK, NULL, OFF),
Matt Wagantall640e5fd2011-08-17 16:08:53 -07001610 CLK_DUMMY("iface_clk", TSIF_P_CLK, NULL, OFF),
Manu Gautam5143b252012-01-05 19:25:23 -08001611 CLK_DUMMY("iface_clk", USB_FS1_P_CLK, NULL, OFF),
1612 CLK_DUMMY("iface_clk", USB_HS1_P_CLK, NULL, OFF),
1613 CLK_DUMMY("iface_clk", USB_HS3_P_CLK, NULL, OFF),
1614 CLK_DUMMY("iface_clk", USB_HS4_P_CLK, NULL, OFF),
Matt Wagantall37ce3842011-08-17 16:00:36 -07001615 CLK_DUMMY("iface_clk", SDC1_P_CLK, NULL, OFF),
1616 CLK_DUMMY("iface_clk", SDC2_P_CLK, NULL, OFF),
1617 CLK_DUMMY("iface_clk", SDC3_P_CLK, NULL, OFF),
1618 CLK_DUMMY("iface_clk", SDC4_P_CLK, NULL, OFF),
Jin Hong01f2dbb2011-11-03 22:13:51 -07001619 CLK_DUMMY("core_clk", ADM0_CLK, "msm_dmov", OFF),
1620 CLK_DUMMY("iface_clk", ADM0_P_CLK, "msm_dmov", OFF),
Matt Wagantallb86ad262011-10-24 19:50:29 -07001621 CLK_DUMMY("iface_clk", PMIC_ARB0_P_CLK, NULL, OFF),
1622 CLK_DUMMY("iface_clk", PMIC_ARB1_P_CLK, NULL, OFF),
1623 CLK_DUMMY("core_clk", PMIC_SSBI2_CLK, NULL, OFF),
1624 CLK_DUMMY("mem_clk", RPM_MSG_RAM_P_CLK, NULL, OFF),
1625 CLK_DUMMY("core_clk", AMP_CLK, NULL, OFF),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001626 CLK_DUMMY("cam_clk", CAM0_CLK, NULL, OFF),
1627 CLK_DUMMY("cam_clk", CAM1_CLK, NULL, OFF),
1628 CLK_DUMMY("csi_src_clk", CSI0_SRC_CLK, NULL, OFF),
1629 CLK_DUMMY("csi_src_clk", CSI1_SRC_CLK, NULL, OFF),
1630 CLK_DUMMY("csi_clk", CSI0_CLK, NULL, OFF),
1631 CLK_DUMMY("csi_clk", CSI1_CLK, NULL, OFF),
1632 CLK_DUMMY("csi_pix_clk", CSI_PIX_CLK, NULL, OFF),
1633 CLK_DUMMY("csi_rdi_clk", CSI_RDI_CLK, NULL, OFF),
1634 CLK_DUMMY("csiphy_timer_src_clk", CSIPHY_TIMER_SRC_CLK, NULL, OFF),
1635 CLK_DUMMY("csi0phy_timer_clk", CSIPHY0_TIMER_CLK, NULL, OFF),
1636 CLK_DUMMY("csi1phy_timer_clk", CSIPHY1_TIMER_CLK, NULL, OFF),
1637 CLK_DUMMY("dsi_byte_div_clk", DSI1_BYTE_CLK, NULL, OFF),
1638 CLK_DUMMY("dsi_byte_div_clk", DSI2_BYTE_CLK, NULL, OFF),
1639 CLK_DUMMY("dsi_esc_clk", DSI1_ESC_CLK, NULL, OFF),
1640 CLK_DUMMY("dsi_esc_clk", DSI2_ESC_CLK, NULL, OFF),
Matt Wagantall9dc01632011-08-17 18:55:04 -07001641 CLK_DUMMY("core_clk", VCAP_CLK, NULL, OFF),
1642 CLK_DUMMY("npl_clk", VCAP_NPL_CLK, NULL, OFF),
Pu Chen86b4be92011-11-03 17:27:57 -07001643 CLK_DUMMY("core_clk", GFX3D_CLK, "kgsl-3d0.0", OFF),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001644 CLK_DUMMY("ijpeg_clk", IJPEG_CLK, NULL, OFF),
Matt Wagantall9dc01632011-08-17 18:55:04 -07001645 CLK_DUMMY("mem_clk", IMEM_CLK, NULL, OFF),
Matt Wagantallb86ad262011-10-24 19:50:29 -07001646 CLK_DUMMY("core_clk", JPEGD_CLK, NULL, OFF),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001647 CLK_DUMMY("mdp_clk", MDP_CLK, NULL, OFF),
1648 CLK_DUMMY("mdp_vsync_clk", MDP_VSYNC_CLK, NULL, OFF),
1649 CLK_DUMMY("lut_mdp", LUT_MDP_CLK, NULL, OFF),
Matt Wagantallbb90da92011-10-25 15:07:52 -07001650 CLK_DUMMY("core_clk", ROT_CLK, NULL, OFF),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001651 CLK_DUMMY("tv_src_clk", TV_SRC_CLK, NULL, OFF),
Matt Wagantallb86ad262011-10-24 19:50:29 -07001652 CLK_DUMMY("core_clk", VCODEC_CLK, NULL, OFF),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001653 CLK_DUMMY("mdp_tv_clk", MDP_TV_CLK, NULL, OFF),
Tianyi Gou86bb4722011-08-09 13:28:02 -07001654 CLK_DUMMY("rgb_tv_clk", RGB_TV_CLK, NULL, OFF),
1655 CLK_DUMMY("npl_tv_clk", NPL_TV_CLK, NULL, OFF),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001656 CLK_DUMMY("hdmi_clk", HDMI_TV_CLK, NULL, OFF),
Matt Wagantall5a4f1ba2011-08-18 18:13:03 -07001657 CLK_DUMMY("core_clk", HDMI_APP_CLK, "hdmi_msm.1", OFF),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001658 CLK_DUMMY("vpe_clk", VPE_CLK, NULL, OFF),
1659 CLK_DUMMY("vfe_clk", VFE_CLK, NULL, OFF),
1660 CLK_DUMMY("csi_vfe_clk", CSI0_VFE_CLK, NULL, OFF),
1661 CLK_DUMMY("vfe_axi_clk", VFE_AXI_CLK, NULL, OFF),
1662 CLK_DUMMY("ijpeg_axi_clk", IJPEG_AXI_CLK, NULL, OFF),
1663 CLK_DUMMY("mdp_axi_clk", MDP_AXI_CLK, NULL, OFF),
Matt Wagantallbb90da92011-10-25 15:07:52 -07001664 CLK_DUMMY("bus_clk", ROT_AXI_CLK, NULL, OFF),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001665 CLK_DUMMY("vcodec_axi_clk", VCODEC_AXI_CLK, NULL, OFF),
1666 CLK_DUMMY("vcodec_axi_a_clk", VCODEC_AXI_A_CLK, NULL, OFF),
1667 CLK_DUMMY("vcodec_axi_b_clk", VCODEC_AXI_B_CLK, NULL, OFF),
1668 CLK_DUMMY("vpe_axi_clk", VPE_AXI_CLK, NULL, OFF),
Matt Wagantall9dc01632011-08-17 18:55:04 -07001669 CLK_DUMMY("bus_clk", GFX3D_AXI_CLK, NULL, OFF),
Tianyi Gou86bb4722011-08-09 13:28:02 -07001670 CLK_DUMMY("vcap_axi_clk", VCAP_AXI_CLK, NULL, OFF),
1671 CLK_DUMMY("vcap_ahb_clk", VCAP_AHB_CLK, NULL, OFF),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001672 CLK_DUMMY("amp_pclk", AMP_P_CLK, NULL, OFF),
1673 CLK_DUMMY("csi_pclk", CSI0_P_CLK, NULL, OFF),
1674 CLK_DUMMY("dsi_m_pclk", DSI1_M_P_CLK, NULL, OFF),
1675 CLK_DUMMY("dsi_s_pclk", DSI1_S_P_CLK, NULL, OFF),
1676 CLK_DUMMY("dsi_m_pclk", DSI2_M_P_CLK, NULL, OFF),
1677 CLK_DUMMY("dsi_s_pclk", DSI2_S_P_CLK, NULL, OFF),
Tianyi Gou86bb4722011-08-09 13:28:02 -07001678 CLK_DUMMY("lvds_clk", LVDS_CLK, NULL, OFF),
1679 CLK_DUMMY("mdp_p2clk", MDP_P2CLK, NULL, OFF),
1680 CLK_DUMMY("dsi2_pixel_clk", DSI2_PIXEL_CLK, NULL, OFF),
1681 CLK_DUMMY("lvds_ref_clk", LVDS_REF_CLK, NULL, OFF),
Pu Chen86b4be92011-11-03 17:27:57 -07001682 CLK_DUMMY("iface_clk", GFX3D_P_CLK, "kgsl-3d0.0", OFF),
Matt Wagantall5a4f1ba2011-08-18 18:13:03 -07001683 CLK_DUMMY("master_iface_clk", HDMI_M_P_CLK, "hdmi_msm.1", OFF),
1684 CLK_DUMMY("slave_iface_clk", HDMI_S_P_CLK, "hdmi_msm.1", OFF),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001685 CLK_DUMMY("ijpeg_pclk", IJPEG_P_CLK, NULL, OFF),
1686 CLK_DUMMY("jpegd_pclk", JPEGD_P_CLK, NULL, OFF),
Matt Wagantall9dc01632011-08-17 18:55:04 -07001687 CLK_DUMMY("mem_iface_clk", IMEM_P_CLK, NULL, OFF),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001688 CLK_DUMMY("mdp_pclk", MDP_P_CLK, NULL, OFF),
Matt Wagantalle604d712011-10-21 15:38:18 -07001689 CLK_DUMMY("iface_clk", SMMU_P_CLK, "msm_smmu", OFF),
Matt Wagantallbb90da92011-10-25 15:07:52 -07001690 CLK_DUMMY("iface_clk", ROT_P_CLK, NULL, OFF),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001691 CLK_DUMMY("vcodec_pclk", VCODEC_P_CLK, NULL, OFF),
1692 CLK_DUMMY("vfe_pclk", VFE_P_CLK, NULL, OFF),
1693 CLK_DUMMY("vpe_pclk", VPE_P_CLK, NULL, OFF),
1694 CLK_DUMMY("mi2s_osr_clk", MI2S_OSR_CLK, NULL, OFF),
1695 CLK_DUMMY("mi2s_bit_clk", MI2S_BIT_CLK, NULL, OFF),
1696 CLK_DUMMY("i2s_mic_osr_clk", CODEC_I2S_MIC_OSR_CLK, NULL, OFF),
1697 CLK_DUMMY("i2s_mic_bit_clk", CODEC_I2S_MIC_BIT_CLK, NULL, OFF),
1698 CLK_DUMMY("i2s_mic_osr_clk", SPARE_I2S_MIC_OSR_CLK, NULL, OFF),
1699 CLK_DUMMY("i2s_mic_bit_clk", SPARE_I2S_MIC_BIT_CLK, NULL, OFF),
1700 CLK_DUMMY("i2s_spkr_osr_clk", CODEC_I2S_SPKR_OSR_CLK, NULL, OFF),
1701 CLK_DUMMY("i2s_spkr_bit_clk", CODEC_I2S_SPKR_BIT_CLK, NULL, OFF),
1702 CLK_DUMMY("i2s_spkr_osr_clk", SPARE_I2S_SPKR_OSR_CLK, NULL, OFF),
1703 CLK_DUMMY("i2s_spkr_bit_clk", SPARE_I2S_SPKR_BIT_CLK, NULL, OFF),
1704 CLK_DUMMY("pcm_clk", PCM_CLK, NULL, OFF),
Tianyi Gou142b8db2011-09-21 18:01:54 -07001705 CLK_DUMMY("audio_slimbus_clk", AUDIO_SLIMBUS_CLK, NULL, OFF),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001706
1707 CLK_DUMMY("dfab_dsps_clk", DFAB_DSPS_CLK, NULL, 0),
Manu Gautam5143b252012-01-05 19:25:23 -08001708 CLK_DUMMY("core_clk", DFAB_USB_HS_CLK, NULL, 0),
Matt Wagantall37ce3842011-08-17 16:00:36 -07001709 CLK_DUMMY("bus_clk", DFAB_SDC1_CLK, NULL, 0),
1710 CLK_DUMMY("bus_clk", DFAB_SDC2_CLK, NULL, 0),
1711 CLK_DUMMY("bus_clk", DFAB_SDC3_CLK, NULL, 0),
1712 CLK_DUMMY("bus_clk", DFAB_SDC4_CLK, NULL, 0),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001713 CLK_DUMMY("dfab_clk", DFAB_CLK, NULL, 0),
1714 CLK_DUMMY("dma_bam_pclk", DMA_BAM_P_CLK, NULL, 0),
Jin Hong01f2dbb2011-11-03 22:13:51 -07001715 CLK_DUMMY("mem_clk", EBI1_ADM_CLK, "msm_dmov", 0),
Ramesh Masavarapu28311912011-10-27 11:04:12 -07001716 CLK_DUMMY("ce3_core_src_clk", CE3_SRC_CLK, "qce.0", OFF),
1717 CLK_DUMMY("ce3_core_src_clk", CE3_SRC_CLK, "qcrypto.0", OFF),
1718 CLK_DUMMY("core_clk", CE3_CORE_CLK, "qce.0", OFF),
1719 CLK_DUMMY("core_clk", CE3_CORE_CLK, "qcrypto.0", OFF),
1720 CLK_DUMMY("iface_clk", CE3_P_CLK, "qce0.0", OFF),
1721 CLK_DUMMY("iface_clk", CE3_P_CLK, "qcrypto.0", OFF),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001722};
1723
Stephen Boydbb600ae2011-08-02 20:11:40 -07001724struct clock_init_data apq8064_dummy_clock_init_data __initdata = {
1725 .table = msm_clocks_8064_dummy,
1726 .size = ARRAY_SIZE(msm_clocks_8064_dummy),
1727};
Praveen Chidambaram78499012011-11-01 17:15:17 -06001728
1729struct msm_rpm_platform_data apq8064_rpm_data __initdata = {
1730 .reg_base_addrs = {
1731 [MSM_RPM_PAGE_STATUS] = MSM_RPM_BASE,
1732 [MSM_RPM_PAGE_CTRL] = MSM_RPM_BASE + 0x400,
1733 [MSM_RPM_PAGE_REQ] = MSM_RPM_BASE + 0x600,
1734 [MSM_RPM_PAGE_ACK] = MSM_RPM_BASE + 0xa00,
1735 },
1736 .irq_ack = RPM_APCC_CPU0_GP_HIGH_IRQ,
Stephen Boydf61255e2012-02-24 14:31:09 -08001737 .irq_err = RPM_APCC_CPU0_GP_LOW_IRQ,
Praveen Chidambarame396ce62012-03-30 11:15:57 -06001738 .irq_wakeup = RPM_APCC_CPU0_WAKE_UP_IRQ,
Praveen Chidambaram78499012011-11-01 17:15:17 -06001739 .ipc_rpm_reg = MSM_APCS_GCC_BASE + 0x008,
1740 .ipc_rpm_val = 4,
1741 .target_id = {
1742 MSM_RPM_MAP(8064, NOTIFICATION_CONFIGURED_0, NOTIFICATION, 4),
1743 MSM_RPM_MAP(8064, NOTIFICATION_REGISTERED_0, NOTIFICATION, 4),
1744 MSM_RPM_MAP(8064, INVALIDATE_0, INVALIDATE, 8),
1745 MSM_RPM_MAP(8064, TRIGGER_TIMED_TO, TRIGGER_TIMED, 1),
1746 MSM_RPM_MAP(8064, TRIGGER_TIMED_SCLK_COUNT, TRIGGER_TIMED, 1),
1747 MSM_RPM_MAP(8064, RPM_CTL, RPM_CTL, 1),
1748 MSM_RPM_MAP(8064, CXO_CLK, CXO_CLK, 1),
1749 MSM_RPM_MAP(8064, PXO_CLK, PXO_CLK, 1),
1750 MSM_RPM_MAP(8064, APPS_FABRIC_CLK, APPS_FABRIC_CLK, 1),
1751 MSM_RPM_MAP(8064, SYSTEM_FABRIC_CLK, SYSTEM_FABRIC_CLK, 1),
1752 MSM_RPM_MAP(8064, MM_FABRIC_CLK, MM_FABRIC_CLK, 1),
1753 MSM_RPM_MAP(8064, DAYTONA_FABRIC_CLK, DAYTONA_FABRIC_CLK, 1),
1754 MSM_RPM_MAP(8064, SFPB_CLK, SFPB_CLK, 1),
1755 MSM_RPM_MAP(8064, CFPB_CLK, CFPB_CLK, 1),
1756 MSM_RPM_MAP(8064, MMFPB_CLK, MMFPB_CLK, 1),
1757 MSM_RPM_MAP(8064, EBI1_CLK, EBI1_CLK, 1),
1758 MSM_RPM_MAP(8064, APPS_FABRIC_CFG_HALT_0,
1759 APPS_FABRIC_CFG_HALT, 2),
1760 MSM_RPM_MAP(8064, APPS_FABRIC_CFG_CLKMOD_0,
1761 APPS_FABRIC_CFG_CLKMOD, 3),
1762 MSM_RPM_MAP(8064, APPS_FABRIC_CFG_IOCTL,
1763 APPS_FABRIC_CFG_IOCTL, 1),
1764 MSM_RPM_MAP(8064, APPS_FABRIC_ARB_0, APPS_FABRIC_ARB, 12),
1765 MSM_RPM_MAP(8064, SYS_FABRIC_CFG_HALT_0,
1766 SYS_FABRIC_CFG_HALT, 2),
1767 MSM_RPM_MAP(8064, SYS_FABRIC_CFG_CLKMOD_0,
1768 SYS_FABRIC_CFG_CLKMOD, 3),
1769 MSM_RPM_MAP(8064, SYS_FABRIC_CFG_IOCTL,
1770 SYS_FABRIC_CFG_IOCTL, 1),
1771 MSM_RPM_MAP(8064, SYSTEM_FABRIC_ARB_0, SYSTEM_FABRIC_ARB, 30),
1772 MSM_RPM_MAP(8064, MMSS_FABRIC_CFG_HALT_0,
1773 MMSS_FABRIC_CFG_HALT, 2),
1774 MSM_RPM_MAP(8064, MMSS_FABRIC_CFG_CLKMOD_0,
1775 MMSS_FABRIC_CFG_CLKMOD, 3),
1776 MSM_RPM_MAP(8064, MMSS_FABRIC_CFG_IOCTL,
1777 MMSS_FABRIC_CFG_IOCTL, 1),
1778 MSM_RPM_MAP(8064, MM_FABRIC_ARB_0, MM_FABRIC_ARB, 21),
1779 MSM_RPM_MAP(8064, PM8921_S1_0, PM8921_S1, 2),
1780 MSM_RPM_MAP(8064, PM8921_S2_0, PM8921_S2, 2),
1781 MSM_RPM_MAP(8064, PM8921_S3_0, PM8921_S3, 2),
1782 MSM_RPM_MAP(8064, PM8921_S4_0, PM8921_S4, 2),
1783 MSM_RPM_MAP(8064, PM8921_S5_0, PM8921_S5, 2),
1784 MSM_RPM_MAP(8064, PM8921_S6_0, PM8921_S6, 2),
1785 MSM_RPM_MAP(8064, PM8921_S7_0, PM8921_S7, 2),
1786 MSM_RPM_MAP(8064, PM8921_S8_0, PM8921_S8, 2),
1787 MSM_RPM_MAP(8064, PM8921_L1_0, PM8921_L1, 2),
1788 MSM_RPM_MAP(8064, PM8921_L2_0, PM8921_L2, 2),
1789 MSM_RPM_MAP(8064, PM8921_L3_0, PM8921_L3, 2),
1790 MSM_RPM_MAP(8064, PM8921_L4_0, PM8921_L4, 2),
1791 MSM_RPM_MAP(8064, PM8921_L5_0, PM8921_L5, 2),
1792 MSM_RPM_MAP(8064, PM8921_L6_0, PM8921_L6, 2),
1793 MSM_RPM_MAP(8064, PM8921_L7_0, PM8921_L7, 2),
1794 MSM_RPM_MAP(8064, PM8921_L8_0, PM8921_L8, 2),
1795 MSM_RPM_MAP(8064, PM8921_L9_0, PM8921_L9, 2),
1796 MSM_RPM_MAP(8064, PM8921_L10_0, PM8921_L10, 2),
1797 MSM_RPM_MAP(8064, PM8921_L11_0, PM8921_L11, 2),
1798 MSM_RPM_MAP(8064, PM8921_L12_0, PM8921_L12, 2),
1799 MSM_RPM_MAP(8064, PM8921_L13_0, PM8921_L13, 2),
1800 MSM_RPM_MAP(8064, PM8921_L14_0, PM8921_L14, 2),
1801 MSM_RPM_MAP(8064, PM8921_L15_0, PM8921_L15, 2),
1802 MSM_RPM_MAP(8064, PM8921_L16_0, PM8921_L16, 2),
1803 MSM_RPM_MAP(8064, PM8921_L17_0, PM8921_L17, 2),
1804 MSM_RPM_MAP(8064, PM8921_L18_0, PM8921_L18, 2),
1805 MSM_RPM_MAP(8064, PM8921_L19_0, PM8921_L19, 2),
1806 MSM_RPM_MAP(8064, PM8921_L20_0, PM8921_L20, 2),
1807 MSM_RPM_MAP(8064, PM8921_L21_0, PM8921_L21, 2),
1808 MSM_RPM_MAP(8064, PM8921_L22_0, PM8921_L22, 2),
1809 MSM_RPM_MAP(8064, PM8921_L23_0, PM8921_L23, 2),
1810 MSM_RPM_MAP(8064, PM8921_L24_0, PM8921_L24, 2),
1811 MSM_RPM_MAP(8064, PM8921_L25_0, PM8921_L25, 2),
1812 MSM_RPM_MAP(8064, PM8921_L26_0, PM8921_L26, 2),
1813 MSM_RPM_MAP(8064, PM8921_L27_0, PM8921_L27, 2),
1814 MSM_RPM_MAP(8064, PM8921_L28_0, PM8921_L28, 2),
1815 MSM_RPM_MAP(8064, PM8921_L29_0, PM8921_L29, 2),
1816 MSM_RPM_MAP(8064, PM8921_CLK1_0, PM8921_CLK1, 2),
1817 MSM_RPM_MAP(8064, PM8921_CLK2_0, PM8921_CLK2, 2),
1818 MSM_RPM_MAP(8064, PM8921_LVS1, PM8921_LVS1, 1),
1819 MSM_RPM_MAP(8064, PM8921_LVS2, PM8921_LVS2, 1),
1820 MSM_RPM_MAP(8064, PM8921_LVS3, PM8921_LVS3, 1),
1821 MSM_RPM_MAP(8064, PM8921_LVS4, PM8921_LVS4, 1),
1822 MSM_RPM_MAP(8064, PM8921_LVS5, PM8921_LVS5, 1),
1823 MSM_RPM_MAP(8064, PM8921_LVS6, PM8921_LVS6, 1),
1824 MSM_RPM_MAP(8064, PM8921_LVS7, PM8921_LVS7, 1),
1825 MSM_RPM_MAP(8064, PM8821_S1_0, PM8821_S1, 2),
1826 MSM_RPM_MAP(8064, PM8821_S2_0, PM8821_S2, 2),
1827 MSM_RPM_MAP(8064, PM8821_L1_0, PM8821_L1, 2),
1828 MSM_RPM_MAP(8064, NCP_0, NCP, 2),
1829 MSM_RPM_MAP(8064, CXO_BUFFERS, CXO_BUFFERS, 1),
1830 MSM_RPM_MAP(8064, USB_OTG_SWITCH, USB_OTG_SWITCH, 1),
1831 MSM_RPM_MAP(8064, HDMI_SWITCH, HDMI_SWITCH, 1),
1832 MSM_RPM_MAP(8064, DDR_DMM_0, DDR_DMM, 2),
1833 MSM_RPM_MAP(8064, QDSS_CLK, QDSS_CLK, 1),
1834 },
1835 .target_status = {
1836 MSM_RPM_STATUS_ID_MAP(8064, VERSION_MAJOR),
1837 MSM_RPM_STATUS_ID_MAP(8064, VERSION_MINOR),
1838 MSM_RPM_STATUS_ID_MAP(8064, VERSION_BUILD),
1839 MSM_RPM_STATUS_ID_MAP(8064, SUPPORTED_RESOURCES_0),
1840 MSM_RPM_STATUS_ID_MAP(8064, SUPPORTED_RESOURCES_1),
1841 MSM_RPM_STATUS_ID_MAP(8064, SUPPORTED_RESOURCES_2),
1842 MSM_RPM_STATUS_ID_MAP(8064, RESERVED_SUPPORTED_RESOURCES_0),
1843 MSM_RPM_STATUS_ID_MAP(8064, SEQUENCE),
1844 MSM_RPM_STATUS_ID_MAP(8064, RPM_CTL),
1845 MSM_RPM_STATUS_ID_MAP(8064, CXO_CLK),
1846 MSM_RPM_STATUS_ID_MAP(8064, PXO_CLK),
1847 MSM_RPM_STATUS_ID_MAP(8064, APPS_FABRIC_CLK),
1848 MSM_RPM_STATUS_ID_MAP(8064, SYSTEM_FABRIC_CLK),
1849 MSM_RPM_STATUS_ID_MAP(8064, MM_FABRIC_CLK),
1850 MSM_RPM_STATUS_ID_MAP(8064, DAYTONA_FABRIC_CLK),
1851 MSM_RPM_STATUS_ID_MAP(8064, SFPB_CLK),
1852 MSM_RPM_STATUS_ID_MAP(8064, CFPB_CLK),
1853 MSM_RPM_STATUS_ID_MAP(8064, MMFPB_CLK),
1854 MSM_RPM_STATUS_ID_MAP(8064, EBI1_CLK),
1855 MSM_RPM_STATUS_ID_MAP(8064, APPS_FABRIC_CFG_HALT),
1856 MSM_RPM_STATUS_ID_MAP(8064, APPS_FABRIC_CFG_CLKMOD),
1857 MSM_RPM_STATUS_ID_MAP(8064, APPS_FABRIC_CFG_IOCTL),
1858 MSM_RPM_STATUS_ID_MAP(8064, APPS_FABRIC_ARB),
1859 MSM_RPM_STATUS_ID_MAP(8064, SYS_FABRIC_CFG_HALT),
1860 MSM_RPM_STATUS_ID_MAP(8064, SYS_FABRIC_CFG_CLKMOD),
1861 MSM_RPM_STATUS_ID_MAP(8064, SYS_FABRIC_CFG_IOCTL),
1862 MSM_RPM_STATUS_ID_MAP(8064, SYSTEM_FABRIC_ARB),
1863 MSM_RPM_STATUS_ID_MAP(8064, MMSS_FABRIC_CFG_HALT),
1864 MSM_RPM_STATUS_ID_MAP(8064, MMSS_FABRIC_CFG_CLKMOD),
1865 MSM_RPM_STATUS_ID_MAP(8064, MMSS_FABRIC_CFG_IOCTL),
1866 MSM_RPM_STATUS_ID_MAP(8064, MM_FABRIC_ARB),
1867 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S1_0),
1868 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S1_1),
1869 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S2_0),
1870 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S2_1),
1871 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S3_0),
1872 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S3_1),
1873 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S4_0),
1874 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S4_1),
1875 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S5_0),
1876 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S5_1),
1877 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S6_0),
1878 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S6_1),
1879 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S7_0),
1880 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S7_1),
1881 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S8_0),
1882 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S8_1),
1883 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L1_0),
1884 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L1_1),
1885 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L2_0),
1886 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L2_1),
1887 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L3_0),
1888 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L3_1),
1889 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L4_0),
1890 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L4_1),
1891 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L5_0),
1892 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L5_1),
1893 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L6_0),
1894 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L6_1),
1895 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L7_0),
1896 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L7_1),
1897 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L8_0),
1898 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L8_1),
1899 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L9_0),
1900 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L9_1),
1901 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L10_0),
1902 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L10_1),
1903 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L11_0),
1904 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L11_1),
1905 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L12_0),
1906 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L12_1),
1907 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L13_0),
1908 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L13_1),
1909 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L14_0),
1910 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L14_1),
1911 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L15_0),
1912 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L15_1),
1913 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L16_0),
1914 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L16_1),
1915 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L17_0),
1916 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L17_1),
1917 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L18_0),
1918 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L18_1),
1919 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L19_0),
1920 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L19_1),
1921 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L20_0),
1922 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L20_1),
1923 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L21_0),
1924 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L21_1),
1925 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L22_0),
1926 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L22_1),
1927 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L23_0),
1928 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L23_1),
1929 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L24_0),
1930 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L24_1),
1931 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L25_0),
1932 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L25_1),
1933 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L26_0),
1934 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L26_1),
1935 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L27_0),
1936 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L27_1),
1937 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L28_0),
1938 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L28_1),
1939 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L29_0),
1940 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L29_1),
1941 MSM_RPM_STATUS_ID_MAP(8064, PM8921_CLK1_0),
1942 MSM_RPM_STATUS_ID_MAP(8064, PM8921_CLK1_1),
1943 MSM_RPM_STATUS_ID_MAP(8064, PM8921_CLK2_0),
1944 MSM_RPM_STATUS_ID_MAP(8064, PM8921_CLK2_1),
1945 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS1),
1946 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS2),
1947 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS3),
1948 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS4),
1949 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS5),
1950 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS6),
1951 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS7),
1952 MSM_RPM_STATUS_ID_MAP(8064, NCP_0),
1953 MSM_RPM_STATUS_ID_MAP(8064, NCP_1),
1954 MSM_RPM_STATUS_ID_MAP(8064, CXO_BUFFERS),
1955 MSM_RPM_STATUS_ID_MAP(8064, USB_OTG_SWITCH),
1956 MSM_RPM_STATUS_ID_MAP(8064, HDMI_SWITCH),
1957 MSM_RPM_STATUS_ID_MAP(8064, DDR_DMM_0),
1958 MSM_RPM_STATUS_ID_MAP(8064, DDR_DMM_1),
1959 MSM_RPM_STATUS_ID_MAP(8064, EBI1_CH0_RANGE),
1960 MSM_RPM_STATUS_ID_MAP(8064, EBI1_CH1_RANGE),
1961 MSM_RPM_STATUS_ID_MAP(8064, PM8821_S1_0),
1962 MSM_RPM_STATUS_ID_MAP(8064, PM8821_S1_1),
1963 MSM_RPM_STATUS_ID_MAP(8064, PM8821_S2_0),
1964 MSM_RPM_STATUS_ID_MAP(8064, PM8821_S2_1),
1965 MSM_RPM_STATUS_ID_MAP(8064, PM8821_L1_0),
1966 MSM_RPM_STATUS_ID_MAP(8064, PM8821_L1_1),
1967 },
1968 .target_ctrl_id = {
1969 MSM_RPM_CTRL_MAP(8064, VERSION_MAJOR),
1970 MSM_RPM_CTRL_MAP(8064, VERSION_MINOR),
1971 MSM_RPM_CTRL_MAP(8064, VERSION_BUILD),
1972 MSM_RPM_CTRL_MAP(8064, REQ_CTX_0),
1973 MSM_RPM_CTRL_MAP(8064, REQ_SEL_0),
1974 MSM_RPM_CTRL_MAP(8064, ACK_CTX_0),
1975 MSM_RPM_CTRL_MAP(8064, ACK_SEL_0),
1976 },
1977 .sel_invalidate = MSM_RPM_8064_SEL_INVALIDATE,
1978 .sel_notification = MSM_RPM_8064_SEL_NOTIFICATION,
1979 .sel_last = MSM_RPM_8064_SEL_LAST,
1980 .ver = {3, 0, 0},
1981};
1982
1983struct platform_device apq8064_rpm_device = {
1984 .name = "msm_rpm",
1985 .id = -1,
1986};
1987
1988static struct msm_rpmstats_platform_data msm_rpm_stat_pdata = {
1989 .phys_addr_base = 0x0010D204,
1990 .phys_size = SZ_8K,
1991};
1992
1993struct platform_device apq8064_rpm_stat_device = {
1994 .name = "msm_rpm_stat",
1995 .id = -1,
1996 .dev = {
1997 .platform_data = &msm_rpm_stat_pdata,
1998 },
1999};
2000
2001static struct msm_rpm_log_platform_data msm_rpm_log_pdata = {
2002 .phys_addr_base = 0x0010C000,
2003 .reg_offsets = {
2004 [MSM_RPM_LOG_PAGE_INDICES] = 0x00000080,
2005 [MSM_RPM_LOG_PAGE_BUFFER] = 0x000000A0,
2006 },
2007 .phys_size = SZ_8K,
2008 .log_len = 4096, /* log's buffer length in bytes */
2009 .log_len_mask = (4096 >> 2) - 1, /* length mask in units of u32 */
2010};
2011
2012struct platform_device apq8064_rpm_log_device = {
2013 .name = "msm_rpm_log",
2014 .id = -1,
2015 .dev = {
2016 .platform_data = &msm_rpm_log_pdata,
2017 },
2018};
2019
Jin Hongd3024e62012-02-09 16:13:32 -08002020/* Sensors DSPS platform data */
2021
2022#define PPSS_REG_PHYS_BASE 0x12080000
2023
2024static struct dsps_clk_info dsps_clks[] = {};
2025static struct dsps_regulator_info dsps_regs[] = {};
2026
2027/*
2028 * Note: GPIOs field is intialized in run-time at the function
2029 * apq8064_init_dsps().
2030 */
2031
2032struct msm_dsps_platform_data msm_dsps_pdata_8064 = {
2033 .clks = dsps_clks,
2034 .clks_num = ARRAY_SIZE(dsps_clks),
2035 .gpios = NULL,
2036 .gpios_num = 0,
2037 .regs = dsps_regs,
2038 .regs_num = ARRAY_SIZE(dsps_regs),
2039 .dsps_pwr_ctl_en = 1,
2040 .signature = DSPS_SIGNATURE,
2041};
2042
2043static struct resource msm_dsps_resources[] = {
2044 {
2045 .start = PPSS_REG_PHYS_BASE,
2046 .end = PPSS_REG_PHYS_BASE + SZ_8K - 1,
2047 .name = "ppss_reg",
2048 .flags = IORESOURCE_MEM,
2049 },
2050
2051 {
2052 .start = PPSS_WDOG_TIMER_IRQ,
2053 .end = PPSS_WDOG_TIMER_IRQ,
2054 .name = "ppss_wdog",
2055 .flags = IORESOURCE_IRQ,
2056 },
2057};
2058
2059struct platform_device msm_dsps_device_8064 = {
2060 .name = "msm_dsps",
2061 .id = 0,
2062 .num_resources = ARRAY_SIZE(msm_dsps_resources),
2063 .resource = msm_dsps_resources,
2064 .dev.platform_data = &msm_dsps_pdata_8064,
2065};
2066
Praveen Chidambaram78499012011-11-01 17:15:17 -06002067#ifdef CONFIG_MSM_MPM
2068static uint16_t msm_mpm_irqs_m2a[MSM_MPM_NR_MPM_IRQS] __initdata = {
2069 [1] = MSM_GPIO_TO_INT(26),
2070 [2] = MSM_GPIO_TO_INT(88),
2071 [4] = MSM_GPIO_TO_INT(73),
2072 [5] = MSM_GPIO_TO_INT(74),
2073 [6] = MSM_GPIO_TO_INT(75),
2074 [7] = MSM_GPIO_TO_INT(76),
2075 [8] = MSM_GPIO_TO_INT(77),
2076 [9] = MSM_GPIO_TO_INT(36),
2077 [10] = MSM_GPIO_TO_INT(84),
2078 [11] = MSM_GPIO_TO_INT(7),
2079 [12] = MSM_GPIO_TO_INT(11),
2080 [13] = MSM_GPIO_TO_INT(52),
2081 [14] = MSM_GPIO_TO_INT(15),
2082 [15] = MSM_GPIO_TO_INT(83),
2083 [16] = USB3_HS_IRQ,
2084 [19] = MSM_GPIO_TO_INT(61),
2085 [20] = MSM_GPIO_TO_INT(58),
2086 [23] = MSM_GPIO_TO_INT(65),
2087 [24] = MSM_GPIO_TO_INT(63),
2088 [25] = USB1_HS_IRQ,
2089 [27] = HDMI_IRQ,
2090 [29] = MSM_GPIO_TO_INT(22),
2091 [30] = MSM_GPIO_TO_INT(72),
2092 [31] = USB4_HS_IRQ,
2093 [33] = MSM_GPIO_TO_INT(44),
2094 [34] = MSM_GPIO_TO_INT(39),
2095 [35] = MSM_GPIO_TO_INT(19),
2096 [36] = MSM_GPIO_TO_INT(23),
2097 [37] = MSM_GPIO_TO_INT(41),
2098 [38] = MSM_GPIO_TO_INT(30),
2099 [41] = MSM_GPIO_TO_INT(42),
2100 [42] = MSM_GPIO_TO_INT(56),
2101 [43] = MSM_GPIO_TO_INT(55),
2102 [44] = MSM_GPIO_TO_INT(50),
2103 [45] = MSM_GPIO_TO_INT(49),
2104 [46] = MSM_GPIO_TO_INT(47),
2105 [47] = MSM_GPIO_TO_INT(45),
2106 [48] = MSM_GPIO_TO_INT(38),
2107 [49] = MSM_GPIO_TO_INT(34),
2108 [50] = MSM_GPIO_TO_INT(32),
2109 [51] = MSM_GPIO_TO_INT(29),
2110 [52] = MSM_GPIO_TO_INT(18),
2111 [53] = MSM_GPIO_TO_INT(10),
2112 [54] = MSM_GPIO_TO_INT(81),
2113 [55] = MSM_GPIO_TO_INT(6),
2114};
2115
2116static uint16_t msm_mpm_bypassed_apps_irqs[] __initdata = {
2117 TLMM_MSM_SUMMARY_IRQ,
2118 RPM_APCC_CPU0_GP_HIGH_IRQ,
2119 RPM_APCC_CPU0_GP_MEDIUM_IRQ,
2120 RPM_APCC_CPU0_GP_LOW_IRQ,
2121 RPM_APCC_CPU0_WAKE_UP_IRQ,
2122 RPM_APCC_CPU1_GP_HIGH_IRQ,
2123 RPM_APCC_CPU1_GP_MEDIUM_IRQ,
2124 RPM_APCC_CPU1_GP_LOW_IRQ,
2125 RPM_APCC_CPU1_WAKE_UP_IRQ,
2126 MSS_TO_APPS_IRQ_0,
2127 MSS_TO_APPS_IRQ_1,
2128 MSS_TO_APPS_IRQ_2,
2129 MSS_TO_APPS_IRQ_3,
2130 MSS_TO_APPS_IRQ_4,
2131 MSS_TO_APPS_IRQ_5,
2132 MSS_TO_APPS_IRQ_6,
2133 MSS_TO_APPS_IRQ_7,
2134 MSS_TO_APPS_IRQ_8,
2135 MSS_TO_APPS_IRQ_9,
2136 LPASS_SCSS_GP_LOW_IRQ,
2137 LPASS_SCSS_GP_MEDIUM_IRQ,
2138 LPASS_SCSS_GP_HIGH_IRQ,
2139 SPS_MTI_30,
2140 SPS_MTI_31,
2141 RIVA_APSS_SPARE_IRQ,
2142 RIVA_APPS_WLAN_SMSM_IRQ,
2143 RIVA_APPS_WLAN_RX_DATA_AVAIL_IRQ,
2144 RIVA_APPS_WLAN_DATA_XFER_DONE_IRQ,
2145};
2146
2147struct msm_mpm_device_data apq8064_mpm_dev_data __initdata = {
2148 .irqs_m2a = msm_mpm_irqs_m2a,
2149 .irqs_m2a_size = ARRAY_SIZE(msm_mpm_irqs_m2a),
2150 .bypassed_apps_irqs = msm_mpm_bypassed_apps_irqs,
2151 .bypassed_apps_irqs_size = ARRAY_SIZE(msm_mpm_bypassed_apps_irqs),
2152 .mpm_request_reg_base = MSM_RPM_BASE + 0x9d8,
2153 .mpm_status_reg_base = MSM_RPM_BASE + 0xdf8,
2154 .mpm_apps_ipc_reg = MSM_APCS_GCC_BASE + 0x008,
2155 .mpm_apps_ipc_val = BIT(1),
2156 .mpm_ipc_irq = RPM_APCC_CPU0_GP_MEDIUM_IRQ,
2157
2158};
2159#endif
Joel Kingdacbc822012-01-25 13:30:57 -08002160
2161#define MDM2AP_ERRFATAL 19
2162#define AP2MDM_ERRFATAL 18
2163#define MDM2AP_STATUS 49
2164#define AP2MDM_STATUS 48
2165#define AP2MDM_PMIC_RESET_N 27
Vamsi Krishna9e307cd2012-04-11 13:15:36 -07002166#define AP2MDM_WAKEUP 35
Joel Kingdacbc822012-01-25 13:30:57 -08002167
2168static struct resource mdm_resources[] = {
2169 {
2170 .start = MDM2AP_ERRFATAL,
2171 .end = MDM2AP_ERRFATAL,
2172 .name = "MDM2AP_ERRFATAL",
2173 .flags = IORESOURCE_IO,
2174 },
2175 {
2176 .start = AP2MDM_ERRFATAL,
2177 .end = AP2MDM_ERRFATAL,
2178 .name = "AP2MDM_ERRFATAL",
2179 .flags = IORESOURCE_IO,
2180 },
2181 {
2182 .start = MDM2AP_STATUS,
2183 .end = MDM2AP_STATUS,
2184 .name = "MDM2AP_STATUS",
2185 .flags = IORESOURCE_IO,
2186 },
2187 {
2188 .start = AP2MDM_STATUS,
2189 .end = AP2MDM_STATUS,
2190 .name = "AP2MDM_STATUS",
2191 .flags = IORESOURCE_IO,
2192 },
2193 {
2194 .start = AP2MDM_PMIC_RESET_N,
2195 .end = AP2MDM_PMIC_RESET_N,
2196 .name = "AP2MDM_PMIC_RESET_N",
2197 .flags = IORESOURCE_IO,
2198 },
Vamsi Krishna9e307cd2012-04-11 13:15:36 -07002199 {
2200 .start = AP2MDM_WAKEUP,
2201 .end = AP2MDM_WAKEUP,
2202 .name = "AP2MDM_WAKEUP",
2203 .flags = IORESOURCE_IO,
2204 },
Joel Kingdacbc822012-01-25 13:30:57 -08002205};
2206
2207struct platform_device mdm_8064_device = {
2208 .name = "mdm2_modem",
2209 .id = -1,
2210 .num_resources = ARRAY_SIZE(mdm_resources),
2211 .resource = mdm_resources,
2212};
Praveen Chidambaram8ea3dcd2011-12-07 14:46:31 -07002213
2214static int apq8064_LPM_latency = 1000; /* >100 usec for WFI */
2215
2216struct platform_device apq8064_cpu_idle_device = {
2217 .name = "msm_cpu_idle",
2218 .id = -1,
2219 .dev = {
2220 .platform_data = &apq8064_LPM_latency,
2221 },
2222};
Praveen Chidambaram5c8adf22012-02-23 18:44:37 -07002223
2224static struct msm_dcvs_freq_entry apq8064_freq[] = {
2225 { 384000, 166981, 345600},
2226 { 702000, 213049, 632502},
2227 {1026000, 285712, 925613},
2228 {1242000, 383945, 1176550},
2229 {1458000, 419729, 1465478},
2230 {1512000, 434116, 1546674},
2231
2232};
2233
2234static struct msm_dcvs_core_info apq8064_core_info = {
2235 .freq_tbl = &apq8064_freq[0],
2236 .core_param = {
2237 .max_time_us = 100000,
2238 .num_freq = ARRAY_SIZE(apq8064_freq),
2239 },
2240 .algo_param = {
2241 .slack_time_us = 58000,
2242 .scale_slack_time = 0,
2243 .scale_slack_time_pct = 0,
2244 .disable_pc_threshold = 1458000,
2245 .em_window_size = 100000,
2246 .em_max_util_pct = 97,
2247 .ss_window_size = 1000000,
2248 .ss_util_pct = 95,
2249 .ss_iobusy_conv = 100,
2250 },
2251};
2252
2253struct platform_device apq8064_msm_gov_device = {
2254 .name = "msm_dcvs_gov",
2255 .id = -1,
2256 .dev = {
2257 .platform_data = &apq8064_core_info,
2258 },
2259};
Stepan Moskovchenko28662c52012-03-01 12:48:45 -08002260
Terence Hampson2e1705f2012-04-11 19:55:29 -04002261#ifdef CONFIG_MSM_VCAP
2262#define VCAP_HW_BASE 0x05900000
2263
2264static struct msm_bus_vectors vcap_init_vectors[] = {
2265 {
2266 .src = MSM_BUS_MASTER_VIDEO_CAP,
2267 .dst = MSM_BUS_SLAVE_EBI_CH0,
2268 .ab = 0,
2269 .ib = 0,
2270 },
2271};
2272
2273
2274static struct msm_bus_vectors vcap_480_vectors[] = {
2275 {
2276 .src = MSM_BUS_MASTER_VIDEO_CAP,
2277 .dst = MSM_BUS_SLAVE_EBI_CH0,
2278 .ab = 1280 * 720 * 3 * 60 / 16,
2279 .ib = 1280 * 720 * 3 * 60 / 16 * 1.5,
2280 },
2281};
2282
2283static struct msm_bus_vectors vcap_720_vectors[] = {
2284 {
2285 .src = MSM_BUS_MASTER_VIDEO_CAP,
2286 .dst = MSM_BUS_SLAVE_EBI_CH0,
2287 .ab = 1280 * 720 * 3 * 60 / 16,
2288 .ib = 1280 * 720 * 3 * 60 / 16 * 1.5,
2289 },
2290};
2291
2292static struct msm_bus_vectors vcap_1080_vectors[] = {
2293 {
2294 .src = MSM_BUS_MASTER_VIDEO_CAP,
2295 .dst = MSM_BUS_SLAVE_EBI_CH0,
2296 .ab = 1920 * 1080 * 3 * 60 / 16,
2297 .ib = 1920 * 1080 * 3 * 60 / 16 * 1.5,
2298 },
2299};
2300
2301static struct msm_bus_paths vcap_bus_usecases[] = {
2302 {
2303 ARRAY_SIZE(vcap_init_vectors),
2304 vcap_init_vectors,
2305 },
2306 {
2307 ARRAY_SIZE(vcap_480_vectors),
2308 vcap_480_vectors,
2309 },
2310 {
2311 ARRAY_SIZE(vcap_720_vectors),
2312 vcap_720_vectors,
2313 },
2314 {
2315 ARRAY_SIZE(vcap_1080_vectors),
2316 vcap_1080_vectors,
2317 },
2318};
2319
2320static struct msm_bus_scale_pdata vcap_axi_client_pdata = {
2321 vcap_bus_usecases,
2322 ARRAY_SIZE(vcap_bus_usecases),
2323};
2324
2325static struct resource msm_vcap_resources[] = {
2326 {
2327 .name = "vcap",
2328 .start = VCAP_HW_BASE,
2329 .end = VCAP_HW_BASE + SZ_1M - 1,
2330 .flags = IORESOURCE_MEM,
2331 },
2332 {
2333 .name = "vcap",
2334 .start = VCAP_VC,
2335 .end = VCAP_VC,
2336 .flags = IORESOURCE_IRQ,
2337 },
2338};
2339
2340static unsigned vcap_gpios[] = {
2341 2, 3, 4, 5, 6, 7, 8, 9, 10,
2342 11, 12, 13, 18, 19, 20, 21,
2343 22, 23, 24, 25, 26, 80, 82,
2344 83, 84, 85, 86, 87,
2345};
2346
2347static struct vcap_platform_data vcap_pdata = {
2348 .gpios = vcap_gpios,
2349 .num_gpios = ARRAY_SIZE(vcap_gpios),
2350 .bus_client_pdata = &vcap_axi_client_pdata
2351};
2352
2353struct platform_device msm8064_device_vcap = {
2354 .name = "msm_vcap",
2355 .id = 0,
2356 .resource = msm_vcap_resources,
2357 .num_resources = ARRAY_SIZE(msm_vcap_resources),
2358 .dev = {
2359 .platform_data = &vcap_pdata,
2360 },
2361};
2362#endif
2363
Stepan Moskovchenko28662c52012-03-01 12:48:45 -08002364static struct resource msm_cache_erp_resources[] = {
2365 {
2366 .name = "l1_irq",
2367 .start = SC_SICCPUXEXTFAULTIRPTREQ,
2368 .flags = IORESOURCE_IRQ,
2369 },
2370 {
2371 .name = "l2_irq",
2372 .start = APCC_QGICL2IRPTREQ,
2373 .flags = IORESOURCE_IRQ,
2374 }
2375};
2376
2377struct platform_device apq8064_device_cache_erp = {
2378 .name = "msm_cache_erp",
2379 .id = -1,
2380 .num_resources = ARRAY_SIZE(msm_cache_erp_resources),
2381 .resource = msm_cache_erp_resources,
2382};
Pratik Patel212ab362012-03-16 12:30:07 -07002383
2384#define MSM_QDSS_PHYS_BASE 0x01A00000
2385#define MSM_ETM_PHYS_BASE (MSM_QDSS_PHYS_BASE + 0x1C000)
2386
2387#define QDSS_SOURCE(src_name, fpm) { .name = src_name, .fport_mask = fpm, }
2388
2389static struct qdss_source msm_qdss_sources[] = {
2390 QDSS_SOURCE("msm_etm", 0x33),
2391 QDSS_SOURCE("msm_oxili", 0x80),
2392};
2393
2394static struct msm_qdss_platform_data qdss_pdata = {
2395 .src_table = msm_qdss_sources,
2396 .size = ARRAY_SIZE(msm_qdss_sources),
2397 .afamily = 1,
2398};
2399
2400struct platform_device apq8064_qdss_device = {
2401 .name = "msm_qdss",
2402 .id = -1,
2403 .dev = {
2404 .platform_data = &qdss_pdata,
2405 },
2406};
2407
2408static struct resource msm_etm_resources[] = {
2409 {
2410 .start = MSM_ETM_PHYS_BASE,
2411 .end = MSM_ETM_PHYS_BASE + (SZ_4K * 4) - 1,
2412 .flags = IORESOURCE_MEM,
2413 },
2414};
2415
2416struct platform_device apq8064_etm_device = {
2417 .name = "msm_etm",
2418 .id = 0,
2419 .num_resources = ARRAY_SIZE(msm_etm_resources),
2420 .resource = msm_etm_resources,
2421};