blob: 8fa555b8b9252f62c2d19e180162ecb1f831d2d3 [file] [log] [blame]
Deepak Verma587c98e2013-02-01 22:47:49 +05301/* Copyright (c) 2011-2013, The Linux Foundation. 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>
Mitchel Humpherys7e93a652012-09-06 11:36:08 -070018#include <linux/msm_ion.h>
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070019#include <linux/gpio.h>
Pratik Patel1746b8f2012-06-02 21:11:41 -070020#include <linux/coresight.h>
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070021#include <asm/clkdev.h>
Jordan Crouse914de9b2012-07-09 13:49:46 -060022#include <mach/kgsl.h>
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070023#include <linux/android_pmem.h>
24#include <mach/irqs-8960.h>
Mayank Rana9f51f582011-08-04 18:35:59 +053025#include <mach/dma.h>
26#include <linux/dma-mapping.h>
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070027#include <mach/board.h>
28#include <mach/msm_iomap.h>
29#include <mach/msm_hsusb.h>
30#include <mach/msm_sps.h>
31#include <mach/rpm.h>
32#include <mach/msm_bus_board.h>
33#include <mach/msm_memtypes.h>
Eric Holmberg023d25c2012-03-01 12:27:55 -070034#include <mach/msm_smd.h>
Lucille Sylvester6e362412011-12-09 16:21:42 -070035#include <mach/msm_dcvs.h>
Laura Abbott532b2df2012-04-12 10:53:48 -070036#include <mach/msm_rtb.h>
Laura Abbott2ae8f362012-04-12 11:03:04 -070037#include <mach/msm_cache_dump.h>
Matt Wagantalld55b90f2012-02-23 23:27:44 -080038#include <mach/clk-provider.h>
Bhalchandra Gajare0e795c42011-08-15 18:10:30 -070039#include <sound/msm-dai-q6.h>
40#include <sound/apr_audio.h>
Joel Nidera1261942011-09-12 16:30:09 +030041#include <mach/msm_tsif.h>
Stepan Moskovchenko2b4b1cd2012-03-29 18:21:04 -070042#include <mach/msm_serial_hs_lite.h>
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070043#include "clock.h"
44#include "devices.h"
45#include "devices-msm8x60.h"
46#include "footswitch.h"
Jeff Ohlstein7e668552011-10-06 16:17:25 -070047#include "msm_watchdog.h"
Praveen Chidambaram78499012011-11-01 17:15:17 -060048#include "rpm_log.h"
Praveen Chidambaram7a712232011-10-28 13:39:45 -060049#include "rpm_stats.h"
Stephen Boydeb819882011-08-29 14:46:30 -070050#include "pil-q6v4.h"
51#include "scm-pas.h"
Praveen Chidambaram5c8adf22012-02-23 18:44:37 -070052#include <mach/msm_dcvs.h>
Laura Abbott0577d7b2012-04-17 11:14:30 -070053#include <mach/iommu_domains.h>
Arun Menond4837f62012-08-20 15:25:50 -070054#include <mach/socinfo.h>
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070055
56#ifdef CONFIG_MSM_MPM
Subhash Jadavani909e04f2012-04-12 10:52:50 +053057#include <mach/mpm.h>
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070058#endif
59#ifdef CONFIG_MSM_DSPS
60#include <mach/msm_dsps.h>
61#endif
62
63
64/* Address of GSBI blocks */
65#define MSM_GSBI1_PHYS 0x16000000
66#define MSM_GSBI2_PHYS 0x16100000
67#define MSM_GSBI3_PHYS 0x16200000
68#define MSM_GSBI4_PHYS 0x16300000
69#define MSM_GSBI5_PHYS 0x16400000
70#define MSM_GSBI6_PHYS 0x16500000
71#define MSM_GSBI7_PHYS 0x16600000
72#define MSM_GSBI8_PHYS 0x1A000000
73#define MSM_GSBI9_PHYS 0x1A100000
74#define MSM_GSBI10_PHYS 0x1A200000
75#define MSM_GSBI11_PHYS 0x12440000
76#define MSM_GSBI12_PHYS 0x12480000
77
78#define MSM_UART2DM_PHYS (MSM_GSBI2_PHYS + 0x40000)
79#define MSM_UART5DM_PHYS (MSM_GSBI5_PHYS + 0x40000)
Mayank Rana9f51f582011-08-04 18:35:59 +053080#define MSM_UART6DM_PHYS (MSM_GSBI6_PHYS + 0x40000)
Stepan Moskovchenko2b4b1cd2012-03-29 18:21:04 -070081#define MSM_UART8DM_PHYS (MSM_GSBI8_PHYS + 0x40000)
Mayank Ranae009c922012-03-22 03:02:06 +053082#define MSM_UART9DM_PHYS (MSM_GSBI9_PHYS + 0x40000)
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070083
84/* GSBI QUP devices */
85#define MSM_GSBI1_QUP_PHYS (MSM_GSBI1_PHYS + 0x80000)
86#define MSM_GSBI2_QUP_PHYS (MSM_GSBI2_PHYS + 0x80000)
87#define MSM_GSBI3_QUP_PHYS (MSM_GSBI3_PHYS + 0x80000)
88#define MSM_GSBI4_QUP_PHYS (MSM_GSBI4_PHYS + 0x80000)
89#define MSM_GSBI5_QUP_PHYS (MSM_GSBI5_PHYS + 0x80000)
90#define MSM_GSBI6_QUP_PHYS (MSM_GSBI6_PHYS + 0x80000)
91#define MSM_GSBI7_QUP_PHYS (MSM_GSBI7_PHYS + 0x80000)
92#define MSM_GSBI8_QUP_PHYS (MSM_GSBI8_PHYS + 0x80000)
93#define MSM_GSBI9_QUP_PHYS (MSM_GSBI9_PHYS + 0x80000)
94#define MSM_GSBI10_QUP_PHYS (MSM_GSBI10_PHYS + 0x80000)
95#define MSM_GSBI11_QUP_PHYS (MSM_GSBI11_PHYS + 0x20000)
96#define MSM_GSBI12_QUP_PHYS (MSM_GSBI12_PHYS + 0x20000)
97#define MSM_QUP_SIZE SZ_4K
98
99#define MSM_PMIC1_SSBI_CMD_PHYS 0x00500000
100#define MSM_PMIC2_SSBI_CMD_PHYS 0x00C00000
101#define MSM_PMIC_SSBI_SIZE SZ_4K
102
Stepan Moskovchenkobe5b45a2011-10-17 19:33:34 -0700103#define MSM8960_HSUSB_PHYS 0x12500000
104#define MSM8960_HSUSB_SIZE SZ_4K
Anji Jonnala2a8bd312012-11-01 13:11:42 +0530105#define MSM8960_RPM_MASTER_STATS_BASE 0x10BB00
Stepan Moskovchenkobe5b45a2011-10-17 19:33:34 -0700106
Anji Jonnalae84292b2012-09-21 13:34:44 +0530107#define MSM8960_PC_CNTR_PHYS (MSM8960_IMEM_PHYS + 0x664)
108#define MSM8960_PC_CNTR_SIZE 0x40
109
110static struct resource msm8960_resources_pccntr[] = {
111 {
112 .start = MSM8960_PC_CNTR_PHYS,
113 .end = MSM8960_PC_CNTR_PHYS + MSM8960_PC_CNTR_SIZE,
114 .flags = IORESOURCE_MEM,
115 },
116};
117
118struct platform_device msm8960_pc_cntr = {
119 .name = "pc-cntr",
120 .id = -1,
121 .num_resources = ARRAY_SIZE(msm8960_resources_pccntr),
122 .resource = msm8960_resources_pccntr,
123};
124
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700125static struct resource resources_otg[] = {
126 {
127 .start = MSM8960_HSUSB_PHYS,
128 .end = MSM8960_HSUSB_PHYS + MSM8960_HSUSB_SIZE,
129 .flags = IORESOURCE_MEM,
130 },
131 {
132 .start = USB1_HS_IRQ,
133 .end = USB1_HS_IRQ,
134 .flags = IORESOURCE_IRQ,
135 },
136};
137
Stepan Moskovchenko14aa6492011-08-08 15:15:01 -0700138struct platform_device msm8960_device_otg = {
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700139 .name = "msm_otg",
140 .id = -1,
141 .num_resources = ARRAY_SIZE(resources_otg),
142 .resource = resources_otg,
143 .dev = {
144 .coherent_dma_mask = 0xffffffff,
145 },
146};
147
148static struct resource resources_hsusb[] = {
149 {
150 .start = MSM8960_HSUSB_PHYS,
151 .end = MSM8960_HSUSB_PHYS + MSM8960_HSUSB_SIZE,
152 .flags = IORESOURCE_MEM,
153 },
154 {
155 .start = USB1_HS_IRQ,
156 .end = USB1_HS_IRQ,
157 .flags = IORESOURCE_IRQ,
158 },
159};
160
Stepan Moskovchenko14aa6492011-08-08 15:15:01 -0700161struct platform_device msm8960_device_gadget_peripheral = {
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700162 .name = "msm_hsusb",
163 .id = -1,
164 .num_resources = ARRAY_SIZE(resources_hsusb),
165 .resource = resources_hsusb,
166 .dev = {
167 .coherent_dma_mask = 0xffffffff,
168 },
169};
170
171static struct resource resources_hsusb_host[] = {
172 {
173 .start = MSM8960_HSUSB_PHYS,
174 .end = MSM8960_HSUSB_PHYS + MSM8960_HSUSB_SIZE - 1,
175 .flags = IORESOURCE_MEM,
176 },
177 {
178 .start = USB1_HS_IRQ,
179 .end = USB1_HS_IRQ,
180 .flags = IORESOURCE_IRQ,
181 },
182};
183
Vijayavardhan Vennapusaeb566482011-09-18 07:48:37 +0530184static u64 dma_mask = DMA_BIT_MASK(32);
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700185struct platform_device msm_device_hsusb_host = {
186 .name = "msm_hsusb_host",
187 .id = -1,
188 .num_resources = ARRAY_SIZE(resources_hsusb_host),
189 .resource = resources_hsusb_host,
190 .dev = {
191 .dma_mask = &dma_mask,
192 .coherent_dma_mask = 0xffffffff,
193 },
194};
195
Vijayavardhan Vennapusaeb566482011-09-18 07:48:37 +0530196static struct resource resources_hsic_host[] = {
197 {
Stepan Moskovchenko8e06ae62011-10-17 18:01:29 -0700198 .start = 0x12520000,
199 .end = 0x12520000 + SZ_4K - 1,
Vijayavardhan Vennapusaeb566482011-09-18 07:48:37 +0530200 .flags = IORESOURCE_MEM,
201 },
202 {
203 .start = USB_HSIC_IRQ,
204 .end = USB_HSIC_IRQ,
205 .flags = IORESOURCE_IRQ,
206 },
Vamsi Krishna34f01582011-12-14 19:54:42 -0800207 {
208 .start = MSM_GPIO_TO_INT(69),
209 .end = MSM_GPIO_TO_INT(69),
210 .name = "peripheral_status_irq",
211 .flags = IORESOURCE_IRQ,
212 },
Vijayavardhan Vennapusaeb566482011-09-18 07:48:37 +0530213};
214
215struct platform_device msm_device_hsic_host = {
216 .name = "msm_hsic_host",
217 .id = -1,
218 .num_resources = ARRAY_SIZE(resources_hsic_host),
219 .resource = resources_hsic_host,
220 .dev = {
221 .dma_mask = &dma_mask,
222 .coherent_dma_mask = DMA_BIT_MASK(32),
223 },
224};
225
Matt Wagantallbf430eb2012-03-22 11:45:49 -0700226struct platform_device msm8960_device_acpuclk = {
227 .name = "acpuclk-8960",
228 .id = -1,
229};
230
Patrick Daly6578e0c2012-07-19 18:50:02 -0700231struct platform_device msm8960ab_device_acpuclk = {
232 .name = "acpuclk-8960ab",
233 .id = -1,
234};
235
Mona Hossain11c03ac2011-10-26 12:42:10 -0700236#define SHARED_IMEM_TZ_BASE 0x2a03f720
237static struct resource tzlog_resources[] = {
238 {
239 .start = SHARED_IMEM_TZ_BASE,
240 .end = SHARED_IMEM_TZ_BASE + SZ_4K - 1,
241 .flags = IORESOURCE_MEM,
242 },
243};
244
245struct platform_device msm_device_tz_log = {
246 .name = "tz_log",
247 .id = 0,
248 .num_resources = ARRAY_SIZE(tzlog_resources),
249 .resource = tzlog_resources,
250};
251
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700252static struct resource resources_uart_gsbi2[] = {
253 {
254 .start = MSM8960_GSBI2_UARTDM_IRQ,
255 .end = MSM8960_GSBI2_UARTDM_IRQ,
256 .flags = IORESOURCE_IRQ,
257 },
258 {
259 .start = MSM_UART2DM_PHYS,
260 .end = MSM_UART2DM_PHYS + PAGE_SIZE - 1,
261 .name = "uartdm_resource",
262 .flags = IORESOURCE_MEM,
263 },
264 {
265 .start = MSM_GSBI2_PHYS,
266 .end = MSM_GSBI2_PHYS + PAGE_SIZE - 1,
267 .name = "gsbi_resource",
268 .flags = IORESOURCE_MEM,
269 },
270};
271
272struct platform_device msm8960_device_uart_gsbi2 = {
273 .name = "msm_serial_hsl",
274 .id = 0,
275 .num_resources = ARRAY_SIZE(resources_uart_gsbi2),
276 .resource = resources_uart_gsbi2,
277};
Mayank Rana9f51f582011-08-04 18:35:59 +0530278/* GSBI 6 used into UARTDM Mode */
279static struct resource msm_uart_dm6_resources[] = {
280 {
281 .start = MSM_UART6DM_PHYS,
282 .end = MSM_UART6DM_PHYS + PAGE_SIZE - 1,
283 .name = "uartdm_resource",
284 .flags = IORESOURCE_MEM,
285 },
286 {
287 .start = GSBI6_UARTDM_IRQ,
288 .end = GSBI6_UARTDM_IRQ,
289 .flags = IORESOURCE_IRQ,
290 },
291 {
292 .start = MSM_GSBI6_PHYS,
293 .end = MSM_GSBI6_PHYS + 4 - 1,
294 .name = "gsbi_resource",
295 .flags = IORESOURCE_MEM,
296 },
297 {
298 .start = DMOV_HSUART_GSBI6_TX_CHAN,
299 .end = DMOV_HSUART_GSBI6_RX_CHAN,
300 .name = "uartdm_channels",
301 .flags = IORESOURCE_DMA,
302 },
303 {
304 .start = DMOV_HSUART_GSBI6_TX_CRCI,
305 .end = DMOV_HSUART_GSBI6_RX_CRCI,
306 .name = "uartdm_crci",
307 .flags = IORESOURCE_DMA,
308 },
309};
310static u64 msm_uart_dm6_dma_mask = DMA_BIT_MASK(32);
311struct platform_device msm_device_uart_dm6 = {
312 .name = "msm_serial_hs",
313 .id = 0,
314 .num_resources = ARRAY_SIZE(msm_uart_dm6_resources),
315 .resource = msm_uart_dm6_resources,
316 .dev = {
317 .dma_mask = &msm_uart_dm6_dma_mask,
318 .coherent_dma_mask = DMA_BIT_MASK(32),
319 },
320};
Mayank Rana1f02d952012-07-04 19:11:20 +0530321
322/* GSBI 8 used into UARTDM Mode */
323static struct resource msm_uart_dm8_resources[] = {
324 {
325 .start = MSM_UART8DM_PHYS,
326 .end = MSM_UART8DM_PHYS + PAGE_SIZE - 1,
327 .name = "uartdm_resource",
328 .flags = IORESOURCE_MEM,
329 },
330 {
331 .start = GSBI8_UARTDM_IRQ,
332 .end = GSBI8_UARTDM_IRQ,
333 .flags = IORESOURCE_IRQ,
334 },
335 {
336 .start = MSM_GSBI8_PHYS,
337 .end = MSM_GSBI8_PHYS + 4 - 1,
338 .name = "gsbi_resource",
339 .flags = IORESOURCE_MEM,
340 },
341 {
342 .start = DMOV_HSUART_GSBI8_TX_CHAN,
343 .end = DMOV_HSUART_GSBI8_RX_CHAN,
344 .name = "uartdm_channels",
345 .flags = IORESOURCE_DMA,
346 },
347 {
348 .start = DMOV_HSUART_GSBI8_TX_CRCI,
349 .end = DMOV_HSUART_GSBI8_RX_CRCI,
350 .name = "uartdm_crci",
351 .flags = IORESOURCE_DMA,
352 },
353};
354
355static u64 msm_uart_dm8_dma_mask = DMA_BIT_MASK(32);
356struct platform_device msm_device_uart_dm8 = {
357 .name = "msm_serial_hs",
358 .id = 2,
359 .num_resources = ARRAY_SIZE(msm_uart_dm8_resources),
360 .resource = msm_uart_dm8_resources,
361 .dev = {
362 .dma_mask = &msm_uart_dm8_dma_mask,
363 .coherent_dma_mask = DMA_BIT_MASK(32),
364 },
365};
366
Mayank Ranae009c922012-03-22 03:02:06 +0530367/*
368 * GSBI 9 used into UARTDM Mode
369 * For 8960 Fusion 2.2 Primary IPC
370 */
371static struct resource msm_uart_dm9_resources[] = {
372 {
373 .start = MSM_UART9DM_PHYS,
374 .end = MSM_UART9DM_PHYS + PAGE_SIZE - 1,
375 .name = "uartdm_resource",
376 .flags = IORESOURCE_MEM,
377 },
378 {
379 .start = GSBI9_UARTDM_IRQ,
380 .end = GSBI9_UARTDM_IRQ,
381 .flags = IORESOURCE_IRQ,
382 },
383 {
384 .start = MSM_GSBI9_PHYS,
385 .end = MSM_GSBI9_PHYS + 4 - 1,
386 .name = "gsbi_resource",
387 .flags = IORESOURCE_MEM,
388 },
389 {
390 .start = DMOV_HSUART_GSBI9_TX_CHAN,
391 .end = DMOV_HSUART_GSBI9_RX_CHAN,
392 .name = "uartdm_channels",
393 .flags = IORESOURCE_DMA,
394 },
395 {
396 .start = DMOV_HSUART_GSBI9_TX_CRCI,
397 .end = DMOV_HSUART_GSBI9_RX_CRCI,
398 .name = "uartdm_crci",
399 .flags = IORESOURCE_DMA,
400 },
401};
402static u64 msm_uart_dm9_dma_mask = DMA_BIT_MASK(32);
403struct platform_device msm_device_uart_dm9 = {
404 .name = "msm_serial_hs",
405 .id = 1,
406 .num_resources = ARRAY_SIZE(msm_uart_dm9_resources),
407 .resource = msm_uart_dm9_resources,
408 .dev = {
409 .dma_mask = &msm_uart_dm9_dma_mask,
410 .coherent_dma_mask = DMA_BIT_MASK(32),
411 },
412};
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700413
414static struct resource resources_uart_gsbi5[] = {
415 {
416 .start = GSBI5_UARTDM_IRQ,
417 .end = GSBI5_UARTDM_IRQ,
418 .flags = IORESOURCE_IRQ,
419 },
420 {
421 .start = MSM_UART5DM_PHYS,
422 .end = MSM_UART5DM_PHYS + PAGE_SIZE - 1,
423 .name = "uartdm_resource",
424 .flags = IORESOURCE_MEM,
425 },
426 {
427 .start = MSM_GSBI5_PHYS,
428 .end = MSM_GSBI5_PHYS + PAGE_SIZE - 1,
429 .name = "gsbi_resource",
430 .flags = IORESOURCE_MEM,
431 },
432};
433
434struct platform_device msm8960_device_uart_gsbi5 = {
435 .name = "msm_serial_hsl",
436 .id = 0,
437 .num_resources = ARRAY_SIZE(resources_uart_gsbi5),
438 .resource = resources_uart_gsbi5,
439};
Stepan Moskovchenko2b4b1cd2012-03-29 18:21:04 -0700440
441static struct msm_serial_hslite_platform_data uart_gsbi8_pdata = {
442 .line = 0,
443};
444
445static struct resource resources_uart_gsbi8[] = {
446 {
447 .start = GSBI8_UARTDM_IRQ,
448 .end = GSBI8_UARTDM_IRQ,
449 .flags = IORESOURCE_IRQ,
450 },
451 {
452 .start = MSM_UART8DM_PHYS,
453 .end = MSM_UART8DM_PHYS + PAGE_SIZE - 1,
454 .name = "uartdm_resource",
455 .flags = IORESOURCE_MEM,
456 },
457 {
458 .start = MSM_GSBI8_PHYS,
459 .end = MSM_GSBI8_PHYS + PAGE_SIZE - 1,
460 .name = "gsbi_resource",
461 .flags = IORESOURCE_MEM,
462 },
463};
464
465struct platform_device msm8960_device_uart_gsbi8 = {
466 .name = "msm_serial_hsl",
467 .id = 1,
468 .num_resources = ARRAY_SIZE(resources_uart_gsbi8),
469 .resource = resources_uart_gsbi8,
470 .dev.platform_data = &uart_gsbi8_pdata,
471};
472
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700473/* MSM Video core device */
474#ifdef CONFIG_MSM_BUS_SCALING
475static struct msm_bus_vectors vidc_init_vectors[] = {
476 {
477 .src = MSM_BUS_MASTER_HD_CODEC_PORT0,
478 .dst = MSM_BUS_SLAVE_EBI_CH0,
479 .ab = 0,
480 .ib = 0,
481 },
482 {
483 .src = MSM_BUS_MASTER_HD_CODEC_PORT1,
484 .dst = MSM_BUS_SLAVE_EBI_CH0,
485 .ab = 0,
486 .ib = 0,
487 },
488 {
489 .src = MSM_BUS_MASTER_AMPSS_M0,
490 .dst = MSM_BUS_SLAVE_EBI_CH0,
491 .ab = 0,
492 .ib = 0,
493 },
494 {
495 .src = MSM_BUS_MASTER_AMPSS_M0,
496 .dst = MSM_BUS_SLAVE_EBI_CH0,
497 .ab = 0,
498 .ib = 0,
499 },
500};
501static struct msm_bus_vectors vidc_venc_vga_vectors[] = {
502 {
503 .src = MSM_BUS_MASTER_HD_CODEC_PORT0,
504 .dst = MSM_BUS_SLAVE_EBI_CH0,
505 .ab = 54525952,
506 .ib = 436207616,
507 },
508 {
509 .src = MSM_BUS_MASTER_HD_CODEC_PORT1,
510 .dst = MSM_BUS_SLAVE_EBI_CH0,
511 .ab = 72351744,
512 .ib = 289406976,
513 },
514 {
515 .src = MSM_BUS_MASTER_AMPSS_M0,
516 .dst = MSM_BUS_SLAVE_EBI_CH0,
517 .ab = 500000,
518 .ib = 1000000,
519 },
520 {
521 .src = MSM_BUS_MASTER_AMPSS_M0,
522 .dst = MSM_BUS_SLAVE_EBI_CH0,
523 .ab = 500000,
524 .ib = 1000000,
525 },
526};
527static struct msm_bus_vectors vidc_vdec_vga_vectors[] = {
528 {
529 .src = MSM_BUS_MASTER_HD_CODEC_PORT0,
530 .dst = MSM_BUS_SLAVE_EBI_CH0,
531 .ab = 40894464,
532 .ib = 327155712,
533 },
534 {
535 .src = MSM_BUS_MASTER_HD_CODEC_PORT1,
536 .dst = MSM_BUS_SLAVE_EBI_CH0,
537 .ab = 48234496,
538 .ib = 192937984,
539 },
540 {
541 .src = MSM_BUS_MASTER_AMPSS_M0,
542 .dst = MSM_BUS_SLAVE_EBI_CH0,
543 .ab = 500000,
544 .ib = 2000000,
545 },
546 {
547 .src = MSM_BUS_MASTER_AMPSS_M0,
548 .dst = MSM_BUS_SLAVE_EBI_CH0,
549 .ab = 500000,
550 .ib = 2000000,
551 },
552};
553static struct msm_bus_vectors vidc_venc_720p_vectors[] = {
554 {
555 .src = MSM_BUS_MASTER_HD_CODEC_PORT0,
556 .dst = MSM_BUS_SLAVE_EBI_CH0,
557 .ab = 163577856,
558 .ib = 1308622848,
559 },
560 {
561 .src = MSM_BUS_MASTER_HD_CODEC_PORT1,
562 .dst = MSM_BUS_SLAVE_EBI_CH0,
563 .ab = 219152384,
564 .ib = 876609536,
565 },
566 {
567 .src = MSM_BUS_MASTER_AMPSS_M0,
568 .dst = MSM_BUS_SLAVE_EBI_CH0,
569 .ab = 1750000,
570 .ib = 3500000,
571 },
572 {
573 .src = MSM_BUS_MASTER_AMPSS_M0,
574 .dst = MSM_BUS_SLAVE_EBI_CH0,
575 .ab = 1750000,
576 .ib = 3500000,
577 },
578};
579static struct msm_bus_vectors vidc_vdec_720p_vectors[] = {
580 {
581 .src = MSM_BUS_MASTER_HD_CODEC_PORT0,
582 .dst = MSM_BUS_SLAVE_EBI_CH0,
583 .ab = 121634816,
584 .ib = 973078528,
585 },
586 {
587 .src = MSM_BUS_MASTER_HD_CODEC_PORT1,
588 .dst = MSM_BUS_SLAVE_EBI_CH0,
589 .ab = 155189248,
590 .ib = 620756992,
591 },
592 {
593 .src = MSM_BUS_MASTER_AMPSS_M0,
594 .dst = MSM_BUS_SLAVE_EBI_CH0,
595 .ab = 1750000,
596 .ib = 7000000,
597 },
598 {
599 .src = MSM_BUS_MASTER_AMPSS_M0,
600 .dst = MSM_BUS_SLAVE_EBI_CH0,
601 .ab = 1750000,
602 .ib = 7000000,
603 },
604};
605static struct msm_bus_vectors vidc_venc_1080p_vectors[] = {
606 {
607 .src = MSM_BUS_MASTER_HD_CODEC_PORT0,
608 .dst = MSM_BUS_SLAVE_EBI_CH0,
609 .ab = 372244480,
Gopikrishnaiah Anandan3e6bdda2011-11-04 16:05:04 -0700610 .ib = 2560000000U,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700611 },
612 {
613 .src = MSM_BUS_MASTER_HD_CODEC_PORT1,
614 .dst = MSM_BUS_SLAVE_EBI_CH0,
615 .ab = 501219328,
Gopikrishnaiah Anandan3e6bdda2011-11-04 16:05:04 -0700616 .ib = 2560000000U,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700617 },
618 {
619 .src = MSM_BUS_MASTER_AMPSS_M0,
620 .dst = MSM_BUS_SLAVE_EBI_CH0,
621 .ab = 2500000,
622 .ib = 5000000,
623 },
624 {
625 .src = MSM_BUS_MASTER_AMPSS_M0,
626 .dst = MSM_BUS_SLAVE_EBI_CH0,
627 .ab = 2500000,
628 .ib = 5000000,
629 },
630};
631static struct msm_bus_vectors vidc_vdec_1080p_vectors[] = {
632 {
633 .src = MSM_BUS_MASTER_HD_CODEC_PORT0,
634 .dst = MSM_BUS_SLAVE_EBI_CH0,
635 .ab = 222298112,
Gopikrishnaiah Anandan3e6bdda2011-11-04 16:05:04 -0700636 .ib = 2560000000U,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700637 },
638 {
639 .src = MSM_BUS_MASTER_HD_CODEC_PORT1,
640 .dst = MSM_BUS_SLAVE_EBI_CH0,
641 .ab = 330301440,
Gopikrishnaiah Anandan3e6bdda2011-11-04 16:05:04 -0700642 .ib = 2560000000U,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700643 },
644 {
645 .src = MSM_BUS_MASTER_AMPSS_M0,
646 .dst = MSM_BUS_SLAVE_EBI_CH0,
647 .ab = 2500000,
648 .ib = 700000000,
649 },
650 {
651 .src = MSM_BUS_MASTER_AMPSS_M0,
652 .dst = MSM_BUS_SLAVE_EBI_CH0,
653 .ab = 2500000,
654 .ib = 10000000,
655 },
656};
Deva Ramasubramanian837ae362012-05-12 23:26:53 -0700657static struct msm_bus_vectors vidc_venc_1080p_turbo_vectors[] = {
658 {
659 .src = MSM_BUS_MASTER_HD_CODEC_PORT0,
660 .dst = MSM_BUS_SLAVE_EBI_CH0,
661 .ab = 222298112,
662 .ib = 3522000000U,
663 },
664 {
665 .src = MSM_BUS_MASTER_HD_CODEC_PORT1,
666 .dst = MSM_BUS_SLAVE_EBI_CH0,
667 .ab = 330301440,
668 .ib = 3522000000U,
669 },
670 {
671 .src = MSM_BUS_MASTER_AMPSS_M0,
672 .dst = MSM_BUS_SLAVE_EBI_CH0,
673 .ab = 2500000,
674 .ib = 700000000,
675 },
676 {
677 .src = MSM_BUS_MASTER_AMPSS_M0,
678 .dst = MSM_BUS_SLAVE_EBI_CH0,
679 .ab = 2500000,
680 .ib = 10000000,
681 },
682};
683static struct msm_bus_vectors vidc_vdec_1080p_turbo_vectors[] = {
684 {
685 .src = MSM_BUS_MASTER_HD_CODEC_PORT0,
686 .dst = MSM_BUS_SLAVE_EBI_CH0,
687 .ab = 222298112,
688 .ib = 3522000000U,
689 },
690 {
691 .src = MSM_BUS_MASTER_HD_CODEC_PORT1,
692 .dst = MSM_BUS_SLAVE_EBI_CH0,
693 .ab = 330301440,
694 .ib = 3522000000U,
695 },
696 {
697 .src = MSM_BUS_MASTER_AMPSS_M0,
698 .dst = MSM_BUS_SLAVE_EBI_CH0,
699 .ab = 2500000,
700 .ib = 700000000,
701 },
702 {
703 .src = MSM_BUS_MASTER_AMPSS_M0,
704 .dst = MSM_BUS_SLAVE_EBI_CH0,
705 .ab = 2500000,
706 .ib = 10000000,
707 },
708};
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700709
710static struct msm_bus_paths vidc_bus_client_config[] = {
711 {
712 ARRAY_SIZE(vidc_init_vectors),
713 vidc_init_vectors,
714 },
715 {
716 ARRAY_SIZE(vidc_venc_vga_vectors),
717 vidc_venc_vga_vectors,
718 },
719 {
720 ARRAY_SIZE(vidc_vdec_vga_vectors),
721 vidc_vdec_vga_vectors,
722 },
723 {
724 ARRAY_SIZE(vidc_venc_720p_vectors),
725 vidc_venc_720p_vectors,
726 },
727 {
728 ARRAY_SIZE(vidc_vdec_720p_vectors),
729 vidc_vdec_720p_vectors,
730 },
731 {
732 ARRAY_SIZE(vidc_venc_1080p_vectors),
733 vidc_venc_1080p_vectors,
734 },
735 {
736 ARRAY_SIZE(vidc_vdec_1080p_vectors),
737 vidc_vdec_1080p_vectors,
738 },
Deva Ramasubramanian837ae362012-05-12 23:26:53 -0700739 {
740 ARRAY_SIZE(vidc_venc_1080p_turbo_vectors),
Arun Menond4837f62012-08-20 15:25:50 -0700741 vidc_venc_1080p_turbo_vectors,
Deva Ramasubramanian837ae362012-05-12 23:26:53 -0700742 },
743 {
744 ARRAY_SIZE(vidc_vdec_1080p_turbo_vectors),
745 vidc_vdec_1080p_turbo_vectors,
746 },
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700747};
748
749static struct msm_bus_scale_pdata vidc_bus_client_data = {
750 vidc_bus_client_config,
751 ARRAY_SIZE(vidc_bus_client_config),
752 .name = "vidc",
753};
Arun Menond4837f62012-08-20 15:25:50 -0700754
755static struct msm_bus_vectors vidc_pro_init_vectors[] = {
756 {
757 .src = MSM_BUS_MASTER_VIDEO_ENC,
758 .dst = MSM_BUS_SLAVE_EBI_CH0,
759 .ab = 0,
760 .ib = 0,
761 },
762 {
763 .src = MSM_BUS_MASTER_VIDEO_DEC,
764 .dst = MSM_BUS_SLAVE_EBI_CH0,
765 .ab = 0,
766 .ib = 0,
767 },
768 {
769 .src = MSM_BUS_MASTER_AMPSS_M0,
770 .dst = MSM_BUS_SLAVE_EBI_CH0,
771 .ab = 0,
772 .ib = 0,
773 },
774 {
775 .src = MSM_BUS_MASTER_AMPSS_M0,
776 .dst = MSM_BUS_SLAVE_EBI_CH0,
777 .ab = 0,
778 .ib = 0,
779 },
780};
781static struct msm_bus_vectors vidc_pro_venc_vga_vectors[] = {
782 {
783 .src = MSM_BUS_MASTER_VIDEO_ENC,
784 .dst = MSM_BUS_SLAVE_EBI_CH0,
785 .ab = 54525952,
786 .ib = 436207616,
787 },
788 {
789 .src = MSM_BUS_MASTER_VIDEO_DEC,
790 .dst = MSM_BUS_SLAVE_EBI_CH0,
791 .ab = 72351744,
792 .ib = 289406976,
793 },
794 {
795 .src = MSM_BUS_MASTER_AMPSS_M0,
796 .dst = MSM_BUS_SLAVE_EBI_CH0,
797 .ab = 500000,
798 .ib = 1000000,
799 },
800 {
801 .src = MSM_BUS_MASTER_AMPSS_M0,
802 .dst = MSM_BUS_SLAVE_EBI_CH0,
803 .ab = 500000,
804 .ib = 1000000,
805 },
806};
807static struct msm_bus_vectors vidc_pro_vdec_vga_vectors[] = {
808 {
809 .src = MSM_BUS_MASTER_VIDEO_ENC,
810 .dst = MSM_BUS_SLAVE_EBI_CH0,
811 .ab = 40894464,
812 .ib = 327155712,
813 },
814 {
815 .src = MSM_BUS_MASTER_VIDEO_DEC,
816 .dst = MSM_BUS_SLAVE_EBI_CH0,
817 .ab = 48234496,
818 .ib = 192937984,
819 },
820 {
821 .src = MSM_BUS_MASTER_AMPSS_M0,
822 .dst = MSM_BUS_SLAVE_EBI_CH0,
823 .ab = 500000,
824 .ib = 2000000,
825 },
826 {
827 .src = MSM_BUS_MASTER_AMPSS_M0,
828 .dst = MSM_BUS_SLAVE_EBI_CH0,
829 .ab = 500000,
830 .ib = 2000000,
831 },
832};
833static struct msm_bus_vectors vidc_pro_venc_720p_vectors[] = {
834 {
835 .src = MSM_BUS_MASTER_VIDEO_ENC,
836 .dst = MSM_BUS_SLAVE_EBI_CH0,
837 .ab = 163577856,
838 .ib = 1308622848,
839 },
840 {
841 .src = MSM_BUS_MASTER_VIDEO_DEC,
842 .dst = MSM_BUS_SLAVE_EBI_CH0,
843 .ab = 219152384,
844 .ib = 876609536,
845 },
846 {
847 .src = MSM_BUS_MASTER_AMPSS_M0,
848 .dst = MSM_BUS_SLAVE_EBI_CH0,
849 .ab = 1750000,
850 .ib = 3500000,
851 },
852 {
853 .src = MSM_BUS_MASTER_AMPSS_M0,
854 .dst = MSM_BUS_SLAVE_EBI_CH0,
855 .ab = 1750000,
856 .ib = 3500000,
857 },
858};
859static struct msm_bus_vectors vidc_pro_vdec_720p_vectors[] = {
860 {
861 .src = MSM_BUS_MASTER_VIDEO_ENC,
862 .dst = MSM_BUS_SLAVE_EBI_CH0,
863 .ab = 121634816,
864 .ib = 973078528,
865 },
866 {
867 .src = MSM_BUS_MASTER_VIDEO_DEC,
868 .dst = MSM_BUS_SLAVE_EBI_CH0,
869 .ab = 155189248,
870 .ib = 620756992,
871 },
872 {
873 .src = MSM_BUS_MASTER_AMPSS_M0,
874 .dst = MSM_BUS_SLAVE_EBI_CH0,
875 .ab = 1750000,
876 .ib = 7000000,
877 },
878 {
879 .src = MSM_BUS_MASTER_AMPSS_M0,
880 .dst = MSM_BUS_SLAVE_EBI_CH0,
881 .ab = 1750000,
882 .ib = 7000000,
883 },
884};
885static struct msm_bus_vectors vidc_pro_venc_1080p_vectors[] = {
886 {
887 .src = MSM_BUS_MASTER_VIDEO_ENC,
888 .dst = MSM_BUS_SLAVE_EBI_CH0,
889 .ab = 372244480,
890 .ib = 2560000000U,
891 },
892 {
893 .src = MSM_BUS_MASTER_VIDEO_DEC,
894 .dst = MSM_BUS_SLAVE_EBI_CH0,
895 .ab = 501219328,
896 .ib = 2560000000U,
897 },
898 {
899 .src = MSM_BUS_MASTER_AMPSS_M0,
900 .dst = MSM_BUS_SLAVE_EBI_CH0,
901 .ab = 2500000,
902 .ib = 5000000,
903 },
904 {
905 .src = MSM_BUS_MASTER_AMPSS_M0,
906 .dst = MSM_BUS_SLAVE_EBI_CH0,
907 .ab = 2500000,
908 .ib = 5000000,
909 },
910};
911static struct msm_bus_vectors vidc_pro_vdec_1080p_vectors[] = {
912 {
913 .src = MSM_BUS_MASTER_VIDEO_ENC,
914 .dst = MSM_BUS_SLAVE_EBI_CH0,
915 .ab = 222298112,
916 .ib = 2560000000U,
917 },
918 {
919 .src = MSM_BUS_MASTER_VIDEO_DEC,
920 .dst = MSM_BUS_SLAVE_EBI_CH0,
921 .ab = 330301440,
922 .ib = 2560000000U,
923 },
924 {
925 .src = MSM_BUS_MASTER_AMPSS_M0,
926 .dst = MSM_BUS_SLAVE_EBI_CH0,
927 .ab = 2500000,
928 .ib = 700000000,
929 },
930 {
931 .src = MSM_BUS_MASTER_AMPSS_M0,
932 .dst = MSM_BUS_SLAVE_EBI_CH0,
933 .ab = 2500000,
934 .ib = 10000000,
935 },
936};
937static struct msm_bus_vectors vidc_pro_venc_1080p_turbo_vectors[] = {
938 {
939 .src = MSM_BUS_MASTER_VIDEO_ENC,
940 .dst = MSM_BUS_SLAVE_EBI_CH0,
941 .ab = 222298112,
942 .ib = 3522000000U,
943 },
944 {
945 .src = MSM_BUS_MASTER_VIDEO_DEC,
946 .dst = MSM_BUS_SLAVE_EBI_CH0,
947 .ab = 330301440,
948 .ib = 3522000000U,
949 },
950 {
951 .src = MSM_BUS_MASTER_AMPSS_M0,
952 .dst = MSM_BUS_SLAVE_EBI_CH0,
953 .ab = 2500000,
954 .ib = 700000000,
955 },
956 {
957 .src = MSM_BUS_MASTER_AMPSS_M0,
958 .dst = MSM_BUS_SLAVE_EBI_CH0,
959 .ab = 2500000,
960 .ib = 10000000,
961 },
962};
963static struct msm_bus_vectors vidc_pro_vdec_1080p_turbo_vectors[] = {
964 {
965 .src = MSM_BUS_MASTER_VIDEO_ENC,
966 .dst = MSM_BUS_SLAVE_EBI_CH0,
967 .ab = 222298112,
968 .ib = 3522000000U,
969 },
970 {
971 .src = MSM_BUS_MASTER_VIDEO_DEC,
972 .dst = MSM_BUS_SLAVE_EBI_CH0,
973 .ab = 330301440,
974 .ib = 3522000000U,
975 },
976 {
977 .src = MSM_BUS_MASTER_AMPSS_M0,
978 .dst = MSM_BUS_SLAVE_EBI_CH0,
979 .ab = 2500000,
980 .ib = 700000000,
981 },
982 {
983 .src = MSM_BUS_MASTER_AMPSS_M0,
984 .dst = MSM_BUS_SLAVE_EBI_CH0,
985 .ab = 2500000,
986 .ib = 10000000,
987 },
988};
989
990static struct msm_bus_paths vidc_pro_bus_client_config[] = {
991 {
992 ARRAY_SIZE(vidc_pro_init_vectors),
993 vidc_pro_init_vectors,
994 },
995 {
996 ARRAY_SIZE(vidc_pro_venc_vga_vectors),
997 vidc_pro_venc_vga_vectors,
998 },
999 {
1000 ARRAY_SIZE(vidc_pro_vdec_vga_vectors),
1001 vidc_pro_vdec_vga_vectors,
1002 },
1003 {
1004 ARRAY_SIZE(vidc_pro_venc_720p_vectors),
1005 vidc_pro_venc_720p_vectors,
1006 },
1007 {
1008 ARRAY_SIZE(vidc_pro_vdec_720p_vectors),
1009 vidc_pro_vdec_720p_vectors,
1010 },
1011 {
1012 ARRAY_SIZE(vidc_pro_venc_1080p_vectors),
1013 vidc_pro_venc_1080p_vectors,
1014 },
1015 {
1016 ARRAY_SIZE(vidc_pro_vdec_1080p_vectors),
1017 vidc_pro_vdec_1080p_vectors,
1018 },
1019 {
1020 ARRAY_SIZE(vidc_pro_venc_1080p_turbo_vectors),
1021 vidc_pro_venc_1080p_turbo_vectors,
1022 },
1023 {
1024 ARRAY_SIZE(vidc_vdec_1080p_turbo_vectors),
1025 vidc_pro_vdec_1080p_turbo_vectors,
1026 },
1027};
1028
1029static struct msm_bus_scale_pdata vidc_pro_bus_client_data = {
1030 vidc_pro_bus_client_config,
1031 ARRAY_SIZE(vidc_bus_client_config),
1032 .name = "vidc",
1033};
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001034#endif
1035
Mona Hossain9c430e32011-07-27 11:04:47 -07001036#ifdef CONFIG_HW_RANDOM_MSM
1037/* PRNG device */
1038#define MSM_PRNG_PHYS 0x1A500000
1039static struct resource rng_resources = {
1040 .flags = IORESOURCE_MEM,
1041 .start = MSM_PRNG_PHYS,
1042 .end = MSM_PRNG_PHYS + SZ_512 - 1,
1043};
1044
1045struct platform_device msm_device_rng = {
1046 .name = "msm_rng",
1047 .id = 0,
1048 .num_resources = 1,
1049 .resource = &rng_resources,
1050};
1051#endif
1052
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001053#define MSM_VIDC_BASE_PHYS 0x04400000
1054#define MSM_VIDC_BASE_SIZE 0x00100000
1055
1056static struct resource msm_device_vidc_resources[] = {
1057 {
1058 .start = MSM_VIDC_BASE_PHYS,
1059 .end = MSM_VIDC_BASE_PHYS + MSM_VIDC_BASE_SIZE - 1,
1060 .flags = IORESOURCE_MEM,
1061 },
1062 {
1063 .start = VCODEC_IRQ,
1064 .end = VCODEC_IRQ,
1065 .flags = IORESOURCE_IRQ,
1066 },
1067};
1068
1069struct msm_vidc_platform_data vidc_platform_data = {
1070#ifdef CONFIG_MSM_BUS_SCALING
1071 .vidc_bus_client_pdata = &vidc_bus_client_data,
1072#endif
Deepak Koturcb4f6722011-10-31 14:06:57 -07001073#ifdef CONFIG_MSM_MULTIMEDIA_USE_ION
Olav Hauganb5be7992011-11-18 14:29:02 -08001074 .memtype = ION_CP_MM_HEAP_ID,
Deepak Koturcb4f6722011-10-31 14:06:57 -07001075 .enable_ion = 1,
Deepak kotur5f10b272012-03-15 22:01:39 -07001076 .cp_enabled = 1,
Deepak Koturcb4f6722011-10-31 14:06:57 -07001077#else
Deepak Kotur12301a72011-11-09 18:30:29 -08001078 .memtype = MEMTYPE_EBI1,
Deepak Koturcb4f6722011-10-31 14:06:57 -07001079 .enable_ion = 0,
1080#endif
Deepika Pepakayalabebc7622011-12-01 15:13:43 -08001081 .disable_dmx = 0,
Rajeshwar Kurapatyc155c352011-12-17 06:35:32 +05301082 .disable_fullhd = 0,
Mohan Kumar Gubbihalli Lachma Naiked9dc912012-03-01 19:11:14 -08001083 .cont_mode_dpb_count = 18,
Riaz Rahaman84f8c682012-05-30 13:32:10 +05301084 .fw_addr = 0x9fe00000,
Deepak Verma587c98e2013-02-01 22:47:49 +05301085 .enable_sec_metadata = 0,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001086};
1087
1088struct platform_device msm_device_vidc = {
1089 .name = "msm_vidc",
1090 .id = 0,
1091 .num_resources = ARRAY_SIZE(msm_device_vidc_resources),
1092 .resource = msm_device_vidc_resources,
1093 .dev = {
1094 .platform_data = &vidc_platform_data,
1095 },
1096};
1097
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001098#define MSM_SDC1_BASE 0x12400000
1099#define MSM_SDC1_DML_BASE (MSM_SDC1_BASE + 0x800)
1100#define MSM_SDC1_BAM_BASE (MSM_SDC1_BASE + 0x2000)
1101#define MSM_SDC2_BASE 0x12140000
1102#define MSM_SDC2_DML_BASE (MSM_SDC2_BASE + 0x800)
1103#define MSM_SDC2_BAM_BASE (MSM_SDC2_BASE + 0x2000)
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001104#define MSM_SDC3_BASE 0x12180000
1105#define MSM_SDC3_DML_BASE (MSM_SDC3_BASE + 0x800)
1106#define MSM_SDC3_BAM_BASE (MSM_SDC3_BASE + 0x2000)
1107#define MSM_SDC4_BASE 0x121C0000
1108#define MSM_SDC4_DML_BASE (MSM_SDC4_BASE + 0x800)
1109#define MSM_SDC4_BAM_BASE (MSM_SDC4_BASE + 0x2000)
1110#define MSM_SDC5_BASE 0x12200000
1111#define MSM_SDC5_DML_BASE (MSM_SDC5_BASE + 0x800)
1112#define MSM_SDC5_BAM_BASE (MSM_SDC5_BASE + 0x2000)
1113
1114static struct resource resources_sdc1[] = {
1115 {
1116 .name = "core_mem",
1117 .flags = IORESOURCE_MEM,
1118 .start = MSM_SDC1_BASE,
1119 .end = MSM_SDC1_DML_BASE - 1,
1120 },
1121 {
1122 .name = "core_irq",
1123 .flags = IORESOURCE_IRQ,
1124 .start = SDC1_IRQ_0,
1125 .end = SDC1_IRQ_0
1126 },
1127#ifdef CONFIG_MMC_MSM_SPS_SUPPORT
1128 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301129 .name = "dml_mem",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001130 .start = MSM_SDC1_DML_BASE,
1131 .end = MSM_SDC1_BAM_BASE - 1,
1132 .flags = IORESOURCE_MEM,
1133 },
1134 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301135 .name = "bam_mem",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001136 .start = MSM_SDC1_BAM_BASE,
1137 .end = MSM_SDC1_BAM_BASE + (2 * SZ_4K) - 1,
1138 .flags = IORESOURCE_MEM,
1139 },
1140 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301141 .name = "bam_irq",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001142 .start = SDC1_BAM_IRQ,
1143 .end = SDC1_BAM_IRQ,
1144 .flags = IORESOURCE_IRQ,
1145 },
1146#endif
1147};
1148
1149static struct resource resources_sdc2[] = {
1150 {
1151 .name = "core_mem",
1152 .flags = IORESOURCE_MEM,
1153 .start = MSM_SDC2_BASE,
1154 .end = MSM_SDC2_DML_BASE - 1,
1155 },
1156 {
1157 .name = "core_irq",
1158 .flags = IORESOURCE_IRQ,
1159 .start = SDC2_IRQ_0,
1160 .end = SDC2_IRQ_0
1161 },
1162#ifdef CONFIG_MMC_MSM_SPS_SUPPORT
1163 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301164 .name = "dml_mem",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001165 .start = MSM_SDC2_DML_BASE,
1166 .end = MSM_SDC2_BAM_BASE - 1,
1167 .flags = IORESOURCE_MEM,
1168 },
1169 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301170 .name = "bam_mem",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001171 .start = MSM_SDC2_BAM_BASE,
1172 .end = MSM_SDC2_BAM_BASE + (2 * SZ_4K) - 1,
1173 .flags = IORESOURCE_MEM,
1174 },
1175 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301176 .name = "bam_irq",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001177 .start = SDC2_BAM_IRQ,
1178 .end = SDC2_BAM_IRQ,
1179 .flags = IORESOURCE_IRQ,
1180 },
1181#endif
1182};
1183
1184static struct resource resources_sdc3[] = {
1185 {
1186 .name = "core_mem",
1187 .flags = IORESOURCE_MEM,
1188 .start = MSM_SDC3_BASE,
1189 .end = MSM_SDC3_DML_BASE - 1,
1190 },
1191 {
1192 .name = "core_irq",
1193 .flags = IORESOURCE_IRQ,
1194 .start = SDC3_IRQ_0,
1195 .end = SDC3_IRQ_0
1196 },
1197#ifdef CONFIG_MMC_MSM_SPS_SUPPORT
1198 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301199 .name = "dml_mem",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001200 .start = MSM_SDC3_DML_BASE,
1201 .end = MSM_SDC3_BAM_BASE - 1,
1202 .flags = IORESOURCE_MEM,
1203 },
1204 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301205 .name = "bam_mem",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001206 .start = MSM_SDC3_BAM_BASE,
1207 .end = MSM_SDC3_BAM_BASE + (2 * SZ_4K) - 1,
1208 .flags = IORESOURCE_MEM,
1209 },
1210 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301211 .name = "bam_irq",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001212 .start = SDC3_BAM_IRQ,
1213 .end = SDC3_BAM_IRQ,
1214 .flags = IORESOURCE_IRQ,
1215 },
1216#endif
1217};
1218
1219static struct resource resources_sdc4[] = {
1220 {
1221 .name = "core_mem",
1222 .flags = IORESOURCE_MEM,
1223 .start = MSM_SDC4_BASE,
1224 .end = MSM_SDC4_DML_BASE - 1,
1225 },
1226 {
1227 .name = "core_irq",
1228 .flags = IORESOURCE_IRQ,
1229 .start = SDC4_IRQ_0,
1230 .end = SDC4_IRQ_0
1231 },
1232#ifdef CONFIG_MMC_MSM_SPS_SUPPORT
1233 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301234 .name = "dml_mem",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001235 .start = MSM_SDC4_DML_BASE,
1236 .end = MSM_SDC4_BAM_BASE - 1,
1237 .flags = IORESOURCE_MEM,
1238 },
1239 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301240 .name = "bam_mem",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001241 .start = MSM_SDC4_BAM_BASE,
1242 .end = MSM_SDC4_BAM_BASE + (2 * SZ_4K) - 1,
1243 .flags = IORESOURCE_MEM,
1244 },
1245 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301246 .name = "bam_irq",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001247 .start = SDC4_BAM_IRQ,
1248 .end = SDC4_BAM_IRQ,
1249 .flags = IORESOURCE_IRQ,
1250 },
1251#endif
1252};
1253
1254static struct resource resources_sdc5[] = {
1255 {
1256 .name = "core_mem",
1257 .flags = IORESOURCE_MEM,
1258 .start = MSM_SDC5_BASE,
1259 .end = MSM_SDC5_DML_BASE - 1,
1260 },
1261 {
1262 .name = "core_irq",
1263 .flags = IORESOURCE_IRQ,
1264 .start = SDC5_IRQ_0,
1265 .end = SDC5_IRQ_0
1266 },
1267#ifdef CONFIG_MMC_MSM_SPS_SUPPORT
1268 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301269 .name = "dml_mem",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001270 .start = MSM_SDC5_DML_BASE,
1271 .end = MSM_SDC5_BAM_BASE - 1,
1272 .flags = IORESOURCE_MEM,
1273 },
1274 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301275 .name = "bam_mem",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001276 .start = MSM_SDC5_BAM_BASE,
1277 .end = MSM_SDC5_BAM_BASE + (2 * SZ_4K) - 1,
1278 .flags = IORESOURCE_MEM,
1279 },
1280 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301281 .name = "bam_irq",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001282 .start = SDC5_BAM_IRQ,
1283 .end = SDC5_BAM_IRQ,
1284 .flags = IORESOURCE_IRQ,
1285 },
1286#endif
1287};
1288
1289struct platform_device msm_device_sdc1 = {
1290 .name = "msm_sdcc",
1291 .id = 1,
1292 .num_resources = ARRAY_SIZE(resources_sdc1),
1293 .resource = resources_sdc1,
1294 .dev = {
1295 .coherent_dma_mask = 0xffffffff,
1296 },
1297};
1298
1299struct platform_device msm_device_sdc2 = {
1300 .name = "msm_sdcc",
1301 .id = 2,
1302 .num_resources = ARRAY_SIZE(resources_sdc2),
1303 .resource = resources_sdc2,
1304 .dev = {
1305 .coherent_dma_mask = 0xffffffff,
1306 },
1307};
1308
1309struct platform_device msm_device_sdc3 = {
1310 .name = "msm_sdcc",
1311 .id = 3,
1312 .num_resources = ARRAY_SIZE(resources_sdc3),
1313 .resource = resources_sdc3,
1314 .dev = {
1315 .coherent_dma_mask = 0xffffffff,
1316 },
1317};
1318
1319struct platform_device msm_device_sdc4 = {
1320 .name = "msm_sdcc",
1321 .id = 4,
1322 .num_resources = ARRAY_SIZE(resources_sdc4),
1323 .resource = resources_sdc4,
1324 .dev = {
1325 .coherent_dma_mask = 0xffffffff,
1326 },
1327};
1328
1329struct platform_device msm_device_sdc5 = {
1330 .name = "msm_sdcc",
1331 .id = 5,
1332 .num_resources = ARRAY_SIZE(resources_sdc5),
1333 .resource = resources_sdc5,
1334 .dev = {
1335 .coherent_dma_mask = 0xffffffff,
1336 },
1337};
1338
Stephen Boydeb819882011-08-29 14:46:30 -07001339#define MSM_LPASS_QDSP6SS_PHYS 0x28800000
1340#define SFAB_LPASS_Q6_ACLK_CTL (MSM_CLK_CTL_BASE + 0x23A0)
1341
1342static struct resource msm_8960_q6_lpass_resources[] = {
1343 {
1344 .start = MSM_LPASS_QDSP6SS_PHYS,
1345 .end = MSM_LPASS_QDSP6SS_PHYS + SZ_256 - 1,
1346 .flags = IORESOURCE_MEM,
1347 },
1348};
1349
1350static struct pil_q6v4_pdata msm_8960_q6_lpass_data = {
1351 .strap_tcm_base = 0x01460000,
1352 .strap_ahb_upper = 0x00290000,
1353 .strap_ahb_lower = 0x00000280,
1354 .aclk_reg = SFAB_LPASS_Q6_ACLK_CTL,
1355 .name = "q6",
1356 .pas_id = PAS_Q6,
Matt Wagantall6e4aafb2011-09-09 17:53:54 -07001357 .bus_port = MSM_BUS_MASTER_LPASS_PROC,
Stephen Boydeb819882011-08-29 14:46:30 -07001358};
1359
1360struct platform_device msm_8960_q6_lpass = {
1361 .name = "pil_qdsp6v4",
1362 .id = 0,
1363 .num_resources = ARRAY_SIZE(msm_8960_q6_lpass_resources),
1364 .resource = msm_8960_q6_lpass_resources,
1365 .dev.platform_data = &msm_8960_q6_lpass_data,
1366};
1367
1368#define MSM_MSS_ENABLE_PHYS 0x08B00000
1369#define MSM_FW_QDSP6SS_PHYS 0x08800000
1370#define MSS_Q6FW_JTAG_CLK_CTL (MSM_CLK_CTL_BASE + 0x2C6C)
1371#define SFAB_MSS_Q6_FW_ACLK_CTL (MSM_CLK_CTL_BASE + 0x2044)
1372
1373static struct resource msm_8960_q6_mss_fw_resources[] = {
1374 {
1375 .start = MSM_FW_QDSP6SS_PHYS,
1376 .end = MSM_FW_QDSP6SS_PHYS + SZ_256 - 1,
1377 .flags = IORESOURCE_MEM,
1378 },
1379 {
1380 .start = MSM_MSS_ENABLE_PHYS,
1381 .end = MSM_MSS_ENABLE_PHYS + 4 - 1,
1382 .flags = IORESOURCE_MEM,
1383 },
1384};
1385
1386static struct pil_q6v4_pdata msm_8960_q6_mss_fw_data = {
1387 .strap_tcm_base = 0x00400000,
1388 .strap_ahb_upper = 0x00090000,
1389 .strap_ahb_lower = 0x00000080,
1390 .aclk_reg = SFAB_MSS_Q6_FW_ACLK_CTL,
1391 .jtag_clk_reg = MSS_Q6FW_JTAG_CLK_CTL,
1392 .name = "modem_fw",
1393 .depends = "q6",
1394 .pas_id = PAS_MODEM_FW,
Matt Wagantall6e4aafb2011-09-09 17:53:54 -07001395 .bus_port = MSM_BUS_MASTER_MSS_FW_PROC,
Stephen Boydeb819882011-08-29 14:46:30 -07001396};
1397
1398struct platform_device msm_8960_q6_mss_fw = {
1399 .name = "pil_qdsp6v4",
1400 .id = 1,
1401 .num_resources = ARRAY_SIZE(msm_8960_q6_mss_fw_resources),
1402 .resource = msm_8960_q6_mss_fw_resources,
1403 .dev.platform_data = &msm_8960_q6_mss_fw_data,
1404};
1405
1406#define MSM_SW_QDSP6SS_PHYS 0x08900000
1407#define SFAB_MSS_Q6_SW_ACLK_CTL (MSM_CLK_CTL_BASE + 0x2040)
1408#define MSS_Q6SW_JTAG_CLK_CTL (MSM_CLK_CTL_BASE + 0x2C68)
1409
1410static struct resource msm_8960_q6_mss_sw_resources[] = {
1411 {
1412 .start = MSM_SW_QDSP6SS_PHYS,
1413 .end = MSM_SW_QDSP6SS_PHYS + SZ_256 - 1,
1414 .flags = IORESOURCE_MEM,
1415 },
1416 {
1417 .start = MSM_MSS_ENABLE_PHYS,
1418 .end = MSM_MSS_ENABLE_PHYS + 4 - 1,
1419 .flags = IORESOURCE_MEM,
1420 },
1421};
1422
1423static struct pil_q6v4_pdata msm_8960_q6_mss_sw_data = {
1424 .strap_tcm_base = 0x00420000,
1425 .strap_ahb_upper = 0x00090000,
1426 .strap_ahb_lower = 0x00000080,
1427 .aclk_reg = SFAB_MSS_Q6_SW_ACLK_CTL,
1428 .jtag_clk_reg = MSS_Q6SW_JTAG_CLK_CTL,
1429 .name = "modem",
1430 .depends = "modem_fw",
1431 .pas_id = PAS_MODEM_SW,
Matt Wagantall6e4aafb2011-09-09 17:53:54 -07001432 .bus_port = MSM_BUS_MASTER_MSS_SW_PROC,
Stephen Boydeb819882011-08-29 14:46:30 -07001433};
1434
1435struct platform_device msm_8960_q6_mss_sw = {
1436 .name = "pil_qdsp6v4",
1437 .id = 2,
1438 .num_resources = ARRAY_SIZE(msm_8960_q6_mss_sw_resources),
1439 .resource = msm_8960_q6_mss_sw_resources,
1440 .dev.platform_data = &msm_8960_q6_mss_sw_data,
1441};
1442
Stephen Boyd322a9922011-09-20 01:05:54 -07001443static struct resource msm_8960_riva_resources[] = {
1444 {
1445 .start = 0x03204000,
1446 .end = 0x03204000 + SZ_256 - 1,
1447 .flags = IORESOURCE_MEM,
1448 },
1449};
1450
1451struct platform_device msm_8960_riva = {
1452 .name = "pil_riva",
1453 .id = -1,
1454 .num_resources = ARRAY_SIZE(msm_8960_riva_resources),
1455 .resource = msm_8960_riva_resources,
1456};
1457
Stephen Boydd89eebe2011-09-28 23:28:11 -07001458struct platform_device msm_pil_tzapps = {
1459 .name = "pil_tzapps",
1460 .id = -1,
1461};
1462
Stephen Boyd25c4a0b2011-09-20 00:12:36 -07001463struct platform_device msm_pil_dsps = {
1464 .name = "pil_dsps",
1465 .id = -1,
1466 .dev.platform_data = "dsps",
1467};
1468
Stephen Boyd7b973de2012-03-09 12:26:16 -08001469struct platform_device msm_pil_vidc = {
1470 .name = "pil_vidc",
1471 .id = -1,
1472};
1473
Eric Holmberg023d25c2012-03-01 12:27:55 -07001474static struct resource smd_resource[] = {
1475 {
1476 .name = "a9_m2a_0",
1477 .start = INT_A9_M2A_0,
1478 .flags = IORESOURCE_IRQ,
1479 },
1480 {
1481 .name = "a9_m2a_5",
1482 .start = INT_A9_M2A_5,
1483 .flags = IORESOURCE_IRQ,
1484 },
1485 {
1486 .name = "adsp_a11",
1487 .start = INT_ADSP_A11,
1488 .flags = IORESOURCE_IRQ,
1489 },
1490 {
1491 .name = "adsp_a11_smsm",
1492 .start = INT_ADSP_A11_SMSM,
1493 .flags = IORESOURCE_IRQ,
1494 },
1495 {
1496 .name = "dsps_a11",
1497 .start = INT_DSPS_A11,
1498 .flags = IORESOURCE_IRQ,
1499 },
1500 {
1501 .name = "dsps_a11_smsm",
1502 .start = INT_DSPS_A11_SMSM,
1503 .flags = IORESOURCE_IRQ,
1504 },
1505 {
1506 .name = "wcnss_a11",
1507 .start = INT_WCNSS_A11,
1508 .flags = IORESOURCE_IRQ,
1509 },
1510 {
1511 .name = "wcnss_a11_smsm",
1512 .start = INT_WCNSS_A11_SMSM,
1513 .flags = IORESOURCE_IRQ,
1514 },
1515};
1516
1517static struct smd_subsystem_config smd_config_list[] = {
1518 {
1519 .irq_config_id = SMD_MODEM,
1520 .subsys_name = "modem",
1521 .edge = SMD_APPS_MODEM,
1522
1523 .smd_int.irq_name = "a9_m2a_0",
1524 .smd_int.flags = IRQF_TRIGGER_RISING,
1525 .smd_int.irq_id = -1,
1526 .smd_int.device_name = "smd_dev",
1527 .smd_int.dev_id = 0,
1528 .smd_int.out_bit_pos = 1 << 3,
1529 .smd_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1530 .smd_int.out_offset = 0x8,
1531
1532 .smsm_int.irq_name = "a9_m2a_5",
1533 .smsm_int.flags = IRQF_TRIGGER_RISING,
1534 .smsm_int.irq_id = -1,
1535 .smsm_int.device_name = "smd_smsm",
1536 .smsm_int.dev_id = 0,
1537 .smsm_int.out_bit_pos = 1 << 4,
1538 .smsm_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1539 .smsm_int.out_offset = 0x8,
1540 },
1541 {
1542 .irq_config_id = SMD_Q6,
1543 .subsys_name = "q6",
1544 .edge = SMD_APPS_QDSP,
1545
1546 .smd_int.irq_name = "adsp_a11",
1547 .smd_int.flags = IRQF_TRIGGER_RISING,
1548 .smd_int.irq_id = -1,
1549 .smd_int.device_name = "smd_dev",
1550 .smd_int.dev_id = 0,
1551 .smd_int.out_bit_pos = 1 << 15,
1552 .smd_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1553 .smd_int.out_offset = 0x8,
1554
1555 .smsm_int.irq_name = "adsp_a11_smsm",
1556 .smsm_int.flags = IRQF_TRIGGER_RISING,
1557 .smsm_int.irq_id = -1,
1558 .smsm_int.device_name = "smd_smsm",
1559 .smsm_int.dev_id = 0,
1560 .smsm_int.out_bit_pos = 1 << 14,
1561 .smsm_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1562 .smsm_int.out_offset = 0x8,
1563 },
1564 {
1565 .irq_config_id = SMD_DSPS,
1566 .subsys_name = "dsps",
1567 .edge = SMD_APPS_DSPS,
1568
1569 .smd_int.irq_name = "dsps_a11",
1570 .smd_int.flags = IRQF_TRIGGER_RISING,
1571 .smd_int.irq_id = -1,
1572 .smd_int.device_name = "smd_dev",
1573 .smd_int.dev_id = 0,
1574 .smd_int.out_bit_pos = 1,
1575 .smd_int.out_base = (void __iomem *)MSM_SIC_NON_SECURE_BASE,
1576 .smd_int.out_offset = 0x4080,
1577
1578 .smsm_int.irq_name = "dsps_a11_smsm",
1579 .smsm_int.flags = IRQF_TRIGGER_RISING,
1580 .smsm_int.irq_id = -1,
1581 .smsm_int.device_name = "smd_smsm",
1582 .smsm_int.dev_id = 0,
1583 .smsm_int.out_bit_pos = 1,
1584 .smsm_int.out_base = (void __iomem *)MSM_SIC_NON_SECURE_BASE,
1585 .smsm_int.out_offset = 0x4094,
1586 },
1587 {
1588 .irq_config_id = SMD_WCNSS,
1589 .subsys_name = "wcnss",
1590 .edge = SMD_APPS_WCNSS,
1591
1592 .smd_int.irq_name = "wcnss_a11",
1593 .smd_int.flags = IRQF_TRIGGER_RISING,
1594 .smd_int.irq_id = -1,
1595 .smd_int.device_name = "smd_dev",
1596 .smd_int.dev_id = 0,
1597 .smd_int.out_bit_pos = 1 << 25,
1598 .smd_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1599 .smd_int.out_offset = 0x8,
1600
1601 .smsm_int.irq_name = "wcnss_a11_smsm",
1602 .smsm_int.flags = IRQF_TRIGGER_RISING,
1603 .smsm_int.irq_id = -1,
1604 .smsm_int.device_name = "smd_smsm",
1605 .smsm_int.dev_id = 0,
1606 .smsm_int.out_bit_pos = 1 << 23,
1607 .smsm_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1608 .smsm_int.out_offset = 0x8,
1609 },
1610};
1611
Eric Holmberg2bb6ccd2012-03-13 13:05:14 -06001612static struct smd_subsystem_restart_config smd_ssr_config = {
1613 .disable_smsm_reset_handshake = 1,
1614};
1615
Eric Holmberg023d25c2012-03-01 12:27:55 -07001616static struct smd_platform smd_platform_data = {
1617 .num_ss_configs = ARRAY_SIZE(smd_config_list),
1618 .smd_ss_configs = smd_config_list,
Eric Holmberg2bb6ccd2012-03-13 13:05:14 -06001619 .smd_ssr_config = &smd_ssr_config,
Eric Holmberg023d25c2012-03-01 12:27:55 -07001620};
1621
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001622struct platform_device msm_device_smd = {
1623 .name = "msm_smd",
1624 .id = -1,
Eric Holmberg023d25c2012-03-01 12:27:55 -07001625 .resource = smd_resource,
1626 .num_resources = ARRAY_SIZE(smd_resource),
1627 .dev = {
1628 .platform_data = &smd_platform_data,
1629 },
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001630};
1631
1632struct platform_device msm_device_bam_dmux = {
1633 .name = "BAM_RMNT",
1634 .id = -1,
1635};
1636
Jeff Ohlstein7e668552011-10-06 16:17:25 -07001637static struct msm_watchdog_pdata msm_watchdog_pdata = {
1638 .pet_time = 10000,
1639 .bark_time = 11000,
1640 .has_secure = true,
Rohit Vaswanic77e4a62012-08-09 18:10:28 -07001641 .base = MSM_TMR0_BASE + WDT0_OFFSET,
1642};
1643
1644static struct resource msm_watchdog_resources[] = {
1645 {
1646 .start = WDT0_ACCSCSSNBARK_INT,
1647 .end = WDT0_ACCSCSSNBARK_INT,
1648 .flags = IORESOURCE_IRQ,
1649 },
Jeff Ohlstein7e668552011-10-06 16:17:25 -07001650};
1651
1652struct platform_device msm8960_device_watchdog = {
1653 .name = "msm_watchdog",
1654 .id = -1,
1655 .dev = {
1656 .platform_data = &msm_watchdog_pdata,
1657 },
Rohit Vaswanic77e4a62012-08-09 18:10:28 -07001658 .num_resources = ARRAY_SIZE(msm_watchdog_resources),
1659 .resource = msm_watchdog_resources,
Jeff Ohlstein7e668552011-10-06 16:17:25 -07001660};
1661
Stepan Moskovchenkodf13d342011-08-03 19:01:25 -07001662static struct resource msm_dmov_resource[] = {
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001663 {
1664 .start = ADM_0_SCSS_1_IRQ,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001665 .flags = IORESOURCE_IRQ,
1666 },
Jeff Ohlstein905f1ce2011-09-07 18:50:18 -07001667 {
1668 .start = 0x18320000,
1669 .end = 0x18320000 + SZ_1M - 1,
1670 .flags = IORESOURCE_MEM,
1671 },
1672};
1673
1674static struct msm_dmov_pdata msm_dmov_pdata = {
1675 .sd = 1,
1676 .sd_size = 0x800,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001677};
1678
Stepan Moskovchenkodf13d342011-08-03 19:01:25 -07001679struct platform_device msm8960_device_dmov = {
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001680 .name = "msm_dmov",
1681 .id = -1,
1682 .resource = msm_dmov_resource,
1683 .num_resources = ARRAY_SIZE(msm_dmov_resource),
Jeff Ohlstein905f1ce2011-09-07 18:50:18 -07001684 .dev = {
1685 .platform_data = &msm_dmov_pdata,
1686 },
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001687};
1688
1689static struct platform_device *msm_sdcc_devices[] __initdata = {
1690 &msm_device_sdc1,
1691 &msm_device_sdc2,
1692 &msm_device_sdc3,
1693 &msm_device_sdc4,
1694 &msm_device_sdc5,
1695};
1696
1697int __init msm_add_sdcc(unsigned int controller, struct mmc_platform_data *plat)
1698{
1699 struct platform_device *pdev;
1700
1701 if (controller < 1 || controller > 5)
1702 return -EINVAL;
1703
1704 pdev = msm_sdcc_devices[controller-1];
1705 pdev->dev.platform_data = plat;
1706 return platform_device_register(pdev);
1707}
1708
1709static struct resource resources_qup_i2c_gsbi4[] = {
1710 {
1711 .name = "gsbi_qup_i2c_addr",
1712 .start = MSM_GSBI4_PHYS,
Harini Jayaramand7614a72011-09-15 14:16:02 -06001713 .end = MSM_GSBI4_PHYS + 4 - 1,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001714 .flags = IORESOURCE_MEM,
1715 },
1716 {
1717 .name = "qup_phys_addr",
1718 .start = MSM_GSBI4_QUP_PHYS,
Harini Jayaramand7614a72011-09-15 14:16:02 -06001719 .end = MSM_GSBI4_QUP_PHYS + MSM_QUP_SIZE - 1,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001720 .flags = IORESOURCE_MEM,
1721 },
1722 {
1723 .name = "qup_err_intr",
1724 .start = GSBI4_QUP_IRQ,
1725 .end = GSBI4_QUP_IRQ,
1726 .flags = IORESOURCE_IRQ,
1727 },
1728};
1729
1730struct platform_device msm8960_device_qup_i2c_gsbi4 = {
1731 .name = "qup_i2c",
1732 .id = 4,
1733 .num_resources = ARRAY_SIZE(resources_qup_i2c_gsbi4),
1734 .resource = resources_qup_i2c_gsbi4,
1735};
1736
Kiran Gunda484442e2013-03-11 19:14:44 +05301737static struct resource resources_qup_i2c_gsbi8[] = {
1738 {
1739 .name = "gsbi_qup_i2c_addr",
1740 .start = MSM_GSBI8_PHYS,
1741 .end = MSM_GSBI8_PHYS + 4 - 1,
1742 .flags = IORESOURCE_MEM,
1743 },
1744 {
1745 .name = "qup_phys_addr",
1746 .start = MSM_GSBI8_QUP_PHYS,
1747 .end = MSM_GSBI8_QUP_PHYS + MSM_QUP_SIZE - 1,
1748 .flags = IORESOURCE_MEM,
1749 },
1750 {
1751 .name = "qup_err_intr",
1752 .start = GSBI8_QUP_IRQ,
1753 .end = GSBI8_QUP_IRQ,
1754 .flags = IORESOURCE_IRQ,
1755 },
1756};
1757
1758struct platform_device msm8960_device_qup_i2c_gsbi8 = {
1759 .name = "qup_i2c",
1760 .id = 8,
1761 .num_resources = ARRAY_SIZE(resources_qup_i2c_gsbi8),
1762 .resource = resources_qup_i2c_gsbi8,
1763};
1764
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001765static struct resource resources_qup_i2c_gsbi3[] = {
1766 {
1767 .name = "gsbi_qup_i2c_addr",
1768 .start = MSM_GSBI3_PHYS,
Harini Jayaramand7614a72011-09-15 14:16:02 -06001769 .end = MSM_GSBI3_PHYS + 4 - 1,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001770 .flags = IORESOURCE_MEM,
1771 },
1772 {
1773 .name = "qup_phys_addr",
1774 .start = MSM_GSBI3_QUP_PHYS,
Harini Jayaramand7614a72011-09-15 14:16:02 -06001775 .end = MSM_GSBI3_QUP_PHYS + MSM_QUP_SIZE - 1,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001776 .flags = IORESOURCE_MEM,
1777 },
1778 {
1779 .name = "qup_err_intr",
1780 .start = GSBI3_QUP_IRQ,
1781 .end = GSBI3_QUP_IRQ,
1782 .flags = IORESOURCE_IRQ,
1783 },
1784};
1785
1786struct platform_device msm8960_device_qup_i2c_gsbi3 = {
1787 .name = "qup_i2c",
1788 .id = 3,
1789 .num_resources = ARRAY_SIZE(resources_qup_i2c_gsbi3),
1790 .resource = resources_qup_i2c_gsbi3,
1791};
1792
Harini Jayaramanfe6ff4162012-03-14 11:25:40 -06001793static struct resource resources_qup_i2c_gsbi9[] = {
1794 {
1795 .name = "gsbi_qup_i2c_addr",
1796 .start = MSM_GSBI9_PHYS,
1797 .end = MSM_GSBI9_PHYS + 4 - 1,
1798 .flags = IORESOURCE_MEM,
1799 },
1800 {
1801 .name = "qup_phys_addr",
1802 .start = MSM_GSBI9_QUP_PHYS,
1803 .end = MSM_GSBI9_QUP_PHYS + MSM_QUP_SIZE - 1,
1804 .flags = IORESOURCE_MEM,
1805 },
1806 {
1807 .name = "qup_err_intr",
1808 .start = GSBI9_QUP_IRQ,
1809 .end = GSBI9_QUP_IRQ,
1810 .flags = IORESOURCE_IRQ,
1811 },
1812};
1813
1814struct platform_device msm8960_device_qup_i2c_gsbi9 = {
1815 .name = "qup_i2c",
1816 .id = 0,
1817 .num_resources = ARRAY_SIZE(resources_qup_i2c_gsbi9),
1818 .resource = resources_qup_i2c_gsbi9,
1819};
1820
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001821static struct resource resources_qup_i2c_gsbi10[] = {
1822 {
1823 .name = "gsbi_qup_i2c_addr",
1824 .start = MSM_GSBI10_PHYS,
Harini Jayaramand7614a72011-09-15 14:16:02 -06001825 .end = MSM_GSBI10_PHYS + 4 - 1,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001826 .flags = IORESOURCE_MEM,
1827 },
1828 {
1829 .name = "qup_phys_addr",
1830 .start = MSM_GSBI10_QUP_PHYS,
Harini Jayaramand7614a72011-09-15 14:16:02 -06001831 .end = MSM_GSBI10_QUP_PHYS + MSM_QUP_SIZE - 1,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001832 .flags = IORESOURCE_MEM,
1833 },
1834 {
1835 .name = "qup_err_intr",
1836 .start = GSBI10_QUP_IRQ,
1837 .end = GSBI10_QUP_IRQ,
1838 .flags = IORESOURCE_IRQ,
1839 },
1840};
1841
1842struct platform_device msm8960_device_qup_i2c_gsbi10 = {
1843 .name = "qup_i2c",
1844 .id = 10,
1845 .num_resources = ARRAY_SIZE(resources_qup_i2c_gsbi10),
1846 .resource = resources_qup_i2c_gsbi10,
1847};
1848
1849static struct resource resources_qup_i2c_gsbi12[] = {
1850 {
1851 .name = "gsbi_qup_i2c_addr",
1852 .start = MSM_GSBI12_PHYS,
Harini Jayaramand7614a72011-09-15 14:16:02 -06001853 .end = MSM_GSBI12_PHYS + 4 - 1,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001854 .flags = IORESOURCE_MEM,
1855 },
1856 {
1857 .name = "qup_phys_addr",
1858 .start = MSM_GSBI12_QUP_PHYS,
Harini Jayaramand7614a72011-09-15 14:16:02 -06001859 .end = MSM_GSBI12_QUP_PHYS + MSM_QUP_SIZE - 1,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001860 .flags = IORESOURCE_MEM,
1861 },
1862 {
1863 .name = "qup_err_intr",
1864 .start = GSBI12_QUP_IRQ,
1865 .end = GSBI12_QUP_IRQ,
1866 .flags = IORESOURCE_IRQ,
1867 },
1868};
1869
1870struct platform_device msm8960_device_qup_i2c_gsbi12 = {
1871 .name = "qup_i2c",
1872 .id = 12,
1873 .num_resources = ARRAY_SIZE(resources_qup_i2c_gsbi12),
1874 .resource = resources_qup_i2c_gsbi12,
1875};
1876
1877#ifdef CONFIG_MSM_CAMERA
Kevin Chanbb8ef862012-02-14 13:03:04 -08001878static struct resource msm_cam_gsbi4_i2c_mux_resources[] = {
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001879 {
Kevin Chanbb8ef862012-02-14 13:03:04 -08001880 .name = "i2c_mux_rw",
Nishant Pandit24153d82011-08-27 16:05:13 +05301881 .start = 0x008003E0,
Kevin Chanbb8ef862012-02-14 13:03:04 -08001882 .end = 0x008003E0 + SZ_8 - 1,
Nishant Pandit24153d82011-08-27 16:05:13 +05301883 .flags = IORESOURCE_MEM,
1884 },
1885 {
Kevin Chanbb8ef862012-02-14 13:03:04 -08001886 .name = "i2c_mux_ctl",
Nishant Pandit24153d82011-08-27 16:05:13 +05301887 .start = 0x008020B8,
Kevin Chanbb8ef862012-02-14 13:03:04 -08001888 .end = 0x008020B8 + SZ_4 - 1,
Nishant Pandit24153d82011-08-27 16:05:13 +05301889 .flags = IORESOURCE_MEM,
1890 },
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001891};
1892
Kevin Chanbb8ef862012-02-14 13:03:04 -08001893struct platform_device msm8960_device_i2c_mux_gsbi4 = {
1894 .name = "msm_cam_i2c_mux",
1895 .id = 0,
1896 .resource = msm_cam_gsbi4_i2c_mux_resources,
1897 .num_resources = ARRAY_SIZE(msm_cam_gsbi4_i2c_mux_resources),
1898};
Kevin Chanf6216f22011-10-25 18:40:11 -07001899
1900static struct resource msm_csiphy0_resources[] = {
1901 {
1902 .name = "csiphy",
1903 .start = 0x04800C00,
1904 .end = 0x04800C00 + SZ_1K - 1,
1905 .flags = IORESOURCE_MEM,
1906 },
1907 {
1908 .name = "csiphy",
1909 .start = CSIPHY_4LN_IRQ,
1910 .end = CSIPHY_4LN_IRQ,
1911 .flags = IORESOURCE_IRQ,
1912 },
1913};
1914
1915static struct resource msm_csiphy1_resources[] = {
1916 {
1917 .name = "csiphy",
1918 .start = 0x04801000,
1919 .end = 0x04801000 + SZ_1K - 1,
1920 .flags = IORESOURCE_MEM,
1921 },
1922 {
1923 .name = "csiphy",
1924 .start = MSM8960_CSIPHY_2LN_IRQ,
1925 .end = MSM8960_CSIPHY_2LN_IRQ,
1926 .flags = IORESOURCE_IRQ,
1927 },
1928};
1929
Sreesudhan Ramakrish Ramkumarb1edcd02012-01-17 11:33:05 -08001930static struct resource msm_csiphy2_resources[] = {
1931 {
1932 .name = "csiphy",
1933 .start = 0x04801400,
1934 .end = 0x04801400 + SZ_1K - 1,
1935 .flags = IORESOURCE_MEM,
1936 },
1937 {
1938 .name = "csiphy",
1939 .start = MSM8960_CSIPHY_2_2LN_IRQ,
1940 .end = MSM8960_CSIPHY_2_2LN_IRQ,
1941 .flags = IORESOURCE_IRQ,
1942 },
1943};
1944
Kevin Chanf6216f22011-10-25 18:40:11 -07001945struct platform_device msm8960_device_csiphy0 = {
1946 .name = "msm_csiphy",
1947 .id = 0,
1948 .resource = msm_csiphy0_resources,
1949 .num_resources = ARRAY_SIZE(msm_csiphy0_resources),
1950};
1951
1952struct platform_device msm8960_device_csiphy1 = {
1953 .name = "msm_csiphy",
1954 .id = 1,
1955 .resource = msm_csiphy1_resources,
1956 .num_resources = ARRAY_SIZE(msm_csiphy1_resources),
1957};
Kevin Chanc8b52e82011-10-25 23:20:21 -07001958
Sreesudhan Ramakrish Ramkumarb1edcd02012-01-17 11:33:05 -08001959struct platform_device msm8960_device_csiphy2 = {
1960 .name = "msm_csiphy",
1961 .id = 2,
1962 .resource = msm_csiphy2_resources,
1963 .num_resources = ARRAY_SIZE(msm_csiphy2_resources),
1964};
1965
Kevin Chanc8b52e82011-10-25 23:20:21 -07001966static struct resource msm_csid0_resources[] = {
1967 {
1968 .name = "csid",
1969 .start = 0x04800000,
1970 .end = 0x04800000 + SZ_1K - 1,
1971 .flags = IORESOURCE_MEM,
1972 },
1973 {
1974 .name = "csid",
1975 .start = CSI_0_IRQ,
1976 .end = CSI_0_IRQ,
1977 .flags = IORESOURCE_IRQ,
1978 },
1979};
1980
1981static struct resource msm_csid1_resources[] = {
1982 {
1983 .name = "csid",
1984 .start = 0x04800400,
1985 .end = 0x04800400 + SZ_1K - 1,
1986 .flags = IORESOURCE_MEM,
1987 },
1988 {
1989 .name = "csid",
1990 .start = CSI_1_IRQ,
1991 .end = CSI_1_IRQ,
1992 .flags = IORESOURCE_IRQ,
1993 },
1994};
1995
Sreesudhan Ramakrish Ramkumarb1edcd02012-01-17 11:33:05 -08001996static struct resource msm_csid2_resources[] = {
1997 {
1998 .name = "csid",
1999 .start = 0x04801800,
2000 .end = 0x04801800 + SZ_1K - 1,
2001 .flags = IORESOURCE_MEM,
2002 },
2003 {
2004 .name = "csid",
2005 .start = CSI_2_IRQ,
2006 .end = CSI_2_IRQ,
2007 .flags = IORESOURCE_IRQ,
2008 },
2009};
2010
Kevin Chanc8b52e82011-10-25 23:20:21 -07002011struct platform_device msm8960_device_csid0 = {
2012 .name = "msm_csid",
2013 .id = 0,
2014 .resource = msm_csid0_resources,
2015 .num_resources = ARRAY_SIZE(msm_csid0_resources),
2016};
2017
2018struct platform_device msm8960_device_csid1 = {
2019 .name = "msm_csid",
2020 .id = 1,
2021 .resource = msm_csid1_resources,
2022 .num_resources = ARRAY_SIZE(msm_csid1_resources),
2023};
Kevin Chane12c6672011-10-26 11:55:26 -07002024
Sreesudhan Ramakrish Ramkumarb1edcd02012-01-17 11:33:05 -08002025struct platform_device msm8960_device_csid2 = {
2026 .name = "msm_csid",
2027 .id = 2,
2028 .resource = msm_csid2_resources,
2029 .num_resources = ARRAY_SIZE(msm_csid2_resources),
2030};
2031
Kevin Chane12c6672011-10-26 11:55:26 -07002032struct resource msm_ispif_resources[] = {
2033 {
2034 .name = "ispif",
2035 .start = 0x04800800,
2036 .end = 0x04800800 + SZ_1K - 1,
2037 .flags = IORESOURCE_MEM,
2038 },
2039 {
2040 .name = "ispif",
2041 .start = ISPIF_IRQ,
2042 .end = ISPIF_IRQ,
2043 .flags = IORESOURCE_IRQ,
2044 },
2045};
2046
2047struct platform_device msm8960_device_ispif = {
2048 .name = "msm_ispif",
2049 .id = 0,
2050 .resource = msm_ispif_resources,
2051 .num_resources = ARRAY_SIZE(msm_ispif_resources),
2052};
Kevin Chan5827c552011-10-28 18:36:32 -07002053
2054static struct resource msm_vfe_resources[] = {
2055 {
2056 .name = "vfe32",
2057 .start = 0x04500000,
2058 .end = 0x04500000 + SZ_1M - 1,
2059 .flags = IORESOURCE_MEM,
2060 },
2061 {
2062 .name = "vfe32",
2063 .start = VFE_IRQ,
2064 .end = VFE_IRQ,
2065 .flags = IORESOURCE_IRQ,
2066 },
2067};
2068
2069struct platform_device msm8960_device_vfe = {
2070 .name = "msm_vfe",
2071 .id = 0,
2072 .resource = msm_vfe_resources,
2073 .num_resources = ARRAY_SIZE(msm_vfe_resources),
2074};
Kevin Chana0853122011-11-07 19:48:44 -08002075
2076static struct resource msm_vpe_resources[] = {
2077 {
2078 .name = "vpe",
2079 .start = 0x05300000,
2080 .end = 0x05300000 + SZ_1M - 1,
2081 .flags = IORESOURCE_MEM,
2082 },
2083 {
2084 .name = "vpe",
2085 .start = VPE_IRQ,
2086 .end = VPE_IRQ,
2087 .flags = IORESOURCE_IRQ,
2088 },
2089};
2090
2091struct platform_device msm8960_device_vpe = {
2092 .name = "msm_vpe",
2093 .id = 0,
2094 .resource = msm_vpe_resources,
2095 .num_resources = ARRAY_SIZE(msm_vpe_resources),
2096};
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002097#endif
2098
Joel Nidera1261942011-09-12 16:30:09 +03002099#define MSM_TSIF0_PHYS (0x18200000)
2100#define MSM_TSIF1_PHYS (0x18201000)
2101#define MSM_TSIF_SIZE (0x200)
2102
2103#define TSIF_0_CLK GPIO_CFG(75, 1, GPIO_CFG_INPUT, \
2104 GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA)
2105#define TSIF_0_EN GPIO_CFG(76, 1, GPIO_CFG_INPUT, \
2106 GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA)
2107#define TSIF_0_DATA GPIO_CFG(77, 1, GPIO_CFG_INPUT, \
2108 GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA)
2109#define TSIF_0_SYNC GPIO_CFG(82, 1, GPIO_CFG_INPUT, \
2110 GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA)
2111#define TSIF_1_CLK GPIO_CFG(79, 1, GPIO_CFG_INPUT, \
2112 GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA)
2113#define TSIF_1_EN GPIO_CFG(80, 1, GPIO_CFG_INPUT, \
2114 GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA)
2115#define TSIF_1_DATA GPIO_CFG(81, 1, GPIO_CFG_INPUT, \
2116 GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA)
2117#define TSIF_1_SYNC GPIO_CFG(78, 1, GPIO_CFG_INPUT, \
2118 GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA)
2119
2120static const struct msm_gpio tsif0_gpios[] = {
2121 { .gpio_cfg = TSIF_0_CLK, .label = "tsif_clk", },
2122 { .gpio_cfg = TSIF_0_EN, .label = "tsif_en", },
2123 { .gpio_cfg = TSIF_0_DATA, .label = "tsif_data", },
2124 { .gpio_cfg = TSIF_0_SYNC, .label = "tsif_sync", },
2125};
2126
2127static const struct msm_gpio tsif1_gpios[] = {
2128 { .gpio_cfg = TSIF_1_CLK, .label = "tsif_clk", },
2129 { .gpio_cfg = TSIF_1_EN, .label = "tsif_en", },
2130 { .gpio_cfg = TSIF_1_DATA, .label = "tsif_data", },
2131 { .gpio_cfg = TSIF_1_SYNC, .label = "tsif_sync", },
2132};
2133
2134struct msm_tsif_platform_data tsif1_platform_data = {
2135 .num_gpios = ARRAY_SIZE(tsif1_gpios),
2136 .gpios = tsif1_gpios,
Joel Niderdfb793b2012-06-27 12:00:22 +03002137 .tsif_pclk = "iface_clk",
2138 .tsif_ref_clk = "ref_clk",
Joel Nidera1261942011-09-12 16:30:09 +03002139};
2140
2141struct resource tsif1_resources[] = {
2142 [0] = {
2143 .flags = IORESOURCE_IRQ,
2144 .start = TSIF2_IRQ,
2145 .end = TSIF2_IRQ,
2146 },
2147 [1] = {
2148 .flags = IORESOURCE_MEM,
2149 .start = MSM_TSIF1_PHYS,
2150 .end = MSM_TSIF1_PHYS + MSM_TSIF_SIZE - 1,
2151 },
2152 [2] = {
2153 .flags = IORESOURCE_DMA,
2154 .start = DMOV_TSIF_CHAN,
2155 .end = DMOV_TSIF_CRCI,
2156 },
2157};
2158
2159struct msm_tsif_platform_data tsif0_platform_data = {
2160 .num_gpios = ARRAY_SIZE(tsif0_gpios),
2161 .gpios = tsif0_gpios,
Joel Niderdfb793b2012-06-27 12:00:22 +03002162 .tsif_pclk = "iface_clk",
2163 .tsif_ref_clk = "ref_clk",
Joel Nidera1261942011-09-12 16:30:09 +03002164};
2165struct resource tsif0_resources[] = {
2166 [0] = {
2167 .flags = IORESOURCE_IRQ,
2168 .start = TSIF1_IRQ,
2169 .end = TSIF1_IRQ,
2170 },
2171 [1] = {
2172 .flags = IORESOURCE_MEM,
2173 .start = MSM_TSIF0_PHYS,
2174 .end = MSM_TSIF0_PHYS + MSM_TSIF_SIZE - 1,
2175 },
2176 [2] = {
2177 .flags = IORESOURCE_DMA,
2178 .start = DMOV_TSIF_CHAN,
2179 .end = DMOV_TSIF_CRCI,
2180 },
2181};
2182
2183struct platform_device msm_device_tsif[2] = {
2184 {
2185 .name = "msm_tsif",
2186 .id = 0,
2187 .num_resources = ARRAY_SIZE(tsif0_resources),
2188 .resource = tsif0_resources,
2189 .dev = {
2190 .platform_data = &tsif0_platform_data
2191 },
2192 },
2193 {
2194 .name = "msm_tsif",
2195 .id = 1,
2196 .num_resources = ARRAY_SIZE(tsif1_resources),
2197 .resource = tsif1_resources,
2198 .dev = {
2199 .platform_data = &tsif1_platform_data
2200 },
2201 }
2202};
2203
Jay Chokshi33c044a2011-12-07 13:05:40 -08002204static struct resource resources_ssbi_pmic[] = {
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002205 {
2206 .start = MSM_PMIC1_SSBI_CMD_PHYS,
2207 .end = MSM_PMIC1_SSBI_CMD_PHYS + MSM_PMIC_SSBI_SIZE - 1,
2208 .flags = IORESOURCE_MEM,
2209 },
2210};
2211
Jay Chokshi33c044a2011-12-07 13:05:40 -08002212struct platform_device msm8960_device_ssbi_pmic = {
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002213 .name = "msm_ssbi",
2214 .id = 0,
Jay Chokshi33c044a2011-12-07 13:05:40 -08002215 .resource = resources_ssbi_pmic,
2216 .num_resources = ARRAY_SIZE(resources_ssbi_pmic),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002217};
2218
2219static struct resource resources_qup_spi_gsbi1[] = {
2220 {
2221 .name = "spi_base",
2222 .start = MSM_GSBI1_QUP_PHYS,
2223 .end = MSM_GSBI1_QUP_PHYS + SZ_4K - 1,
2224 .flags = IORESOURCE_MEM,
2225 },
2226 {
2227 .name = "gsbi_base",
2228 .start = MSM_GSBI1_PHYS,
2229 .end = MSM_GSBI1_PHYS + 4 - 1,
2230 .flags = IORESOURCE_MEM,
2231 },
2232 {
2233 .name = "spi_irq_in",
2234 .start = MSM8960_GSBI1_QUP_IRQ,
2235 .end = MSM8960_GSBI1_QUP_IRQ,
2236 .flags = IORESOURCE_IRQ,
2237 },
Harini Jayaramanaac8e342011-08-09 19:25:23 -06002238 {
2239 .name = "spi_clk",
2240 .start = 9,
2241 .end = 9,
2242 .flags = IORESOURCE_IO,
2243 },
2244 {
Harini Jayaramanaac8e342011-08-09 19:25:23 -06002245 .name = "spi_miso",
2246 .start = 7,
2247 .end = 7,
2248 .flags = IORESOURCE_IO,
2249 },
2250 {
2251 .name = "spi_mosi",
2252 .start = 6,
2253 .end = 6,
2254 .flags = IORESOURCE_IO,
2255 },
Harini Jayaraman8392e432011-11-29 18:26:17 -07002256 {
2257 .name = "spi_cs",
2258 .start = 8,
2259 .end = 8,
2260 .flags = IORESOURCE_IO,
2261 },
2262 {
2263 .name = "spi_cs1",
2264 .start = 14,
2265 .end = 14,
2266 .flags = IORESOURCE_IO,
2267 },
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002268};
2269
2270struct platform_device msm8960_device_qup_spi_gsbi1 = {
2271 .name = "spi_qsd",
2272 .id = 0,
2273 .num_resources = ARRAY_SIZE(resources_qup_spi_gsbi1),
2274 .resource = resources_qup_spi_gsbi1,
2275};
2276
2277struct platform_device msm_pcm = {
2278 .name = "msm-pcm-dsp",
2279 .id = -1,
2280};
2281
Kiran Kandi5e809b02012-01-31 00:24:33 -08002282struct platform_device msm_multi_ch_pcm = {
2283 .name = "msm-multi-ch-pcm-dsp",
2284 .id = -1,
2285};
2286
Jayasena Sangaraboina99bf09c2012-07-17 12:03:08 -07002287struct platform_device msm_lowlatency_pcm = {
2288 .name = "msm-lowlatency-pcm-dsp",
2289 .id = -1,
2290};
2291
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002292struct platform_device msm_pcm_routing = {
2293 .name = "msm-pcm-routing",
2294 .id = -1,
2295};
2296
2297struct platform_device msm_cpudai0 = {
2298 .name = "msm-dai-q6",
2299 .id = 0x4000,
2300};
2301
2302struct platform_device msm_cpudai1 = {
2303 .name = "msm-dai-q6",
2304 .id = 0x4001,
2305};
2306
Kiran Kandi97fe19d2012-05-20 22:34:04 -07002307struct platform_device msm8960_cpudai_slimbus_2_rx = {
2308 .name = "msm-dai-q6",
2309 .id = 0x4004,
2310};
2311
Kiran Kandi1e6371d2012-03-29 11:48:57 -07002312struct platform_device msm8960_cpudai_slimbus_2_tx = {
2313 .name = "msm-dai-q6",
2314 .id = 0x4005,
2315};
2316
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002317struct platform_device msm_cpudai_hdmi_rx = {
Kiran Kandi5e809b02012-01-31 00:24:33 -08002318 .name = "msm-dai-q6-hdmi",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002319 .id = 8,
2320};
2321
2322struct platform_device msm_cpudai_bt_rx = {
2323 .name = "msm-dai-q6",
2324 .id = 0x3000,
2325};
2326
2327struct platform_device msm_cpudai_bt_tx = {
2328 .name = "msm-dai-q6",
2329 .id = 0x3001,
2330};
2331
2332struct platform_device msm_cpudai_fm_rx = {
2333 .name = "msm-dai-q6",
2334 .id = 0x3004,
2335};
2336
2337struct platform_device msm_cpudai_fm_tx = {
2338 .name = "msm-dai-q6",
2339 .id = 0x3005,
2340};
2341
Helen Zeng0705a5f2011-10-14 15:29:52 -07002342struct platform_device msm_cpudai_incall_music_rx = {
2343 .name = "msm-dai-q6",
2344 .id = 0x8005,
2345};
2346
Helen Zenge3d716a2011-10-14 16:32:16 -07002347struct platform_device msm_cpudai_incall_record_rx = {
2348 .name = "msm-dai-q6",
2349 .id = 0x8004,
2350};
2351
2352struct platform_device msm_cpudai_incall_record_tx = {
2353 .name = "msm-dai-q6",
2354 .id = 0x8003,
2355};
2356
Bhalchandra Gajare0e795c42011-08-15 18:10:30 -07002357/*
2358 * Machine specific data for AUX PCM Interface
2359 * which the driver will be unware of.
2360 */
Kiran Kandi5f4ab692012-02-23 11:23:56 -08002361struct msm_dai_auxpcm_pdata auxpcm_pdata = {
Bhalchandra Gajare0e795c42011-08-15 18:10:30 -07002362 .clk = "pcm_clk",
Kuirong Wang547a9982012-05-04 18:29:11 -07002363 .mode_8k = {
2364 .mode = AFE_PCM_CFG_MODE_PCM,
2365 .sync = AFE_PCM_CFG_SYNC_INT,
Damir Didjustocadb6392012-08-17 00:16:07 -07002366 .frame = AFE_PCM_CFG_FRM_32BPF,
Kuirong Wang547a9982012-05-04 18:29:11 -07002367 .quant = AFE_PCM_CFG_QUANT_LINEAR_NOPAD,
2368 .slot = 0,
2369 .data = AFE_PCM_CFG_CDATAOE_MASTER,
Damir Didjustocadb6392012-08-17 00:16:07 -07002370 .pcm_clk_rate = 256000,
Kuirong Wang547a9982012-05-04 18:29:11 -07002371 },
2372 .mode_16k = {
2373 .mode = AFE_PCM_CFG_MODE_PCM,
2374 .sync = AFE_PCM_CFG_SYNC_INT,
Damir Didjustocadb6392012-08-17 00:16:07 -07002375 .frame = AFE_PCM_CFG_FRM_32BPF,
Kuirong Wang547a9982012-05-04 18:29:11 -07002376 .quant = AFE_PCM_CFG_QUANT_LINEAR_NOPAD,
2377 .slot = 0,
2378 .data = AFE_PCM_CFG_CDATAOE_MASTER,
Damir Didjustocadb6392012-08-17 00:16:07 -07002379 .pcm_clk_rate = 512000,
Kuirong Wang547a9982012-05-04 18:29:11 -07002380 }
Bhalchandra Gajare0e795c42011-08-15 18:10:30 -07002381};
2382
2383struct platform_device msm_cpudai_auxpcm_rx = {
2384 .name = "msm-dai-q6",
2385 .id = 2,
2386 .dev = {
Kiran Kandi5f4ab692012-02-23 11:23:56 -08002387 .platform_data = &auxpcm_pdata,
Bhalchandra Gajare0e795c42011-08-15 18:10:30 -07002388 },
2389};
2390
2391struct platform_device msm_cpudai_auxpcm_tx = {
2392 .name = "msm-dai-q6",
2393 .id = 3,
Kiran Kandi5f4ab692012-02-23 11:23:56 -08002394 .dev = {
2395 .platform_data = &auxpcm_pdata,
2396 },
Bhalchandra Gajare0e795c42011-08-15 18:10:30 -07002397};
2398
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002399struct platform_device msm_cpu_fe = {
2400 .name = "msm-dai-fe",
2401 .id = -1,
2402};
2403
2404struct platform_device msm_stub_codec = {
2405 .name = "msm-stub-codec",
2406 .id = 1,
2407};
2408
2409struct platform_device msm_voice = {
2410 .name = "msm-pcm-voice",
2411 .id = -1,
2412};
2413
2414struct platform_device msm_voip = {
2415 .name = "msm-voip-dsp",
2416 .id = -1,
2417};
2418
2419struct platform_device msm_lpa_pcm = {
2420 .name = "msm-pcm-lpa",
2421 .id = -1,
2422};
2423
Asish Bhattacharya96bb6f42011-11-01 20:36:09 +05302424struct platform_device msm_compr_dsp = {
2425 .name = "msm-compr-dsp",
2426 .id = -1,
2427};
2428
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002429struct platform_device msm_pcm_hostless = {
2430 .name = "msm-pcm-hostless",
2431 .id = -1,
2432};
2433
Laxminath Kasamcee1d602011-08-01 19:26:57 +05302434struct platform_device msm_cpudai_afe_01_rx = {
2435 .name = "msm-dai-q6",
2436 .id = 0xE0,
2437};
2438
2439struct platform_device msm_cpudai_afe_01_tx = {
2440 .name = "msm-dai-q6",
2441 .id = 0xF0,
2442};
2443
2444struct platform_device msm_cpudai_afe_02_rx = {
2445 .name = "msm-dai-q6",
2446 .id = 0xF1,
2447};
2448
2449struct platform_device msm_cpudai_afe_02_tx = {
2450 .name = "msm-dai-q6",
2451 .id = 0xE1,
2452};
2453
2454struct platform_device msm_pcm_afe = {
2455 .name = "msm-pcm-afe",
2456 .id = -1,
2457};
2458
Matt Wagantall1f65d9d2012-04-25 14:24:20 -07002459static struct fs_driver_data gfx2d0_fs_data = {
2460 .clks = (struct fs_clk_data[]){
2461 { .name = "core_clk" },
2462 { .name = "iface_clk" },
2463 { 0 }
2464 },
2465 .bus_port0 = MSM_BUS_MASTER_GRAPHICS_2D_CORE0,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002466};
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002467
Matt Wagantall1f65d9d2012-04-25 14:24:20 -07002468static struct fs_driver_data gfx2d1_fs_data = {
2469 .clks = (struct fs_clk_data[]){
2470 { .name = "core_clk" },
2471 { .name = "iface_clk" },
2472 { 0 }
2473 },
2474 .bus_port0 = MSM_BUS_MASTER_GRAPHICS_2D_CORE1,
2475};
2476
2477static struct fs_driver_data gfx3d_fs_data = {
2478 .clks = (struct fs_clk_data[]){
2479 { .name = "core_clk", .reset_rate = 27000000 },
2480 { .name = "iface_clk" },
2481 { 0 }
2482 },
2483 .bus_port0 = MSM_BUS_MASTER_GRAPHICS_3D,
2484};
2485
Stephen Boyd7a0a6252012-12-05 14:01:17 -08002486static struct fs_driver_data gfx3d_fs_data_8960ab = {
2487 .clks = (struct fs_clk_data[]){
2488 { .name = "core_clk", .reset_rate = 27000000 },
2489 { .name = "iface_clk" },
2490 { .name = "bus_clk" },
2491 { 0 }
2492 },
2493 .bus_port0 = MSM_BUS_MASTER_GRAPHICS_3D,
2494 .bus_port1 = MSM_BUS_MASTER_GRAPHICS_3D_PORT1,
2495};
2496
Matt Wagantall1f65d9d2012-04-25 14:24:20 -07002497static struct fs_driver_data ijpeg_fs_data = {
2498 .clks = (struct fs_clk_data[]){
2499 { .name = "core_clk" },
2500 { .name = "iface_clk" },
2501 { .name = "bus_clk" },
2502 { 0 }
2503 },
2504 .bus_port0 = MSM_BUS_MASTER_JPEG_ENC,
2505};
2506
2507static struct fs_driver_data mdp_fs_data = {
2508 .clks = (struct fs_clk_data[]){
2509 { .name = "core_clk" },
2510 { .name = "iface_clk" },
2511 { .name = "bus_clk" },
2512 { .name = "vsync_clk" },
2513 { .name = "lut_clk" },
2514 { .name = "tv_src_clk" },
2515 { .name = "tv_clk" },
Matt Wagantallc33c1ed2012-07-23 17:19:08 -07002516 { .name = "reset1_clk" },
2517 { .name = "reset2_clk" },
Matt Wagantall1f65d9d2012-04-25 14:24:20 -07002518 { 0 }
2519 },
2520 .bus_port0 = MSM_BUS_MASTER_MDP_PORT0,
2521 .bus_port1 = MSM_BUS_MASTER_MDP_PORT1,
2522};
2523
2524static struct fs_driver_data rot_fs_data = {
2525 .clks = (struct fs_clk_data[]){
2526 { .name = "core_clk" },
2527 { .name = "iface_clk" },
2528 { .name = "bus_clk" },
2529 { 0 }
2530 },
2531 .bus_port0 = MSM_BUS_MASTER_ROTATOR,
2532};
2533
2534static struct fs_driver_data ved_fs_data = {
2535 .clks = (struct fs_clk_data[]){
2536 { .name = "core_clk" },
2537 { .name = "iface_clk" },
2538 { .name = "bus_clk" },
2539 { 0 }
2540 },
2541 .bus_port0 = MSM_BUS_MASTER_HD_CODEC_PORT0,
2542 .bus_port1 = MSM_BUS_MASTER_HD_CODEC_PORT1,
2543};
2544
Matt Wagantall5ac78922012-11-09 16:03:59 -08002545static struct fs_driver_data ved_fs_data_8960ab = {
2546 .clks = (struct fs_clk_data[]){
2547 { .name = "core_clk" },
2548 { .name = "iface_clk" },
2549 { .name = "bus_clk" },
2550 { 0 }
2551 },
2552 .bus_port0 = MSM_BUS_MASTER_VIDEO_DEC,
2553 .bus_port1 = MSM_BUS_MASTER_VIDEO_ENC,
2554};
2555
Matt Wagantall1f65d9d2012-04-25 14:24:20 -07002556static struct fs_driver_data vfe_fs_data = {
2557 .clks = (struct fs_clk_data[]){
2558 { .name = "core_clk" },
2559 { .name = "iface_clk" },
2560 { .name = "bus_clk" },
2561 { 0 }
2562 },
2563 .bus_port0 = MSM_BUS_MASTER_VFE,
2564};
2565
2566static struct fs_driver_data vpe_fs_data = {
2567 .clks = (struct fs_clk_data[]){
2568 { .name = "core_clk" },
2569 { .name = "iface_clk" },
2570 { .name = "bus_clk" },
2571 { 0 }
2572 },
2573 .bus_port0 = MSM_BUS_MASTER_VPE,
2574};
2575
2576struct platform_device *msm8960_footswitch[] __initdata = {
Matt Wagantalld4aab1e2012-05-03 20:26:56 -07002577 FS_8X60(FS_MDP, "vdd", "mdp.0", &mdp_fs_data),
Matt Wagantall316f2fc2012-05-03 20:41:42 -07002578 FS_8X60(FS_ROT, "vdd", "msm_rotator.0", &rot_fs_data),
Matt Wagantalle4454b82012-05-03 20:48:01 -07002579 FS_8X60(FS_IJPEG, "vdd", "msm_gemini.0", &ijpeg_fs_data),
Kiran Kumar H Nfa18a032012-06-25 14:34:18 -07002580 FS_8X60(FS_VFE, "vdd", "msm_vfe.0", &vfe_fs_data),
2581 FS_8X60(FS_VPE, "vdd", "msm_vpe.0", &vpe_fs_data),
Matt Wagantalld6fbf232012-05-03 20:09:28 -07002582 FS_8X60(FS_GFX3D, "vdd", "kgsl-3d0.0", &gfx3d_fs_data),
2583 FS_8X60(FS_GFX2D0, "vdd", "kgsl-2d0.0", &gfx2d0_fs_data),
2584 FS_8X60(FS_GFX2D1, "vdd", "kgsl-2d1.1", &gfx2d1_fs_data),
Matt Wagantall5e46aac2012-05-03 20:20:18 -07002585 FS_8X60(FS_VED, "vdd", "msm_vidc.0", &ved_fs_data),
Matt Wagantall1f65d9d2012-04-25 14:24:20 -07002586};
2587unsigned msm8960_num_footswitch __initdata = ARRAY_SIZE(msm8960_footswitch);
Ravishangar Kalyanam319a83c2012-03-21 18:38:05 -07002588
Stephen Boyd6716bd92012-10-25 11:46:04 -07002589struct platform_device *msm8960ab_footswitch[] __initdata = {
2590 FS_8X60(FS_MDP, "vdd", "mdp.0", &mdp_fs_data),
2591 FS_8X60(FS_ROT, "vdd", "msm_rotator.0", &rot_fs_data),
2592 FS_8X60(FS_IJPEG, "vdd", "msm_gemini.0", &ijpeg_fs_data),
2593 FS_8X60(FS_VFE, "vdd", "msm_vfe.0", &vfe_fs_data),
2594 FS_8X60(FS_VPE, "vdd", "msm_vpe.0", &vpe_fs_data),
Stephen Boyd7a0a6252012-12-05 14:01:17 -08002595 FS_8X60(FS_GFX3D, "vdd", "kgsl-3d0.0", &gfx3d_fs_data_8960ab),
Matt Wagantall5ac78922012-11-09 16:03:59 -08002596 FS_8X60(FS_VED, "vdd", "msm_vidc.0", &ved_fs_data_8960ab),
Stephen Boyd6716bd92012-10-25 11:46:04 -07002597};
2598unsigned msm8960ab_num_footswitch __initdata = ARRAY_SIZE(msm8960ab_footswitch);
2599
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002600#ifdef CONFIG_MSM_ROTATOR
Ravishangar Kalyanam319a83c2012-03-21 18:38:05 -07002601static struct msm_bus_vectors rotator_init_vectors[] = {
2602 {
2603 .src = MSM_BUS_MASTER_ROTATOR,
2604 .dst = MSM_BUS_SLAVE_EBI_CH0,
2605 .ab = 0,
2606 .ib = 0,
2607 },
2608};
2609
2610static struct msm_bus_vectors rotator_ui_vectors[] = {
2611 {
2612 .src = MSM_BUS_MASTER_ROTATOR,
2613 .dst = MSM_BUS_SLAVE_EBI_CH0,
2614 .ab = (1024 * 600 * 4 * 2 * 60),
2615 .ib = (1024 * 600 * 4 * 2 * 60 * 1.5),
2616 },
2617};
2618
2619static struct msm_bus_vectors rotator_vga_vectors[] = {
2620 {
2621 .src = MSM_BUS_MASTER_ROTATOR,
2622 .dst = MSM_BUS_SLAVE_EBI_CH0,
2623 .ab = (640 * 480 * 2 * 2 * 30),
2624 .ib = (640 * 480 * 2 * 2 * 30 * 1.5),
2625 },
2626};
2627static struct msm_bus_vectors rotator_720p_vectors[] = {
2628 {
2629 .src = MSM_BUS_MASTER_ROTATOR,
2630 .dst = MSM_BUS_SLAVE_EBI_CH0,
2631 .ab = (1280 * 736 * 2 * 2 * 30),
2632 .ib = (1280 * 736 * 2 * 2 * 30 * 1.5),
2633 },
2634};
2635
2636static struct msm_bus_vectors rotator_1080p_vectors[] = {
2637 {
2638 .src = MSM_BUS_MASTER_ROTATOR,
2639 .dst = MSM_BUS_SLAVE_EBI_CH0,
2640 .ab = (1920 * 1088 * 2 * 2 * 30),
2641 .ib = (1920 * 1088 * 2 * 2 * 30 * 1.5),
2642 },
2643};
2644
2645static struct msm_bus_paths rotator_bus_scale_usecases[] = {
2646 {
2647 ARRAY_SIZE(rotator_init_vectors),
2648 rotator_init_vectors,
2649 },
2650 {
2651 ARRAY_SIZE(rotator_ui_vectors),
2652 rotator_ui_vectors,
2653 },
2654 {
2655 ARRAY_SIZE(rotator_vga_vectors),
2656 rotator_vga_vectors,
2657 },
2658 {
2659 ARRAY_SIZE(rotator_720p_vectors),
2660 rotator_720p_vectors,
2661 },
2662 {
2663 ARRAY_SIZE(rotator_1080p_vectors),
2664 rotator_1080p_vectors,
2665 },
2666};
2667
2668struct msm_bus_scale_pdata rotator_bus_scale_pdata = {
2669 rotator_bus_scale_usecases,
2670 ARRAY_SIZE(rotator_bus_scale_usecases),
2671 .name = "rotator",
2672};
2673
2674void __init msm_rotator_update_bus_vectors(unsigned int xres,
2675 unsigned int yres)
2676{
2677 rotator_ui_vectors[0].ab = xres * yres * 4 * 2 * 60;
2678 rotator_ui_vectors[0].ib = xres * yres * 4 * 2 * 60 * 3 / 2;
2679}
2680
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002681#define ROTATOR_HW_BASE 0x04E00000
2682static struct resource resources_msm_rotator[] = {
2683 {
2684 .start = ROTATOR_HW_BASE,
2685 .end = ROTATOR_HW_BASE + 0x100000 - 1,
2686 .flags = IORESOURCE_MEM,
2687 },
2688 {
2689 .start = ROT_IRQ,
2690 .end = ROT_IRQ,
2691 .flags = IORESOURCE_IRQ,
2692 },
2693};
2694
2695static struct msm_rot_clocks rotator_clocks[] = {
2696 {
Matt Wagantallbb90da92011-10-25 15:07:52 -07002697 .clk_name = "core_clk",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002698 .clk_type = ROTATOR_CORE_CLK,
Nagamalleswararao Ganji0bb107342011-10-10 20:55:32 -07002699 .clk_rate = 200 * 1000 * 1000,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002700 },
2701 {
Matt Wagantallbb90da92011-10-25 15:07:52 -07002702 .clk_name = "iface_clk",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002703 .clk_type = ROTATOR_PCLK,
2704 .clk_rate = 0,
2705 },
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002706};
2707
2708static struct msm_rotator_platform_data rotator_pdata = {
2709 .number_of_clocks = ARRAY_SIZE(rotator_clocks),
2710 .hardware_version_number = 0x01020309,
2711 .rotator_clks = rotator_clocks,
Nagamalleswararao Ganji5fabbd62011-11-06 23:10:43 -08002712#ifdef CONFIG_MSM_BUS_SCALING
2713 .bus_scale_table = &rotator_bus_scale_pdata,
2714#endif
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002715};
2716
2717struct platform_device msm_rotator_device = {
2718 .name = "msm_rotator",
2719 .id = 0,
2720 .num_resources = ARRAY_SIZE(resources_msm_rotator),
2721 .resource = resources_msm_rotator,
2722 .dev = {
2723 .platform_data = &rotator_pdata,
2724 },
2725};
Olav Hauganef95ae32012-05-15 09:50:30 -07002726
2727void __init msm_rotator_set_split_iommu_domain(void)
2728{
2729 rotator_pdata.rot_iommu_split_domain = 1;
2730}
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002731#endif
2732
2733#define MIPI_DSI_HW_BASE 0x04700000
2734#define MDP_HW_BASE 0x05100000
2735
2736static struct resource msm_mipi_dsi1_resources[] = {
2737 {
2738 .name = "mipi_dsi",
2739 .start = MIPI_DSI_HW_BASE,
kuogee hsiehf12acf52011-09-06 10:49:43 -07002740 .end = MIPI_DSI_HW_BASE + 0x000F0000 - 1,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002741 .flags = IORESOURCE_MEM,
2742 },
2743 {
2744 .start = DSI1_IRQ,
2745 .end = DSI1_IRQ,
2746 .flags = IORESOURCE_IRQ,
2747 },
2748};
2749
2750struct platform_device msm_mipi_dsi1_device = {
2751 .name = "mipi_dsi",
2752 .id = 1,
2753 .num_resources = ARRAY_SIZE(msm_mipi_dsi1_resources),
2754 .resource = msm_mipi_dsi1_resources,
2755};
2756
2757static struct resource msm_mdp_resources[] = {
2758 {
2759 .name = "mdp",
2760 .start = MDP_HW_BASE,
kuogee hsiehf12acf52011-09-06 10:49:43 -07002761 .end = MDP_HW_BASE + 0x000F0000 - 1,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002762 .flags = IORESOURCE_MEM,
2763 },
2764 {
2765 .start = MDP_IRQ,
2766 .end = MDP_IRQ,
2767 .flags = IORESOURCE_IRQ,
2768 },
2769};
2770
2771static struct platform_device msm_mdp_device = {
2772 .name = "mdp",
2773 .id = 0,
2774 .num_resources = ARRAY_SIZE(msm_mdp_resources),
2775 .resource = msm_mdp_resources,
2776};
2777
2778static void __init msm_register_device(struct platform_device *pdev, void *data)
2779{
2780 int ret;
2781
2782 pdev->dev.platform_data = data;
2783 ret = platform_device_register(pdev);
2784 if (ret)
2785 dev_err(&pdev->dev,
2786 "%s: platform_device_register() failed = %d\n",
2787 __func__, ret);
2788}
2789
Ravishangar Kalyanam882930f2011-07-08 17:51:52 -07002790#ifdef CONFIG_MSM_BUS_SCALING
2791static struct platform_device msm_dtv_device = {
2792 .name = "dtv",
2793 .id = 0,
2794};
2795#endif
2796
Ravishangar Kalyanamc2fee312012-02-09 19:11:22 -08002797struct platform_device msm_lvds_device = {
Huaibin Yang4a084e32011-12-15 15:25:52 -08002798 .name = "lvds",
2799 .id = 0,
2800};
2801
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002802void __init msm_fb_register_device(char *name, void *data)
2803{
2804 if (!strncmp(name, "mdp", 3))
2805 msm_register_device(&msm_mdp_device, data);
2806 else if (!strncmp(name, "mipi_dsi", 8))
2807 msm_register_device(&msm_mipi_dsi1_device, data);
Huaibin Yang4a084e32011-12-15 15:25:52 -08002808 else if (!strncmp(name, "lvds", 4))
2809 msm_register_device(&msm_lvds_device, data);
Ravishangar Kalyanam882930f2011-07-08 17:51:52 -07002810#ifdef CONFIG_MSM_BUS_SCALING
2811 else if (!strncmp(name, "dtv", 3))
2812 msm_register_device(&msm_dtv_device, data);
2813#endif
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002814 else
2815 printk(KERN_ERR "%s: unknown device! %s\n", __func__, name);
2816}
2817
2818static struct resource resources_sps[] = {
2819 {
2820 .name = "pipe_mem",
2821 .start = 0x12800000,
2822 .end = 0x12800000 + 0x4000 - 1,
2823 .flags = IORESOURCE_MEM,
2824 },
2825 {
2826 .name = "bamdma_dma",
2827 .start = 0x12240000,
2828 .end = 0x12240000 + 0x1000 - 1,
2829 .flags = IORESOURCE_MEM,
2830 },
2831 {
2832 .name = "bamdma_bam",
2833 .start = 0x12244000,
2834 .end = 0x12244000 + 0x4000 - 1,
2835 .flags = IORESOURCE_MEM,
2836 },
2837 {
2838 .name = "bamdma_irq",
2839 .start = SPS_BAM_DMA_IRQ,
2840 .end = SPS_BAM_DMA_IRQ,
2841 .flags = IORESOURCE_IRQ,
2842 },
2843};
2844
2845struct msm_sps_platform_data msm_sps_pdata = {
2846 .bamdma_restricted_pipes = 0x06,
2847};
2848
2849struct platform_device msm_device_sps = {
2850 .name = "msm_sps",
2851 .id = -1,
2852 .num_resources = ARRAY_SIZE(resources_sps),
2853 .resource = resources_sps,
2854 .dev.platform_data = &msm_sps_pdata,
2855};
2856
2857#ifdef CONFIG_MSM_MPM
Praveen Chidambaram78499012011-11-01 17:15:17 -06002858static uint16_t msm_mpm_irqs_m2a[MSM_MPM_NR_MPM_IRQS] __initdata = {
Praveen Chidambaramb3d857c2011-05-31 16:28:07 -06002859 [1] = MSM_GPIO_TO_INT(46),
2860 [2] = MSM_GPIO_TO_INT(150),
2861 [4] = MSM_GPIO_TO_INT(103),
2862 [5] = MSM_GPIO_TO_INT(104),
2863 [6] = MSM_GPIO_TO_INT(105),
2864 [7] = MSM_GPIO_TO_INT(106),
2865 [8] = MSM_GPIO_TO_INT(107),
2866 [9] = MSM_GPIO_TO_INT(7),
2867 [10] = MSM_GPIO_TO_INT(11),
2868 [11] = MSM_GPIO_TO_INT(15),
2869 [12] = MSM_GPIO_TO_INT(19),
2870 [13] = MSM_GPIO_TO_INT(23),
2871 [14] = MSM_GPIO_TO_INT(27),
2872 [15] = MSM_GPIO_TO_INT(31),
2873 [16] = MSM_GPIO_TO_INT(35),
2874 [19] = MSM_GPIO_TO_INT(90),
2875 [20] = MSM_GPIO_TO_INT(92),
2876 [23] = MSM_GPIO_TO_INT(85),
2877 [24] = MSM_GPIO_TO_INT(83),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002878 [25] = USB1_HS_IRQ,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002879 [27] = HDMI_IRQ,
Praveen Chidambaramb3d857c2011-05-31 16:28:07 -06002880 [29] = MSM_GPIO_TO_INT(10),
2881 [30] = MSM_GPIO_TO_INT(102),
2882 [31] = MSM_GPIO_TO_INT(81),
2883 [32] = MSM_GPIO_TO_INT(78),
2884 [33] = MSM_GPIO_TO_INT(94),
2885 [34] = MSM_GPIO_TO_INT(72),
2886 [35] = MSM_GPIO_TO_INT(39),
2887 [36] = MSM_GPIO_TO_INT(43),
2888 [37] = MSM_GPIO_TO_INT(61),
2889 [38] = MSM_GPIO_TO_INT(50),
2890 [39] = MSM_GPIO_TO_INT(42),
2891 [41] = MSM_GPIO_TO_INT(62),
2892 [42] = MSM_GPIO_TO_INT(76),
2893 [43] = MSM_GPIO_TO_INT(75),
2894 [44] = MSM_GPIO_TO_INT(70),
2895 [45] = MSM_GPIO_TO_INT(69),
2896 [46] = MSM_GPIO_TO_INT(67),
2897 [47] = MSM_GPIO_TO_INT(65),
2898 [48] = MSM_GPIO_TO_INT(58),
2899 [49] = MSM_GPIO_TO_INT(54),
2900 [50] = MSM_GPIO_TO_INT(52),
2901 [51] = MSM_GPIO_TO_INT(49),
2902 [52] = MSM_GPIO_TO_INT(40),
2903 [53] = MSM_GPIO_TO_INT(37),
2904 [54] = MSM_GPIO_TO_INT(24),
2905 [55] = MSM_GPIO_TO_INT(14),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002906};
2907
Praveen Chidambaram78499012011-11-01 17:15:17 -06002908static uint16_t msm_mpm_bypassed_apps_irqs[] __initdata = {
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002909 TLMM_MSM_SUMMARY_IRQ,
2910 RPM_APCC_CPU0_GP_HIGH_IRQ,
2911 RPM_APCC_CPU0_GP_MEDIUM_IRQ,
2912 RPM_APCC_CPU0_GP_LOW_IRQ,
2913 RPM_APCC_CPU0_WAKE_UP_IRQ,
2914 RPM_APCC_CPU1_GP_HIGH_IRQ,
2915 RPM_APCC_CPU1_GP_MEDIUM_IRQ,
2916 RPM_APCC_CPU1_GP_LOW_IRQ,
2917 RPM_APCC_CPU1_WAKE_UP_IRQ,
2918 MSS_TO_APPS_IRQ_0,
2919 MSS_TO_APPS_IRQ_1,
2920 MSS_TO_APPS_IRQ_2,
2921 MSS_TO_APPS_IRQ_3,
2922 MSS_TO_APPS_IRQ_4,
2923 MSS_TO_APPS_IRQ_5,
2924 MSS_TO_APPS_IRQ_6,
2925 MSS_TO_APPS_IRQ_7,
2926 MSS_TO_APPS_IRQ_8,
2927 MSS_TO_APPS_IRQ_9,
2928 LPASS_SCSS_GP_LOW_IRQ,
2929 LPASS_SCSS_GP_MEDIUM_IRQ,
2930 LPASS_SCSS_GP_HIGH_IRQ,
David Collins5e2b2fd2011-09-08 15:23:30 -07002931 SPS_MTI_30,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002932 SPS_MTI_31,
David Collins5e2b2fd2011-09-08 15:23:30 -07002933 RIVA_APSS_SPARE_IRQ,
David Collins84ecd0a2011-09-27 21:11:11 -07002934 RIVA_APPS_WLAN_SMSM_IRQ,
2935 RIVA_APPS_WLAN_RX_DATA_AVAIL_IRQ,
2936 RIVA_APPS_WLAN_DATA_XFER_DONE_IRQ,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002937};
2938
Praveen Chidambaram78499012011-11-01 17:15:17 -06002939struct msm_mpm_device_data msm8960_mpm_dev_data __initdata = {
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002940 .irqs_m2a = msm_mpm_irqs_m2a,
2941 .irqs_m2a_size = ARRAY_SIZE(msm_mpm_irqs_m2a),
2942 .bypassed_apps_irqs = msm_mpm_bypassed_apps_irqs,
2943 .bypassed_apps_irqs_size = ARRAY_SIZE(msm_mpm_bypassed_apps_irqs),
2944 .mpm_request_reg_base = MSM_RPM_BASE + 0x9d8,
2945 .mpm_status_reg_base = MSM_RPM_BASE + 0xdf8,
2946 .mpm_apps_ipc_reg = MSM_APCS_GCC_BASE + 0x008,
2947 .mpm_apps_ipc_val = BIT(1),
2948 .mpm_ipc_irq = RPM_APCC_CPU0_GP_MEDIUM_IRQ,
2949
2950};
2951#endif
2952
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002953#define LPASS_SLIMBUS_PHYS 0x28080000
2954#define LPASS_SLIMBUS_BAM_PHYS 0x28084000
Sagar Dhariacc969452011-09-19 10:34:30 -06002955#define LPASS_SLIMBUS_SLEW (MSM8960_TLMM_PHYS + 0x207C)
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002956/* Board info for the slimbus slave device */
2957static struct resource slimbus_res[] = {
2958 {
2959 .start = LPASS_SLIMBUS_PHYS,
2960 .end = LPASS_SLIMBUS_PHYS + 8191,
2961 .flags = IORESOURCE_MEM,
2962 .name = "slimbus_physical",
2963 },
2964 {
2965 .start = LPASS_SLIMBUS_BAM_PHYS,
2966 .end = LPASS_SLIMBUS_BAM_PHYS + 8191,
2967 .flags = IORESOURCE_MEM,
2968 .name = "slimbus_bam_physical",
2969 },
2970 {
Sagar Dhariacc969452011-09-19 10:34:30 -06002971 .start = LPASS_SLIMBUS_SLEW,
2972 .end = LPASS_SLIMBUS_SLEW + 4 - 1,
2973 .flags = IORESOURCE_MEM,
2974 .name = "slimbus_slew_reg",
2975 },
2976 {
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002977 .start = SLIMBUS0_CORE_EE1_IRQ,
2978 .end = SLIMBUS0_CORE_EE1_IRQ,
2979 .flags = IORESOURCE_IRQ,
2980 .name = "slimbus_irq",
2981 },
2982 {
2983 .start = SLIMBUS0_BAM_EE1_IRQ,
2984 .end = SLIMBUS0_BAM_EE1_IRQ,
2985 .flags = IORESOURCE_IRQ,
2986 .name = "slimbus_bam_irq",
2987 },
2988};
2989
2990struct platform_device msm_slim_ctrl = {
2991 .name = "msm_slim_ctrl",
2992 .id = 1,
2993 .num_resources = ARRAY_SIZE(slimbus_res),
2994 .resource = slimbus_res,
2995 .dev = {
2996 .coherent_dma_mask = 0xffffffffULL,
2997 },
2998};
2999
Lucille Sylvester6e362412011-12-09 16:21:42 -07003000static struct msm_dcvs_freq_entry grp3d_freq[] = {
Abhijeet Dharmapurikar7e37e6e2012-08-23 18:58:44 -07003001 {0, 900, 0, 0, 0},
3002 {0, 950, 0, 0, 0},
3003 {0, 950, 0, 0, 0},
3004 {0, 1200, 1, 100, 100},
Lucille Sylvester6e362412011-12-09 16:21:42 -07003005};
3006
3007static struct msm_dcvs_freq_entry grp2d_freq[] = {
Abhijeet Dharmapurikar7e37e6e2012-08-23 18:58:44 -07003008 {0, 900, 0, 0, 0},
3009 {0, 950, 1, 100, 100},
Lucille Sylvester6e362412011-12-09 16:21:42 -07003010};
3011
3012static struct msm_dcvs_core_info grp3d_core_info = {
Abhijeet Dharmapurikar7e37e6e2012-08-23 18:58:44 -07003013 .freq_tbl = &grp3d_freq[0],
3014 .core_param = {
3015 .core_type = MSM_DCVS_CORE_TYPE_GPU,
Lucille Sylvester6e362412011-12-09 16:21:42 -07003016 },
Abhijeet Dharmapurikar7e37e6e2012-08-23 18:58:44 -07003017 .algo_param = {
3018 .disable_pc_threshold = 0,
3019 .em_win_size_min_us = 100000,
3020 .em_win_size_max_us = 300000,
3021 .em_max_util_pct = 97,
3022 .group_id = 0,
3023 .max_freq_chg_time_us = 100000,
3024 .slack_mode_dynamic = 0,
3025 .slack_weight_thresh_pct = 0,
3026 .slack_time_min_us = 39000,
3027 .slack_time_max_us = 39000,
3028 .ss_win_size_min_us = 1000000,
3029 .ss_win_size_max_us = 1000000,
3030 .ss_util_pct = 95,
Steve Muckle8d0782e2012-12-06 14:31:00 -08003031 .ss_no_corr_below_freq = 0,
Lucille Sylvester6e362412011-12-09 16:21:42 -07003032 },
Abhijeet Dharmapurikar7e37e6e2012-08-23 18:58:44 -07003033 .energy_coeffs = {
3034 .active_coeff_a = 2492,
3035 .active_coeff_b = 0,
3036 .active_coeff_c = 0,
3037
3038 .leakage_coeff_a = -17720,
3039 .leakage_coeff_b = 37,
3040 .leakage_coeff_c = 2729,
3041 .leakage_coeff_d = -277,
3042 },
3043 .power_param = {
3044 .current_temp = 25,
3045 .num_freq = ARRAY_SIZE(grp3d_freq),
3046 }
Lucille Sylvester6e362412011-12-09 16:21:42 -07003047};
3048
3049static struct msm_dcvs_core_info grp2d_core_info = {
Abhijeet Dharmapurikar7e37e6e2012-08-23 18:58:44 -07003050 .freq_tbl = &grp2d_freq[0],
3051 .core_param = {
3052 .core_type = MSM_DCVS_CORE_TYPE_GPU,
Lucille Sylvester6e362412011-12-09 16:21:42 -07003053 },
Abhijeet Dharmapurikar7e37e6e2012-08-23 18:58:44 -07003054 .algo_param = {
3055 .disable_pc_threshold = 0,
3056 .em_win_size_min_us = 100000,
3057 .em_win_size_max_us = 300000,
3058 .em_max_util_pct = 97,
3059 .group_id = 0,
3060 .max_freq_chg_time_us = 100000,
3061 .slack_mode_dynamic = 0,
3062 .slack_weight_thresh_pct = 0,
3063 .slack_time_min_us = 39000,
3064 .slack_time_max_us = 39000,
3065 .ss_win_size_min_us = 1000000,
3066 .ss_win_size_max_us = 1000000,
3067 .ss_util_pct = 95,
Steve Muckle8d0782e2012-12-06 14:31:00 -08003068 .ss_no_corr_below_freq = 0,
Lucille Sylvester6e362412011-12-09 16:21:42 -07003069 },
Abhijeet Dharmapurikar7e37e6e2012-08-23 18:58:44 -07003070 .energy_coeffs = {
3071 .active_coeff_a = 2492,
3072 .active_coeff_b = 0,
3073 .active_coeff_c = 0,
3074
3075 .leakage_coeff_a = -17720,
3076 .leakage_coeff_b = 37,
3077 .leakage_coeff_c = 2729,
3078 .leakage_coeff_d = -277,
3079 },
3080 .power_param = {
3081 .current_temp = 25,
3082 .num_freq = ARRAY_SIZE(grp2d_freq),
3083 }
Lucille Sylvester6e362412011-12-09 16:21:42 -07003084};
3085
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003086#ifdef CONFIG_MSM_BUS_SCALING
3087static struct msm_bus_vectors grp3d_init_vectors[] = {
3088 {
3089 .src = MSM_BUS_MASTER_GRAPHICS_3D,
3090 .dst = MSM_BUS_SLAVE_EBI_CH0,
3091 .ab = 0,
3092 .ib = 0,
3093 },
3094};
3095
Lucille Sylvester34ec3692011-08-16 16:28:04 -06003096static struct msm_bus_vectors grp3d_low_vectors[] = {
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003097 {
3098 .src = MSM_BUS_MASTER_GRAPHICS_3D,
3099 .dst = MSM_BUS_SLAVE_EBI_CH0,
3100 .ab = 0,
Lucille Sylvester3efebb52012-01-17 12:58:38 -07003101 .ib = KGSL_CONVERT_TO_MBPS(1000),
Lucille Sylvester34ec3692011-08-16 16:28:04 -06003102 },
3103};
3104
3105static struct msm_bus_vectors grp3d_nominal_low_vectors[] = {
3106 {
3107 .src = MSM_BUS_MASTER_GRAPHICS_3D,
3108 .dst = MSM_BUS_SLAVE_EBI_CH0,
3109 .ab = 0,
Suman Tatiraju0123d182011-09-30 14:59:06 -07003110 .ib = KGSL_CONVERT_TO_MBPS(2048),
Lucille Sylvester34ec3692011-08-16 16:28:04 -06003111 },
3112};
3113
3114static struct msm_bus_vectors grp3d_nominal_high_vectors[] = {
3115 {
3116 .src = MSM_BUS_MASTER_GRAPHICS_3D,
3117 .dst = MSM_BUS_SLAVE_EBI_CH0,
3118 .ab = 0,
Suman Tatiraju0123d182011-09-30 14:59:06 -07003119 .ib = KGSL_CONVERT_TO_MBPS(2656),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003120 },
3121};
3122
3123static struct msm_bus_vectors grp3d_max_vectors[] = {
3124 {
3125 .src = MSM_BUS_MASTER_GRAPHICS_3D,
3126 .dst = MSM_BUS_SLAVE_EBI_CH0,
3127 .ab = 0,
Suman Tatiraju0123d182011-09-30 14:59:06 -07003128 .ib = KGSL_CONVERT_TO_MBPS(3968),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003129 },
3130};
3131
3132static struct msm_bus_paths grp3d_bus_scale_usecases[] = {
3133 {
3134 ARRAY_SIZE(grp3d_init_vectors),
3135 grp3d_init_vectors,
3136 },
3137 {
Lucille Sylvester34ec3692011-08-16 16:28:04 -06003138 ARRAY_SIZE(grp3d_low_vectors),
3139 grp3d_low_vectors,
3140 },
3141 {
3142 ARRAY_SIZE(grp3d_nominal_low_vectors),
3143 grp3d_nominal_low_vectors,
3144 },
3145 {
3146 ARRAY_SIZE(grp3d_nominal_high_vectors),
3147 grp3d_nominal_high_vectors,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003148 },
3149 {
3150 ARRAY_SIZE(grp3d_max_vectors),
3151 grp3d_max_vectors,
3152 },
3153};
3154
3155static struct msm_bus_scale_pdata grp3d_bus_scale_pdata = {
3156 grp3d_bus_scale_usecases,
3157 ARRAY_SIZE(grp3d_bus_scale_usecases),
3158 .name = "grp3d",
3159};
3160
3161static struct msm_bus_vectors grp2d0_init_vectors[] = {
3162 {
3163 .src = MSM_BUS_MASTER_GRAPHICS_2D_CORE0,
3164 .dst = MSM_BUS_SLAVE_EBI_CH0,
3165 .ab = 0,
3166 .ib = 0,
3167 },
3168};
3169
Lucille Sylvester808eca22011-11-03 10:26:29 -07003170static struct msm_bus_vectors grp2d0_nominal_vectors[] = {
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003171 {
3172 .src = MSM_BUS_MASTER_GRAPHICS_2D_CORE0,
3173 .dst = MSM_BUS_SLAVE_EBI_CH0,
3174 .ab = 0,
Lucille Sylvester3efebb52012-01-17 12:58:38 -07003175 .ib = KGSL_CONVERT_TO_MBPS(1000),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003176 },
3177};
3178
Lucille Sylvester808eca22011-11-03 10:26:29 -07003179static struct msm_bus_vectors grp2d0_max_vectors[] = {
3180 {
3181 .src = MSM_BUS_MASTER_GRAPHICS_2D_CORE0,
3182 .dst = MSM_BUS_SLAVE_EBI_CH0,
3183 .ab = 0,
3184 .ib = KGSL_CONVERT_TO_MBPS(2048),
3185 },
3186};
3187
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003188static struct msm_bus_paths grp2d0_bus_scale_usecases[] = {
3189 {
3190 ARRAY_SIZE(grp2d0_init_vectors),
3191 grp2d0_init_vectors,
3192 },
3193 {
Lucille Sylvester808eca22011-11-03 10:26:29 -07003194 ARRAY_SIZE(grp2d0_nominal_vectors),
3195 grp2d0_nominal_vectors,
3196 },
3197 {
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003198 ARRAY_SIZE(grp2d0_max_vectors),
3199 grp2d0_max_vectors,
3200 },
3201};
3202
3203struct msm_bus_scale_pdata grp2d0_bus_scale_pdata = {
3204 grp2d0_bus_scale_usecases,
3205 ARRAY_SIZE(grp2d0_bus_scale_usecases),
3206 .name = "grp2d0",
3207};
3208
3209static struct msm_bus_vectors grp2d1_init_vectors[] = {
3210 {
3211 .src = MSM_BUS_MASTER_GRAPHICS_2D_CORE1,
3212 .dst = MSM_BUS_SLAVE_EBI_CH0,
3213 .ab = 0,
3214 .ib = 0,
3215 },
3216};
3217
Lucille Sylvester808eca22011-11-03 10:26:29 -07003218static struct msm_bus_vectors grp2d1_nominal_vectors[] = {
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003219 {
3220 .src = MSM_BUS_MASTER_GRAPHICS_2D_CORE1,
3221 .dst = MSM_BUS_SLAVE_EBI_CH0,
3222 .ab = 0,
Lucille Sylvester3efebb52012-01-17 12:58:38 -07003223 .ib = KGSL_CONVERT_TO_MBPS(1000),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003224 },
3225};
3226
Lucille Sylvester808eca22011-11-03 10:26:29 -07003227static struct msm_bus_vectors grp2d1_max_vectors[] = {
3228 {
3229 .src = MSM_BUS_MASTER_GRAPHICS_2D_CORE1,
3230 .dst = MSM_BUS_SLAVE_EBI_CH0,
3231 .ab = 0,
3232 .ib = KGSL_CONVERT_TO_MBPS(2048),
3233 },
3234};
3235
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003236static struct msm_bus_paths grp2d1_bus_scale_usecases[] = {
3237 {
3238 ARRAY_SIZE(grp2d1_init_vectors),
3239 grp2d1_init_vectors,
3240 },
3241 {
Lucille Sylvester808eca22011-11-03 10:26:29 -07003242 ARRAY_SIZE(grp2d1_nominal_vectors),
3243 grp2d1_nominal_vectors,
3244 },
3245 {
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003246 ARRAY_SIZE(grp2d1_max_vectors),
3247 grp2d1_max_vectors,
3248 },
3249};
3250
3251struct msm_bus_scale_pdata grp2d1_bus_scale_pdata = {
3252 grp2d1_bus_scale_usecases,
3253 ARRAY_SIZE(grp2d1_bus_scale_usecases),
3254 .name = "grp2d1",
3255};
3256#endif
3257
3258static struct resource kgsl_3d0_resources[] = {
3259 {
3260 .name = KGSL_3D0_REG_MEMORY,
3261 .start = 0x04300000, /* GFX3D address */
3262 .end = 0x0431ffff,
3263 .flags = IORESOURCE_MEM,
3264 },
3265 {
3266 .name = KGSL_3D0_IRQ,
3267 .start = GFX3D_IRQ,
3268 .end = GFX3D_IRQ,
3269 .flags = IORESOURCE_IRQ,
3270 },
3271};
3272
Carter Cooper3852cbb2012-08-20 22:11:42 -06003273static const struct kgsl_iommu_ctx kgsl_3d0_iommu0_ctxs[] = {
Shubhraprakash Daseb6df1d2012-05-01 00:55:35 -06003274 { "gfx3d_user", 0 },
3275 { "gfx3d_priv", 1 },
Jordan Crouse46cf4bb2012-02-21 08:54:52 -07003276};
3277
Carter Cooper3852cbb2012-08-20 22:11:42 -06003278static const struct kgsl_iommu_ctx kgsl_3d0_iommu1_ctxs[] = {
3279 { "gfx3d1_user", 0 },
3280 { "gfx3d1_priv", 1 },
3281};
3282
Jordan Crouse46cf4bb2012-02-21 08:54:52 -07003283static struct kgsl_device_iommu_data kgsl_3d0_iommu_data[] = {
3284 {
Carter Cooper3852cbb2012-08-20 22:11:42 -06003285 .iommu_ctxs = kgsl_3d0_iommu0_ctxs,
3286 .iommu_ctx_count = ARRAY_SIZE(kgsl_3d0_iommu0_ctxs),
Jordan Crouse46cf4bb2012-02-21 08:54:52 -07003287 .physstart = 0x07C00000,
3288 .physend = 0x07C00000 + SZ_1M - 1,
3289 },
Carter Cooper3852cbb2012-08-20 22:11:42 -06003290 {
3291 .iommu_ctxs = kgsl_3d0_iommu1_ctxs,
3292 .iommu_ctx_count = ARRAY_SIZE(kgsl_3d0_iommu1_ctxs),
3293 .physstart = 0x07D00000,
3294 .physend = 0x07D00000 + SZ_1M - 1,
3295 },
Jordan Crouse46cf4bb2012-02-21 08:54:52 -07003296};
3297
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003298static struct kgsl_device_platform_data kgsl_3d0_pdata = {
Lucille Sylvesterdce84cd2011-10-12 14:15:37 -06003299 .pwrlevel = {
3300 {
3301 .gpu_freq = 400000000,
3302 .bus_freq = 4,
3303 .io_fraction = 0,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003304 },
Lucille Sylvesterdce84cd2011-10-12 14:15:37 -06003305 {
3306 .gpu_freq = 300000000,
3307 .bus_freq = 3,
3308 .io_fraction = 33,
3309 },
3310 {
3311 .gpu_freq = 200000000,
3312 .bus_freq = 2,
3313 .io_fraction = 100,
3314 },
3315 {
3316 .gpu_freq = 128000000,
3317 .bus_freq = 1,
3318 .io_fraction = 100,
3319 },
3320 {
3321 .gpu_freq = 27000000,
3322 .bus_freq = 0,
3323 },
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003324 },
Lucille Sylvester67b4c532012-02-08 11:24:31 -08003325 .init_level = 1,
Lucille Sylvester6e362412011-12-09 16:21:42 -07003326 .num_levels = ARRAY_SIZE(grp3d_freq) + 1,
Lucille Sylvesterdce84cd2011-10-12 14:15:37 -06003327 .set_grp_async = NULL,
Lucille Sylvester5dc67512012-03-27 15:07:58 -06003328 .idle_timeout = HZ/12,
Lucille Sylvesterdce84cd2011-10-12 14:15:37 -06003329 .nap_allowed = true,
3330 .clk_map = KGSL_CLK_CORE | KGSL_CLK_IFACE | KGSL_CLK_MEM_IFACE,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003331#ifdef CONFIG_MSM_BUS_SCALING
Lucille Sylvesterdce84cd2011-10-12 14:15:37 -06003332 .bus_scale_table = &grp3d_bus_scale_pdata,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003333#endif
Jordan Crouse46cf4bb2012-02-21 08:54:52 -07003334 .iommu_data = kgsl_3d0_iommu_data,
3335 .iommu_count = ARRAY_SIZE(kgsl_3d0_iommu_data),
Lucille Sylvester6e362412011-12-09 16:21:42 -07003336 .core_info = &grp3d_core_info,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003337};
3338
3339struct platform_device msm_kgsl_3d0 = {
3340 .name = "kgsl-3d0",
3341 .id = 0,
3342 .num_resources = ARRAY_SIZE(kgsl_3d0_resources),
3343 .resource = kgsl_3d0_resources,
3344 .dev = {
3345 .platform_data = &kgsl_3d0_pdata,
3346 },
3347};
3348
3349static struct resource kgsl_2d0_resources[] = {
3350 {
3351 .name = KGSL_2D0_REG_MEMORY,
3352 .start = 0x04100000, /* Z180 base address */
3353 .end = 0x04100FFF,
3354 .flags = IORESOURCE_MEM,
3355 },
3356 {
3357 .name = KGSL_2D0_IRQ,
3358 .start = GFX2D0_IRQ,
3359 .end = GFX2D0_IRQ,
3360 .flags = IORESOURCE_IRQ,
3361 },
3362};
3363
Shubhraprakash Daseb6df1d2012-05-01 00:55:35 -06003364static const struct kgsl_iommu_ctx kgsl_2d0_iommu_ctxs[] = {
3365 { "gfx2d0_2d0", 0 },
Jordan Crouse46cf4bb2012-02-21 08:54:52 -07003366};
3367
3368static struct kgsl_device_iommu_data kgsl_2d0_iommu_data[] = {
3369 {
Shubhraprakash Daseb6df1d2012-05-01 00:55:35 -06003370 .iommu_ctxs = kgsl_2d0_iommu_ctxs,
3371 .iommu_ctx_count = ARRAY_SIZE(kgsl_2d0_iommu_ctxs),
Jordan Crouse46cf4bb2012-02-21 08:54:52 -07003372 .physstart = 0x07D00000,
3373 .physend = 0x07D00000 + SZ_1M - 1,
3374 },
3375};
3376
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003377static struct kgsl_device_platform_data kgsl_2d0_pdata = {
Lucille Sylvesterdce84cd2011-10-12 14:15:37 -06003378 .pwrlevel = {
3379 {
3380 .gpu_freq = 200000000,
Lucille Sylvester808eca22011-11-03 10:26:29 -07003381 .bus_freq = 2,
3382 },
3383 {
3384 .gpu_freq = 96000000,
Lucille Sylvesterdce84cd2011-10-12 14:15:37 -06003385 .bus_freq = 1,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003386 },
Lucille Sylvesterdce84cd2011-10-12 14:15:37 -06003387 {
Lucille Sylvester808eca22011-11-03 10:26:29 -07003388 .gpu_freq = 27000000,
Lucille Sylvesterdce84cd2011-10-12 14:15:37 -06003389 .bus_freq = 0,
3390 },
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003391 },
Lucille Sylvesterdce84cd2011-10-12 14:15:37 -06003392 .init_level = 0,
Lucille Sylvester6e362412011-12-09 16:21:42 -07003393 .num_levels = ARRAY_SIZE(grp2d_freq) + 1,
Lucille Sylvesterdce84cd2011-10-12 14:15:37 -06003394 .set_grp_async = NULL,
Lucille Sylvester808eca22011-11-03 10:26:29 -07003395 .idle_timeout = HZ/5,
Lucille Sylvesterdce84cd2011-10-12 14:15:37 -06003396 .nap_allowed = true,
3397 .clk_map = KGSL_CLK_CORE | KGSL_CLK_IFACE,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003398#ifdef CONFIG_MSM_BUS_SCALING
Lucille Sylvesterdce84cd2011-10-12 14:15:37 -06003399 .bus_scale_table = &grp2d0_bus_scale_pdata,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003400#endif
Jordan Crouse46cf4bb2012-02-21 08:54:52 -07003401 .iommu_data = kgsl_2d0_iommu_data,
3402 .iommu_count = ARRAY_SIZE(kgsl_2d0_iommu_data),
Lucille Sylvester6e362412011-12-09 16:21:42 -07003403 .core_info = &grp2d_core_info,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003404};
3405
3406struct platform_device msm_kgsl_2d0 = {
3407 .name = "kgsl-2d0",
3408 .id = 0,
3409 .num_resources = ARRAY_SIZE(kgsl_2d0_resources),
3410 .resource = kgsl_2d0_resources,
3411 .dev = {
3412 .platform_data = &kgsl_2d0_pdata,
3413 },
3414};
3415
Shubhraprakash Daseb6df1d2012-05-01 00:55:35 -06003416static const struct kgsl_iommu_ctx kgsl_2d1_iommu_ctxs[] = {
3417 { "gfx2d1_2d1", 0 },
Jordan Crouse46cf4bb2012-02-21 08:54:52 -07003418};
3419
3420static struct kgsl_device_iommu_data kgsl_2d1_iommu_data[] = {
3421 {
Shubhraprakash Daseb6df1d2012-05-01 00:55:35 -06003422 .iommu_ctxs = kgsl_2d1_iommu_ctxs,
3423 .iommu_ctx_count = ARRAY_SIZE(kgsl_2d1_iommu_ctxs),
Jordan Crouse46cf4bb2012-02-21 08:54:52 -07003424 .physstart = 0x07E00000,
3425 .physend = 0x07E00000 + SZ_1M - 1,
3426 },
3427};
3428
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003429static struct resource kgsl_2d1_resources[] = {
3430 {
3431 .name = KGSL_2D1_REG_MEMORY,
3432 .start = 0x04200000, /* Z180 device 1 base address */
3433 .end = 0x04200FFF,
3434 .flags = IORESOURCE_MEM,
3435 },
3436 {
3437 .name = KGSL_2D1_IRQ,
3438 .start = GFX2D1_IRQ,
3439 .end = GFX2D1_IRQ,
3440 .flags = IORESOURCE_IRQ,
3441 },
3442};
3443
3444static struct kgsl_device_platform_data kgsl_2d1_pdata = {
Lucille Sylvesterdce84cd2011-10-12 14:15:37 -06003445 .pwrlevel = {
3446 {
3447 .gpu_freq = 200000000,
Lucille Sylvester808eca22011-11-03 10:26:29 -07003448 .bus_freq = 2,
3449 },
3450 {
3451 .gpu_freq = 96000000,
Lucille Sylvesterdce84cd2011-10-12 14:15:37 -06003452 .bus_freq = 1,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003453 },
Lucille Sylvesterdce84cd2011-10-12 14:15:37 -06003454 {
Lucille Sylvester808eca22011-11-03 10:26:29 -07003455 .gpu_freq = 27000000,
Lucille Sylvesterdce84cd2011-10-12 14:15:37 -06003456 .bus_freq = 0,
3457 },
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003458 },
Lucille Sylvesterdce84cd2011-10-12 14:15:37 -06003459 .init_level = 0,
Lucille Sylvester6e362412011-12-09 16:21:42 -07003460 .num_levels = ARRAY_SIZE(grp2d_freq) + 1,
Lucille Sylvesterdce84cd2011-10-12 14:15:37 -06003461 .set_grp_async = NULL,
Lucille Sylvester808eca22011-11-03 10:26:29 -07003462 .idle_timeout = HZ/5,
Lucille Sylvesterdce84cd2011-10-12 14:15:37 -06003463 .nap_allowed = true,
3464 .clk_map = KGSL_CLK_CORE | KGSL_CLK_IFACE,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003465#ifdef CONFIG_MSM_BUS_SCALING
Lucille Sylvesterdce84cd2011-10-12 14:15:37 -06003466 .bus_scale_table = &grp2d1_bus_scale_pdata,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003467#endif
Jordan Crouse46cf4bb2012-02-21 08:54:52 -07003468 .iommu_data = kgsl_2d1_iommu_data,
3469 .iommu_count = ARRAY_SIZE(kgsl_2d1_iommu_data),
Lucille Sylvester6e362412011-12-09 16:21:42 -07003470 .core_info = &grp2d_core_info,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003471};
3472
3473struct platform_device msm_kgsl_2d1 = {
3474 .name = "kgsl-2d1",
3475 .id = 1,
3476 .num_resources = ARRAY_SIZE(kgsl_2d1_resources),
3477 .resource = kgsl_2d1_resources,
3478 .dev = {
3479 .platform_data = &kgsl_2d1_pdata,
3480 },
3481};
3482
3483#ifdef CONFIG_MSM_GEMINI
Sunid Wilson5d585172012-12-15 17:24:04 -08003484
3485static struct msm_bus_vectors gemini_init_vector[] = {
3486 {
3487 .src = MSM_BUS_MASTER_JPEG_ENC,
3488 .dst = MSM_BUS_SLAVE_EBI_CH0,
3489 .ab = 0,
3490 .ib = 0,
3491 },
3492 {
3493 .src = MSM_BUS_MASTER_JPEG_ENC,
3494 .dst = MSM_BUS_SLAVE_MM_IMEM,
3495 .ab = 0,
3496 .ib = 0,
3497 },
3498};
3499
3500static struct msm_bus_vectors gemini_encode_vector[] = {
3501 {
3502 .src = MSM_BUS_MASTER_JPEG_ENC,
3503 .dst = MSM_BUS_SLAVE_EBI_CH0,
3504 .ab = 540000000,
3505 .ib = 1350000000,
3506 },
3507 {
3508 .src = MSM_BUS_MASTER_JPEG_ENC,
3509 .dst = MSM_BUS_SLAVE_MM_IMEM,
3510 .ab = 43200000,
3511 .ib = 69120000,
3512 },
3513};
3514
3515static struct msm_bus_paths gemini_bus_path[] = {
3516 {
3517 ARRAY_SIZE(gemini_init_vector),
3518 gemini_init_vector,
3519 },
3520 {
3521 ARRAY_SIZE(gemini_encode_vector),
3522 gemini_encode_vector,
3523 },
3524};
3525
3526static struct msm_bus_scale_pdata gemini_bus_scale_pdata = {
3527 gemini_bus_path,
3528 ARRAY_SIZE(gemini_bus_path),
3529 .name = "msm_gemini",
3530};
3531
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003532static struct resource msm_gemini_resources[] = {
3533 {
3534 .start = 0x04600000,
3535 .end = 0x04600000 + SZ_1M - 1,
3536 .flags = IORESOURCE_MEM,
3537 },
3538 {
3539 .start = JPEG_IRQ,
3540 .end = JPEG_IRQ,
3541 .flags = IORESOURCE_IRQ,
3542 },
3543};
3544
3545struct platform_device msm8960_gemini_device = {
3546 .name = "msm_gemini",
3547 .resource = msm_gemini_resources,
3548 .num_resources = ARRAY_SIZE(msm_gemini_resources),
Sunid Wilson5d585172012-12-15 17:24:04 -08003549 .dev = {
3550 .platform_data = &gemini_bus_scale_pdata,
3551 },
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003552};
3553#endif
3554
Kalyani Oruganti465d1e12012-05-15 10:23:05 -07003555#ifdef CONFIG_MSM_MERCURY
3556static struct resource msm_mercury_resources[] = {
3557 {
3558 .start = 0x05000000,
3559 .end = 0x05000000 + SZ_1M - 1,
3560 .name = "mercury_resource_base",
3561 .flags = IORESOURCE_MEM,
3562 },
3563 {
3564 .start = JPEGD_IRQ,
3565 .end = JPEGD_IRQ,
3566 .flags = IORESOURCE_IRQ,
3567 },
3568};
3569struct platform_device msm8960_mercury_device = {
3570 .name = "msm_mercury",
3571 .resource = msm_mercury_resources,
3572 .num_resources = ARRAY_SIZE(msm_mercury_resources),
3573};
3574#endif
3575
Praveen Chidambaram78499012011-11-01 17:15:17 -06003576struct msm_rpm_platform_data msm8960_rpm_data __initdata = {
3577 .reg_base_addrs = {
3578 [MSM_RPM_PAGE_STATUS] = MSM_RPM_BASE,
3579 [MSM_RPM_PAGE_CTRL] = MSM_RPM_BASE + 0x400,
3580 [MSM_RPM_PAGE_REQ] = MSM_RPM_BASE + 0x600,
3581 [MSM_RPM_PAGE_ACK] = MSM_RPM_BASE + 0xa00,
3582 },
3583 .irq_ack = RPM_APCC_CPU0_GP_HIGH_IRQ,
Stephen Boydf61255e2012-02-24 14:31:09 -08003584 .irq_err = RPM_APCC_CPU0_GP_LOW_IRQ,
Praveen Chidambarame396ce62012-03-30 11:15:57 -06003585 .irq_wakeup = RPM_APCC_CPU0_WAKE_UP_IRQ,
Praveen Chidambaram78499012011-11-01 17:15:17 -06003586 .ipc_rpm_reg = MSM_APCS_GCC_BASE + 0x008,
3587 .ipc_rpm_val = 4,
3588 .target_id = {
3589 MSM_RPM_MAP(8960, NOTIFICATION_CONFIGURED_0, NOTIFICATION, 4),
3590 MSM_RPM_MAP(8960, NOTIFICATION_REGISTERED_0, NOTIFICATION, 4),
3591 MSM_RPM_MAP(8960, INVALIDATE_0, INVALIDATE, 8),
3592 MSM_RPM_MAP(8960, TRIGGER_TIMED_TO, TRIGGER_TIMED, 1),
3593 MSM_RPM_MAP(8960, TRIGGER_TIMED_SCLK_COUNT, TRIGGER_TIMED, 1),
3594 MSM_RPM_MAP(8960, RPM_CTL, RPM_CTL, 1),
3595 MSM_RPM_MAP(8960, CXO_CLK, CXO_CLK, 1),
3596 MSM_RPM_MAP(8960, PXO_CLK, PXO_CLK, 1),
3597 MSM_RPM_MAP(8960, APPS_FABRIC_CLK, APPS_FABRIC_CLK, 1),
3598 MSM_RPM_MAP(8960, SYSTEM_FABRIC_CLK, SYSTEM_FABRIC_CLK, 1),
3599 MSM_RPM_MAP(8960, MM_FABRIC_CLK, MM_FABRIC_CLK, 1),
3600 MSM_RPM_MAP(8960, DAYTONA_FABRIC_CLK, DAYTONA_FABRIC_CLK, 1),
3601 MSM_RPM_MAP(8960, SFPB_CLK, SFPB_CLK, 1),
3602 MSM_RPM_MAP(8960, CFPB_CLK, CFPB_CLK, 1),
3603 MSM_RPM_MAP(8960, MMFPB_CLK, MMFPB_CLK, 1),
3604 MSM_RPM_MAP(8960, EBI1_CLK, EBI1_CLK, 1),
3605 MSM_RPM_MAP(8960, APPS_FABRIC_CFG_HALT_0,
3606 APPS_FABRIC_CFG_HALT, 2),
3607 MSM_RPM_MAP(8960, APPS_FABRIC_CFG_CLKMOD_0,
3608 APPS_FABRIC_CFG_CLKMOD, 3),
3609 MSM_RPM_MAP(8960, APPS_FABRIC_CFG_IOCTL,
3610 APPS_FABRIC_CFG_IOCTL, 1),
3611 MSM_RPM_MAP(8960, APPS_FABRIC_ARB_0, APPS_FABRIC_ARB, 12),
3612 MSM_RPM_MAP(8960, SYS_FABRIC_CFG_HALT_0,
3613 SYS_FABRIC_CFG_HALT, 2),
3614 MSM_RPM_MAP(8960, SYS_FABRIC_CFG_CLKMOD_0,
3615 SYS_FABRIC_CFG_CLKMOD, 3),
3616 MSM_RPM_MAP(8960, SYS_FABRIC_CFG_IOCTL,
3617 SYS_FABRIC_CFG_IOCTL, 1),
3618 MSM_RPM_MAP(8960, SYSTEM_FABRIC_ARB_0,
3619 SYSTEM_FABRIC_ARB, 29),
3620 MSM_RPM_MAP(8960, MMSS_FABRIC_CFG_HALT_0,
3621 MMSS_FABRIC_CFG_HALT, 2),
3622 MSM_RPM_MAP(8960, MMSS_FABRIC_CFG_CLKMOD_0,
3623 MMSS_FABRIC_CFG_CLKMOD, 3),
3624 MSM_RPM_MAP(8960, MMSS_FABRIC_CFG_IOCTL,
3625 MMSS_FABRIC_CFG_IOCTL, 1),
3626 MSM_RPM_MAP(8960, MM_FABRIC_ARB_0, MM_FABRIC_ARB, 23),
3627 MSM_RPM_MAP(8960, PM8921_S1_0, PM8921_S1, 2),
3628 MSM_RPM_MAP(8960, PM8921_S2_0, PM8921_S2, 2),
3629 MSM_RPM_MAP(8960, PM8921_S3_0, PM8921_S3, 2),
3630 MSM_RPM_MAP(8960, PM8921_S4_0, PM8921_S4, 2),
3631 MSM_RPM_MAP(8960, PM8921_S5_0, PM8921_S5, 2),
3632 MSM_RPM_MAP(8960, PM8921_S6_0, PM8921_S6, 2),
3633 MSM_RPM_MAP(8960, PM8921_S7_0, PM8921_S7, 2),
3634 MSM_RPM_MAP(8960, PM8921_S8_0, PM8921_S8, 2),
3635 MSM_RPM_MAP(8960, PM8921_L1_0, PM8921_L1, 2),
3636 MSM_RPM_MAP(8960, PM8921_L2_0, PM8921_L2, 2),
3637 MSM_RPM_MAP(8960, PM8921_L3_0, PM8921_L3, 2),
3638 MSM_RPM_MAP(8960, PM8921_L4_0, PM8921_L4, 2),
3639 MSM_RPM_MAP(8960, PM8921_L5_0, PM8921_L5, 2),
3640 MSM_RPM_MAP(8960, PM8921_L6_0, PM8921_L6, 2),
3641 MSM_RPM_MAP(8960, PM8921_L7_0, PM8921_L7, 2),
3642 MSM_RPM_MAP(8960, PM8921_L8_0, PM8921_L8, 2),
3643 MSM_RPM_MAP(8960, PM8921_L9_0, PM8921_L9, 2),
3644 MSM_RPM_MAP(8960, PM8921_L10_0, PM8921_L10, 2),
3645 MSM_RPM_MAP(8960, PM8921_L11_0, PM8921_L11, 2),
3646 MSM_RPM_MAP(8960, PM8921_L12_0, PM8921_L12, 2),
3647 MSM_RPM_MAP(8960, PM8921_L13_0, PM8921_L13, 2),
3648 MSM_RPM_MAP(8960, PM8921_L14_0, PM8921_L14, 2),
3649 MSM_RPM_MAP(8960, PM8921_L15_0, PM8921_L15, 2),
3650 MSM_RPM_MAP(8960, PM8921_L16_0, PM8921_L16, 2),
3651 MSM_RPM_MAP(8960, PM8921_L17_0, PM8921_L17, 2),
3652 MSM_RPM_MAP(8960, PM8921_L18_0, PM8921_L18, 2),
3653 MSM_RPM_MAP(8960, PM8921_L19_0, PM8921_L19, 2),
3654 MSM_RPM_MAP(8960, PM8921_L20_0, PM8921_L20, 2),
3655 MSM_RPM_MAP(8960, PM8921_L21_0, PM8921_L21, 2),
3656 MSM_RPM_MAP(8960, PM8921_L22_0, PM8921_L22, 2),
3657 MSM_RPM_MAP(8960, PM8921_L23_0, PM8921_L23, 2),
3658 MSM_RPM_MAP(8960, PM8921_L24_0, PM8921_L24, 2),
3659 MSM_RPM_MAP(8960, PM8921_L25_0, PM8921_L25, 2),
3660 MSM_RPM_MAP(8960, PM8921_L26_0, PM8921_L26, 2),
3661 MSM_RPM_MAP(8960, PM8921_L27_0, PM8921_L27, 2),
3662 MSM_RPM_MAP(8960, PM8921_L28_0, PM8921_L28, 2),
3663 MSM_RPM_MAP(8960, PM8921_L29_0, PM8921_L29, 2),
3664 MSM_RPM_MAP(8960, PM8921_CLK1_0, PM8921_CLK1, 2),
3665 MSM_RPM_MAP(8960, PM8921_CLK2_0, PM8921_CLK2, 2),
3666 MSM_RPM_MAP(8960, PM8921_LVS1, PM8921_LVS1, 1),
3667 MSM_RPM_MAP(8960, PM8921_LVS2, PM8921_LVS2, 1),
3668 MSM_RPM_MAP(8960, PM8921_LVS3, PM8921_LVS3, 1),
3669 MSM_RPM_MAP(8960, PM8921_LVS4, PM8921_LVS4, 1),
3670 MSM_RPM_MAP(8960, PM8921_LVS5, PM8921_LVS5, 1),
3671 MSM_RPM_MAP(8960, PM8921_LVS6, PM8921_LVS6, 1),
3672 MSM_RPM_MAP(8960, PM8921_LVS7, PM8921_LVS7, 1),
3673 MSM_RPM_MAP(8960, NCP_0, NCP, 2),
3674 MSM_RPM_MAP(8960, CXO_BUFFERS, CXO_BUFFERS, 1),
3675 MSM_RPM_MAP(8960, USB_OTG_SWITCH, USB_OTG_SWITCH, 1),
3676 MSM_RPM_MAP(8960, HDMI_SWITCH, HDMI_SWITCH, 1),
3677 MSM_RPM_MAP(8960, DDR_DMM_0, DDR_DMM, 2),
3678 MSM_RPM_MAP(8960, QDSS_CLK, QDSS_CLK, 1),
3679 },
3680 .target_status = {
3681 MSM_RPM_STATUS_ID_MAP(8960, VERSION_MAJOR),
3682 MSM_RPM_STATUS_ID_MAP(8960, VERSION_MINOR),
3683 MSM_RPM_STATUS_ID_MAP(8960, VERSION_BUILD),
3684 MSM_RPM_STATUS_ID_MAP(8960, SUPPORTED_RESOURCES_0),
3685 MSM_RPM_STATUS_ID_MAP(8960, SUPPORTED_RESOURCES_1),
3686 MSM_RPM_STATUS_ID_MAP(8960, SUPPORTED_RESOURCES_2),
3687 MSM_RPM_STATUS_ID_MAP(8960, RESERVED_SUPPORTED_RESOURCES_0),
3688 MSM_RPM_STATUS_ID_MAP(8960, SEQUENCE),
3689 MSM_RPM_STATUS_ID_MAP(8960, RPM_CTL),
3690 MSM_RPM_STATUS_ID_MAP(8960, CXO_CLK),
3691 MSM_RPM_STATUS_ID_MAP(8960, PXO_CLK),
3692 MSM_RPM_STATUS_ID_MAP(8960, APPS_FABRIC_CLK),
3693 MSM_RPM_STATUS_ID_MAP(8960, SYSTEM_FABRIC_CLK),
3694 MSM_RPM_STATUS_ID_MAP(8960, MM_FABRIC_CLK),
3695 MSM_RPM_STATUS_ID_MAP(8960, DAYTONA_FABRIC_CLK),
3696 MSM_RPM_STATUS_ID_MAP(8960, SFPB_CLK),
3697 MSM_RPM_STATUS_ID_MAP(8960, CFPB_CLK),
3698 MSM_RPM_STATUS_ID_MAP(8960, MMFPB_CLK),
3699 MSM_RPM_STATUS_ID_MAP(8960, EBI1_CLK),
3700 MSM_RPM_STATUS_ID_MAP(8960, APPS_FABRIC_CFG_HALT),
3701 MSM_RPM_STATUS_ID_MAP(8960, APPS_FABRIC_CFG_CLKMOD),
3702 MSM_RPM_STATUS_ID_MAP(8960, APPS_FABRIC_CFG_IOCTL),
3703 MSM_RPM_STATUS_ID_MAP(8960, APPS_FABRIC_ARB),
3704 MSM_RPM_STATUS_ID_MAP(8960, SYS_FABRIC_CFG_HALT),
3705 MSM_RPM_STATUS_ID_MAP(8960, SYS_FABRIC_CFG_CLKMOD),
3706 MSM_RPM_STATUS_ID_MAP(8960, SYS_FABRIC_CFG_IOCTL),
3707 MSM_RPM_STATUS_ID_MAP(8960, SYSTEM_FABRIC_ARB),
3708 MSM_RPM_STATUS_ID_MAP(8960, MMSS_FABRIC_CFG_HALT),
3709 MSM_RPM_STATUS_ID_MAP(8960, MMSS_FABRIC_CFG_CLKMOD),
3710 MSM_RPM_STATUS_ID_MAP(8960, MMSS_FABRIC_CFG_IOCTL),
3711 MSM_RPM_STATUS_ID_MAP(8960, MM_FABRIC_ARB),
3712 MSM_RPM_STATUS_ID_MAP(8960, PM8921_S1_0),
3713 MSM_RPM_STATUS_ID_MAP(8960, PM8921_S1_1),
3714 MSM_RPM_STATUS_ID_MAP(8960, PM8921_S2_0),
3715 MSM_RPM_STATUS_ID_MAP(8960, PM8921_S2_1),
3716 MSM_RPM_STATUS_ID_MAP(8960, PM8921_S3_0),
3717 MSM_RPM_STATUS_ID_MAP(8960, PM8921_S3_1),
3718 MSM_RPM_STATUS_ID_MAP(8960, PM8921_S4_0),
3719 MSM_RPM_STATUS_ID_MAP(8960, PM8921_S4_1),
3720 MSM_RPM_STATUS_ID_MAP(8960, PM8921_S5_0),
3721 MSM_RPM_STATUS_ID_MAP(8960, PM8921_S5_1),
3722 MSM_RPM_STATUS_ID_MAP(8960, PM8921_S6_0),
3723 MSM_RPM_STATUS_ID_MAP(8960, PM8921_S6_1),
3724 MSM_RPM_STATUS_ID_MAP(8960, PM8921_S7_0),
3725 MSM_RPM_STATUS_ID_MAP(8960, PM8921_S7_1),
3726 MSM_RPM_STATUS_ID_MAP(8960, PM8921_S8_0),
3727 MSM_RPM_STATUS_ID_MAP(8960, PM8921_S8_1),
3728 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L1_0),
3729 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L1_1),
3730 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L2_0),
3731 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L2_1),
3732 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L3_0),
3733 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L3_1),
3734 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L4_0),
3735 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L4_1),
3736 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L5_0),
3737 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L5_1),
3738 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L6_0),
3739 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L6_1),
3740 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L7_0),
3741 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L7_1),
3742 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L8_0),
3743 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L8_1),
3744 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L9_0),
3745 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L9_1),
3746 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L10_0),
3747 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L10_1),
3748 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L11_0),
3749 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L11_1),
3750 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L12_0),
3751 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L12_1),
3752 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L13_0),
3753 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L13_1),
3754 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L14_0),
3755 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L14_1),
3756 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L15_0),
3757 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L15_1),
3758 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L16_0),
3759 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L16_1),
3760 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L17_0),
3761 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L17_1),
3762 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L18_0),
3763 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L18_1),
3764 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L19_0),
3765 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L19_1),
3766 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L20_0),
3767 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L20_1),
3768 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L21_0),
3769 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L21_1),
3770 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L22_0),
3771 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L22_1),
3772 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L23_0),
3773 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L23_1),
3774 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L24_0),
3775 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L24_1),
3776 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L25_0),
3777 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L25_1),
3778 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L26_0),
3779 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L26_1),
3780 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L27_0),
3781 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L27_1),
3782 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L28_0),
3783 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L28_1),
3784 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L29_0),
3785 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L29_1),
3786 MSM_RPM_STATUS_ID_MAP(8960, PM8921_CLK1_0),
3787 MSM_RPM_STATUS_ID_MAP(8960, PM8921_CLK1_1),
3788 MSM_RPM_STATUS_ID_MAP(8960, PM8921_CLK2_0),
3789 MSM_RPM_STATUS_ID_MAP(8960, PM8921_CLK2_1),
3790 MSM_RPM_STATUS_ID_MAP(8960, PM8921_LVS1),
3791 MSM_RPM_STATUS_ID_MAP(8960, PM8921_LVS2),
3792 MSM_RPM_STATUS_ID_MAP(8960, PM8921_LVS3),
3793 MSM_RPM_STATUS_ID_MAP(8960, PM8921_LVS4),
3794 MSM_RPM_STATUS_ID_MAP(8960, PM8921_LVS5),
3795 MSM_RPM_STATUS_ID_MAP(8960, PM8921_LVS6),
3796 MSM_RPM_STATUS_ID_MAP(8960, PM8921_LVS7),
3797 MSM_RPM_STATUS_ID_MAP(8960, NCP_0),
3798 MSM_RPM_STATUS_ID_MAP(8960, NCP_1),
3799 MSM_RPM_STATUS_ID_MAP(8960, CXO_BUFFERS),
3800 MSM_RPM_STATUS_ID_MAP(8960, USB_OTG_SWITCH),
3801 MSM_RPM_STATUS_ID_MAP(8960, HDMI_SWITCH),
3802 MSM_RPM_STATUS_ID_MAP(8960, DDR_DMM_0),
3803 MSM_RPM_STATUS_ID_MAP(8960, DDR_DMM_1),
3804 MSM_RPM_STATUS_ID_MAP(8960, EBI1_CH0_RANGE),
3805 MSM_RPM_STATUS_ID_MAP(8960, EBI1_CH1_RANGE),
3806 },
3807 .target_ctrl_id = {
3808 MSM_RPM_CTRL_MAP(8960, VERSION_MAJOR),
3809 MSM_RPM_CTRL_MAP(8960, VERSION_MINOR),
3810 MSM_RPM_CTRL_MAP(8960, VERSION_BUILD),
3811 MSM_RPM_CTRL_MAP(8960, REQ_CTX_0),
3812 MSM_RPM_CTRL_MAP(8960, REQ_SEL_0),
3813 MSM_RPM_CTRL_MAP(8960, ACK_CTX_0),
3814 MSM_RPM_CTRL_MAP(8960, ACK_SEL_0),
3815 },
3816 .sel_invalidate = MSM_RPM_8960_SEL_INVALIDATE,
3817 .sel_notification = MSM_RPM_8960_SEL_NOTIFICATION,
3818 .sel_last = MSM_RPM_8960_SEL_LAST,
3819 .ver = {3, 0, 0},
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003820};
Praveen Chidambaram8985b012011-12-16 13:38:59 -07003821
Praveen Chidambaram78499012011-11-01 17:15:17 -06003822struct platform_device msm8960_rpm_device = {
Maheshkumar Sivasubramanian9c8cdc92011-09-12 14:11:30 -06003823 .name = "msm_rpm",
3824 .id = -1,
3825};
3826
Praveen Chidambaram78499012011-11-01 17:15:17 -06003827static struct msm_rpm_log_platform_data msm_rpm_log_pdata = {
3828 .phys_addr_base = 0x0010C000,
3829 .reg_offsets = {
3830 [MSM_RPM_LOG_PAGE_INDICES] = 0x00000080,
3831 [MSM_RPM_LOG_PAGE_BUFFER] = 0x000000A0,
3832 },
3833 .phys_size = SZ_8K,
Anji Jonnalaa5777ce2013-03-28 13:45:58 +05303834 .log_len = 6144, /* log's buffer length in bytes */
3835 .log_len_mask = (6144 >> 2) - 1, /* length mask in units of u32 */
Praveen Chidambaram78499012011-11-01 17:15:17 -06003836};
3837
3838struct platform_device msm8960_rpm_log_device = {
3839 .name = "msm_rpm_log",
3840 .id = -1,
3841 .dev = {
3842 .platform_data = &msm_rpm_log_pdata,
3843 },
3844};
3845
Praveen Chidambaram7a712232011-10-28 13:39:45 -06003846static struct msm_rpmstats_platform_data msm_rpm_stat_pdata = {
Anji Jonnalaa1a1c3b2012-09-18 19:20:21 +05303847 .phys_addr_base = 0x0010DD04,
3848 .phys_size = SZ_256,
Praveen Chidambaram7a712232011-10-28 13:39:45 -06003849};
3850
Praveen Chidambaram78499012011-11-01 17:15:17 -06003851struct platform_device msm8960_rpm_stat_device = {
Praveen Chidambaram7a712232011-10-28 13:39:45 -06003852 .name = "msm_rpm_stat",
3853 .id = -1,
3854 .dev = {
3855 .platform_data = &msm_rpm_stat_pdata,
3856 },
3857};
Maheshkumar Sivasubramanian9c8cdc92011-09-12 14:11:30 -06003858
Anji Jonnala2a8bd312012-11-01 13:11:42 +05303859static struct resource resources_rpm_master_stats[] = {
3860 {
3861 .start = MSM8960_RPM_MASTER_STATS_BASE,
3862 .end = MSM8960_RPM_MASTER_STATS_BASE + SZ_256,
3863 .flags = IORESOURCE_MEM,
3864 },
3865};
3866
3867static char *master_names[] = {
3868 "KPSS",
3869 "GPSS",
3870 "LPASS",
3871 "RIVA",
3872 "DSPS",
3873};
3874
3875static struct msm_rpm_master_stats_platform_data msm_rpm_master_stat_pdata = {
3876 .masters = master_names,
3877 .nomasters = ARRAY_SIZE(master_names),
3878};
3879
3880struct platform_device msm8960_rpm_master_stat_device = {
3881 .name = "msm_rpm_master_stat",
3882 .id = -1,
3883 .num_resources = ARRAY_SIZE(resources_rpm_master_stats),
3884 .resource = resources_rpm_master_stats,
3885 .dev = {
3886 .platform_data = &msm_rpm_master_stat_pdata,
3887 },
3888};
3889
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003890struct platform_device msm_bus_sys_fabric = {
3891 .name = "msm_bus_fabric",
3892 .id = MSM_BUS_FAB_SYSTEM,
3893};
3894struct platform_device msm_bus_apps_fabric = {
3895 .name = "msm_bus_fabric",
3896 .id = MSM_BUS_FAB_APPSS,
3897};
3898struct platform_device msm_bus_mm_fabric = {
3899 .name = "msm_bus_fabric",
3900 .id = MSM_BUS_FAB_MMSS,
3901};
3902struct platform_device msm_bus_sys_fpb = {
3903 .name = "msm_bus_fabric",
3904 .id = MSM_BUS_FAB_SYSTEM_FPB,
3905};
3906struct platform_device msm_bus_cpss_fpb = {
3907 .name = "msm_bus_fabric",
3908 .id = MSM_BUS_FAB_CPSS_FPB,
3909};
3910
3911/* Sensors DSPS platform data */
3912#ifdef CONFIG_MSM_DSPS
3913
Vikram Mulukutlaac682bb2012-09-20 14:06:23 -07003914#define PPSS_DSPS_TCM_CODE_BASE 0x12000000
3915#define PPSS_DSPS_TCM_CODE_SIZE 0x28000
3916#define PPSS_DSPS_TCM_BUF_BASE 0x12040000
3917#define PPSS_DSPS_TCM_BUF_SIZE 0x4000
3918#define PPSS_DSPS_PIPE_BASE 0x12800000
3919#define PPSS_DSPS_PIPE_SIZE 0x4000
3920#define PPSS_DSPS_DDR_BASE 0x8fe00000
3921#define PPSS_DSPS_DDR_SIZE 0x100000
3922#define PPSS_SMEM_BASE 0x80000000
3923#define PPSS_SMEM_SIZE 0x200000
3924#define PPSS_REG_PHYS_BASE 0x12080000
3925#define PPSS_WDOG_UNMASKED_INT_EN 0x1808
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003926
3927static struct dsps_clk_info dsps_clks[] = {};
3928static struct dsps_regulator_info dsps_regs[] = {};
3929
3930/*
3931 * Note: GPIOs field is intialized in run-time at the function
3932 * msm8960_init_dsps().
3933 */
3934
3935struct msm_dsps_platform_data msm_dsps_pdata = {
3936 .clks = dsps_clks,
3937 .clks_num = ARRAY_SIZE(dsps_clks),
3938 .gpios = NULL,
3939 .gpios_num = 0,
3940 .regs = dsps_regs,
3941 .regs_num = ARRAY_SIZE(dsps_regs),
3942 .dsps_pwr_ctl_en = 1,
karthik karuppasamy1a1c6b02012-05-29 15:16:32 -07003943 .tcm_code_start = PPSS_DSPS_TCM_CODE_BASE,
3944 .tcm_code_size = PPSS_DSPS_TCM_CODE_SIZE,
3945 .tcm_buf_start = PPSS_DSPS_TCM_BUF_BASE,
3946 .tcm_buf_size = PPSS_DSPS_TCM_BUF_SIZE,
3947 .pipe_start = PPSS_DSPS_PIPE_BASE,
3948 .pipe_size = PPSS_DSPS_PIPE_SIZE,
3949 .ddr_start = PPSS_DSPS_DDR_BASE,
3950 .ddr_size = PPSS_DSPS_DDR_SIZE,
3951 .smem_start = PPSS_SMEM_BASE,
3952 .smem_size = PPSS_SMEM_SIZE,
Vikram Mulukutlaac682bb2012-09-20 14:06:23 -07003953 .ppss_wdog_unmasked_int_en_reg = PPSS_WDOG_UNMASKED_INT_EN,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003954 .signature = DSPS_SIGNATURE,
3955};
3956
3957static struct resource msm_dsps_resources[] = {
3958 {
3959 .start = PPSS_REG_PHYS_BASE,
3960 .end = PPSS_REG_PHYS_BASE + SZ_8K - 1,
3961 .name = "ppss_reg",
3962 .flags = IORESOURCE_MEM,
3963 },
Wentao Xua55500b2011-08-16 18:15:04 -04003964 {
3965 .start = PPSS_WDOG_TIMER_IRQ,
3966 .end = PPSS_WDOG_TIMER_IRQ,
3967 .name = "ppss_wdog",
3968 .flags = IORESOURCE_IRQ,
3969 },
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003970};
3971
3972struct platform_device msm_dsps_device = {
3973 .name = "msm_dsps",
3974 .id = 0,
3975 .num_resources = ARRAY_SIZE(msm_dsps_resources),
3976 .resource = msm_dsps_resources,
3977 .dev.platform_data = &msm_dsps_pdata,
3978};
3979
3980#endif /* CONFIG_MSM_DSPS */
Pratik Patel7831c082011-06-08 21:44:37 -07003981
Pratik Patel3b0ca882012-06-01 16:54:14 -07003982#define CORESIGHT_PHYS_BASE 0x01A00000
3983#define CORESIGHT_TPIU_PHYS_BASE (CORESIGHT_PHYS_BASE + 0x3000)
3984#define CORESIGHT_ETB_PHYS_BASE (CORESIGHT_PHYS_BASE + 0x1000)
3985#define CORESIGHT_FUNNEL_PHYS_BASE (CORESIGHT_PHYS_BASE + 0x4000)
3986#define CORESIGHT_STM_PHYS_BASE (CORESIGHT_PHYS_BASE + 0x6000)
3987#define CORESIGHT_ETM0_PHYS_BASE (CORESIGHT_PHYS_BASE + 0x1C000)
3988#define CORESIGHT_ETM1_PHYS_BASE (CORESIGHT_PHYS_BASE + 0x1D000)
Pratik Patel7831c082011-06-08 21:44:37 -07003989
Pratik Patel3b0ca882012-06-01 16:54:14 -07003990#define CORESIGHT_STM_CHANNEL_PHYS_BASE (0x14000000 + 0x280000)
Pratik Patel7831c082011-06-08 21:44:37 -07003991
Pratik Patel3b0ca882012-06-01 16:54:14 -07003992static struct resource coresight_tpiu_resources[] = {
Pratik Patel7831c082011-06-08 21:44:37 -07003993 {
Pratik Patel3b0ca882012-06-01 16:54:14 -07003994 .start = CORESIGHT_TPIU_PHYS_BASE,
3995 .end = CORESIGHT_TPIU_PHYS_BASE + SZ_4K - 1,
Pratik Patel7831c082011-06-08 21:44:37 -07003996 .flags = IORESOURCE_MEM,
3997 },
3998};
3999
Pratik Patel3b0ca882012-06-01 16:54:14 -07004000static struct coresight_platform_data coresight_tpiu_pdata = {
4001 .id = 0,
4002 .name = "coresight-tpiu",
4003 .nr_inports = 1,
4004 .nr_outports = 0,
Pratik Patel7831c082011-06-08 21:44:37 -07004005};
4006
Pratik Patel3b0ca882012-06-01 16:54:14 -07004007struct platform_device coresight_tpiu_device = {
4008 .name = "coresight-tpiu",
4009 .id = 0,
4010 .num_resources = ARRAY_SIZE(coresight_tpiu_resources),
4011 .resource = coresight_tpiu_resources,
4012 .dev = {
4013 .platform_data = &coresight_tpiu_pdata,
4014 },
4015};
4016
4017static struct resource coresight_etb_resources[] = {
Pratik Patel7831c082011-06-08 21:44:37 -07004018 {
Pratik Patel3b0ca882012-06-01 16:54:14 -07004019 .start = CORESIGHT_ETB_PHYS_BASE,
4020 .end = CORESIGHT_ETB_PHYS_BASE + SZ_4K - 1,
Pratik Patel7831c082011-06-08 21:44:37 -07004021 .flags = IORESOURCE_MEM,
4022 },
4023};
4024
Pratik Patel3b0ca882012-06-01 16:54:14 -07004025static struct coresight_platform_data coresight_etb_pdata = {
4026 .id = 1,
4027 .name = "coresight-etb",
4028 .nr_inports = 1,
4029 .nr_outports = 0,
4030 .default_sink = true,
Pratik Patel7831c082011-06-08 21:44:37 -07004031};
4032
Pratik Patel3b0ca882012-06-01 16:54:14 -07004033struct platform_device coresight_etb_device = {
4034 .name = "coresight-etb",
4035 .id = 0,
4036 .num_resources = ARRAY_SIZE(coresight_etb_resources),
4037 .resource = coresight_etb_resources,
4038 .dev = {
4039 .platform_data = &coresight_etb_pdata,
4040 },
4041};
4042
4043static struct resource coresight_funnel_resources[] = {
Pratik Patel7831c082011-06-08 21:44:37 -07004044 {
Pratik Patel3b0ca882012-06-01 16:54:14 -07004045 .start = CORESIGHT_FUNNEL_PHYS_BASE,
4046 .end = CORESIGHT_FUNNEL_PHYS_BASE + SZ_4K - 1,
Pratik Patel7831c082011-06-08 21:44:37 -07004047 .flags = IORESOURCE_MEM,
4048 },
4049};
4050
Pratik Patel3b0ca882012-06-01 16:54:14 -07004051static const int coresight_funnel_outports[] = { 0, 1 };
4052static const int coresight_funnel_child_ids[] = { 0, 1 };
4053static const int coresight_funnel_child_ports[] = { 0, 0 };
4054
4055static struct coresight_platform_data coresight_funnel_pdata = {
4056 .id = 2,
4057 .name = "coresight-funnel",
4058 .nr_inports = 4,
4059 .outports = coresight_funnel_outports,
4060 .child_ids = coresight_funnel_child_ids,
4061 .child_ports = coresight_funnel_child_ports,
4062 .nr_outports = ARRAY_SIZE(coresight_funnel_outports),
Pratik Patel7831c082011-06-08 21:44:37 -07004063};
4064
Pratik Patel3b0ca882012-06-01 16:54:14 -07004065struct platform_device coresight_funnel_device = {
4066 .name = "coresight-funnel",
4067 .id = 0,
4068 .num_resources = ARRAY_SIZE(coresight_funnel_resources),
4069 .resource = coresight_funnel_resources,
4070 .dev = {
4071 .platform_data = &coresight_funnel_pdata,
4072 },
4073};
4074
4075static struct resource coresight_stm_resources[] = {
Pratik Patel7831c082011-06-08 21:44:37 -07004076 {
Pratik Patel3b0ca882012-06-01 16:54:14 -07004077 .start = CORESIGHT_STM_PHYS_BASE,
4078 .end = CORESIGHT_STM_PHYS_BASE + SZ_4K - 1,
4079 .flags = IORESOURCE_MEM,
4080 },
4081 {
4082 .start = CORESIGHT_STM_CHANNEL_PHYS_BASE,
4083 .end = CORESIGHT_STM_CHANNEL_PHYS_BASE + SZ_1M + SZ_512K - 1,
Pratik Patel7831c082011-06-08 21:44:37 -07004084 .flags = IORESOURCE_MEM,
4085 },
4086};
4087
Pratik Patel3b0ca882012-06-01 16:54:14 -07004088static const int coresight_stm_outports[] = { 0 };
4089static const int coresight_stm_child_ids[] = { 2 };
4090static const int coresight_stm_child_ports[] = { 2 };
4091
4092static struct coresight_platform_data coresight_stm_pdata = {
4093 .id = 3,
4094 .name = "coresight-stm",
4095 .nr_inports = 0,
4096 .outports = coresight_stm_outports,
4097 .child_ids = coresight_stm_child_ids,
4098 .child_ports = coresight_stm_child_ports,
4099 .nr_outports = ARRAY_SIZE(coresight_stm_outports),
Pratik Patel7831c082011-06-08 21:44:37 -07004100};
4101
Pratik Patel3b0ca882012-06-01 16:54:14 -07004102struct platform_device coresight_stm_device = {
4103 .name = "coresight-stm",
4104 .id = 0,
4105 .num_resources = ARRAY_SIZE(coresight_stm_resources),
4106 .resource = coresight_stm_resources,
4107 .dev = {
4108 .platform_data = &coresight_stm_pdata,
4109 },
4110};
4111
4112static struct resource coresight_etm0_resources[] = {
4113 {
4114 .start = CORESIGHT_ETM0_PHYS_BASE,
4115 .end = CORESIGHT_ETM0_PHYS_BASE + SZ_4K - 1,
4116 .flags = IORESOURCE_MEM,
4117 },
4118};
4119
4120static const int coresight_etm0_outports[] = { 0 };
4121static const int coresight_etm0_child_ids[] = { 2 };
4122static const int coresight_etm0_child_ports[] = { 0 };
4123
4124static struct coresight_platform_data coresight_etm0_pdata = {
4125 .id = 4,
4126 .name = "coresight-etm0",
4127 .nr_inports = 0,
4128 .outports = coresight_etm0_outports,
4129 .child_ids = coresight_etm0_child_ids,
4130 .child_ports = coresight_etm0_child_ports,
4131 .nr_outports = ARRAY_SIZE(coresight_etm0_outports),
4132};
4133
4134struct platform_device coresight_etm0_device = {
4135 .name = "coresight-etm",
4136 .id = 0,
4137 .num_resources = ARRAY_SIZE(coresight_etm0_resources),
4138 .resource = coresight_etm0_resources,
4139 .dev = {
4140 .platform_data = &coresight_etm0_pdata,
4141 },
4142};
4143
4144static struct resource coresight_etm1_resources[] = {
4145 {
4146 .start = CORESIGHT_ETM1_PHYS_BASE,
4147 .end = CORESIGHT_ETM1_PHYS_BASE + SZ_4K - 1,
4148 .flags = IORESOURCE_MEM,
4149 },
4150};
4151
4152static const int coresight_etm1_outports[] = { 0 };
4153static const int coresight_etm1_child_ids[] = { 2 };
4154static const int coresight_etm1_child_ports[] = { 1 };
4155
4156static struct coresight_platform_data coresight_etm1_pdata = {
4157 .id = 5,
4158 .name = "coresight-etm1",
4159 .nr_inports = 0,
4160 .outports = coresight_etm1_outports,
4161 .child_ids = coresight_etm1_child_ids,
4162 .child_ports = coresight_etm1_child_ports,
4163 .nr_outports = ARRAY_SIZE(coresight_etm1_outports),
4164};
4165
4166struct platform_device coresight_etm1_device = {
4167 .name = "coresight-etm",
4168 .id = 1,
4169 .num_resources = ARRAY_SIZE(coresight_etm1_resources),
4170 .resource = coresight_etm1_resources,
4171 .dev = {
4172 .platform_data = &coresight_etm1_pdata,
4173 },
4174};
Praveen Chidambaram8ea3dcd2011-12-07 14:46:31 -07004175
Stepan Moskovchenkoc0557252012-06-07 17:39:14 -07004176static struct resource msm_ebi1_ch0_erp_resources[] = {
4177 {
4178 .start = HSDDRX_EBI1CH0_IRQ,
4179 .flags = IORESOURCE_IRQ,
4180 },
4181 {
4182 .start = 0x00A40000,
4183 .end = 0x00A40000 + SZ_4K - 1,
4184 .flags = IORESOURCE_MEM,
4185 },
4186};
4187
4188struct platform_device msm8960_device_ebi1_ch0_erp = {
4189 .name = "msm_ebi_erp",
4190 .id = 0,
4191 .num_resources = ARRAY_SIZE(msm_ebi1_ch0_erp_resources),
4192 .resource = msm_ebi1_ch0_erp_resources,
4193};
4194
4195static struct resource msm_ebi1_ch1_erp_resources[] = {
4196 {
4197 .start = HSDDRX_EBI1CH1_IRQ,
4198 .flags = IORESOURCE_IRQ,
4199 },
4200 {
4201 .start = 0x00D40000,
4202 .end = 0x00D40000 + SZ_4K - 1,
4203 .flags = IORESOURCE_MEM,
4204 },
4205};
4206
4207struct platform_device msm8960_device_ebi1_ch1_erp = {
4208 .name = "msm_ebi_erp",
4209 .id = 1,
4210 .num_resources = ARRAY_SIZE(msm_ebi1_ch1_erp_resources),
4211 .resource = msm_ebi1_ch1_erp_resources,
4212};
4213
Stepan Moskovchenko28662c52012-03-01 12:48:45 -08004214static struct resource msm_cache_erp_resources[] = {
4215 {
4216 .name = "l1_irq",
4217 .start = SC_SICCPUXEXTFAULTIRPTREQ,
4218 .flags = IORESOURCE_IRQ,
4219 },
4220 {
4221 .name = "l2_irq",
4222 .start = APCC_QGICL2IRPTREQ,
4223 .flags = IORESOURCE_IRQ,
4224 }
4225};
4226
4227struct platform_device msm8960_device_cache_erp = {
4228 .name = "msm_cache_erp",
4229 .id = -1,
4230 .num_resources = ARRAY_SIZE(msm_cache_erp_resources),
4231 .resource = msm_cache_erp_resources,
4232};
Laura Abbott0577d7b2012-04-17 11:14:30 -07004233
4234struct msm_iommu_domain_name msm8960_iommu_ctx_names[] = {
4235 /* Camera */
4236 {
Laura Abbott0577d7b2012-04-17 11:14:30 -07004237 .name = "ijpeg_src",
4238 .domain = CAMERA_DOMAIN,
4239 },
4240 /* Camera */
4241 {
4242 .name = "ijpeg_dst",
4243 .domain = CAMERA_DOMAIN,
4244 },
4245 /* Camera */
4246 {
4247 .name = "jpegd_src",
4248 .domain = CAMERA_DOMAIN,
4249 },
4250 /* Camera */
4251 {
4252 .name = "jpegd_dst",
4253 .domain = CAMERA_DOMAIN,
4254 },
Mayank Chopra9c4743f2012-06-27 15:31:43 +05304255 /* Rotator */
Laura Abbott0577d7b2012-04-17 11:14:30 -07004256 {
4257 .name = "rot_src",
Olav Hauganef95ae32012-05-15 09:50:30 -07004258 .domain = ROTATOR_SRC_DOMAIN,
Laura Abbott0577d7b2012-04-17 11:14:30 -07004259 },
Mayank Chopra9c4743f2012-06-27 15:31:43 +05304260 /* Rotator */
Laura Abbott0577d7b2012-04-17 11:14:30 -07004261 {
4262 .name = "rot_dst",
Olav Hauganef95ae32012-05-15 09:50:30 -07004263 .domain = ROTATOR_SRC_DOMAIN,
Laura Abbott0577d7b2012-04-17 11:14:30 -07004264 },
4265 /* Video */
4266 {
4267 .name = "vcodec_a_mm1",
4268 .domain = VIDEO_DOMAIN,
4269 },
4270 /* Video */
4271 {
4272 .name = "vcodec_b_mm2",
4273 .domain = VIDEO_DOMAIN,
4274 },
4275 /* Video */
4276 {
4277 .name = "vcodec_a_stream",
4278 .domain = VIDEO_DOMAIN,
4279 },
4280};
4281
4282static struct mem_pool msm8960_video_pools[] = {
4283 /*
4284 * Video hardware has the following requirements:
4285 * 1. All video addresses used by the video hardware must be at a higher
4286 * address than video firmware address.
4287 * 2. Video hardware can only access a range of 256MB from the base of
4288 * the video firmware.
4289 */
4290 [VIDEO_FIRMWARE_POOL] =
4291 /* Low addresses, intended for video firmware */
4292 {
4293 .paddr = SZ_128K,
4294 .size = SZ_16M - SZ_128K,
4295 },
4296 [VIDEO_MAIN_POOL] =
4297 /* Main video pool */
4298 {
4299 .paddr = SZ_16M,
4300 .size = SZ_256M - SZ_16M,
4301 },
4302 [GEN_POOL] =
4303 /* Remaining address space up to 2G */
4304 {
4305 .paddr = SZ_256M,
4306 .size = SZ_2G - SZ_256M,
4307 },
4308};
4309
4310static struct mem_pool msm8960_camera_pools[] = {
4311 [GEN_POOL] =
4312 /* One address space for camera */
4313 {
4314 .paddr = SZ_128K,
4315 .size = SZ_2G - SZ_128K,
4316 },
4317};
4318
Olav Hauganef95ae32012-05-15 09:50:30 -07004319static struct mem_pool msm8960_display_read_pools[] = {
Laura Abbott0577d7b2012-04-17 11:14:30 -07004320 [GEN_POOL] =
Olav Hauganef95ae32012-05-15 09:50:30 -07004321 /* One address space for display reads */
Laura Abbott0577d7b2012-04-17 11:14:30 -07004322 {
4323 .paddr = SZ_128K,
4324 .size = SZ_2G - SZ_128K,
4325 },
4326};
4327
Olav Hauganef95ae32012-05-15 09:50:30 -07004328static struct mem_pool msm8960_rotator_src_pools[] = {
Laura Abbott0577d7b2012-04-17 11:14:30 -07004329 [GEN_POOL] =
Olav Hauganef95ae32012-05-15 09:50:30 -07004330 /* One address space for rotator src */
Laura Abbott0577d7b2012-04-17 11:14:30 -07004331 {
4332 .paddr = SZ_128K,
4333 .size = SZ_2G - SZ_128K,
4334 },
4335};
4336
4337static struct msm_iommu_domain msm8960_iommu_domains[] = {
4338 [VIDEO_DOMAIN] = {
4339 .iova_pools = msm8960_video_pools,
4340 .npools = ARRAY_SIZE(msm8960_video_pools),
4341 },
4342 [CAMERA_DOMAIN] = {
4343 .iova_pools = msm8960_camera_pools,
4344 .npools = ARRAY_SIZE(msm8960_camera_pools),
4345 },
Olav Hauganef95ae32012-05-15 09:50:30 -07004346 [DISPLAY_READ_DOMAIN] = {
4347 .iova_pools = msm8960_display_read_pools,
4348 .npools = ARRAY_SIZE(msm8960_display_read_pools),
Laura Abbott0577d7b2012-04-17 11:14:30 -07004349 },
Olav Hauganef95ae32012-05-15 09:50:30 -07004350 [ROTATOR_SRC_DOMAIN] = {
4351 .iova_pools = msm8960_rotator_src_pools,
4352 .npools = ARRAY_SIZE(msm8960_rotator_src_pools),
Laura Abbott0577d7b2012-04-17 11:14:30 -07004353 },
4354};
4355
4356struct iommu_domains_pdata msm8960_iommu_domain_pdata = {
4357 .domains = msm8960_iommu_domains,
4358 .ndomains = ARRAY_SIZE(msm8960_iommu_domains),
4359 .domain_names = msm8960_iommu_ctx_names,
4360 .nnames = ARRAY_SIZE(msm8960_iommu_ctx_names),
4361 .domain_alloc_flags = 0,
4362};
4363
4364struct platform_device msm8960_iommu_domain_device = {
4365 .name = "iommu_domains",
4366 .id = -1,
4367 .dev = {
4368 .platform_data = &msm8960_iommu_domain_pdata,
Laura Abbott532b2df2012-04-12 10:53:48 -07004369 }
4370};
4371
4372struct msm_rtb_platform_data msm8960_rtb_pdata = {
4373 .size = SZ_1M,
4374};
4375
4376static int __init msm_rtb_set_buffer_size(char *p)
4377{
4378 int s;
4379
4380 s = memparse(p, NULL);
4381 msm8960_rtb_pdata.size = ALIGN(s, SZ_4K);
4382 return 0;
4383}
4384early_param("msm_rtb_size", msm_rtb_set_buffer_size);
4385
4386
4387struct platform_device msm8960_rtb_device = {
4388 .name = "msm_rtb",
4389 .id = -1,
4390 .dev = {
4391 .platform_data = &msm8960_rtb_pdata,
Laura Abbott0577d7b2012-04-17 11:14:30 -07004392 },
4393};
Laura Abbott2ae8f362012-04-12 11:03:04 -07004394
Laura Abbott0a103cf2012-05-25 09:00:23 -07004395#define MSM_8960_L1_SIZE SZ_1M
4396/*
4397 * The actual L2 size is smaller but we need a larger buffer
4398 * size to store other dump information
4399 */
4400#define MSM_8960_L2_SIZE SZ_4M
4401
Laura Abbott2ae8f362012-04-12 11:03:04 -07004402struct msm_cache_dump_platform_data msm8960_cache_dump_pdata = {
Laura Abbott0a103cf2012-05-25 09:00:23 -07004403 .l2_size = MSM_8960_L2_SIZE,
4404 .l1_size = MSM_8960_L1_SIZE,
Laura Abbott2ae8f362012-04-12 11:03:04 -07004405};
4406
4407struct platform_device msm8960_cache_dump_device = {
4408 .name = "msm_cache_dump",
4409 .id = -1,
4410 .dev = {
4411 .platform_data = &msm8960_cache_dump_pdata,
4412 },
4413};
Joel King0cbf5d82012-05-24 15:21:38 -07004414
4415#define MDM2AP_ERRFATAL 40
4416#define AP2MDM_ERRFATAL 80
4417#define MDM2AP_STATUS 24
4418#define AP2MDM_STATUS 77
4419#define AP2MDM_PMIC_PWR_EN 22
4420#define AP2MDM_KPDPWR_N 79
4421#define AP2MDM_SOFT_RESET 78
Ameya Thakur43248fd2012-07-10 18:50:52 -07004422#define USB_SW 25
Joel King0cbf5d82012-05-24 15:21:38 -07004423
4424static struct resource sglte_resources[] = {
4425 {
4426 .start = MDM2AP_ERRFATAL,
4427 .end = MDM2AP_ERRFATAL,
4428 .name = "MDM2AP_ERRFATAL",
4429 .flags = IORESOURCE_IO,
4430 },
4431 {
4432 .start = AP2MDM_ERRFATAL,
4433 .end = AP2MDM_ERRFATAL,
4434 .name = "AP2MDM_ERRFATAL",
4435 .flags = IORESOURCE_IO,
4436 },
4437 {
4438 .start = MDM2AP_STATUS,
4439 .end = MDM2AP_STATUS,
4440 .name = "MDM2AP_STATUS",
4441 .flags = IORESOURCE_IO,
4442 },
4443 {
4444 .start = AP2MDM_STATUS,
4445 .end = AP2MDM_STATUS,
4446 .name = "AP2MDM_STATUS",
4447 .flags = IORESOURCE_IO,
4448 },
4449 {
4450 .start = AP2MDM_PMIC_PWR_EN,
4451 .end = AP2MDM_PMIC_PWR_EN,
4452 .name = "AP2MDM_PMIC_PWR_EN",
4453 .flags = IORESOURCE_IO,
4454 },
4455 {
4456 .start = AP2MDM_KPDPWR_N,
4457 .end = AP2MDM_KPDPWR_N,
4458 .name = "AP2MDM_KPDPWR_N",
4459 .flags = IORESOURCE_IO,
4460 },
4461 {
4462 .start = AP2MDM_SOFT_RESET,
4463 .end = AP2MDM_SOFT_RESET,
4464 .name = "AP2MDM_SOFT_RESET",
4465 .flags = IORESOURCE_IO,
4466 },
Ameya Thakur43248fd2012-07-10 18:50:52 -07004467 {
4468 .start = USB_SW,
4469 .end = USB_SW,
4470 .name = "USB_SW",
4471 .flags = IORESOURCE_IO,
4472 },
Joel King0cbf5d82012-05-24 15:21:38 -07004473};
4474
Rohit Vaswanib1cc4932012-07-23 21:30:11 -07004475struct platform_device msm_gpio_device = {
4476 .name = "msmgpio",
4477 .id = -1,
4478};
4479
Joel King0cbf5d82012-05-24 15:21:38 -07004480struct platform_device mdm_sglte_device = {
4481 .name = "mdm2_modem",
4482 .id = -1,
4483 .num_resources = ARRAY_SIZE(sglte_resources),
4484 .resource = sglte_resources,
4485};
Arun Menond4837f62012-08-20 15:25:50 -07004486
4487struct platform_device *msm8960_vidc_device[] __initdata = {
4488 &msm_device_vidc
4489};
4490
4491void __init msm8960_add_vidc_device(void)
4492{
4493 if (cpu_is_msm8960ab()) {
4494 struct msm_vidc_platform_data *pdata;
4495 pdata = (struct msm_vidc_platform_data *)
4496 msm_device_vidc.dev.platform_data;
4497 pdata->vidc_bus_client_pdata = &vidc_pro_bus_client_data;
4498 }
4499 platform_add_devices(msm8960_vidc_device,
4500 ARRAY_SIZE(msm8960_vidc_device));
4501}