blob: 7d4f3b353fee1c035b8fe48530e8618cb168ce22 [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>
Srikanth Uyyala187ada82013-07-17 18:42:57 +053021#include <linux/avtimer.h>
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070022#include <asm/clkdev.h>
Jordan Crouse914de9b2012-07-09 13:49:46 -060023#include <mach/kgsl.h>
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070024#include <linux/android_pmem.h>
25#include <mach/irqs-8960.h>
Mayank Rana9f51f582011-08-04 18:35:59 +053026#include <mach/dma.h>
27#include <linux/dma-mapping.h>
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070028#include <mach/board.h>
29#include <mach/msm_iomap.h>
30#include <mach/msm_hsusb.h>
31#include <mach/msm_sps.h>
32#include <mach/rpm.h>
33#include <mach/msm_bus_board.h>
34#include <mach/msm_memtypes.h>
Eric Holmberg023d25c2012-03-01 12:27:55 -070035#include <mach/msm_smd.h>
Lucille Sylvester6e362412011-12-09 16:21:42 -070036#include <mach/msm_dcvs.h>
Laura Abbott532b2df2012-04-12 10:53:48 -070037#include <mach/msm_rtb.h>
Laura Abbott2ae8f362012-04-12 11:03:04 -070038#include <mach/msm_cache_dump.h>
Matt Wagantalld55b90f2012-02-23 23:27:44 -080039#include <mach/clk-provider.h>
Bhalchandra Gajare0e795c42011-08-15 18:10:30 -070040#include <sound/msm-dai-q6.h>
41#include <sound/apr_audio.h>
Joel Nidera1261942011-09-12 16:30:09 +030042#include <mach/msm_tsif.h>
Stepan Moskovchenko2b4b1cd2012-03-29 18:21:04 -070043#include <mach/msm_serial_hs_lite.h>
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070044#include "clock.h"
45#include "devices.h"
46#include "devices-msm8x60.h"
47#include "footswitch.h"
Jeff Ohlstein7e668552011-10-06 16:17:25 -070048#include "msm_watchdog.h"
Praveen Chidambaram78499012011-11-01 17:15:17 -060049#include "rpm_log.h"
Praveen Chidambaram7a712232011-10-28 13:39:45 -060050#include "rpm_stats.h"
Stephen Boydeb819882011-08-29 14:46:30 -070051#include "pil-q6v4.h"
52#include "scm-pas.h"
Praveen Chidambaram5c8adf22012-02-23 18:44:37 -070053#include <mach/msm_dcvs.h>
Laura Abbott0577d7b2012-04-17 11:14:30 -070054#include <mach/iommu_domains.h>
Arun Menond4837f62012-08-20 15:25:50 -070055#include <mach/socinfo.h>
Anji Jonnala4bf6c0c2013-04-16 17:07:52 +053056#include "pm.h"
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070057
58#ifdef CONFIG_MSM_MPM
Subhash Jadavani909e04f2012-04-12 10:52:50 +053059#include <mach/mpm.h>
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070060#endif
61#ifdef CONFIG_MSM_DSPS
62#include <mach/msm_dsps.h>
63#endif
64
65
66/* Address of GSBI blocks */
67#define MSM_GSBI1_PHYS 0x16000000
68#define MSM_GSBI2_PHYS 0x16100000
69#define MSM_GSBI3_PHYS 0x16200000
70#define MSM_GSBI4_PHYS 0x16300000
71#define MSM_GSBI5_PHYS 0x16400000
72#define MSM_GSBI6_PHYS 0x16500000
73#define MSM_GSBI7_PHYS 0x16600000
74#define MSM_GSBI8_PHYS 0x1A000000
75#define MSM_GSBI9_PHYS 0x1A100000
76#define MSM_GSBI10_PHYS 0x1A200000
77#define MSM_GSBI11_PHYS 0x12440000
78#define MSM_GSBI12_PHYS 0x12480000
79
Saket Saurabhc6cdc292013-02-13 10:54:53 +053080/* GSBI UART devices */
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070081#define MSM_UART2DM_PHYS (MSM_GSBI2_PHYS + 0x40000)
82#define MSM_UART5DM_PHYS (MSM_GSBI5_PHYS + 0x40000)
Mayank Rana9f51f582011-08-04 18:35:59 +053083#define MSM_UART6DM_PHYS (MSM_GSBI6_PHYS + 0x40000)
Stepan Moskovchenko2b4b1cd2012-03-29 18:21:04 -070084#define MSM_UART8DM_PHYS (MSM_GSBI8_PHYS + 0x40000)
Mayank Ranae009c922012-03-22 03:02:06 +053085#define MSM_UART9DM_PHYS (MSM_GSBI9_PHYS + 0x40000)
Saket Saurabhc6cdc292013-02-13 10:54:53 +053086#define MSM_UART10DM_PHYS (MSM_GSBI10_PHYS + 0x40000)
Saket Saurabh8cb97b82013-04-30 17:53:54 +053087#define MSM_UART11DM_PHYS (MSM_GSBI11_PHYS + 0x10000)
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070088
89/* GSBI QUP devices */
90#define MSM_GSBI1_QUP_PHYS (MSM_GSBI1_PHYS + 0x80000)
91#define MSM_GSBI2_QUP_PHYS (MSM_GSBI2_PHYS + 0x80000)
92#define MSM_GSBI3_QUP_PHYS (MSM_GSBI3_PHYS + 0x80000)
93#define MSM_GSBI4_QUP_PHYS (MSM_GSBI4_PHYS + 0x80000)
94#define MSM_GSBI5_QUP_PHYS (MSM_GSBI5_PHYS + 0x80000)
95#define MSM_GSBI6_QUP_PHYS (MSM_GSBI6_PHYS + 0x80000)
96#define MSM_GSBI7_QUP_PHYS (MSM_GSBI7_PHYS + 0x80000)
97#define MSM_GSBI8_QUP_PHYS (MSM_GSBI8_PHYS + 0x80000)
98#define MSM_GSBI9_QUP_PHYS (MSM_GSBI9_PHYS + 0x80000)
99#define MSM_GSBI10_QUP_PHYS (MSM_GSBI10_PHYS + 0x80000)
100#define MSM_GSBI11_QUP_PHYS (MSM_GSBI11_PHYS + 0x20000)
101#define MSM_GSBI12_QUP_PHYS (MSM_GSBI12_PHYS + 0x20000)
102#define MSM_QUP_SIZE SZ_4K
103
104#define MSM_PMIC1_SSBI_CMD_PHYS 0x00500000
105#define MSM_PMIC2_SSBI_CMD_PHYS 0x00C00000
106#define MSM_PMIC_SSBI_SIZE SZ_4K
107
Stepan Moskovchenkobe5b45a2011-10-17 19:33:34 -0700108#define MSM8960_HSUSB_PHYS 0x12500000
109#define MSM8960_HSUSB_SIZE SZ_4K
Anji Jonnala2a8bd312012-11-01 13:11:42 +0530110#define MSM8960_RPM_MASTER_STATS_BASE 0x10BB00
Stepan Moskovchenkobe5b45a2011-10-17 19:33:34 -0700111
Anji Jonnalae84292b2012-09-21 13:34:44 +0530112#define MSM8960_PC_CNTR_PHYS (MSM8960_IMEM_PHYS + 0x664)
113#define MSM8960_PC_CNTR_SIZE 0x40
114
Srikanth Uyyala187ada82013-07-17 18:42:57 +0530115/* avtimer */
116#define AVTIMER_MSW_PHYSICAL_ADDRESS 0x2800900C
117#define AVTIMER_LSW_PHYSICAL_ADDRESS 0x28009008
118
Anji Jonnalae84292b2012-09-21 13:34:44 +0530119static struct resource msm8960_resources_pccntr[] = {
120 {
121 .start = MSM8960_PC_CNTR_PHYS,
122 .end = MSM8960_PC_CNTR_PHYS + MSM8960_PC_CNTR_SIZE,
123 .flags = IORESOURCE_MEM,
124 },
125};
126
127struct platform_device msm8960_pc_cntr = {
128 .name = "pc-cntr",
129 .id = -1,
130 .num_resources = ARRAY_SIZE(msm8960_resources_pccntr),
131 .resource = msm8960_resources_pccntr,
132};
133
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700134static struct resource resources_otg[] = {
135 {
136 .start = MSM8960_HSUSB_PHYS,
137 .end = MSM8960_HSUSB_PHYS + MSM8960_HSUSB_SIZE,
138 .flags = IORESOURCE_MEM,
139 },
140 {
141 .start = USB1_HS_IRQ,
142 .end = USB1_HS_IRQ,
143 .flags = IORESOURCE_IRQ,
144 },
145};
146
Stepan Moskovchenko14aa6492011-08-08 15:15:01 -0700147struct platform_device msm8960_device_otg = {
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700148 .name = "msm_otg",
149 .id = -1,
150 .num_resources = ARRAY_SIZE(resources_otg),
151 .resource = resources_otg,
152 .dev = {
153 .coherent_dma_mask = 0xffffffff,
154 },
155};
156
157static struct resource resources_hsusb[] = {
158 {
159 .start = MSM8960_HSUSB_PHYS,
160 .end = MSM8960_HSUSB_PHYS + MSM8960_HSUSB_SIZE,
161 .flags = IORESOURCE_MEM,
162 },
163 {
164 .start = USB1_HS_IRQ,
165 .end = USB1_HS_IRQ,
166 .flags = IORESOURCE_IRQ,
167 },
168};
169
Stepan Moskovchenko14aa6492011-08-08 15:15:01 -0700170struct platform_device msm8960_device_gadget_peripheral = {
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700171 .name = "msm_hsusb",
172 .id = -1,
173 .num_resources = ARRAY_SIZE(resources_hsusb),
174 .resource = resources_hsusb,
175 .dev = {
176 .coherent_dma_mask = 0xffffffff,
177 },
178};
179
180static struct resource resources_hsusb_host[] = {
181 {
182 .start = MSM8960_HSUSB_PHYS,
183 .end = MSM8960_HSUSB_PHYS + MSM8960_HSUSB_SIZE - 1,
184 .flags = IORESOURCE_MEM,
185 },
186 {
187 .start = USB1_HS_IRQ,
188 .end = USB1_HS_IRQ,
189 .flags = IORESOURCE_IRQ,
190 },
191};
192
Vijayavardhan Vennapusaeb566482011-09-18 07:48:37 +0530193static u64 dma_mask = DMA_BIT_MASK(32);
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700194struct platform_device msm_device_hsusb_host = {
195 .name = "msm_hsusb_host",
196 .id = -1,
197 .num_resources = ARRAY_SIZE(resources_hsusb_host),
198 .resource = resources_hsusb_host,
199 .dev = {
200 .dma_mask = &dma_mask,
201 .coherent_dma_mask = 0xffffffff,
202 },
203};
204
Vijayavardhan Vennapusaeb566482011-09-18 07:48:37 +0530205static struct resource resources_hsic_host[] = {
206 {
Stepan Moskovchenko8e06ae62011-10-17 18:01:29 -0700207 .start = 0x12520000,
208 .end = 0x12520000 + SZ_4K - 1,
Vijayavardhan Vennapusaeb566482011-09-18 07:48:37 +0530209 .flags = IORESOURCE_MEM,
210 },
211 {
212 .start = USB_HSIC_IRQ,
213 .end = USB_HSIC_IRQ,
214 .flags = IORESOURCE_IRQ,
215 },
Vamsi Krishna34f01582011-12-14 19:54:42 -0800216 {
217 .start = MSM_GPIO_TO_INT(69),
218 .end = MSM_GPIO_TO_INT(69),
219 .name = "peripheral_status_irq",
220 .flags = IORESOURCE_IRQ,
221 },
Vijayavardhan Vennapusaeb566482011-09-18 07:48:37 +0530222};
223
224struct platform_device msm_device_hsic_host = {
225 .name = "msm_hsic_host",
226 .id = -1,
227 .num_resources = ARRAY_SIZE(resources_hsic_host),
228 .resource = resources_hsic_host,
229 .dev = {
230 .dma_mask = &dma_mask,
231 .coherent_dma_mask = DMA_BIT_MASK(32),
232 },
233};
234
Matt Wagantallbf430eb2012-03-22 11:45:49 -0700235struct platform_device msm8960_device_acpuclk = {
236 .name = "acpuclk-8960",
237 .id = -1,
238};
239
Patrick Daly6578e0c2012-07-19 18:50:02 -0700240struct platform_device msm8960ab_device_acpuclk = {
241 .name = "acpuclk-8960ab",
242 .id = -1,
243};
244
Mona Hossain11c03ac2011-10-26 12:42:10 -0700245#define SHARED_IMEM_TZ_BASE 0x2a03f720
246static struct resource tzlog_resources[] = {
247 {
248 .start = SHARED_IMEM_TZ_BASE,
249 .end = SHARED_IMEM_TZ_BASE + SZ_4K - 1,
250 .flags = IORESOURCE_MEM,
251 },
252};
253
254struct platform_device msm_device_tz_log = {
255 .name = "tz_log",
256 .id = 0,
257 .num_resources = ARRAY_SIZE(tzlog_resources),
258 .resource = tzlog_resources,
259};
260
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700261static struct resource resources_uart_gsbi2[] = {
262 {
263 .start = MSM8960_GSBI2_UARTDM_IRQ,
264 .end = MSM8960_GSBI2_UARTDM_IRQ,
265 .flags = IORESOURCE_IRQ,
266 },
267 {
268 .start = MSM_UART2DM_PHYS,
269 .end = MSM_UART2DM_PHYS + PAGE_SIZE - 1,
270 .name = "uartdm_resource",
271 .flags = IORESOURCE_MEM,
272 },
273 {
274 .start = MSM_GSBI2_PHYS,
275 .end = MSM_GSBI2_PHYS + PAGE_SIZE - 1,
276 .name = "gsbi_resource",
277 .flags = IORESOURCE_MEM,
278 },
279};
280
281struct platform_device msm8960_device_uart_gsbi2 = {
282 .name = "msm_serial_hsl",
283 .id = 0,
284 .num_resources = ARRAY_SIZE(resources_uart_gsbi2),
285 .resource = resources_uart_gsbi2,
286};
Mayank Rana9f51f582011-08-04 18:35:59 +0530287/* GSBI 6 used into UARTDM Mode */
288static struct resource msm_uart_dm6_resources[] = {
289 {
290 .start = MSM_UART6DM_PHYS,
291 .end = MSM_UART6DM_PHYS + PAGE_SIZE - 1,
292 .name = "uartdm_resource",
293 .flags = IORESOURCE_MEM,
294 },
295 {
296 .start = GSBI6_UARTDM_IRQ,
297 .end = GSBI6_UARTDM_IRQ,
298 .flags = IORESOURCE_IRQ,
299 },
300 {
301 .start = MSM_GSBI6_PHYS,
302 .end = MSM_GSBI6_PHYS + 4 - 1,
303 .name = "gsbi_resource",
304 .flags = IORESOURCE_MEM,
305 },
306 {
307 .start = DMOV_HSUART_GSBI6_TX_CHAN,
308 .end = DMOV_HSUART_GSBI6_RX_CHAN,
309 .name = "uartdm_channels",
310 .flags = IORESOURCE_DMA,
311 },
312 {
313 .start = DMOV_HSUART_GSBI6_TX_CRCI,
314 .end = DMOV_HSUART_GSBI6_RX_CRCI,
315 .name = "uartdm_crci",
316 .flags = IORESOURCE_DMA,
317 },
318};
319static u64 msm_uart_dm6_dma_mask = DMA_BIT_MASK(32);
320struct platform_device msm_device_uart_dm6 = {
321 .name = "msm_serial_hs",
322 .id = 0,
323 .num_resources = ARRAY_SIZE(msm_uart_dm6_resources),
324 .resource = msm_uart_dm6_resources,
325 .dev = {
326 .dma_mask = &msm_uart_dm6_dma_mask,
327 .coherent_dma_mask = DMA_BIT_MASK(32),
328 },
329};
Mayank Rana1f02d952012-07-04 19:11:20 +0530330
331/* GSBI 8 used into UARTDM Mode */
332static struct resource msm_uart_dm8_resources[] = {
333 {
334 .start = MSM_UART8DM_PHYS,
335 .end = MSM_UART8DM_PHYS + PAGE_SIZE - 1,
336 .name = "uartdm_resource",
337 .flags = IORESOURCE_MEM,
338 },
339 {
340 .start = GSBI8_UARTDM_IRQ,
341 .end = GSBI8_UARTDM_IRQ,
342 .flags = IORESOURCE_IRQ,
343 },
344 {
345 .start = MSM_GSBI8_PHYS,
346 .end = MSM_GSBI8_PHYS + 4 - 1,
347 .name = "gsbi_resource",
348 .flags = IORESOURCE_MEM,
349 },
350 {
351 .start = DMOV_HSUART_GSBI8_TX_CHAN,
352 .end = DMOV_HSUART_GSBI8_RX_CHAN,
353 .name = "uartdm_channels",
354 .flags = IORESOURCE_DMA,
355 },
356 {
357 .start = DMOV_HSUART_GSBI8_TX_CRCI,
358 .end = DMOV_HSUART_GSBI8_RX_CRCI,
359 .name = "uartdm_crci",
360 .flags = IORESOURCE_DMA,
361 },
362};
363
364static u64 msm_uart_dm8_dma_mask = DMA_BIT_MASK(32);
365struct platform_device msm_device_uart_dm8 = {
366 .name = "msm_serial_hs",
367 .id = 2,
368 .num_resources = ARRAY_SIZE(msm_uart_dm8_resources),
369 .resource = msm_uart_dm8_resources,
370 .dev = {
371 .dma_mask = &msm_uart_dm8_dma_mask,
372 .coherent_dma_mask = DMA_BIT_MASK(32),
373 },
374};
375
Mayank Ranae009c922012-03-22 03:02:06 +0530376/*
377 * GSBI 9 used into UARTDM Mode
378 * For 8960 Fusion 2.2 Primary IPC
379 */
380static struct resource msm_uart_dm9_resources[] = {
381 {
382 .start = MSM_UART9DM_PHYS,
383 .end = MSM_UART9DM_PHYS + PAGE_SIZE - 1,
384 .name = "uartdm_resource",
385 .flags = IORESOURCE_MEM,
386 },
387 {
388 .start = GSBI9_UARTDM_IRQ,
389 .end = GSBI9_UARTDM_IRQ,
390 .flags = IORESOURCE_IRQ,
391 },
392 {
393 .start = MSM_GSBI9_PHYS,
394 .end = MSM_GSBI9_PHYS + 4 - 1,
395 .name = "gsbi_resource",
396 .flags = IORESOURCE_MEM,
397 },
398 {
399 .start = DMOV_HSUART_GSBI9_TX_CHAN,
400 .end = DMOV_HSUART_GSBI9_RX_CHAN,
401 .name = "uartdm_channels",
402 .flags = IORESOURCE_DMA,
403 },
404 {
405 .start = DMOV_HSUART_GSBI9_TX_CRCI,
406 .end = DMOV_HSUART_GSBI9_RX_CRCI,
407 .name = "uartdm_crci",
408 .flags = IORESOURCE_DMA,
409 },
410};
411static u64 msm_uart_dm9_dma_mask = DMA_BIT_MASK(32);
412struct platform_device msm_device_uart_dm9 = {
413 .name = "msm_serial_hs",
414 .id = 1,
415 .num_resources = ARRAY_SIZE(msm_uart_dm9_resources),
416 .resource = msm_uart_dm9_resources,
417 .dev = {
418 .dma_mask = &msm_uart_dm9_dma_mask,
419 .coherent_dma_mask = DMA_BIT_MASK(32),
420 },
421};
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700422
Saket Saurabhc6cdc292013-02-13 10:54:53 +0530423/* GSBI10 used for serial console on 8930 SGLTE*/
424static struct msm_serial_hslite_platform_data uart_gsbi10_pdata;
425
426static struct resource resources_uart_gsbi10[] = {
427 {
428 .start = GSBI10_UARTDM_IRQ,
429 .end = GSBI10_UARTDM_IRQ,
430 .flags = IORESOURCE_IRQ,
431 },
432 {
433 .start = MSM_UART10DM_PHYS,
434 .end = MSM_UART10DM_PHYS + PAGE_SIZE - 1,
435 .name = "uartdm_resource",
436 .flags = IORESOURCE_MEM,
437 },
438 {
439 .start = MSM_GSBI10_PHYS,
440 .end = MSM_GSBI10_PHYS + PAGE_SIZE - 1,
441 .name = "gsbi_resource",
442 .flags = IORESOURCE_MEM,
443 },
444};
445
446struct platform_device msm8930_device_uart_gsbi10 = {
447 .name = "msm_serial_hsl",
448 .id = 1,
449 .num_resources = ARRAY_SIZE(resources_uart_gsbi10),
450 .resource = resources_uart_gsbi10,
451 .dev.platform_data = &uart_gsbi10_pdata,
452};
453
Saket Saurabh8cb97b82013-04-30 17:53:54 +0530454static struct msm_serial_hslite_platform_data uart_gsbi11_pdata;
455
456static struct resource resources_uart_gsbi11[] = {
457 {
458 .start = GSBI11_UARTDM_IRQ,
459 .end = GSBI11_UARTDM_IRQ,
460 .flags = IORESOURCE_IRQ,
461 },
462 {
463 .start = MSM_UART11DM_PHYS,
464 .end = MSM_UART11DM_PHYS + PAGE_SIZE - 1,
465 .name = "uartdm_resource",
466 .flags = IORESOURCE_MEM,
467 },
468 {
469 .start = MSM_GSBI11_PHYS,
470 .end = MSM_GSBI11_PHYS + PAGE_SIZE - 1,
471 .name = "gsbi_resource",
472 .flags = IORESOURCE_MEM,
473 },
474};
475
476struct platform_device msm8930_device_uart_gsbi11 = {
477 .name = "msm_serial_hsl",
478 .id = 2,
479 .num_resources = ARRAY_SIZE(resources_uart_gsbi11),
480 .resource = resources_uart_gsbi11,
481 .dev.platform_data = &uart_gsbi11_pdata,
482};
483
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700484static struct resource resources_uart_gsbi5[] = {
485 {
486 .start = GSBI5_UARTDM_IRQ,
487 .end = GSBI5_UARTDM_IRQ,
488 .flags = IORESOURCE_IRQ,
489 },
490 {
491 .start = MSM_UART5DM_PHYS,
492 .end = MSM_UART5DM_PHYS + PAGE_SIZE - 1,
493 .name = "uartdm_resource",
494 .flags = IORESOURCE_MEM,
495 },
496 {
497 .start = MSM_GSBI5_PHYS,
498 .end = MSM_GSBI5_PHYS + PAGE_SIZE - 1,
499 .name = "gsbi_resource",
500 .flags = IORESOURCE_MEM,
501 },
502};
503
504struct platform_device msm8960_device_uart_gsbi5 = {
505 .name = "msm_serial_hsl",
506 .id = 0,
507 .num_resources = ARRAY_SIZE(resources_uart_gsbi5),
508 .resource = resources_uart_gsbi5,
509};
Stepan Moskovchenko2b4b1cd2012-03-29 18:21:04 -0700510
511static struct msm_serial_hslite_platform_data uart_gsbi8_pdata = {
512 .line = 0,
513};
514
515static struct resource resources_uart_gsbi8[] = {
516 {
517 .start = GSBI8_UARTDM_IRQ,
518 .end = GSBI8_UARTDM_IRQ,
519 .flags = IORESOURCE_IRQ,
520 },
521 {
522 .start = MSM_UART8DM_PHYS,
523 .end = MSM_UART8DM_PHYS + PAGE_SIZE - 1,
524 .name = "uartdm_resource",
525 .flags = IORESOURCE_MEM,
526 },
527 {
528 .start = MSM_GSBI8_PHYS,
529 .end = MSM_GSBI8_PHYS + PAGE_SIZE - 1,
530 .name = "gsbi_resource",
531 .flags = IORESOURCE_MEM,
532 },
533};
534
535struct platform_device msm8960_device_uart_gsbi8 = {
536 .name = "msm_serial_hsl",
537 .id = 1,
538 .num_resources = ARRAY_SIZE(resources_uart_gsbi8),
539 .resource = resources_uart_gsbi8,
540 .dev.platform_data = &uart_gsbi8_pdata,
541};
542
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700543/* MSM Video core device */
544#ifdef CONFIG_MSM_BUS_SCALING
545static struct msm_bus_vectors vidc_init_vectors[] = {
546 {
547 .src = MSM_BUS_MASTER_HD_CODEC_PORT0,
548 .dst = MSM_BUS_SLAVE_EBI_CH0,
549 .ab = 0,
550 .ib = 0,
551 },
552 {
553 .src = MSM_BUS_MASTER_HD_CODEC_PORT1,
554 .dst = MSM_BUS_SLAVE_EBI_CH0,
555 .ab = 0,
556 .ib = 0,
557 },
558 {
559 .src = MSM_BUS_MASTER_AMPSS_M0,
560 .dst = MSM_BUS_SLAVE_EBI_CH0,
561 .ab = 0,
562 .ib = 0,
563 },
564 {
565 .src = MSM_BUS_MASTER_AMPSS_M0,
566 .dst = MSM_BUS_SLAVE_EBI_CH0,
567 .ab = 0,
568 .ib = 0,
569 },
570};
571static struct msm_bus_vectors vidc_venc_vga_vectors[] = {
572 {
573 .src = MSM_BUS_MASTER_HD_CODEC_PORT0,
574 .dst = MSM_BUS_SLAVE_EBI_CH0,
575 .ab = 54525952,
576 .ib = 436207616,
577 },
578 {
579 .src = MSM_BUS_MASTER_HD_CODEC_PORT1,
580 .dst = MSM_BUS_SLAVE_EBI_CH0,
581 .ab = 72351744,
582 .ib = 289406976,
583 },
584 {
585 .src = MSM_BUS_MASTER_AMPSS_M0,
586 .dst = MSM_BUS_SLAVE_EBI_CH0,
587 .ab = 500000,
588 .ib = 1000000,
589 },
590 {
591 .src = MSM_BUS_MASTER_AMPSS_M0,
592 .dst = MSM_BUS_SLAVE_EBI_CH0,
593 .ab = 500000,
594 .ib = 1000000,
595 },
596};
597static struct msm_bus_vectors vidc_vdec_vga_vectors[] = {
598 {
599 .src = MSM_BUS_MASTER_HD_CODEC_PORT0,
600 .dst = MSM_BUS_SLAVE_EBI_CH0,
601 .ab = 40894464,
602 .ib = 327155712,
603 },
604 {
605 .src = MSM_BUS_MASTER_HD_CODEC_PORT1,
606 .dst = MSM_BUS_SLAVE_EBI_CH0,
607 .ab = 48234496,
608 .ib = 192937984,
609 },
610 {
611 .src = MSM_BUS_MASTER_AMPSS_M0,
612 .dst = MSM_BUS_SLAVE_EBI_CH0,
613 .ab = 500000,
614 .ib = 2000000,
615 },
616 {
617 .src = MSM_BUS_MASTER_AMPSS_M0,
618 .dst = MSM_BUS_SLAVE_EBI_CH0,
619 .ab = 500000,
620 .ib = 2000000,
621 },
622};
623static struct msm_bus_vectors vidc_venc_720p_vectors[] = {
624 {
625 .src = MSM_BUS_MASTER_HD_CODEC_PORT0,
626 .dst = MSM_BUS_SLAVE_EBI_CH0,
627 .ab = 163577856,
628 .ib = 1308622848,
629 },
630 {
631 .src = MSM_BUS_MASTER_HD_CODEC_PORT1,
632 .dst = MSM_BUS_SLAVE_EBI_CH0,
633 .ab = 219152384,
634 .ib = 876609536,
635 },
636 {
637 .src = MSM_BUS_MASTER_AMPSS_M0,
638 .dst = MSM_BUS_SLAVE_EBI_CH0,
639 .ab = 1750000,
640 .ib = 3500000,
641 },
642 {
643 .src = MSM_BUS_MASTER_AMPSS_M0,
644 .dst = MSM_BUS_SLAVE_EBI_CH0,
645 .ab = 1750000,
646 .ib = 3500000,
647 },
648};
649static struct msm_bus_vectors vidc_vdec_720p_vectors[] = {
650 {
651 .src = MSM_BUS_MASTER_HD_CODEC_PORT0,
652 .dst = MSM_BUS_SLAVE_EBI_CH0,
653 .ab = 121634816,
654 .ib = 973078528,
655 },
656 {
657 .src = MSM_BUS_MASTER_HD_CODEC_PORT1,
658 .dst = MSM_BUS_SLAVE_EBI_CH0,
659 .ab = 155189248,
660 .ib = 620756992,
661 },
662 {
663 .src = MSM_BUS_MASTER_AMPSS_M0,
664 .dst = MSM_BUS_SLAVE_EBI_CH0,
665 .ab = 1750000,
666 .ib = 7000000,
667 },
668 {
669 .src = MSM_BUS_MASTER_AMPSS_M0,
670 .dst = MSM_BUS_SLAVE_EBI_CH0,
671 .ab = 1750000,
672 .ib = 7000000,
673 },
674};
675static struct msm_bus_vectors vidc_venc_1080p_vectors[] = {
676 {
677 .src = MSM_BUS_MASTER_HD_CODEC_PORT0,
678 .dst = MSM_BUS_SLAVE_EBI_CH0,
679 .ab = 372244480,
Gopikrishnaiah Anandan3e6bdda2011-11-04 16:05:04 -0700680 .ib = 2560000000U,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700681 },
682 {
683 .src = MSM_BUS_MASTER_HD_CODEC_PORT1,
684 .dst = MSM_BUS_SLAVE_EBI_CH0,
685 .ab = 501219328,
Gopikrishnaiah Anandan3e6bdda2011-11-04 16:05:04 -0700686 .ib = 2560000000U,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700687 },
688 {
689 .src = MSM_BUS_MASTER_AMPSS_M0,
690 .dst = MSM_BUS_SLAVE_EBI_CH0,
691 .ab = 2500000,
692 .ib = 5000000,
693 },
694 {
695 .src = MSM_BUS_MASTER_AMPSS_M0,
696 .dst = MSM_BUS_SLAVE_EBI_CH0,
697 .ab = 2500000,
698 .ib = 5000000,
699 },
700};
701static struct msm_bus_vectors vidc_vdec_1080p_vectors[] = {
702 {
703 .src = MSM_BUS_MASTER_HD_CODEC_PORT0,
704 .dst = MSM_BUS_SLAVE_EBI_CH0,
705 .ab = 222298112,
Gopikrishnaiah Anandan3e6bdda2011-11-04 16:05:04 -0700706 .ib = 2560000000U,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700707 },
708 {
709 .src = MSM_BUS_MASTER_HD_CODEC_PORT1,
710 .dst = MSM_BUS_SLAVE_EBI_CH0,
711 .ab = 330301440,
Gopikrishnaiah Anandan3e6bdda2011-11-04 16:05:04 -0700712 .ib = 2560000000U,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700713 },
714 {
715 .src = MSM_BUS_MASTER_AMPSS_M0,
716 .dst = MSM_BUS_SLAVE_EBI_CH0,
717 .ab = 2500000,
718 .ib = 700000000,
719 },
720 {
721 .src = MSM_BUS_MASTER_AMPSS_M0,
722 .dst = MSM_BUS_SLAVE_EBI_CH0,
723 .ab = 2500000,
724 .ib = 10000000,
725 },
726};
Deva Ramasubramanian837ae362012-05-12 23:26:53 -0700727static struct msm_bus_vectors vidc_venc_1080p_turbo_vectors[] = {
728 {
729 .src = MSM_BUS_MASTER_HD_CODEC_PORT0,
730 .dst = MSM_BUS_SLAVE_EBI_CH0,
731 .ab = 222298112,
732 .ib = 3522000000U,
733 },
734 {
735 .src = MSM_BUS_MASTER_HD_CODEC_PORT1,
736 .dst = MSM_BUS_SLAVE_EBI_CH0,
737 .ab = 330301440,
738 .ib = 3522000000U,
739 },
740 {
741 .src = MSM_BUS_MASTER_AMPSS_M0,
742 .dst = MSM_BUS_SLAVE_EBI_CH0,
743 .ab = 2500000,
744 .ib = 700000000,
745 },
746 {
747 .src = MSM_BUS_MASTER_AMPSS_M0,
748 .dst = MSM_BUS_SLAVE_EBI_CH0,
749 .ab = 2500000,
750 .ib = 10000000,
751 },
752};
753static struct msm_bus_vectors vidc_vdec_1080p_turbo_vectors[] = {
754 {
755 .src = MSM_BUS_MASTER_HD_CODEC_PORT0,
756 .dst = MSM_BUS_SLAVE_EBI_CH0,
757 .ab = 222298112,
758 .ib = 3522000000U,
759 },
760 {
761 .src = MSM_BUS_MASTER_HD_CODEC_PORT1,
762 .dst = MSM_BUS_SLAVE_EBI_CH0,
763 .ab = 330301440,
764 .ib = 3522000000U,
765 },
766 {
767 .src = MSM_BUS_MASTER_AMPSS_M0,
768 .dst = MSM_BUS_SLAVE_EBI_CH0,
769 .ab = 2500000,
770 .ib = 700000000,
771 },
772 {
773 .src = MSM_BUS_MASTER_AMPSS_M0,
774 .dst = MSM_BUS_SLAVE_EBI_CH0,
775 .ab = 2500000,
776 .ib = 10000000,
777 },
778};
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700779
780static struct msm_bus_paths vidc_bus_client_config[] = {
781 {
782 ARRAY_SIZE(vidc_init_vectors),
783 vidc_init_vectors,
784 },
785 {
786 ARRAY_SIZE(vidc_venc_vga_vectors),
787 vidc_venc_vga_vectors,
788 },
789 {
790 ARRAY_SIZE(vidc_vdec_vga_vectors),
791 vidc_vdec_vga_vectors,
792 },
793 {
794 ARRAY_SIZE(vidc_venc_720p_vectors),
795 vidc_venc_720p_vectors,
796 },
797 {
798 ARRAY_SIZE(vidc_vdec_720p_vectors),
799 vidc_vdec_720p_vectors,
800 },
801 {
802 ARRAY_SIZE(vidc_venc_1080p_vectors),
803 vidc_venc_1080p_vectors,
804 },
805 {
806 ARRAY_SIZE(vidc_vdec_1080p_vectors),
807 vidc_vdec_1080p_vectors,
808 },
Deva Ramasubramanian837ae362012-05-12 23:26:53 -0700809 {
810 ARRAY_SIZE(vidc_venc_1080p_turbo_vectors),
Arun Menond4837f62012-08-20 15:25:50 -0700811 vidc_venc_1080p_turbo_vectors,
Deva Ramasubramanian837ae362012-05-12 23:26:53 -0700812 },
813 {
814 ARRAY_SIZE(vidc_vdec_1080p_turbo_vectors),
815 vidc_vdec_1080p_turbo_vectors,
816 },
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700817};
818
819static struct msm_bus_scale_pdata vidc_bus_client_data = {
820 vidc_bus_client_config,
821 ARRAY_SIZE(vidc_bus_client_config),
822 .name = "vidc",
823};
Arun Menond4837f62012-08-20 15:25:50 -0700824
825static struct msm_bus_vectors vidc_pro_init_vectors[] = {
826 {
827 .src = MSM_BUS_MASTER_VIDEO_ENC,
828 .dst = MSM_BUS_SLAVE_EBI_CH0,
829 .ab = 0,
830 .ib = 0,
831 },
832 {
833 .src = MSM_BUS_MASTER_VIDEO_DEC,
834 .dst = MSM_BUS_SLAVE_EBI_CH0,
835 .ab = 0,
836 .ib = 0,
837 },
838 {
839 .src = MSM_BUS_MASTER_AMPSS_M0,
840 .dst = MSM_BUS_SLAVE_EBI_CH0,
841 .ab = 0,
842 .ib = 0,
843 },
844 {
845 .src = MSM_BUS_MASTER_AMPSS_M0,
846 .dst = MSM_BUS_SLAVE_EBI_CH0,
847 .ab = 0,
848 .ib = 0,
849 },
850};
851static struct msm_bus_vectors vidc_pro_venc_vga_vectors[] = {
852 {
853 .src = MSM_BUS_MASTER_VIDEO_ENC,
854 .dst = MSM_BUS_SLAVE_EBI_CH0,
855 .ab = 54525952,
856 .ib = 436207616,
857 },
858 {
859 .src = MSM_BUS_MASTER_VIDEO_DEC,
860 .dst = MSM_BUS_SLAVE_EBI_CH0,
861 .ab = 72351744,
862 .ib = 289406976,
863 },
864 {
865 .src = MSM_BUS_MASTER_AMPSS_M0,
866 .dst = MSM_BUS_SLAVE_EBI_CH0,
867 .ab = 500000,
868 .ib = 1000000,
869 },
870 {
871 .src = MSM_BUS_MASTER_AMPSS_M0,
872 .dst = MSM_BUS_SLAVE_EBI_CH0,
873 .ab = 500000,
874 .ib = 1000000,
875 },
876};
877static struct msm_bus_vectors vidc_pro_vdec_vga_vectors[] = {
878 {
879 .src = MSM_BUS_MASTER_VIDEO_ENC,
880 .dst = MSM_BUS_SLAVE_EBI_CH0,
881 .ab = 40894464,
882 .ib = 327155712,
883 },
884 {
885 .src = MSM_BUS_MASTER_VIDEO_DEC,
886 .dst = MSM_BUS_SLAVE_EBI_CH0,
887 .ab = 48234496,
888 .ib = 192937984,
889 },
890 {
891 .src = MSM_BUS_MASTER_AMPSS_M0,
892 .dst = MSM_BUS_SLAVE_EBI_CH0,
893 .ab = 500000,
894 .ib = 2000000,
895 },
896 {
897 .src = MSM_BUS_MASTER_AMPSS_M0,
898 .dst = MSM_BUS_SLAVE_EBI_CH0,
899 .ab = 500000,
900 .ib = 2000000,
901 },
902};
903static struct msm_bus_vectors vidc_pro_venc_720p_vectors[] = {
904 {
905 .src = MSM_BUS_MASTER_VIDEO_ENC,
906 .dst = MSM_BUS_SLAVE_EBI_CH0,
907 .ab = 163577856,
908 .ib = 1308622848,
909 },
910 {
911 .src = MSM_BUS_MASTER_VIDEO_DEC,
912 .dst = MSM_BUS_SLAVE_EBI_CH0,
913 .ab = 219152384,
914 .ib = 876609536,
915 },
916 {
917 .src = MSM_BUS_MASTER_AMPSS_M0,
918 .dst = MSM_BUS_SLAVE_EBI_CH0,
919 .ab = 1750000,
920 .ib = 3500000,
921 },
922 {
923 .src = MSM_BUS_MASTER_AMPSS_M0,
924 .dst = MSM_BUS_SLAVE_EBI_CH0,
925 .ab = 1750000,
926 .ib = 3500000,
927 },
928};
929static struct msm_bus_vectors vidc_pro_vdec_720p_vectors[] = {
930 {
931 .src = MSM_BUS_MASTER_VIDEO_ENC,
932 .dst = MSM_BUS_SLAVE_EBI_CH0,
933 .ab = 121634816,
934 .ib = 973078528,
935 },
936 {
937 .src = MSM_BUS_MASTER_VIDEO_DEC,
938 .dst = MSM_BUS_SLAVE_EBI_CH0,
939 .ab = 155189248,
940 .ib = 620756992,
941 },
942 {
943 .src = MSM_BUS_MASTER_AMPSS_M0,
944 .dst = MSM_BUS_SLAVE_EBI_CH0,
945 .ab = 1750000,
946 .ib = 7000000,
947 },
948 {
949 .src = MSM_BUS_MASTER_AMPSS_M0,
950 .dst = MSM_BUS_SLAVE_EBI_CH0,
951 .ab = 1750000,
952 .ib = 7000000,
953 },
954};
955static struct msm_bus_vectors vidc_pro_venc_1080p_vectors[] = {
956 {
957 .src = MSM_BUS_MASTER_VIDEO_ENC,
958 .dst = MSM_BUS_SLAVE_EBI_CH0,
959 .ab = 372244480,
960 .ib = 2560000000U,
961 },
962 {
963 .src = MSM_BUS_MASTER_VIDEO_DEC,
964 .dst = MSM_BUS_SLAVE_EBI_CH0,
965 .ab = 501219328,
966 .ib = 2560000000U,
967 },
968 {
969 .src = MSM_BUS_MASTER_AMPSS_M0,
970 .dst = MSM_BUS_SLAVE_EBI_CH0,
971 .ab = 2500000,
972 .ib = 5000000,
973 },
974 {
975 .src = MSM_BUS_MASTER_AMPSS_M0,
976 .dst = MSM_BUS_SLAVE_EBI_CH0,
977 .ab = 2500000,
978 .ib = 5000000,
979 },
980};
981static struct msm_bus_vectors vidc_pro_vdec_1080p_vectors[] = {
982 {
983 .src = MSM_BUS_MASTER_VIDEO_ENC,
984 .dst = MSM_BUS_SLAVE_EBI_CH0,
985 .ab = 222298112,
986 .ib = 2560000000U,
987 },
988 {
989 .src = MSM_BUS_MASTER_VIDEO_DEC,
990 .dst = MSM_BUS_SLAVE_EBI_CH0,
991 .ab = 330301440,
992 .ib = 2560000000U,
993 },
994 {
995 .src = MSM_BUS_MASTER_AMPSS_M0,
996 .dst = MSM_BUS_SLAVE_EBI_CH0,
997 .ab = 2500000,
998 .ib = 700000000,
999 },
1000 {
1001 .src = MSM_BUS_MASTER_AMPSS_M0,
1002 .dst = MSM_BUS_SLAVE_EBI_CH0,
1003 .ab = 2500000,
1004 .ib = 10000000,
1005 },
1006};
1007static struct msm_bus_vectors vidc_pro_venc_1080p_turbo_vectors[] = {
1008 {
1009 .src = MSM_BUS_MASTER_VIDEO_ENC,
1010 .dst = MSM_BUS_SLAVE_EBI_CH0,
1011 .ab = 222298112,
1012 .ib = 3522000000U,
1013 },
1014 {
1015 .src = MSM_BUS_MASTER_VIDEO_DEC,
1016 .dst = MSM_BUS_SLAVE_EBI_CH0,
1017 .ab = 330301440,
1018 .ib = 3522000000U,
1019 },
1020 {
1021 .src = MSM_BUS_MASTER_AMPSS_M0,
1022 .dst = MSM_BUS_SLAVE_EBI_CH0,
1023 .ab = 2500000,
1024 .ib = 700000000,
1025 },
1026 {
1027 .src = MSM_BUS_MASTER_AMPSS_M0,
1028 .dst = MSM_BUS_SLAVE_EBI_CH0,
1029 .ab = 2500000,
1030 .ib = 10000000,
1031 },
1032};
1033static struct msm_bus_vectors vidc_pro_vdec_1080p_turbo_vectors[] = {
1034 {
1035 .src = MSM_BUS_MASTER_VIDEO_ENC,
1036 .dst = MSM_BUS_SLAVE_EBI_CH0,
1037 .ab = 222298112,
1038 .ib = 3522000000U,
1039 },
1040 {
1041 .src = MSM_BUS_MASTER_VIDEO_DEC,
1042 .dst = MSM_BUS_SLAVE_EBI_CH0,
1043 .ab = 330301440,
1044 .ib = 3522000000U,
1045 },
1046 {
1047 .src = MSM_BUS_MASTER_AMPSS_M0,
1048 .dst = MSM_BUS_SLAVE_EBI_CH0,
1049 .ab = 2500000,
1050 .ib = 700000000,
1051 },
1052 {
1053 .src = MSM_BUS_MASTER_AMPSS_M0,
1054 .dst = MSM_BUS_SLAVE_EBI_CH0,
1055 .ab = 2500000,
1056 .ib = 10000000,
1057 },
1058};
1059
1060static struct msm_bus_paths vidc_pro_bus_client_config[] = {
1061 {
1062 ARRAY_SIZE(vidc_pro_init_vectors),
1063 vidc_pro_init_vectors,
1064 },
1065 {
1066 ARRAY_SIZE(vidc_pro_venc_vga_vectors),
1067 vidc_pro_venc_vga_vectors,
1068 },
1069 {
1070 ARRAY_SIZE(vidc_pro_vdec_vga_vectors),
1071 vidc_pro_vdec_vga_vectors,
1072 },
1073 {
1074 ARRAY_SIZE(vidc_pro_venc_720p_vectors),
1075 vidc_pro_venc_720p_vectors,
1076 },
1077 {
1078 ARRAY_SIZE(vidc_pro_vdec_720p_vectors),
1079 vidc_pro_vdec_720p_vectors,
1080 },
1081 {
1082 ARRAY_SIZE(vidc_pro_venc_1080p_vectors),
1083 vidc_pro_venc_1080p_vectors,
1084 },
1085 {
1086 ARRAY_SIZE(vidc_pro_vdec_1080p_vectors),
1087 vidc_pro_vdec_1080p_vectors,
1088 },
1089 {
1090 ARRAY_SIZE(vidc_pro_venc_1080p_turbo_vectors),
1091 vidc_pro_venc_1080p_turbo_vectors,
1092 },
1093 {
1094 ARRAY_SIZE(vidc_vdec_1080p_turbo_vectors),
1095 vidc_pro_vdec_1080p_turbo_vectors,
1096 },
1097};
1098
1099static struct msm_bus_scale_pdata vidc_pro_bus_client_data = {
1100 vidc_pro_bus_client_config,
1101 ARRAY_SIZE(vidc_bus_client_config),
1102 .name = "vidc",
1103};
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001104#endif
1105
Mona Hossain9c430e32011-07-27 11:04:47 -07001106#ifdef CONFIG_HW_RANDOM_MSM
1107/* PRNG device */
1108#define MSM_PRNG_PHYS 0x1A500000
1109static struct resource rng_resources = {
1110 .flags = IORESOURCE_MEM,
1111 .start = MSM_PRNG_PHYS,
1112 .end = MSM_PRNG_PHYS + SZ_512 - 1,
1113};
1114
1115struct platform_device msm_device_rng = {
1116 .name = "msm_rng",
1117 .id = 0,
1118 .num_resources = 1,
1119 .resource = &rng_resources,
1120};
1121#endif
1122
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001123#define MSM_VIDC_BASE_PHYS 0x04400000
1124#define MSM_VIDC_BASE_SIZE 0x00100000
1125
1126static struct resource msm_device_vidc_resources[] = {
1127 {
1128 .start = MSM_VIDC_BASE_PHYS,
1129 .end = MSM_VIDC_BASE_PHYS + MSM_VIDC_BASE_SIZE - 1,
1130 .flags = IORESOURCE_MEM,
1131 },
1132 {
1133 .start = VCODEC_IRQ,
1134 .end = VCODEC_IRQ,
1135 .flags = IORESOURCE_IRQ,
1136 },
1137};
1138
1139struct msm_vidc_platform_data vidc_platform_data = {
1140#ifdef CONFIG_MSM_BUS_SCALING
1141 .vidc_bus_client_pdata = &vidc_bus_client_data,
1142#endif
Deepak Koturcb4f6722011-10-31 14:06:57 -07001143#ifdef CONFIG_MSM_MULTIMEDIA_USE_ION
Olav Hauganb5be7992011-11-18 14:29:02 -08001144 .memtype = ION_CP_MM_HEAP_ID,
Deepak Koturcb4f6722011-10-31 14:06:57 -07001145 .enable_ion = 1,
Deepak kotur5f10b272012-03-15 22:01:39 -07001146 .cp_enabled = 1,
Deepak Koturcb4f6722011-10-31 14:06:57 -07001147#else
Deepak Kotur12301a72011-11-09 18:30:29 -08001148 .memtype = MEMTYPE_EBI1,
Deepak Koturcb4f6722011-10-31 14:06:57 -07001149 .enable_ion = 0,
1150#endif
Deepika Pepakayalabebc7622011-12-01 15:13:43 -08001151 .disable_dmx = 0,
Rajeshwar Kurapatyc155c352011-12-17 06:35:32 +05301152 .disable_fullhd = 0,
Mohan Kumar Gubbihalli Lachma Naiked9dc912012-03-01 19:11:14 -08001153 .cont_mode_dpb_count = 18,
Riaz Rahaman84f8c682012-05-30 13:32:10 +05301154 .fw_addr = 0x9fe00000,
Deepak Verma587c98e2013-02-01 22:47:49 +05301155 .enable_sec_metadata = 0,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001156};
1157
1158struct platform_device msm_device_vidc = {
1159 .name = "msm_vidc",
1160 .id = 0,
1161 .num_resources = ARRAY_SIZE(msm_device_vidc_resources),
1162 .resource = msm_device_vidc_resources,
1163 .dev = {
1164 .platform_data = &vidc_platform_data,
1165 },
1166};
1167
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001168#define MSM_SDC1_BASE 0x12400000
1169#define MSM_SDC1_DML_BASE (MSM_SDC1_BASE + 0x800)
1170#define MSM_SDC1_BAM_BASE (MSM_SDC1_BASE + 0x2000)
1171#define MSM_SDC2_BASE 0x12140000
1172#define MSM_SDC2_DML_BASE (MSM_SDC2_BASE + 0x800)
1173#define MSM_SDC2_BAM_BASE (MSM_SDC2_BASE + 0x2000)
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001174#define MSM_SDC3_BASE 0x12180000
1175#define MSM_SDC3_DML_BASE (MSM_SDC3_BASE + 0x800)
1176#define MSM_SDC3_BAM_BASE (MSM_SDC3_BASE + 0x2000)
1177#define MSM_SDC4_BASE 0x121C0000
1178#define MSM_SDC4_DML_BASE (MSM_SDC4_BASE + 0x800)
1179#define MSM_SDC4_BAM_BASE (MSM_SDC4_BASE + 0x2000)
1180#define MSM_SDC5_BASE 0x12200000
1181#define MSM_SDC5_DML_BASE (MSM_SDC5_BASE + 0x800)
1182#define MSM_SDC5_BAM_BASE (MSM_SDC5_BASE + 0x2000)
1183
1184static struct resource resources_sdc1[] = {
1185 {
1186 .name = "core_mem",
1187 .flags = IORESOURCE_MEM,
1188 .start = MSM_SDC1_BASE,
1189 .end = MSM_SDC1_DML_BASE - 1,
1190 },
1191 {
1192 .name = "core_irq",
1193 .flags = IORESOURCE_IRQ,
1194 .start = SDC1_IRQ_0,
1195 .end = SDC1_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_SDC1_DML_BASE,
1201 .end = MSM_SDC1_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_SDC1_BAM_BASE,
1207 .end = MSM_SDC1_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 = SDC1_BAM_IRQ,
1213 .end = SDC1_BAM_IRQ,
1214 .flags = IORESOURCE_IRQ,
1215 },
1216#endif
1217};
1218
1219static struct resource resources_sdc2[] = {
1220 {
1221 .name = "core_mem",
1222 .flags = IORESOURCE_MEM,
1223 .start = MSM_SDC2_BASE,
1224 .end = MSM_SDC2_DML_BASE - 1,
1225 },
1226 {
1227 .name = "core_irq",
1228 .flags = IORESOURCE_IRQ,
1229 .start = SDC2_IRQ_0,
1230 .end = SDC2_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_SDC2_DML_BASE,
1236 .end = MSM_SDC2_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_SDC2_BAM_BASE,
1242 .end = MSM_SDC2_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 = SDC2_BAM_IRQ,
1248 .end = SDC2_BAM_IRQ,
1249 .flags = IORESOURCE_IRQ,
1250 },
1251#endif
1252};
1253
1254static struct resource resources_sdc3[] = {
1255 {
1256 .name = "core_mem",
1257 .flags = IORESOURCE_MEM,
1258 .start = MSM_SDC3_BASE,
1259 .end = MSM_SDC3_DML_BASE - 1,
1260 },
1261 {
1262 .name = "core_irq",
1263 .flags = IORESOURCE_IRQ,
1264 .start = SDC3_IRQ_0,
1265 .end = SDC3_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_SDC3_DML_BASE,
1271 .end = MSM_SDC3_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_SDC3_BAM_BASE,
1277 .end = MSM_SDC3_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 = SDC3_BAM_IRQ,
1283 .end = SDC3_BAM_IRQ,
1284 .flags = IORESOURCE_IRQ,
1285 },
1286#endif
1287};
1288
1289static struct resource resources_sdc4[] = {
1290 {
1291 .name = "core_mem",
1292 .flags = IORESOURCE_MEM,
1293 .start = MSM_SDC4_BASE,
1294 .end = MSM_SDC4_DML_BASE - 1,
1295 },
1296 {
1297 .name = "core_irq",
1298 .flags = IORESOURCE_IRQ,
1299 .start = SDC4_IRQ_0,
1300 .end = SDC4_IRQ_0
1301 },
1302#ifdef CONFIG_MMC_MSM_SPS_SUPPORT
1303 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301304 .name = "dml_mem",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001305 .start = MSM_SDC4_DML_BASE,
1306 .end = MSM_SDC4_BAM_BASE - 1,
1307 .flags = IORESOURCE_MEM,
1308 },
1309 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301310 .name = "bam_mem",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001311 .start = MSM_SDC4_BAM_BASE,
1312 .end = MSM_SDC4_BAM_BASE + (2 * SZ_4K) - 1,
1313 .flags = IORESOURCE_MEM,
1314 },
1315 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301316 .name = "bam_irq",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001317 .start = SDC4_BAM_IRQ,
1318 .end = SDC4_BAM_IRQ,
1319 .flags = IORESOURCE_IRQ,
1320 },
1321#endif
1322};
1323
1324static struct resource resources_sdc5[] = {
1325 {
1326 .name = "core_mem",
1327 .flags = IORESOURCE_MEM,
1328 .start = MSM_SDC5_BASE,
1329 .end = MSM_SDC5_DML_BASE - 1,
1330 },
1331 {
1332 .name = "core_irq",
1333 .flags = IORESOURCE_IRQ,
1334 .start = SDC5_IRQ_0,
1335 .end = SDC5_IRQ_0
1336 },
1337#ifdef CONFIG_MMC_MSM_SPS_SUPPORT
1338 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301339 .name = "dml_mem",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001340 .start = MSM_SDC5_DML_BASE,
1341 .end = MSM_SDC5_BAM_BASE - 1,
1342 .flags = IORESOURCE_MEM,
1343 },
1344 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301345 .name = "bam_mem",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001346 .start = MSM_SDC5_BAM_BASE,
1347 .end = MSM_SDC5_BAM_BASE + (2 * SZ_4K) - 1,
1348 .flags = IORESOURCE_MEM,
1349 },
1350 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301351 .name = "bam_irq",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001352 .start = SDC5_BAM_IRQ,
1353 .end = SDC5_BAM_IRQ,
1354 .flags = IORESOURCE_IRQ,
1355 },
1356#endif
1357};
1358
1359struct platform_device msm_device_sdc1 = {
1360 .name = "msm_sdcc",
1361 .id = 1,
1362 .num_resources = ARRAY_SIZE(resources_sdc1),
1363 .resource = resources_sdc1,
1364 .dev = {
1365 .coherent_dma_mask = 0xffffffff,
1366 },
1367};
1368
1369struct platform_device msm_device_sdc2 = {
1370 .name = "msm_sdcc",
1371 .id = 2,
1372 .num_resources = ARRAY_SIZE(resources_sdc2),
1373 .resource = resources_sdc2,
1374 .dev = {
1375 .coherent_dma_mask = 0xffffffff,
1376 },
1377};
1378
1379struct platform_device msm_device_sdc3 = {
1380 .name = "msm_sdcc",
1381 .id = 3,
1382 .num_resources = ARRAY_SIZE(resources_sdc3),
1383 .resource = resources_sdc3,
1384 .dev = {
1385 .coherent_dma_mask = 0xffffffff,
1386 },
1387};
1388
1389struct platform_device msm_device_sdc4 = {
1390 .name = "msm_sdcc",
1391 .id = 4,
1392 .num_resources = ARRAY_SIZE(resources_sdc4),
1393 .resource = resources_sdc4,
1394 .dev = {
1395 .coherent_dma_mask = 0xffffffff,
1396 },
1397};
1398
1399struct platform_device msm_device_sdc5 = {
1400 .name = "msm_sdcc",
1401 .id = 5,
1402 .num_resources = ARRAY_SIZE(resources_sdc5),
1403 .resource = resources_sdc5,
1404 .dev = {
1405 .coherent_dma_mask = 0xffffffff,
1406 },
1407};
1408
Stephen Boydeb819882011-08-29 14:46:30 -07001409#define MSM_LPASS_QDSP6SS_PHYS 0x28800000
1410#define SFAB_LPASS_Q6_ACLK_CTL (MSM_CLK_CTL_BASE + 0x23A0)
1411
1412static struct resource msm_8960_q6_lpass_resources[] = {
1413 {
1414 .start = MSM_LPASS_QDSP6SS_PHYS,
1415 .end = MSM_LPASS_QDSP6SS_PHYS + SZ_256 - 1,
1416 .flags = IORESOURCE_MEM,
1417 },
1418};
1419
1420static struct pil_q6v4_pdata msm_8960_q6_lpass_data = {
1421 .strap_tcm_base = 0x01460000,
1422 .strap_ahb_upper = 0x00290000,
1423 .strap_ahb_lower = 0x00000280,
1424 .aclk_reg = SFAB_LPASS_Q6_ACLK_CTL,
1425 .name = "q6",
1426 .pas_id = PAS_Q6,
Matt Wagantall6e4aafb2011-09-09 17:53:54 -07001427 .bus_port = MSM_BUS_MASTER_LPASS_PROC,
Stephen Boydeb819882011-08-29 14:46:30 -07001428};
1429
1430struct platform_device msm_8960_q6_lpass = {
1431 .name = "pil_qdsp6v4",
1432 .id = 0,
1433 .num_resources = ARRAY_SIZE(msm_8960_q6_lpass_resources),
1434 .resource = msm_8960_q6_lpass_resources,
1435 .dev.platform_data = &msm_8960_q6_lpass_data,
1436};
1437
1438#define MSM_MSS_ENABLE_PHYS 0x08B00000
1439#define MSM_FW_QDSP6SS_PHYS 0x08800000
1440#define MSS_Q6FW_JTAG_CLK_CTL (MSM_CLK_CTL_BASE + 0x2C6C)
1441#define SFAB_MSS_Q6_FW_ACLK_CTL (MSM_CLK_CTL_BASE + 0x2044)
1442
1443static struct resource msm_8960_q6_mss_fw_resources[] = {
1444 {
1445 .start = MSM_FW_QDSP6SS_PHYS,
1446 .end = MSM_FW_QDSP6SS_PHYS + SZ_256 - 1,
1447 .flags = IORESOURCE_MEM,
1448 },
1449 {
1450 .start = MSM_MSS_ENABLE_PHYS,
1451 .end = MSM_MSS_ENABLE_PHYS + 4 - 1,
1452 .flags = IORESOURCE_MEM,
1453 },
1454};
1455
1456static struct pil_q6v4_pdata msm_8960_q6_mss_fw_data = {
1457 .strap_tcm_base = 0x00400000,
1458 .strap_ahb_upper = 0x00090000,
1459 .strap_ahb_lower = 0x00000080,
1460 .aclk_reg = SFAB_MSS_Q6_FW_ACLK_CTL,
1461 .jtag_clk_reg = MSS_Q6FW_JTAG_CLK_CTL,
1462 .name = "modem_fw",
1463 .depends = "q6",
1464 .pas_id = PAS_MODEM_FW,
Matt Wagantall6e4aafb2011-09-09 17:53:54 -07001465 .bus_port = MSM_BUS_MASTER_MSS_FW_PROC,
Stephen Boydeb819882011-08-29 14:46:30 -07001466};
1467
1468struct platform_device msm_8960_q6_mss_fw = {
1469 .name = "pil_qdsp6v4",
1470 .id = 1,
1471 .num_resources = ARRAY_SIZE(msm_8960_q6_mss_fw_resources),
1472 .resource = msm_8960_q6_mss_fw_resources,
1473 .dev.platform_data = &msm_8960_q6_mss_fw_data,
1474};
1475
1476#define MSM_SW_QDSP6SS_PHYS 0x08900000
1477#define SFAB_MSS_Q6_SW_ACLK_CTL (MSM_CLK_CTL_BASE + 0x2040)
1478#define MSS_Q6SW_JTAG_CLK_CTL (MSM_CLK_CTL_BASE + 0x2C68)
1479
1480static struct resource msm_8960_q6_mss_sw_resources[] = {
1481 {
1482 .start = MSM_SW_QDSP6SS_PHYS,
1483 .end = MSM_SW_QDSP6SS_PHYS + SZ_256 - 1,
1484 .flags = IORESOURCE_MEM,
1485 },
1486 {
1487 .start = MSM_MSS_ENABLE_PHYS,
1488 .end = MSM_MSS_ENABLE_PHYS + 4 - 1,
1489 .flags = IORESOURCE_MEM,
1490 },
1491};
1492
1493static struct pil_q6v4_pdata msm_8960_q6_mss_sw_data = {
1494 .strap_tcm_base = 0x00420000,
1495 .strap_ahb_upper = 0x00090000,
1496 .strap_ahb_lower = 0x00000080,
1497 .aclk_reg = SFAB_MSS_Q6_SW_ACLK_CTL,
1498 .jtag_clk_reg = MSS_Q6SW_JTAG_CLK_CTL,
1499 .name = "modem",
1500 .depends = "modem_fw",
1501 .pas_id = PAS_MODEM_SW,
Matt Wagantall6e4aafb2011-09-09 17:53:54 -07001502 .bus_port = MSM_BUS_MASTER_MSS_SW_PROC,
Stephen Boydeb819882011-08-29 14:46:30 -07001503};
1504
1505struct platform_device msm_8960_q6_mss_sw = {
1506 .name = "pil_qdsp6v4",
1507 .id = 2,
1508 .num_resources = ARRAY_SIZE(msm_8960_q6_mss_sw_resources),
1509 .resource = msm_8960_q6_mss_sw_resources,
1510 .dev.platform_data = &msm_8960_q6_mss_sw_data,
1511};
1512
Stephen Boyd322a9922011-09-20 01:05:54 -07001513static struct resource msm_8960_riva_resources[] = {
1514 {
1515 .start = 0x03204000,
1516 .end = 0x03204000 + SZ_256 - 1,
1517 .flags = IORESOURCE_MEM,
1518 },
1519};
1520
1521struct platform_device msm_8960_riva = {
1522 .name = "pil_riva",
1523 .id = -1,
1524 .num_resources = ARRAY_SIZE(msm_8960_riva_resources),
1525 .resource = msm_8960_riva_resources,
1526};
1527
Stephen Boydd89eebe2011-09-28 23:28:11 -07001528struct platform_device msm_pil_tzapps = {
1529 .name = "pil_tzapps",
1530 .id = -1,
1531};
1532
Stephen Boyd25c4a0b2011-09-20 00:12:36 -07001533struct platform_device msm_pil_dsps = {
1534 .name = "pil_dsps",
1535 .id = -1,
1536 .dev.platform_data = "dsps",
1537};
1538
Stephen Boyd7b973de2012-03-09 12:26:16 -08001539struct platform_device msm_pil_vidc = {
1540 .name = "pil_vidc",
1541 .id = -1,
1542};
1543
Eric Holmberg023d25c2012-03-01 12:27:55 -07001544static struct resource smd_resource[] = {
1545 {
1546 .name = "a9_m2a_0",
1547 .start = INT_A9_M2A_0,
1548 .flags = IORESOURCE_IRQ,
1549 },
1550 {
1551 .name = "a9_m2a_5",
1552 .start = INT_A9_M2A_5,
1553 .flags = IORESOURCE_IRQ,
1554 },
1555 {
1556 .name = "adsp_a11",
1557 .start = INT_ADSP_A11,
1558 .flags = IORESOURCE_IRQ,
1559 },
1560 {
1561 .name = "adsp_a11_smsm",
1562 .start = INT_ADSP_A11_SMSM,
1563 .flags = IORESOURCE_IRQ,
1564 },
1565 {
1566 .name = "dsps_a11",
1567 .start = INT_DSPS_A11,
1568 .flags = IORESOURCE_IRQ,
1569 },
1570 {
1571 .name = "dsps_a11_smsm",
1572 .start = INT_DSPS_A11_SMSM,
1573 .flags = IORESOURCE_IRQ,
1574 },
1575 {
1576 .name = "wcnss_a11",
1577 .start = INT_WCNSS_A11,
1578 .flags = IORESOURCE_IRQ,
1579 },
1580 {
1581 .name = "wcnss_a11_smsm",
1582 .start = INT_WCNSS_A11_SMSM,
1583 .flags = IORESOURCE_IRQ,
1584 },
1585};
1586
1587static struct smd_subsystem_config smd_config_list[] = {
1588 {
1589 .irq_config_id = SMD_MODEM,
1590 .subsys_name = "modem",
1591 .edge = SMD_APPS_MODEM,
1592
1593 .smd_int.irq_name = "a9_m2a_0",
1594 .smd_int.flags = IRQF_TRIGGER_RISING,
1595 .smd_int.irq_id = -1,
1596 .smd_int.device_name = "smd_dev",
1597 .smd_int.dev_id = 0,
1598 .smd_int.out_bit_pos = 1 << 3,
1599 .smd_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1600 .smd_int.out_offset = 0x8,
1601
1602 .smsm_int.irq_name = "a9_m2a_5",
1603 .smsm_int.flags = IRQF_TRIGGER_RISING,
1604 .smsm_int.irq_id = -1,
1605 .smsm_int.device_name = "smd_smsm",
1606 .smsm_int.dev_id = 0,
1607 .smsm_int.out_bit_pos = 1 << 4,
1608 .smsm_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1609 .smsm_int.out_offset = 0x8,
1610 },
1611 {
1612 .irq_config_id = SMD_Q6,
1613 .subsys_name = "q6",
1614 .edge = SMD_APPS_QDSP,
1615
1616 .smd_int.irq_name = "adsp_a11",
1617 .smd_int.flags = IRQF_TRIGGER_RISING,
1618 .smd_int.irq_id = -1,
1619 .smd_int.device_name = "smd_dev",
1620 .smd_int.dev_id = 0,
1621 .smd_int.out_bit_pos = 1 << 15,
1622 .smd_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1623 .smd_int.out_offset = 0x8,
1624
1625 .smsm_int.irq_name = "adsp_a11_smsm",
1626 .smsm_int.flags = IRQF_TRIGGER_RISING,
1627 .smsm_int.irq_id = -1,
1628 .smsm_int.device_name = "smd_smsm",
1629 .smsm_int.dev_id = 0,
1630 .smsm_int.out_bit_pos = 1 << 14,
1631 .smsm_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1632 .smsm_int.out_offset = 0x8,
1633 },
1634 {
1635 .irq_config_id = SMD_DSPS,
1636 .subsys_name = "dsps",
1637 .edge = SMD_APPS_DSPS,
1638
1639 .smd_int.irq_name = "dsps_a11",
1640 .smd_int.flags = IRQF_TRIGGER_RISING,
1641 .smd_int.irq_id = -1,
1642 .smd_int.device_name = "smd_dev",
1643 .smd_int.dev_id = 0,
1644 .smd_int.out_bit_pos = 1,
1645 .smd_int.out_base = (void __iomem *)MSM_SIC_NON_SECURE_BASE,
1646 .smd_int.out_offset = 0x4080,
1647
1648 .smsm_int.irq_name = "dsps_a11_smsm",
1649 .smsm_int.flags = IRQF_TRIGGER_RISING,
1650 .smsm_int.irq_id = -1,
1651 .smsm_int.device_name = "smd_smsm",
1652 .smsm_int.dev_id = 0,
1653 .smsm_int.out_bit_pos = 1,
1654 .smsm_int.out_base = (void __iomem *)MSM_SIC_NON_SECURE_BASE,
1655 .smsm_int.out_offset = 0x4094,
1656 },
1657 {
1658 .irq_config_id = SMD_WCNSS,
1659 .subsys_name = "wcnss",
1660 .edge = SMD_APPS_WCNSS,
1661
1662 .smd_int.irq_name = "wcnss_a11",
1663 .smd_int.flags = IRQF_TRIGGER_RISING,
1664 .smd_int.irq_id = -1,
1665 .smd_int.device_name = "smd_dev",
1666 .smd_int.dev_id = 0,
1667 .smd_int.out_bit_pos = 1 << 25,
1668 .smd_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1669 .smd_int.out_offset = 0x8,
1670
1671 .smsm_int.irq_name = "wcnss_a11_smsm",
1672 .smsm_int.flags = IRQF_TRIGGER_RISING,
1673 .smsm_int.irq_id = -1,
1674 .smsm_int.device_name = "smd_smsm",
1675 .smsm_int.dev_id = 0,
1676 .smsm_int.out_bit_pos = 1 << 23,
1677 .smsm_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1678 .smsm_int.out_offset = 0x8,
1679 },
1680};
1681
Eric Holmberg2bb6ccd2012-03-13 13:05:14 -06001682static struct smd_subsystem_restart_config smd_ssr_config = {
1683 .disable_smsm_reset_handshake = 1,
1684};
1685
Eric Holmberg023d25c2012-03-01 12:27:55 -07001686static struct smd_platform smd_platform_data = {
1687 .num_ss_configs = ARRAY_SIZE(smd_config_list),
1688 .smd_ss_configs = smd_config_list,
Eric Holmberg2bb6ccd2012-03-13 13:05:14 -06001689 .smd_ssr_config = &smd_ssr_config,
Eric Holmberg023d25c2012-03-01 12:27:55 -07001690};
1691
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001692struct platform_device msm_device_smd = {
1693 .name = "msm_smd",
1694 .id = -1,
Eric Holmberg023d25c2012-03-01 12:27:55 -07001695 .resource = smd_resource,
1696 .num_resources = ARRAY_SIZE(smd_resource),
1697 .dev = {
1698 .platform_data = &smd_platform_data,
1699 },
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001700};
1701
1702struct platform_device msm_device_bam_dmux = {
1703 .name = "BAM_RMNT",
1704 .id = -1,
1705};
1706
Anji Jonnala4bf6c0c2013-04-16 17:07:52 +05301707static struct msm_pm_sleep_status_data msm_pm_slp_sts_data = {
1708 .base_addr = MSM_ACC0_BASE + 0x08,
1709 .cpu_offset = MSM_ACC1_BASE - MSM_ACC0_BASE,
1710 .mask = 1UL << 13,
1711};
1712struct platform_device msm8960_cpu_slp_status = {
1713 .name = "cpu_slp_status",
1714 .id = -1,
1715 .dev = {
1716 .platform_data = &msm_pm_slp_sts_data,
1717 },
1718};
1719
Jeff Ohlstein7e668552011-10-06 16:17:25 -07001720static struct msm_watchdog_pdata msm_watchdog_pdata = {
1721 .pet_time = 10000,
1722 .bark_time = 11000,
1723 .has_secure = true,
Rohit Vaswanic77e4a62012-08-09 18:10:28 -07001724 .base = MSM_TMR0_BASE + WDT0_OFFSET,
1725};
1726
1727static struct resource msm_watchdog_resources[] = {
1728 {
1729 .start = WDT0_ACCSCSSNBARK_INT,
1730 .end = WDT0_ACCSCSSNBARK_INT,
1731 .flags = IORESOURCE_IRQ,
1732 },
Jeff Ohlstein7e668552011-10-06 16:17:25 -07001733};
1734
1735struct platform_device msm8960_device_watchdog = {
1736 .name = "msm_watchdog",
1737 .id = -1,
1738 .dev = {
1739 .platform_data = &msm_watchdog_pdata,
1740 },
Rohit Vaswanic77e4a62012-08-09 18:10:28 -07001741 .num_resources = ARRAY_SIZE(msm_watchdog_resources),
1742 .resource = msm_watchdog_resources,
Jeff Ohlstein7e668552011-10-06 16:17:25 -07001743};
1744
Stepan Moskovchenkodf13d342011-08-03 19:01:25 -07001745static struct resource msm_dmov_resource[] = {
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001746 {
1747 .start = ADM_0_SCSS_1_IRQ,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001748 .flags = IORESOURCE_IRQ,
1749 },
Jeff Ohlstein905f1ce2011-09-07 18:50:18 -07001750 {
1751 .start = 0x18320000,
1752 .end = 0x18320000 + SZ_1M - 1,
1753 .flags = IORESOURCE_MEM,
1754 },
1755};
1756
1757static struct msm_dmov_pdata msm_dmov_pdata = {
1758 .sd = 1,
1759 .sd_size = 0x800,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001760};
1761
Stepan Moskovchenkodf13d342011-08-03 19:01:25 -07001762struct platform_device msm8960_device_dmov = {
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001763 .name = "msm_dmov",
1764 .id = -1,
1765 .resource = msm_dmov_resource,
1766 .num_resources = ARRAY_SIZE(msm_dmov_resource),
Jeff Ohlstein905f1ce2011-09-07 18:50:18 -07001767 .dev = {
1768 .platform_data = &msm_dmov_pdata,
1769 },
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001770};
1771
1772static struct platform_device *msm_sdcc_devices[] __initdata = {
1773 &msm_device_sdc1,
1774 &msm_device_sdc2,
1775 &msm_device_sdc3,
1776 &msm_device_sdc4,
1777 &msm_device_sdc5,
1778};
1779
1780int __init msm_add_sdcc(unsigned int controller, struct mmc_platform_data *plat)
1781{
1782 struct platform_device *pdev;
1783
1784 if (controller < 1 || controller > 5)
1785 return -EINVAL;
1786
1787 pdev = msm_sdcc_devices[controller-1];
1788 pdev->dev.platform_data = plat;
1789 return platform_device_register(pdev);
1790}
1791
1792static struct resource resources_qup_i2c_gsbi4[] = {
1793 {
1794 .name = "gsbi_qup_i2c_addr",
1795 .start = MSM_GSBI4_PHYS,
Harini Jayaramand7614a72011-09-15 14:16:02 -06001796 .end = MSM_GSBI4_PHYS + 4 - 1,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001797 .flags = IORESOURCE_MEM,
1798 },
1799 {
1800 .name = "qup_phys_addr",
1801 .start = MSM_GSBI4_QUP_PHYS,
Harini Jayaramand7614a72011-09-15 14:16:02 -06001802 .end = MSM_GSBI4_QUP_PHYS + MSM_QUP_SIZE - 1,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001803 .flags = IORESOURCE_MEM,
1804 },
1805 {
1806 .name = "qup_err_intr",
1807 .start = GSBI4_QUP_IRQ,
1808 .end = GSBI4_QUP_IRQ,
1809 .flags = IORESOURCE_IRQ,
1810 },
1811};
1812
1813struct platform_device msm8960_device_qup_i2c_gsbi4 = {
1814 .name = "qup_i2c",
1815 .id = 4,
1816 .num_resources = ARRAY_SIZE(resources_qup_i2c_gsbi4),
1817 .resource = resources_qup_i2c_gsbi4,
1818};
1819
Kiran Gunda484442e2013-03-11 19:14:44 +05301820static struct resource resources_qup_i2c_gsbi8[] = {
1821 {
1822 .name = "gsbi_qup_i2c_addr",
1823 .start = MSM_GSBI8_PHYS,
1824 .end = MSM_GSBI8_PHYS + 4 - 1,
1825 .flags = IORESOURCE_MEM,
1826 },
1827 {
1828 .name = "qup_phys_addr",
1829 .start = MSM_GSBI8_QUP_PHYS,
1830 .end = MSM_GSBI8_QUP_PHYS + MSM_QUP_SIZE - 1,
1831 .flags = IORESOURCE_MEM,
1832 },
1833 {
1834 .name = "qup_err_intr",
1835 .start = GSBI8_QUP_IRQ,
1836 .end = GSBI8_QUP_IRQ,
1837 .flags = IORESOURCE_IRQ,
1838 },
1839};
1840
1841struct platform_device msm8960_device_qup_i2c_gsbi8 = {
1842 .name = "qup_i2c",
1843 .id = 8,
1844 .num_resources = ARRAY_SIZE(resources_qup_i2c_gsbi8),
1845 .resource = resources_qup_i2c_gsbi8,
1846};
1847
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001848static struct resource resources_qup_i2c_gsbi3[] = {
1849 {
1850 .name = "gsbi_qup_i2c_addr",
1851 .start = MSM_GSBI3_PHYS,
Harini Jayaramand7614a72011-09-15 14:16:02 -06001852 .end = MSM_GSBI3_PHYS + 4 - 1,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001853 .flags = IORESOURCE_MEM,
1854 },
1855 {
1856 .name = "qup_phys_addr",
1857 .start = MSM_GSBI3_QUP_PHYS,
Harini Jayaramand7614a72011-09-15 14:16:02 -06001858 .end = MSM_GSBI3_QUP_PHYS + MSM_QUP_SIZE - 1,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001859 .flags = IORESOURCE_MEM,
1860 },
1861 {
1862 .name = "qup_err_intr",
1863 .start = GSBI3_QUP_IRQ,
1864 .end = GSBI3_QUP_IRQ,
1865 .flags = IORESOURCE_IRQ,
1866 },
1867};
1868
1869struct platform_device msm8960_device_qup_i2c_gsbi3 = {
1870 .name = "qup_i2c",
1871 .id = 3,
1872 .num_resources = ARRAY_SIZE(resources_qup_i2c_gsbi3),
1873 .resource = resources_qup_i2c_gsbi3,
1874};
1875
Harini Jayaramanfe6ff4162012-03-14 11:25:40 -06001876static struct resource resources_qup_i2c_gsbi9[] = {
1877 {
1878 .name = "gsbi_qup_i2c_addr",
1879 .start = MSM_GSBI9_PHYS,
1880 .end = MSM_GSBI9_PHYS + 4 - 1,
1881 .flags = IORESOURCE_MEM,
1882 },
1883 {
1884 .name = "qup_phys_addr",
1885 .start = MSM_GSBI9_QUP_PHYS,
1886 .end = MSM_GSBI9_QUP_PHYS + MSM_QUP_SIZE - 1,
1887 .flags = IORESOURCE_MEM,
1888 },
1889 {
1890 .name = "qup_err_intr",
1891 .start = GSBI9_QUP_IRQ,
1892 .end = GSBI9_QUP_IRQ,
1893 .flags = IORESOURCE_IRQ,
1894 },
1895};
1896
1897struct platform_device msm8960_device_qup_i2c_gsbi9 = {
1898 .name = "qup_i2c",
1899 .id = 0,
1900 .num_resources = ARRAY_SIZE(resources_qup_i2c_gsbi9),
1901 .resource = resources_qup_i2c_gsbi9,
1902};
1903
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001904static struct resource resources_qup_i2c_gsbi10[] = {
1905 {
1906 .name = "gsbi_qup_i2c_addr",
1907 .start = MSM_GSBI10_PHYS,
Harini Jayaramand7614a72011-09-15 14:16:02 -06001908 .end = MSM_GSBI10_PHYS + 4 - 1,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001909 .flags = IORESOURCE_MEM,
1910 },
1911 {
1912 .name = "qup_phys_addr",
1913 .start = MSM_GSBI10_QUP_PHYS,
Harini Jayaramand7614a72011-09-15 14:16:02 -06001914 .end = MSM_GSBI10_QUP_PHYS + MSM_QUP_SIZE - 1,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001915 .flags = IORESOURCE_MEM,
1916 },
1917 {
1918 .name = "qup_err_intr",
1919 .start = GSBI10_QUP_IRQ,
1920 .end = GSBI10_QUP_IRQ,
1921 .flags = IORESOURCE_IRQ,
1922 },
1923};
1924
1925struct platform_device msm8960_device_qup_i2c_gsbi10 = {
1926 .name = "qup_i2c",
1927 .id = 10,
1928 .num_resources = ARRAY_SIZE(resources_qup_i2c_gsbi10),
1929 .resource = resources_qup_i2c_gsbi10,
1930};
1931
1932static struct resource resources_qup_i2c_gsbi12[] = {
1933 {
1934 .name = "gsbi_qup_i2c_addr",
1935 .start = MSM_GSBI12_PHYS,
Harini Jayaramand7614a72011-09-15 14:16:02 -06001936 .end = MSM_GSBI12_PHYS + 4 - 1,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001937 .flags = IORESOURCE_MEM,
1938 },
1939 {
1940 .name = "qup_phys_addr",
1941 .start = MSM_GSBI12_QUP_PHYS,
Harini Jayaramand7614a72011-09-15 14:16:02 -06001942 .end = MSM_GSBI12_QUP_PHYS + MSM_QUP_SIZE - 1,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001943 .flags = IORESOURCE_MEM,
1944 },
1945 {
1946 .name = "qup_err_intr",
1947 .start = GSBI12_QUP_IRQ,
1948 .end = GSBI12_QUP_IRQ,
1949 .flags = IORESOURCE_IRQ,
1950 },
1951};
1952
1953struct platform_device msm8960_device_qup_i2c_gsbi12 = {
1954 .name = "qup_i2c",
1955 .id = 12,
1956 .num_resources = ARRAY_SIZE(resources_qup_i2c_gsbi12),
1957 .resource = resources_qup_i2c_gsbi12,
1958};
1959
1960#ifdef CONFIG_MSM_CAMERA
Kevin Chanbb8ef862012-02-14 13:03:04 -08001961static struct resource msm_cam_gsbi4_i2c_mux_resources[] = {
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001962 {
Kevin Chanbb8ef862012-02-14 13:03:04 -08001963 .name = "i2c_mux_rw",
Nishant Pandit24153d82011-08-27 16:05:13 +05301964 .start = 0x008003E0,
Kevin Chanbb8ef862012-02-14 13:03:04 -08001965 .end = 0x008003E0 + SZ_8 - 1,
Nishant Pandit24153d82011-08-27 16:05:13 +05301966 .flags = IORESOURCE_MEM,
1967 },
1968 {
Kevin Chanbb8ef862012-02-14 13:03:04 -08001969 .name = "i2c_mux_ctl",
Nishant Pandit24153d82011-08-27 16:05:13 +05301970 .start = 0x008020B8,
Kevin Chanbb8ef862012-02-14 13:03:04 -08001971 .end = 0x008020B8 + SZ_4 - 1,
Nishant Pandit24153d82011-08-27 16:05:13 +05301972 .flags = IORESOURCE_MEM,
1973 },
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001974};
1975
Kevin Chanbb8ef862012-02-14 13:03:04 -08001976struct platform_device msm8960_device_i2c_mux_gsbi4 = {
1977 .name = "msm_cam_i2c_mux",
1978 .id = 0,
1979 .resource = msm_cam_gsbi4_i2c_mux_resources,
1980 .num_resources = ARRAY_SIZE(msm_cam_gsbi4_i2c_mux_resources),
1981};
Kevin Chanf6216f22011-10-25 18:40:11 -07001982
1983static struct resource msm_csiphy0_resources[] = {
1984 {
1985 .name = "csiphy",
1986 .start = 0x04800C00,
1987 .end = 0x04800C00 + SZ_1K - 1,
1988 .flags = IORESOURCE_MEM,
1989 },
1990 {
1991 .name = "csiphy",
1992 .start = CSIPHY_4LN_IRQ,
1993 .end = CSIPHY_4LN_IRQ,
1994 .flags = IORESOURCE_IRQ,
1995 },
1996};
1997
1998static struct resource msm_csiphy1_resources[] = {
1999 {
2000 .name = "csiphy",
2001 .start = 0x04801000,
2002 .end = 0x04801000 + SZ_1K - 1,
2003 .flags = IORESOURCE_MEM,
2004 },
2005 {
2006 .name = "csiphy",
2007 .start = MSM8960_CSIPHY_2LN_IRQ,
2008 .end = MSM8960_CSIPHY_2LN_IRQ,
2009 .flags = IORESOURCE_IRQ,
2010 },
2011};
2012
Sreesudhan Ramakrish Ramkumarb1edcd02012-01-17 11:33:05 -08002013static struct resource msm_csiphy2_resources[] = {
2014 {
2015 .name = "csiphy",
2016 .start = 0x04801400,
2017 .end = 0x04801400 + SZ_1K - 1,
2018 .flags = IORESOURCE_MEM,
2019 },
2020 {
2021 .name = "csiphy",
2022 .start = MSM8960_CSIPHY_2_2LN_IRQ,
2023 .end = MSM8960_CSIPHY_2_2LN_IRQ,
2024 .flags = IORESOURCE_IRQ,
2025 },
2026};
2027
Kevin Chanf6216f22011-10-25 18:40:11 -07002028struct platform_device msm8960_device_csiphy0 = {
2029 .name = "msm_csiphy",
2030 .id = 0,
2031 .resource = msm_csiphy0_resources,
2032 .num_resources = ARRAY_SIZE(msm_csiphy0_resources),
2033};
2034
2035struct platform_device msm8960_device_csiphy1 = {
2036 .name = "msm_csiphy",
2037 .id = 1,
2038 .resource = msm_csiphy1_resources,
2039 .num_resources = ARRAY_SIZE(msm_csiphy1_resources),
2040};
Kevin Chanc8b52e82011-10-25 23:20:21 -07002041
Sreesudhan Ramakrish Ramkumarb1edcd02012-01-17 11:33:05 -08002042struct platform_device msm8960_device_csiphy2 = {
2043 .name = "msm_csiphy",
2044 .id = 2,
2045 .resource = msm_csiphy2_resources,
2046 .num_resources = ARRAY_SIZE(msm_csiphy2_resources),
2047};
2048
Kevin Chanc8b52e82011-10-25 23:20:21 -07002049static struct resource msm_csid0_resources[] = {
2050 {
2051 .name = "csid",
2052 .start = 0x04800000,
2053 .end = 0x04800000 + SZ_1K - 1,
2054 .flags = IORESOURCE_MEM,
2055 },
2056 {
2057 .name = "csid",
2058 .start = CSI_0_IRQ,
2059 .end = CSI_0_IRQ,
2060 .flags = IORESOURCE_IRQ,
2061 },
2062};
2063
2064static struct resource msm_csid1_resources[] = {
2065 {
2066 .name = "csid",
2067 .start = 0x04800400,
2068 .end = 0x04800400 + SZ_1K - 1,
2069 .flags = IORESOURCE_MEM,
2070 },
2071 {
2072 .name = "csid",
2073 .start = CSI_1_IRQ,
2074 .end = CSI_1_IRQ,
2075 .flags = IORESOURCE_IRQ,
2076 },
2077};
2078
Sreesudhan Ramakrish Ramkumarb1edcd02012-01-17 11:33:05 -08002079static struct resource msm_csid2_resources[] = {
2080 {
2081 .name = "csid",
2082 .start = 0x04801800,
2083 .end = 0x04801800 + SZ_1K - 1,
2084 .flags = IORESOURCE_MEM,
2085 },
2086 {
2087 .name = "csid",
2088 .start = CSI_2_IRQ,
2089 .end = CSI_2_IRQ,
2090 .flags = IORESOURCE_IRQ,
2091 },
2092};
2093
Kevin Chanc8b52e82011-10-25 23:20:21 -07002094struct platform_device msm8960_device_csid0 = {
2095 .name = "msm_csid",
2096 .id = 0,
2097 .resource = msm_csid0_resources,
2098 .num_resources = ARRAY_SIZE(msm_csid0_resources),
2099};
2100
2101struct platform_device msm8960_device_csid1 = {
2102 .name = "msm_csid",
2103 .id = 1,
2104 .resource = msm_csid1_resources,
2105 .num_resources = ARRAY_SIZE(msm_csid1_resources),
2106};
Kevin Chane12c6672011-10-26 11:55:26 -07002107
Sreesudhan Ramakrish Ramkumarb1edcd02012-01-17 11:33:05 -08002108struct platform_device msm8960_device_csid2 = {
2109 .name = "msm_csid",
2110 .id = 2,
2111 .resource = msm_csid2_resources,
2112 .num_resources = ARRAY_SIZE(msm_csid2_resources),
2113};
2114
Kevin Chane12c6672011-10-26 11:55:26 -07002115struct resource msm_ispif_resources[] = {
2116 {
2117 .name = "ispif",
2118 .start = 0x04800800,
2119 .end = 0x04800800 + SZ_1K - 1,
2120 .flags = IORESOURCE_MEM,
2121 },
2122 {
2123 .name = "ispif",
2124 .start = ISPIF_IRQ,
2125 .end = ISPIF_IRQ,
2126 .flags = IORESOURCE_IRQ,
2127 },
2128};
2129
2130struct platform_device msm8960_device_ispif = {
2131 .name = "msm_ispif",
2132 .id = 0,
2133 .resource = msm_ispif_resources,
2134 .num_resources = ARRAY_SIZE(msm_ispif_resources),
2135};
Kevin Chan5827c552011-10-28 18:36:32 -07002136
2137static struct resource msm_vfe_resources[] = {
2138 {
2139 .name = "vfe32",
2140 .start = 0x04500000,
2141 .end = 0x04500000 + SZ_1M - 1,
2142 .flags = IORESOURCE_MEM,
2143 },
2144 {
2145 .name = "vfe32",
2146 .start = VFE_IRQ,
2147 .end = VFE_IRQ,
2148 .flags = IORESOURCE_IRQ,
2149 },
2150};
2151
2152struct platform_device msm8960_device_vfe = {
2153 .name = "msm_vfe",
2154 .id = 0,
2155 .resource = msm_vfe_resources,
2156 .num_resources = ARRAY_SIZE(msm_vfe_resources),
2157};
Kevin Chana0853122011-11-07 19:48:44 -08002158
2159static struct resource msm_vpe_resources[] = {
2160 {
2161 .name = "vpe",
2162 .start = 0x05300000,
2163 .end = 0x05300000 + SZ_1M - 1,
2164 .flags = IORESOURCE_MEM,
2165 },
2166 {
2167 .name = "vpe",
2168 .start = VPE_IRQ,
2169 .end = VPE_IRQ,
2170 .flags = IORESOURCE_IRQ,
2171 },
2172};
2173
2174struct platform_device msm8960_device_vpe = {
2175 .name = "msm_vpe",
2176 .id = 0,
2177 .resource = msm_vpe_resources,
2178 .num_resources = ARRAY_SIZE(msm_vpe_resources),
2179};
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002180#endif
2181
Joel Nidera1261942011-09-12 16:30:09 +03002182#define MSM_TSIF0_PHYS (0x18200000)
2183#define MSM_TSIF1_PHYS (0x18201000)
2184#define MSM_TSIF_SIZE (0x200)
2185
2186#define TSIF_0_CLK GPIO_CFG(75, 1, GPIO_CFG_INPUT, \
2187 GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA)
2188#define TSIF_0_EN GPIO_CFG(76, 1, GPIO_CFG_INPUT, \
2189 GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA)
2190#define TSIF_0_DATA GPIO_CFG(77, 1, GPIO_CFG_INPUT, \
2191 GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA)
2192#define TSIF_0_SYNC GPIO_CFG(82, 1, GPIO_CFG_INPUT, \
2193 GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA)
2194#define TSIF_1_CLK GPIO_CFG(79, 1, GPIO_CFG_INPUT, \
2195 GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA)
2196#define TSIF_1_EN GPIO_CFG(80, 1, GPIO_CFG_INPUT, \
2197 GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA)
2198#define TSIF_1_DATA GPIO_CFG(81, 1, GPIO_CFG_INPUT, \
2199 GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA)
2200#define TSIF_1_SYNC GPIO_CFG(78, 1, GPIO_CFG_INPUT, \
2201 GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA)
2202
2203static const struct msm_gpio tsif0_gpios[] = {
2204 { .gpio_cfg = TSIF_0_CLK, .label = "tsif_clk", },
2205 { .gpio_cfg = TSIF_0_EN, .label = "tsif_en", },
2206 { .gpio_cfg = TSIF_0_DATA, .label = "tsif_data", },
2207 { .gpio_cfg = TSIF_0_SYNC, .label = "tsif_sync", },
2208};
2209
2210static const struct msm_gpio tsif1_gpios[] = {
2211 { .gpio_cfg = TSIF_1_CLK, .label = "tsif_clk", },
2212 { .gpio_cfg = TSIF_1_EN, .label = "tsif_en", },
2213 { .gpio_cfg = TSIF_1_DATA, .label = "tsif_data", },
2214 { .gpio_cfg = TSIF_1_SYNC, .label = "tsif_sync", },
2215};
2216
2217struct msm_tsif_platform_data tsif1_platform_data = {
2218 .num_gpios = ARRAY_SIZE(tsif1_gpios),
2219 .gpios = tsif1_gpios,
Joel Niderdfb793b2012-06-27 12:00:22 +03002220 .tsif_pclk = "iface_clk",
2221 .tsif_ref_clk = "ref_clk",
Joel Nidera1261942011-09-12 16:30:09 +03002222};
2223
2224struct resource tsif1_resources[] = {
2225 [0] = {
2226 .flags = IORESOURCE_IRQ,
2227 .start = TSIF2_IRQ,
2228 .end = TSIF2_IRQ,
2229 },
2230 [1] = {
2231 .flags = IORESOURCE_MEM,
2232 .start = MSM_TSIF1_PHYS,
2233 .end = MSM_TSIF1_PHYS + MSM_TSIF_SIZE - 1,
2234 },
2235 [2] = {
2236 .flags = IORESOURCE_DMA,
2237 .start = DMOV_TSIF_CHAN,
2238 .end = DMOV_TSIF_CRCI,
2239 },
2240};
2241
2242struct msm_tsif_platform_data tsif0_platform_data = {
2243 .num_gpios = ARRAY_SIZE(tsif0_gpios),
2244 .gpios = tsif0_gpios,
Joel Niderdfb793b2012-06-27 12:00:22 +03002245 .tsif_pclk = "iface_clk",
2246 .tsif_ref_clk = "ref_clk",
Joel Nidera1261942011-09-12 16:30:09 +03002247};
2248struct resource tsif0_resources[] = {
2249 [0] = {
2250 .flags = IORESOURCE_IRQ,
2251 .start = TSIF1_IRQ,
2252 .end = TSIF1_IRQ,
2253 },
2254 [1] = {
2255 .flags = IORESOURCE_MEM,
2256 .start = MSM_TSIF0_PHYS,
2257 .end = MSM_TSIF0_PHYS + MSM_TSIF_SIZE - 1,
2258 },
2259 [2] = {
2260 .flags = IORESOURCE_DMA,
2261 .start = DMOV_TSIF_CHAN,
2262 .end = DMOV_TSIF_CRCI,
2263 },
2264};
2265
2266struct platform_device msm_device_tsif[2] = {
2267 {
2268 .name = "msm_tsif",
2269 .id = 0,
2270 .num_resources = ARRAY_SIZE(tsif0_resources),
2271 .resource = tsif0_resources,
2272 .dev = {
2273 .platform_data = &tsif0_platform_data
2274 },
2275 },
2276 {
2277 .name = "msm_tsif",
2278 .id = 1,
2279 .num_resources = ARRAY_SIZE(tsif1_resources),
2280 .resource = tsif1_resources,
2281 .dev = {
2282 .platform_data = &tsif1_platform_data
2283 },
2284 }
2285};
2286
Jay Chokshi33c044a2011-12-07 13:05:40 -08002287static struct resource resources_ssbi_pmic[] = {
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002288 {
2289 .start = MSM_PMIC1_SSBI_CMD_PHYS,
2290 .end = MSM_PMIC1_SSBI_CMD_PHYS + MSM_PMIC_SSBI_SIZE - 1,
2291 .flags = IORESOURCE_MEM,
2292 },
2293};
2294
Jay Chokshi33c044a2011-12-07 13:05:40 -08002295struct platform_device msm8960_device_ssbi_pmic = {
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002296 .name = "msm_ssbi",
2297 .id = 0,
Jay Chokshi33c044a2011-12-07 13:05:40 -08002298 .resource = resources_ssbi_pmic,
2299 .num_resources = ARRAY_SIZE(resources_ssbi_pmic),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002300};
2301
2302static struct resource resources_qup_spi_gsbi1[] = {
2303 {
2304 .name = "spi_base",
2305 .start = MSM_GSBI1_QUP_PHYS,
2306 .end = MSM_GSBI1_QUP_PHYS + SZ_4K - 1,
2307 .flags = IORESOURCE_MEM,
2308 },
2309 {
2310 .name = "gsbi_base",
2311 .start = MSM_GSBI1_PHYS,
2312 .end = MSM_GSBI1_PHYS + 4 - 1,
2313 .flags = IORESOURCE_MEM,
2314 },
2315 {
2316 .name = "spi_irq_in",
2317 .start = MSM8960_GSBI1_QUP_IRQ,
2318 .end = MSM8960_GSBI1_QUP_IRQ,
2319 .flags = IORESOURCE_IRQ,
2320 },
Harini Jayaramanaac8e342011-08-09 19:25:23 -06002321 {
2322 .name = "spi_clk",
2323 .start = 9,
2324 .end = 9,
2325 .flags = IORESOURCE_IO,
2326 },
2327 {
Harini Jayaramanaac8e342011-08-09 19:25:23 -06002328 .name = "spi_miso",
2329 .start = 7,
2330 .end = 7,
2331 .flags = IORESOURCE_IO,
2332 },
2333 {
2334 .name = "spi_mosi",
2335 .start = 6,
2336 .end = 6,
2337 .flags = IORESOURCE_IO,
2338 },
Harini Jayaraman8392e432011-11-29 18:26:17 -07002339 {
2340 .name = "spi_cs",
2341 .start = 8,
2342 .end = 8,
2343 .flags = IORESOURCE_IO,
2344 },
2345 {
2346 .name = "spi_cs1",
2347 .start = 14,
2348 .end = 14,
2349 .flags = IORESOURCE_IO,
2350 },
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002351};
2352
2353struct platform_device msm8960_device_qup_spi_gsbi1 = {
2354 .name = "spi_qsd",
2355 .id = 0,
2356 .num_resources = ARRAY_SIZE(resources_qup_spi_gsbi1),
2357 .resource = resources_qup_spi_gsbi1,
2358};
2359
2360struct platform_device msm_pcm = {
2361 .name = "msm-pcm-dsp",
2362 .id = -1,
2363};
2364
Kiran Kandi5e809b02012-01-31 00:24:33 -08002365struct platform_device msm_multi_ch_pcm = {
2366 .name = "msm-multi-ch-pcm-dsp",
2367 .id = -1,
2368};
2369
Jayasena Sangaraboina99bf09c2012-07-17 12:03:08 -07002370struct platform_device msm_lowlatency_pcm = {
2371 .name = "msm-lowlatency-pcm-dsp",
2372 .id = -1,
2373};
2374
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002375struct platform_device msm_pcm_routing = {
2376 .name = "msm-pcm-routing",
2377 .id = -1,
2378};
2379
2380struct platform_device msm_cpudai0 = {
2381 .name = "msm-dai-q6",
2382 .id = 0x4000,
2383};
2384
2385struct platform_device msm_cpudai1 = {
2386 .name = "msm-dai-q6",
2387 .id = 0x4001,
2388};
2389
Kiran Kandi97fe19d2012-05-20 22:34:04 -07002390struct platform_device msm8960_cpudai_slimbus_2_rx = {
2391 .name = "msm-dai-q6",
2392 .id = 0x4004,
2393};
2394
Kiran Kandi1e6371d2012-03-29 11:48:57 -07002395struct platform_device msm8960_cpudai_slimbus_2_tx = {
2396 .name = "msm-dai-q6",
2397 .id = 0x4005,
2398};
2399
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002400struct platform_device msm_cpudai_hdmi_rx = {
Kiran Kandi5e809b02012-01-31 00:24:33 -08002401 .name = "msm-dai-q6-hdmi",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002402 .id = 8,
2403};
2404
2405struct platform_device msm_cpudai_bt_rx = {
2406 .name = "msm-dai-q6",
2407 .id = 0x3000,
2408};
2409
2410struct platform_device msm_cpudai_bt_tx = {
2411 .name = "msm-dai-q6",
2412 .id = 0x3001,
2413};
2414
2415struct platform_device msm_cpudai_fm_rx = {
2416 .name = "msm-dai-q6",
2417 .id = 0x3004,
2418};
2419
2420struct platform_device msm_cpudai_fm_tx = {
2421 .name = "msm-dai-q6",
2422 .id = 0x3005,
2423};
2424
Helen Zeng0705a5f2011-10-14 15:29:52 -07002425struct platform_device msm_cpudai_incall_music_rx = {
2426 .name = "msm-dai-q6",
2427 .id = 0x8005,
2428};
2429
Helen Zenge3d716a2011-10-14 16:32:16 -07002430struct platform_device msm_cpudai_incall_record_rx = {
2431 .name = "msm-dai-q6",
2432 .id = 0x8004,
2433};
2434
2435struct platform_device msm_cpudai_incall_record_tx = {
2436 .name = "msm-dai-q6",
2437 .id = 0x8003,
2438};
2439
Bhalchandra Gajare0e795c42011-08-15 18:10:30 -07002440/*
2441 * Machine specific data for AUX PCM Interface
2442 * which the driver will be unware of.
2443 */
Kiran Kandi5f4ab692012-02-23 11:23:56 -08002444struct msm_dai_auxpcm_pdata auxpcm_pdata = {
Bhalchandra Gajare0e795c42011-08-15 18:10:30 -07002445 .clk = "pcm_clk",
Kuirong Wang547a9982012-05-04 18:29:11 -07002446 .mode_8k = {
2447 .mode = AFE_PCM_CFG_MODE_PCM,
2448 .sync = AFE_PCM_CFG_SYNC_INT,
Damir Didjustocadb6392012-08-17 00:16:07 -07002449 .frame = AFE_PCM_CFG_FRM_32BPF,
Kuirong Wang547a9982012-05-04 18:29:11 -07002450 .quant = AFE_PCM_CFG_QUANT_LINEAR_NOPAD,
2451 .slot = 0,
2452 .data = AFE_PCM_CFG_CDATAOE_MASTER,
Damir Didjustocadb6392012-08-17 00:16:07 -07002453 .pcm_clk_rate = 256000,
Kuirong Wang547a9982012-05-04 18:29:11 -07002454 },
2455 .mode_16k = {
2456 .mode = AFE_PCM_CFG_MODE_PCM,
2457 .sync = AFE_PCM_CFG_SYNC_INT,
Damir Didjustocadb6392012-08-17 00:16:07 -07002458 .frame = AFE_PCM_CFG_FRM_32BPF,
Kuirong Wang547a9982012-05-04 18:29:11 -07002459 .quant = AFE_PCM_CFG_QUANT_LINEAR_NOPAD,
2460 .slot = 0,
2461 .data = AFE_PCM_CFG_CDATAOE_MASTER,
Damir Didjustocadb6392012-08-17 00:16:07 -07002462 .pcm_clk_rate = 512000,
Kuirong Wang547a9982012-05-04 18:29:11 -07002463 }
Bhalchandra Gajare0e795c42011-08-15 18:10:30 -07002464};
2465
2466struct platform_device msm_cpudai_auxpcm_rx = {
2467 .name = "msm-dai-q6",
2468 .id = 2,
2469 .dev = {
Kiran Kandi5f4ab692012-02-23 11:23:56 -08002470 .platform_data = &auxpcm_pdata,
Bhalchandra Gajare0e795c42011-08-15 18:10:30 -07002471 },
2472};
2473
2474struct platform_device msm_cpudai_auxpcm_tx = {
2475 .name = "msm-dai-q6",
2476 .id = 3,
Kiran Kandi5f4ab692012-02-23 11:23:56 -08002477 .dev = {
2478 .platform_data = &auxpcm_pdata,
2479 },
Bhalchandra Gajare0e795c42011-08-15 18:10:30 -07002480};
2481
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002482struct platform_device msm_cpu_fe = {
2483 .name = "msm-dai-fe",
2484 .id = -1,
2485};
2486
2487struct platform_device msm_stub_codec = {
2488 .name = "msm-stub-codec",
2489 .id = 1,
2490};
2491
2492struct platform_device msm_voice = {
2493 .name = "msm-pcm-voice",
2494 .id = -1,
2495};
2496
2497struct platform_device msm_voip = {
2498 .name = "msm-voip-dsp",
2499 .id = -1,
2500};
2501
2502struct platform_device msm_lpa_pcm = {
2503 .name = "msm-pcm-lpa",
2504 .id = -1,
2505};
2506
Asish Bhattacharya96bb6f42011-11-01 20:36:09 +05302507struct platform_device msm_compr_dsp = {
2508 .name = "msm-compr-dsp",
2509 .id = -1,
2510};
2511
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002512struct platform_device msm_pcm_hostless = {
2513 .name = "msm-pcm-hostless",
2514 .id = -1,
2515};
2516
Laxminath Kasamcee1d602011-08-01 19:26:57 +05302517struct platform_device msm_cpudai_afe_01_rx = {
2518 .name = "msm-dai-q6",
2519 .id = 0xE0,
2520};
2521
2522struct platform_device msm_cpudai_afe_01_tx = {
2523 .name = "msm-dai-q6",
2524 .id = 0xF0,
2525};
2526
2527struct platform_device msm_cpudai_afe_02_rx = {
2528 .name = "msm-dai-q6",
2529 .id = 0xF1,
2530};
2531
2532struct platform_device msm_cpudai_afe_02_tx = {
2533 .name = "msm-dai-q6",
2534 .id = 0xE1,
2535};
2536
2537struct platform_device msm_pcm_afe = {
2538 .name = "msm-pcm-afe",
2539 .id = -1,
2540};
2541
Damir Didjustobf8bbad2013-04-23 14:21:53 -07002542struct platform_device msm_fm_loopback = {
2543 .name = "msm-pcm-loopback",
2544 .id = -1,
2545};
2546
Matt Wagantall1f65d9d2012-04-25 14:24:20 -07002547static struct fs_driver_data gfx2d0_fs_data = {
2548 .clks = (struct fs_clk_data[]){
2549 { .name = "core_clk" },
2550 { .name = "iface_clk" },
2551 { 0 }
2552 },
2553 .bus_port0 = MSM_BUS_MASTER_GRAPHICS_2D_CORE0,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002554};
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002555
Matt Wagantall1f65d9d2012-04-25 14:24:20 -07002556static struct fs_driver_data gfx2d1_fs_data = {
2557 .clks = (struct fs_clk_data[]){
2558 { .name = "core_clk" },
2559 { .name = "iface_clk" },
2560 { 0 }
2561 },
2562 .bus_port0 = MSM_BUS_MASTER_GRAPHICS_2D_CORE1,
2563};
2564
2565static struct fs_driver_data gfx3d_fs_data = {
2566 .clks = (struct fs_clk_data[]){
2567 { .name = "core_clk", .reset_rate = 27000000 },
2568 { .name = "iface_clk" },
2569 { 0 }
2570 },
2571 .bus_port0 = MSM_BUS_MASTER_GRAPHICS_3D,
2572};
2573
Stephen Boyd7a0a6252012-12-05 14:01:17 -08002574static struct fs_driver_data gfx3d_fs_data_8960ab = {
2575 .clks = (struct fs_clk_data[]){
2576 { .name = "core_clk", .reset_rate = 27000000 },
2577 { .name = "iface_clk" },
2578 { .name = "bus_clk" },
2579 { 0 }
2580 },
2581 .bus_port0 = MSM_BUS_MASTER_GRAPHICS_3D,
2582 .bus_port1 = MSM_BUS_MASTER_GRAPHICS_3D_PORT1,
2583};
2584
Matt Wagantall1f65d9d2012-04-25 14:24:20 -07002585static struct fs_driver_data ijpeg_fs_data = {
2586 .clks = (struct fs_clk_data[]){
2587 { .name = "core_clk" },
2588 { .name = "iface_clk" },
2589 { .name = "bus_clk" },
2590 { 0 }
2591 },
2592 .bus_port0 = MSM_BUS_MASTER_JPEG_ENC,
2593};
2594
2595static struct fs_driver_data mdp_fs_data = {
2596 .clks = (struct fs_clk_data[]){
2597 { .name = "core_clk" },
2598 { .name = "iface_clk" },
2599 { .name = "bus_clk" },
2600 { .name = "vsync_clk" },
2601 { .name = "lut_clk" },
2602 { .name = "tv_src_clk" },
2603 { .name = "tv_clk" },
Matt Wagantallc33c1ed2012-07-23 17:19:08 -07002604 { .name = "reset1_clk" },
2605 { .name = "reset2_clk" },
Matt Wagantall1f65d9d2012-04-25 14:24:20 -07002606 { 0 }
2607 },
2608 .bus_port0 = MSM_BUS_MASTER_MDP_PORT0,
2609 .bus_port1 = MSM_BUS_MASTER_MDP_PORT1,
2610};
2611
2612static struct fs_driver_data rot_fs_data = {
2613 .clks = (struct fs_clk_data[]){
2614 { .name = "core_clk" },
2615 { .name = "iface_clk" },
2616 { .name = "bus_clk" },
2617 { 0 }
2618 },
2619 .bus_port0 = MSM_BUS_MASTER_ROTATOR,
2620};
2621
2622static struct fs_driver_data ved_fs_data = {
2623 .clks = (struct fs_clk_data[]){
2624 { .name = "core_clk" },
2625 { .name = "iface_clk" },
2626 { .name = "bus_clk" },
2627 { 0 }
2628 },
2629 .bus_port0 = MSM_BUS_MASTER_HD_CODEC_PORT0,
2630 .bus_port1 = MSM_BUS_MASTER_HD_CODEC_PORT1,
2631};
2632
Matt Wagantall5ac78922012-11-09 16:03:59 -08002633static struct fs_driver_data ved_fs_data_8960ab = {
2634 .clks = (struct fs_clk_data[]){
2635 { .name = "core_clk" },
2636 { .name = "iface_clk" },
2637 { .name = "bus_clk" },
2638 { 0 }
2639 },
2640 .bus_port0 = MSM_BUS_MASTER_VIDEO_DEC,
2641 .bus_port1 = MSM_BUS_MASTER_VIDEO_ENC,
2642};
2643
Matt Wagantall1f65d9d2012-04-25 14:24:20 -07002644static struct fs_driver_data vfe_fs_data = {
2645 .clks = (struct fs_clk_data[]){
2646 { .name = "core_clk" },
2647 { .name = "iface_clk" },
2648 { .name = "bus_clk" },
2649 { 0 }
2650 },
2651 .bus_port0 = MSM_BUS_MASTER_VFE,
2652};
2653
2654static struct fs_driver_data vpe_fs_data = {
2655 .clks = (struct fs_clk_data[]){
2656 { .name = "core_clk" },
2657 { .name = "iface_clk" },
2658 { .name = "bus_clk" },
2659 { 0 }
2660 },
2661 .bus_port0 = MSM_BUS_MASTER_VPE,
2662};
2663
2664struct platform_device *msm8960_footswitch[] __initdata = {
Matt Wagantalld4aab1e2012-05-03 20:26:56 -07002665 FS_8X60(FS_MDP, "vdd", "mdp.0", &mdp_fs_data),
Matt Wagantall316f2fc2012-05-03 20:41:42 -07002666 FS_8X60(FS_ROT, "vdd", "msm_rotator.0", &rot_fs_data),
Matt Wagantalle4454b82012-05-03 20:48:01 -07002667 FS_8X60(FS_IJPEG, "vdd", "msm_gemini.0", &ijpeg_fs_data),
Kiran Kumar H Nfa18a032012-06-25 14:34:18 -07002668 FS_8X60(FS_VFE, "vdd", "msm_vfe.0", &vfe_fs_data),
2669 FS_8X60(FS_VPE, "vdd", "msm_vpe.0", &vpe_fs_data),
Matt Wagantalld6fbf232012-05-03 20:09:28 -07002670 FS_8X60(FS_GFX3D, "vdd", "kgsl-3d0.0", &gfx3d_fs_data),
2671 FS_8X60(FS_GFX2D0, "vdd", "kgsl-2d0.0", &gfx2d0_fs_data),
2672 FS_8X60(FS_GFX2D1, "vdd", "kgsl-2d1.1", &gfx2d1_fs_data),
Matt Wagantall5e46aac2012-05-03 20:20:18 -07002673 FS_8X60(FS_VED, "vdd", "msm_vidc.0", &ved_fs_data),
Matt Wagantall1f65d9d2012-04-25 14:24:20 -07002674};
2675unsigned msm8960_num_footswitch __initdata = ARRAY_SIZE(msm8960_footswitch);
Ravishangar Kalyanam319a83c2012-03-21 18:38:05 -07002676
Stephen Boyd6716bd92012-10-25 11:46:04 -07002677struct platform_device *msm8960ab_footswitch[] __initdata = {
2678 FS_8X60(FS_MDP, "vdd", "mdp.0", &mdp_fs_data),
2679 FS_8X60(FS_ROT, "vdd", "msm_rotator.0", &rot_fs_data),
2680 FS_8X60(FS_IJPEG, "vdd", "msm_gemini.0", &ijpeg_fs_data),
2681 FS_8X60(FS_VFE, "vdd", "msm_vfe.0", &vfe_fs_data),
2682 FS_8X60(FS_VPE, "vdd", "msm_vpe.0", &vpe_fs_data),
Stephen Boyd7a0a6252012-12-05 14:01:17 -08002683 FS_8X60(FS_GFX3D, "vdd", "kgsl-3d0.0", &gfx3d_fs_data_8960ab),
Matt Wagantall5ac78922012-11-09 16:03:59 -08002684 FS_8X60(FS_VED, "vdd", "msm_vidc.0", &ved_fs_data_8960ab),
Stephen Boyd6716bd92012-10-25 11:46:04 -07002685};
2686unsigned msm8960ab_num_footswitch __initdata = ARRAY_SIZE(msm8960ab_footswitch);
2687
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002688#ifdef CONFIG_MSM_ROTATOR
Ravishangar Kalyanam319a83c2012-03-21 18:38:05 -07002689static struct msm_bus_vectors rotator_init_vectors[] = {
2690 {
2691 .src = MSM_BUS_MASTER_ROTATOR,
2692 .dst = MSM_BUS_SLAVE_EBI_CH0,
2693 .ab = 0,
2694 .ib = 0,
2695 },
2696};
2697
2698static struct msm_bus_vectors rotator_ui_vectors[] = {
2699 {
2700 .src = MSM_BUS_MASTER_ROTATOR,
2701 .dst = MSM_BUS_SLAVE_EBI_CH0,
2702 .ab = (1024 * 600 * 4 * 2 * 60),
2703 .ib = (1024 * 600 * 4 * 2 * 60 * 1.5),
2704 },
2705};
2706
2707static struct msm_bus_vectors rotator_vga_vectors[] = {
2708 {
2709 .src = MSM_BUS_MASTER_ROTATOR,
2710 .dst = MSM_BUS_SLAVE_EBI_CH0,
2711 .ab = (640 * 480 * 2 * 2 * 30),
2712 .ib = (640 * 480 * 2 * 2 * 30 * 1.5),
2713 },
2714};
2715static struct msm_bus_vectors rotator_720p_vectors[] = {
2716 {
2717 .src = MSM_BUS_MASTER_ROTATOR,
2718 .dst = MSM_BUS_SLAVE_EBI_CH0,
2719 .ab = (1280 * 736 * 2 * 2 * 30),
2720 .ib = (1280 * 736 * 2 * 2 * 30 * 1.5),
2721 },
2722};
2723
2724static struct msm_bus_vectors rotator_1080p_vectors[] = {
2725 {
2726 .src = MSM_BUS_MASTER_ROTATOR,
2727 .dst = MSM_BUS_SLAVE_EBI_CH0,
2728 .ab = (1920 * 1088 * 2 * 2 * 30),
2729 .ib = (1920 * 1088 * 2 * 2 * 30 * 1.5),
2730 },
2731};
2732
2733static struct msm_bus_paths rotator_bus_scale_usecases[] = {
2734 {
2735 ARRAY_SIZE(rotator_init_vectors),
2736 rotator_init_vectors,
2737 },
2738 {
2739 ARRAY_SIZE(rotator_ui_vectors),
2740 rotator_ui_vectors,
2741 },
2742 {
2743 ARRAY_SIZE(rotator_vga_vectors),
2744 rotator_vga_vectors,
2745 },
2746 {
2747 ARRAY_SIZE(rotator_720p_vectors),
2748 rotator_720p_vectors,
2749 },
2750 {
2751 ARRAY_SIZE(rotator_1080p_vectors),
2752 rotator_1080p_vectors,
2753 },
2754};
2755
2756struct msm_bus_scale_pdata rotator_bus_scale_pdata = {
2757 rotator_bus_scale_usecases,
2758 ARRAY_SIZE(rotator_bus_scale_usecases),
2759 .name = "rotator",
2760};
2761
2762void __init msm_rotator_update_bus_vectors(unsigned int xres,
2763 unsigned int yres)
2764{
2765 rotator_ui_vectors[0].ab = xres * yres * 4 * 2 * 60;
2766 rotator_ui_vectors[0].ib = xres * yres * 4 * 2 * 60 * 3 / 2;
2767}
2768
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002769#define ROTATOR_HW_BASE 0x04E00000
2770static struct resource resources_msm_rotator[] = {
2771 {
2772 .start = ROTATOR_HW_BASE,
2773 .end = ROTATOR_HW_BASE + 0x100000 - 1,
2774 .flags = IORESOURCE_MEM,
2775 },
2776 {
2777 .start = ROT_IRQ,
2778 .end = ROT_IRQ,
2779 .flags = IORESOURCE_IRQ,
2780 },
2781};
2782
2783static struct msm_rot_clocks rotator_clocks[] = {
2784 {
Matt Wagantallbb90da92011-10-25 15:07:52 -07002785 .clk_name = "core_clk",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002786 .clk_type = ROTATOR_CORE_CLK,
Nagamalleswararao Ganji0bb107342011-10-10 20:55:32 -07002787 .clk_rate = 200 * 1000 * 1000,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002788 },
2789 {
Matt Wagantallbb90da92011-10-25 15:07:52 -07002790 .clk_name = "iface_clk",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002791 .clk_type = ROTATOR_PCLK,
2792 .clk_rate = 0,
2793 },
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002794};
2795
2796static struct msm_rotator_platform_data rotator_pdata = {
2797 .number_of_clocks = ARRAY_SIZE(rotator_clocks),
2798 .hardware_version_number = 0x01020309,
2799 .rotator_clks = rotator_clocks,
Nagamalleswararao Ganji5fabbd62011-11-06 23:10:43 -08002800#ifdef CONFIG_MSM_BUS_SCALING
2801 .bus_scale_table = &rotator_bus_scale_pdata,
2802#endif
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002803};
2804
2805struct platform_device msm_rotator_device = {
2806 .name = "msm_rotator",
2807 .id = 0,
2808 .num_resources = ARRAY_SIZE(resources_msm_rotator),
2809 .resource = resources_msm_rotator,
2810 .dev = {
2811 .platform_data = &rotator_pdata,
2812 },
2813};
Olav Hauganef95ae32012-05-15 09:50:30 -07002814
2815void __init msm_rotator_set_split_iommu_domain(void)
2816{
2817 rotator_pdata.rot_iommu_split_domain = 1;
2818}
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002819#endif
2820
2821#define MIPI_DSI_HW_BASE 0x04700000
2822#define MDP_HW_BASE 0x05100000
2823
2824static struct resource msm_mipi_dsi1_resources[] = {
2825 {
2826 .name = "mipi_dsi",
2827 .start = MIPI_DSI_HW_BASE,
kuogee hsiehf12acf52011-09-06 10:49:43 -07002828 .end = MIPI_DSI_HW_BASE + 0x000F0000 - 1,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002829 .flags = IORESOURCE_MEM,
2830 },
2831 {
2832 .start = DSI1_IRQ,
2833 .end = DSI1_IRQ,
2834 .flags = IORESOURCE_IRQ,
2835 },
2836};
2837
2838struct platform_device msm_mipi_dsi1_device = {
2839 .name = "mipi_dsi",
2840 .id = 1,
2841 .num_resources = ARRAY_SIZE(msm_mipi_dsi1_resources),
2842 .resource = msm_mipi_dsi1_resources,
2843};
2844
2845static struct resource msm_mdp_resources[] = {
2846 {
2847 .name = "mdp",
2848 .start = MDP_HW_BASE,
kuogee hsiehf12acf52011-09-06 10:49:43 -07002849 .end = MDP_HW_BASE + 0x000F0000 - 1,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002850 .flags = IORESOURCE_MEM,
2851 },
2852 {
2853 .start = MDP_IRQ,
2854 .end = MDP_IRQ,
2855 .flags = IORESOURCE_IRQ,
2856 },
2857};
2858
2859static struct platform_device msm_mdp_device = {
2860 .name = "mdp",
2861 .id = 0,
2862 .num_resources = ARRAY_SIZE(msm_mdp_resources),
2863 .resource = msm_mdp_resources,
2864};
2865
2866static void __init msm_register_device(struct platform_device *pdev, void *data)
2867{
2868 int ret;
2869
2870 pdev->dev.platform_data = data;
2871 ret = platform_device_register(pdev);
2872 if (ret)
2873 dev_err(&pdev->dev,
2874 "%s: platform_device_register() failed = %d\n",
2875 __func__, ret);
2876}
2877
Ravishangar Kalyanam882930f2011-07-08 17:51:52 -07002878#ifdef CONFIG_MSM_BUS_SCALING
2879static struct platform_device msm_dtv_device = {
2880 .name = "dtv",
2881 .id = 0,
2882};
2883#endif
2884
Ravishangar Kalyanamc2fee312012-02-09 19:11:22 -08002885struct platform_device msm_lvds_device = {
Huaibin Yang4a084e32011-12-15 15:25:52 -08002886 .name = "lvds",
2887 .id = 0,
2888};
2889
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002890void __init msm_fb_register_device(char *name, void *data)
2891{
2892 if (!strncmp(name, "mdp", 3))
2893 msm_register_device(&msm_mdp_device, data);
2894 else if (!strncmp(name, "mipi_dsi", 8))
2895 msm_register_device(&msm_mipi_dsi1_device, data);
Huaibin Yang4a084e32011-12-15 15:25:52 -08002896 else if (!strncmp(name, "lvds", 4))
2897 msm_register_device(&msm_lvds_device, data);
Ravishangar Kalyanam882930f2011-07-08 17:51:52 -07002898#ifdef CONFIG_MSM_BUS_SCALING
2899 else if (!strncmp(name, "dtv", 3))
2900 msm_register_device(&msm_dtv_device, data);
2901#endif
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002902 else
2903 printk(KERN_ERR "%s: unknown device! %s\n", __func__, name);
2904}
2905
2906static struct resource resources_sps[] = {
2907 {
2908 .name = "pipe_mem",
2909 .start = 0x12800000,
2910 .end = 0x12800000 + 0x4000 - 1,
2911 .flags = IORESOURCE_MEM,
2912 },
2913 {
2914 .name = "bamdma_dma",
2915 .start = 0x12240000,
2916 .end = 0x12240000 + 0x1000 - 1,
2917 .flags = IORESOURCE_MEM,
2918 },
2919 {
2920 .name = "bamdma_bam",
2921 .start = 0x12244000,
2922 .end = 0x12244000 + 0x4000 - 1,
2923 .flags = IORESOURCE_MEM,
2924 },
2925 {
2926 .name = "bamdma_irq",
2927 .start = SPS_BAM_DMA_IRQ,
2928 .end = SPS_BAM_DMA_IRQ,
2929 .flags = IORESOURCE_IRQ,
2930 },
2931};
2932
2933struct msm_sps_platform_data msm_sps_pdata = {
2934 .bamdma_restricted_pipes = 0x06,
2935};
2936
2937struct platform_device msm_device_sps = {
2938 .name = "msm_sps",
2939 .id = -1,
2940 .num_resources = ARRAY_SIZE(resources_sps),
2941 .resource = resources_sps,
2942 .dev.platform_data = &msm_sps_pdata,
2943};
2944
2945#ifdef CONFIG_MSM_MPM
Praveen Chidambaram78499012011-11-01 17:15:17 -06002946static uint16_t msm_mpm_irqs_m2a[MSM_MPM_NR_MPM_IRQS] __initdata = {
Praveen Chidambaramb3d857c2011-05-31 16:28:07 -06002947 [1] = MSM_GPIO_TO_INT(46),
2948 [2] = MSM_GPIO_TO_INT(150),
2949 [4] = MSM_GPIO_TO_INT(103),
2950 [5] = MSM_GPIO_TO_INT(104),
2951 [6] = MSM_GPIO_TO_INT(105),
2952 [7] = MSM_GPIO_TO_INT(106),
2953 [8] = MSM_GPIO_TO_INT(107),
2954 [9] = MSM_GPIO_TO_INT(7),
2955 [10] = MSM_GPIO_TO_INT(11),
2956 [11] = MSM_GPIO_TO_INT(15),
2957 [12] = MSM_GPIO_TO_INT(19),
2958 [13] = MSM_GPIO_TO_INT(23),
2959 [14] = MSM_GPIO_TO_INT(27),
2960 [15] = MSM_GPIO_TO_INT(31),
2961 [16] = MSM_GPIO_TO_INT(35),
2962 [19] = MSM_GPIO_TO_INT(90),
2963 [20] = MSM_GPIO_TO_INT(92),
2964 [23] = MSM_GPIO_TO_INT(85),
2965 [24] = MSM_GPIO_TO_INT(83),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002966 [25] = USB1_HS_IRQ,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002967 [27] = HDMI_IRQ,
Praveen Chidambaramb3d857c2011-05-31 16:28:07 -06002968 [29] = MSM_GPIO_TO_INT(10),
2969 [30] = MSM_GPIO_TO_INT(102),
2970 [31] = MSM_GPIO_TO_INT(81),
2971 [32] = MSM_GPIO_TO_INT(78),
2972 [33] = MSM_GPIO_TO_INT(94),
2973 [34] = MSM_GPIO_TO_INT(72),
2974 [35] = MSM_GPIO_TO_INT(39),
2975 [36] = MSM_GPIO_TO_INT(43),
2976 [37] = MSM_GPIO_TO_INT(61),
2977 [38] = MSM_GPIO_TO_INT(50),
2978 [39] = MSM_GPIO_TO_INT(42),
2979 [41] = MSM_GPIO_TO_INT(62),
2980 [42] = MSM_GPIO_TO_INT(76),
2981 [43] = MSM_GPIO_TO_INT(75),
2982 [44] = MSM_GPIO_TO_INT(70),
2983 [45] = MSM_GPIO_TO_INT(69),
2984 [46] = MSM_GPIO_TO_INT(67),
2985 [47] = MSM_GPIO_TO_INT(65),
2986 [48] = MSM_GPIO_TO_INT(58),
2987 [49] = MSM_GPIO_TO_INT(54),
2988 [50] = MSM_GPIO_TO_INT(52),
2989 [51] = MSM_GPIO_TO_INT(49),
2990 [52] = MSM_GPIO_TO_INT(40),
2991 [53] = MSM_GPIO_TO_INT(37),
2992 [54] = MSM_GPIO_TO_INT(24),
2993 [55] = MSM_GPIO_TO_INT(14),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002994};
2995
Praveen Chidambaram78499012011-11-01 17:15:17 -06002996static uint16_t msm_mpm_bypassed_apps_irqs[] __initdata = {
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002997 TLMM_MSM_SUMMARY_IRQ,
2998 RPM_APCC_CPU0_GP_HIGH_IRQ,
2999 RPM_APCC_CPU0_GP_MEDIUM_IRQ,
3000 RPM_APCC_CPU0_GP_LOW_IRQ,
3001 RPM_APCC_CPU0_WAKE_UP_IRQ,
3002 RPM_APCC_CPU1_GP_HIGH_IRQ,
3003 RPM_APCC_CPU1_GP_MEDIUM_IRQ,
3004 RPM_APCC_CPU1_GP_LOW_IRQ,
3005 RPM_APCC_CPU1_WAKE_UP_IRQ,
3006 MSS_TO_APPS_IRQ_0,
3007 MSS_TO_APPS_IRQ_1,
3008 MSS_TO_APPS_IRQ_2,
3009 MSS_TO_APPS_IRQ_3,
3010 MSS_TO_APPS_IRQ_4,
3011 MSS_TO_APPS_IRQ_5,
3012 MSS_TO_APPS_IRQ_6,
3013 MSS_TO_APPS_IRQ_7,
3014 MSS_TO_APPS_IRQ_8,
3015 MSS_TO_APPS_IRQ_9,
3016 LPASS_SCSS_GP_LOW_IRQ,
3017 LPASS_SCSS_GP_MEDIUM_IRQ,
3018 LPASS_SCSS_GP_HIGH_IRQ,
David Collins5e2b2fd2011-09-08 15:23:30 -07003019 SPS_MTI_30,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003020 SPS_MTI_31,
David Collins5e2b2fd2011-09-08 15:23:30 -07003021 RIVA_APSS_SPARE_IRQ,
David Collins84ecd0a2011-09-27 21:11:11 -07003022 RIVA_APPS_WLAN_SMSM_IRQ,
3023 RIVA_APPS_WLAN_RX_DATA_AVAIL_IRQ,
3024 RIVA_APPS_WLAN_DATA_XFER_DONE_IRQ,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003025};
3026
Praveen Chidambaram78499012011-11-01 17:15:17 -06003027struct msm_mpm_device_data msm8960_mpm_dev_data __initdata = {
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003028 .irqs_m2a = msm_mpm_irqs_m2a,
3029 .irqs_m2a_size = ARRAY_SIZE(msm_mpm_irqs_m2a),
3030 .bypassed_apps_irqs = msm_mpm_bypassed_apps_irqs,
3031 .bypassed_apps_irqs_size = ARRAY_SIZE(msm_mpm_bypassed_apps_irqs),
3032 .mpm_request_reg_base = MSM_RPM_BASE + 0x9d8,
3033 .mpm_status_reg_base = MSM_RPM_BASE + 0xdf8,
3034 .mpm_apps_ipc_reg = MSM_APCS_GCC_BASE + 0x008,
3035 .mpm_apps_ipc_val = BIT(1),
3036 .mpm_ipc_irq = RPM_APCC_CPU0_GP_MEDIUM_IRQ,
3037
3038};
3039#endif
3040
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003041#define LPASS_SLIMBUS_PHYS 0x28080000
3042#define LPASS_SLIMBUS_BAM_PHYS 0x28084000
Sagar Dhariacc969452011-09-19 10:34:30 -06003043#define LPASS_SLIMBUS_SLEW (MSM8960_TLMM_PHYS + 0x207C)
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003044/* Board info for the slimbus slave device */
3045static struct resource slimbus_res[] = {
3046 {
3047 .start = LPASS_SLIMBUS_PHYS,
3048 .end = LPASS_SLIMBUS_PHYS + 8191,
3049 .flags = IORESOURCE_MEM,
3050 .name = "slimbus_physical",
3051 },
3052 {
3053 .start = LPASS_SLIMBUS_BAM_PHYS,
3054 .end = LPASS_SLIMBUS_BAM_PHYS + 8191,
3055 .flags = IORESOURCE_MEM,
3056 .name = "slimbus_bam_physical",
3057 },
3058 {
Sagar Dhariacc969452011-09-19 10:34:30 -06003059 .start = LPASS_SLIMBUS_SLEW,
3060 .end = LPASS_SLIMBUS_SLEW + 4 - 1,
3061 .flags = IORESOURCE_MEM,
3062 .name = "slimbus_slew_reg",
3063 },
3064 {
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003065 .start = SLIMBUS0_CORE_EE1_IRQ,
3066 .end = SLIMBUS0_CORE_EE1_IRQ,
3067 .flags = IORESOURCE_IRQ,
3068 .name = "slimbus_irq",
3069 },
3070 {
3071 .start = SLIMBUS0_BAM_EE1_IRQ,
3072 .end = SLIMBUS0_BAM_EE1_IRQ,
3073 .flags = IORESOURCE_IRQ,
3074 .name = "slimbus_bam_irq",
3075 },
3076};
3077
3078struct platform_device msm_slim_ctrl = {
3079 .name = "msm_slim_ctrl",
3080 .id = 1,
3081 .num_resources = ARRAY_SIZE(slimbus_res),
3082 .resource = slimbus_res,
3083 .dev = {
3084 .coherent_dma_mask = 0xffffffffULL,
3085 },
3086};
3087
Lucille Sylvester6e362412011-12-09 16:21:42 -07003088static struct msm_dcvs_freq_entry grp3d_freq[] = {
Abhijeet Dharmapurikar7e37e6e2012-08-23 18:58:44 -07003089 {0, 900, 0, 0, 0},
3090 {0, 950, 0, 0, 0},
3091 {0, 950, 0, 0, 0},
3092 {0, 1200, 1, 100, 100},
Lucille Sylvester6e362412011-12-09 16:21:42 -07003093};
3094
3095static struct msm_dcvs_freq_entry grp2d_freq[] = {
Abhijeet Dharmapurikar7e37e6e2012-08-23 18:58:44 -07003096 {0, 900, 0, 0, 0},
3097 {0, 950, 1, 100, 100},
Lucille Sylvester6e362412011-12-09 16:21:42 -07003098};
3099
3100static struct msm_dcvs_core_info grp3d_core_info = {
Abhijeet Dharmapurikar7e37e6e2012-08-23 18:58:44 -07003101 .freq_tbl = &grp3d_freq[0],
3102 .core_param = {
3103 .core_type = MSM_DCVS_CORE_TYPE_GPU,
Lucille Sylvester6e362412011-12-09 16:21:42 -07003104 },
Abhijeet Dharmapurikar7e37e6e2012-08-23 18:58:44 -07003105 .algo_param = {
3106 .disable_pc_threshold = 0,
3107 .em_win_size_min_us = 100000,
3108 .em_win_size_max_us = 300000,
3109 .em_max_util_pct = 97,
3110 .group_id = 0,
3111 .max_freq_chg_time_us = 100000,
3112 .slack_mode_dynamic = 0,
3113 .slack_weight_thresh_pct = 0,
3114 .slack_time_min_us = 39000,
3115 .slack_time_max_us = 39000,
3116 .ss_win_size_min_us = 1000000,
3117 .ss_win_size_max_us = 1000000,
3118 .ss_util_pct = 95,
Steve Muckle8d0782e2012-12-06 14:31:00 -08003119 .ss_no_corr_below_freq = 0,
Lucille Sylvester6e362412011-12-09 16:21:42 -07003120 },
Abhijeet Dharmapurikar7e37e6e2012-08-23 18:58:44 -07003121 .energy_coeffs = {
3122 .active_coeff_a = 2492,
3123 .active_coeff_b = 0,
3124 .active_coeff_c = 0,
3125
3126 .leakage_coeff_a = -17720,
3127 .leakage_coeff_b = 37,
3128 .leakage_coeff_c = 2729,
3129 .leakage_coeff_d = -277,
3130 },
3131 .power_param = {
3132 .current_temp = 25,
3133 .num_freq = ARRAY_SIZE(grp3d_freq),
3134 }
Lucille Sylvester6e362412011-12-09 16:21:42 -07003135};
3136
3137static struct msm_dcvs_core_info grp2d_core_info = {
Abhijeet Dharmapurikar7e37e6e2012-08-23 18:58:44 -07003138 .freq_tbl = &grp2d_freq[0],
3139 .core_param = {
3140 .core_type = MSM_DCVS_CORE_TYPE_GPU,
Lucille Sylvester6e362412011-12-09 16:21:42 -07003141 },
Abhijeet Dharmapurikar7e37e6e2012-08-23 18:58:44 -07003142 .algo_param = {
3143 .disable_pc_threshold = 0,
3144 .em_win_size_min_us = 100000,
3145 .em_win_size_max_us = 300000,
3146 .em_max_util_pct = 97,
3147 .group_id = 0,
3148 .max_freq_chg_time_us = 100000,
3149 .slack_mode_dynamic = 0,
3150 .slack_weight_thresh_pct = 0,
3151 .slack_time_min_us = 39000,
3152 .slack_time_max_us = 39000,
3153 .ss_win_size_min_us = 1000000,
3154 .ss_win_size_max_us = 1000000,
3155 .ss_util_pct = 95,
Steve Muckle8d0782e2012-12-06 14:31:00 -08003156 .ss_no_corr_below_freq = 0,
Lucille Sylvester6e362412011-12-09 16:21:42 -07003157 },
Abhijeet Dharmapurikar7e37e6e2012-08-23 18:58:44 -07003158 .energy_coeffs = {
3159 .active_coeff_a = 2492,
3160 .active_coeff_b = 0,
3161 .active_coeff_c = 0,
3162
3163 .leakage_coeff_a = -17720,
3164 .leakage_coeff_b = 37,
3165 .leakage_coeff_c = 2729,
3166 .leakage_coeff_d = -277,
3167 },
3168 .power_param = {
3169 .current_temp = 25,
3170 .num_freq = ARRAY_SIZE(grp2d_freq),
3171 }
Lucille Sylvester6e362412011-12-09 16:21:42 -07003172};
3173
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003174#ifdef CONFIG_MSM_BUS_SCALING
3175static struct msm_bus_vectors grp3d_init_vectors[] = {
3176 {
3177 .src = MSM_BUS_MASTER_GRAPHICS_3D,
3178 .dst = MSM_BUS_SLAVE_EBI_CH0,
3179 .ab = 0,
3180 .ib = 0,
3181 },
3182};
3183
Lucille Sylvester34ec3692011-08-16 16:28:04 -06003184static struct msm_bus_vectors grp3d_low_vectors[] = {
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003185 {
3186 .src = MSM_BUS_MASTER_GRAPHICS_3D,
3187 .dst = MSM_BUS_SLAVE_EBI_CH0,
3188 .ab = 0,
Lucille Sylvester3efebb52012-01-17 12:58:38 -07003189 .ib = KGSL_CONVERT_TO_MBPS(1000),
Lucille Sylvester34ec3692011-08-16 16:28:04 -06003190 },
3191};
3192
3193static struct msm_bus_vectors grp3d_nominal_low_vectors[] = {
3194 {
3195 .src = MSM_BUS_MASTER_GRAPHICS_3D,
3196 .dst = MSM_BUS_SLAVE_EBI_CH0,
3197 .ab = 0,
Suman Tatiraju0123d182011-09-30 14:59:06 -07003198 .ib = KGSL_CONVERT_TO_MBPS(2048),
Lucille Sylvester34ec3692011-08-16 16:28:04 -06003199 },
3200};
3201
3202static struct msm_bus_vectors grp3d_nominal_high_vectors[] = {
3203 {
3204 .src = MSM_BUS_MASTER_GRAPHICS_3D,
3205 .dst = MSM_BUS_SLAVE_EBI_CH0,
3206 .ab = 0,
Suman Tatiraju0123d182011-09-30 14:59:06 -07003207 .ib = KGSL_CONVERT_TO_MBPS(2656),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003208 },
3209};
3210
3211static struct msm_bus_vectors grp3d_max_vectors[] = {
3212 {
3213 .src = MSM_BUS_MASTER_GRAPHICS_3D,
3214 .dst = MSM_BUS_SLAVE_EBI_CH0,
3215 .ab = 0,
Suman Tatiraju0123d182011-09-30 14:59:06 -07003216 .ib = KGSL_CONVERT_TO_MBPS(3968),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003217 },
3218};
3219
3220static struct msm_bus_paths grp3d_bus_scale_usecases[] = {
3221 {
3222 ARRAY_SIZE(grp3d_init_vectors),
3223 grp3d_init_vectors,
3224 },
3225 {
Lucille Sylvester34ec3692011-08-16 16:28:04 -06003226 ARRAY_SIZE(grp3d_low_vectors),
3227 grp3d_low_vectors,
3228 },
3229 {
3230 ARRAY_SIZE(grp3d_nominal_low_vectors),
3231 grp3d_nominal_low_vectors,
3232 },
3233 {
3234 ARRAY_SIZE(grp3d_nominal_high_vectors),
3235 grp3d_nominal_high_vectors,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003236 },
3237 {
3238 ARRAY_SIZE(grp3d_max_vectors),
3239 grp3d_max_vectors,
3240 },
3241};
3242
3243static struct msm_bus_scale_pdata grp3d_bus_scale_pdata = {
3244 grp3d_bus_scale_usecases,
3245 ARRAY_SIZE(grp3d_bus_scale_usecases),
3246 .name = "grp3d",
3247};
3248
3249static struct msm_bus_vectors grp2d0_init_vectors[] = {
3250 {
3251 .src = MSM_BUS_MASTER_GRAPHICS_2D_CORE0,
3252 .dst = MSM_BUS_SLAVE_EBI_CH0,
3253 .ab = 0,
3254 .ib = 0,
3255 },
3256};
3257
Lucille Sylvester808eca22011-11-03 10:26:29 -07003258static struct msm_bus_vectors grp2d0_nominal_vectors[] = {
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003259 {
3260 .src = MSM_BUS_MASTER_GRAPHICS_2D_CORE0,
3261 .dst = MSM_BUS_SLAVE_EBI_CH0,
3262 .ab = 0,
Lucille Sylvester3efebb52012-01-17 12:58:38 -07003263 .ib = KGSL_CONVERT_TO_MBPS(1000),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003264 },
3265};
3266
Lucille Sylvester808eca22011-11-03 10:26:29 -07003267static struct msm_bus_vectors grp2d0_max_vectors[] = {
3268 {
3269 .src = MSM_BUS_MASTER_GRAPHICS_2D_CORE0,
3270 .dst = MSM_BUS_SLAVE_EBI_CH0,
3271 .ab = 0,
3272 .ib = KGSL_CONVERT_TO_MBPS(2048),
3273 },
3274};
3275
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003276static struct msm_bus_paths grp2d0_bus_scale_usecases[] = {
3277 {
3278 ARRAY_SIZE(grp2d0_init_vectors),
3279 grp2d0_init_vectors,
3280 },
3281 {
Lucille Sylvester808eca22011-11-03 10:26:29 -07003282 ARRAY_SIZE(grp2d0_nominal_vectors),
3283 grp2d0_nominal_vectors,
3284 },
3285 {
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003286 ARRAY_SIZE(grp2d0_max_vectors),
3287 grp2d0_max_vectors,
3288 },
3289};
3290
3291struct msm_bus_scale_pdata grp2d0_bus_scale_pdata = {
3292 grp2d0_bus_scale_usecases,
3293 ARRAY_SIZE(grp2d0_bus_scale_usecases),
3294 .name = "grp2d0",
3295};
3296
3297static struct msm_bus_vectors grp2d1_init_vectors[] = {
3298 {
3299 .src = MSM_BUS_MASTER_GRAPHICS_2D_CORE1,
3300 .dst = MSM_BUS_SLAVE_EBI_CH0,
3301 .ab = 0,
3302 .ib = 0,
3303 },
3304};
3305
Lucille Sylvester808eca22011-11-03 10:26:29 -07003306static struct msm_bus_vectors grp2d1_nominal_vectors[] = {
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003307 {
3308 .src = MSM_BUS_MASTER_GRAPHICS_2D_CORE1,
3309 .dst = MSM_BUS_SLAVE_EBI_CH0,
3310 .ab = 0,
Lucille Sylvester3efebb52012-01-17 12:58:38 -07003311 .ib = KGSL_CONVERT_TO_MBPS(1000),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003312 },
3313};
3314
Lucille Sylvester808eca22011-11-03 10:26:29 -07003315static struct msm_bus_vectors grp2d1_max_vectors[] = {
3316 {
3317 .src = MSM_BUS_MASTER_GRAPHICS_2D_CORE1,
3318 .dst = MSM_BUS_SLAVE_EBI_CH0,
3319 .ab = 0,
3320 .ib = KGSL_CONVERT_TO_MBPS(2048),
3321 },
3322};
3323
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003324static struct msm_bus_paths grp2d1_bus_scale_usecases[] = {
3325 {
3326 ARRAY_SIZE(grp2d1_init_vectors),
3327 grp2d1_init_vectors,
3328 },
3329 {
Lucille Sylvester808eca22011-11-03 10:26:29 -07003330 ARRAY_SIZE(grp2d1_nominal_vectors),
3331 grp2d1_nominal_vectors,
3332 },
3333 {
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003334 ARRAY_SIZE(grp2d1_max_vectors),
3335 grp2d1_max_vectors,
3336 },
3337};
3338
3339struct msm_bus_scale_pdata grp2d1_bus_scale_pdata = {
3340 grp2d1_bus_scale_usecases,
3341 ARRAY_SIZE(grp2d1_bus_scale_usecases),
3342 .name = "grp2d1",
3343};
3344#endif
3345
3346static struct resource kgsl_3d0_resources[] = {
3347 {
3348 .name = KGSL_3D0_REG_MEMORY,
3349 .start = 0x04300000, /* GFX3D address */
3350 .end = 0x0431ffff,
3351 .flags = IORESOURCE_MEM,
3352 },
3353 {
3354 .name = KGSL_3D0_IRQ,
3355 .start = GFX3D_IRQ,
3356 .end = GFX3D_IRQ,
3357 .flags = IORESOURCE_IRQ,
3358 },
3359};
3360
Carter Cooper3852cbb2012-08-20 22:11:42 -06003361static const struct kgsl_iommu_ctx kgsl_3d0_iommu0_ctxs[] = {
Shubhraprakash Daseb6df1d2012-05-01 00:55:35 -06003362 { "gfx3d_user", 0 },
3363 { "gfx3d_priv", 1 },
Jordan Crouse46cf4bb2012-02-21 08:54:52 -07003364};
3365
Carter Cooper3852cbb2012-08-20 22:11:42 -06003366static const struct kgsl_iommu_ctx kgsl_3d0_iommu1_ctxs[] = {
3367 { "gfx3d1_user", 0 },
3368 { "gfx3d1_priv", 1 },
3369};
3370
Jordan Crouse46cf4bb2012-02-21 08:54:52 -07003371static struct kgsl_device_iommu_data kgsl_3d0_iommu_data[] = {
3372 {
Carter Cooper3852cbb2012-08-20 22:11:42 -06003373 .iommu_ctxs = kgsl_3d0_iommu0_ctxs,
3374 .iommu_ctx_count = ARRAY_SIZE(kgsl_3d0_iommu0_ctxs),
Jordan Crouse46cf4bb2012-02-21 08:54:52 -07003375 .physstart = 0x07C00000,
3376 .physend = 0x07C00000 + SZ_1M - 1,
3377 },
Carter Cooper3852cbb2012-08-20 22:11:42 -06003378 {
3379 .iommu_ctxs = kgsl_3d0_iommu1_ctxs,
3380 .iommu_ctx_count = ARRAY_SIZE(kgsl_3d0_iommu1_ctxs),
3381 .physstart = 0x07D00000,
3382 .physend = 0x07D00000 + SZ_1M - 1,
3383 },
Jordan Crouse46cf4bb2012-02-21 08:54:52 -07003384};
3385
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003386static struct kgsl_device_platform_data kgsl_3d0_pdata = {
Lucille Sylvesterdce84cd2011-10-12 14:15:37 -06003387 .pwrlevel = {
3388 {
3389 .gpu_freq = 400000000,
3390 .bus_freq = 4,
3391 .io_fraction = 0,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003392 },
Lucille Sylvesterdce84cd2011-10-12 14:15:37 -06003393 {
3394 .gpu_freq = 300000000,
3395 .bus_freq = 3,
3396 .io_fraction = 33,
3397 },
3398 {
3399 .gpu_freq = 200000000,
3400 .bus_freq = 2,
3401 .io_fraction = 100,
3402 },
3403 {
3404 .gpu_freq = 128000000,
3405 .bus_freq = 1,
3406 .io_fraction = 100,
3407 },
3408 {
3409 .gpu_freq = 27000000,
3410 .bus_freq = 0,
3411 },
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003412 },
Lucille Sylvester67b4c532012-02-08 11:24:31 -08003413 .init_level = 1,
Lucille Sylvester6e362412011-12-09 16:21:42 -07003414 .num_levels = ARRAY_SIZE(grp3d_freq) + 1,
Lucille Sylvesterdce84cd2011-10-12 14:15:37 -06003415 .set_grp_async = NULL,
Lucille Sylvester5dc67512012-03-27 15:07:58 -06003416 .idle_timeout = HZ/12,
Lucille Sylvesterdce84cd2011-10-12 14:15:37 -06003417 .nap_allowed = true,
3418 .clk_map = KGSL_CLK_CORE | KGSL_CLK_IFACE | KGSL_CLK_MEM_IFACE,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003419#ifdef CONFIG_MSM_BUS_SCALING
Lucille Sylvesterdce84cd2011-10-12 14:15:37 -06003420 .bus_scale_table = &grp3d_bus_scale_pdata,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003421#endif
Jordan Crouse46cf4bb2012-02-21 08:54:52 -07003422 .iommu_data = kgsl_3d0_iommu_data,
3423 .iommu_count = ARRAY_SIZE(kgsl_3d0_iommu_data),
Lucille Sylvester6e362412011-12-09 16:21:42 -07003424 .core_info = &grp3d_core_info,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003425};
3426
3427struct platform_device msm_kgsl_3d0 = {
3428 .name = "kgsl-3d0",
3429 .id = 0,
3430 .num_resources = ARRAY_SIZE(kgsl_3d0_resources),
3431 .resource = kgsl_3d0_resources,
3432 .dev = {
3433 .platform_data = &kgsl_3d0_pdata,
3434 },
3435};
3436
3437static struct resource kgsl_2d0_resources[] = {
3438 {
3439 .name = KGSL_2D0_REG_MEMORY,
3440 .start = 0x04100000, /* Z180 base address */
3441 .end = 0x04100FFF,
3442 .flags = IORESOURCE_MEM,
3443 },
3444 {
3445 .name = KGSL_2D0_IRQ,
3446 .start = GFX2D0_IRQ,
3447 .end = GFX2D0_IRQ,
3448 .flags = IORESOURCE_IRQ,
3449 },
3450};
3451
Shubhraprakash Daseb6df1d2012-05-01 00:55:35 -06003452static const struct kgsl_iommu_ctx kgsl_2d0_iommu_ctxs[] = {
3453 { "gfx2d0_2d0", 0 },
Jordan Crouse46cf4bb2012-02-21 08:54:52 -07003454};
3455
3456static struct kgsl_device_iommu_data kgsl_2d0_iommu_data[] = {
3457 {
Shubhraprakash Daseb6df1d2012-05-01 00:55:35 -06003458 .iommu_ctxs = kgsl_2d0_iommu_ctxs,
3459 .iommu_ctx_count = ARRAY_SIZE(kgsl_2d0_iommu_ctxs),
Jordan Crouse46cf4bb2012-02-21 08:54:52 -07003460 .physstart = 0x07D00000,
3461 .physend = 0x07D00000 + SZ_1M - 1,
3462 },
3463};
3464
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003465static struct kgsl_device_platform_data kgsl_2d0_pdata = {
Lucille Sylvesterdce84cd2011-10-12 14:15:37 -06003466 .pwrlevel = {
3467 {
3468 .gpu_freq = 200000000,
Lucille Sylvester808eca22011-11-03 10:26:29 -07003469 .bus_freq = 2,
3470 },
3471 {
3472 .gpu_freq = 96000000,
Lucille Sylvesterdce84cd2011-10-12 14:15:37 -06003473 .bus_freq = 1,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003474 },
Lucille Sylvesterdce84cd2011-10-12 14:15:37 -06003475 {
Lucille Sylvester808eca22011-11-03 10:26:29 -07003476 .gpu_freq = 27000000,
Lucille Sylvesterdce84cd2011-10-12 14:15:37 -06003477 .bus_freq = 0,
3478 },
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003479 },
Lucille Sylvesterdce84cd2011-10-12 14:15:37 -06003480 .init_level = 0,
Lucille Sylvester6e362412011-12-09 16:21:42 -07003481 .num_levels = ARRAY_SIZE(grp2d_freq) + 1,
Lucille Sylvesterdce84cd2011-10-12 14:15:37 -06003482 .set_grp_async = NULL,
Lucille Sylvester808eca22011-11-03 10:26:29 -07003483 .idle_timeout = HZ/5,
Lucille Sylvesterdce84cd2011-10-12 14:15:37 -06003484 .nap_allowed = true,
3485 .clk_map = KGSL_CLK_CORE | KGSL_CLK_IFACE,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003486#ifdef CONFIG_MSM_BUS_SCALING
Lucille Sylvesterdce84cd2011-10-12 14:15:37 -06003487 .bus_scale_table = &grp2d0_bus_scale_pdata,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003488#endif
Jordan Crouse46cf4bb2012-02-21 08:54:52 -07003489 .iommu_data = kgsl_2d0_iommu_data,
3490 .iommu_count = ARRAY_SIZE(kgsl_2d0_iommu_data),
Lucille Sylvester6e362412011-12-09 16:21:42 -07003491 .core_info = &grp2d_core_info,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003492};
3493
3494struct platform_device msm_kgsl_2d0 = {
3495 .name = "kgsl-2d0",
3496 .id = 0,
3497 .num_resources = ARRAY_SIZE(kgsl_2d0_resources),
3498 .resource = kgsl_2d0_resources,
3499 .dev = {
3500 .platform_data = &kgsl_2d0_pdata,
3501 },
3502};
3503
Shubhraprakash Daseb6df1d2012-05-01 00:55:35 -06003504static const struct kgsl_iommu_ctx kgsl_2d1_iommu_ctxs[] = {
3505 { "gfx2d1_2d1", 0 },
Jordan Crouse46cf4bb2012-02-21 08:54:52 -07003506};
3507
3508static struct kgsl_device_iommu_data kgsl_2d1_iommu_data[] = {
3509 {
Shubhraprakash Daseb6df1d2012-05-01 00:55:35 -06003510 .iommu_ctxs = kgsl_2d1_iommu_ctxs,
3511 .iommu_ctx_count = ARRAY_SIZE(kgsl_2d1_iommu_ctxs),
Jordan Crouse46cf4bb2012-02-21 08:54:52 -07003512 .physstart = 0x07E00000,
3513 .physend = 0x07E00000 + SZ_1M - 1,
3514 },
3515};
3516
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003517static struct resource kgsl_2d1_resources[] = {
3518 {
3519 .name = KGSL_2D1_REG_MEMORY,
3520 .start = 0x04200000, /* Z180 device 1 base address */
3521 .end = 0x04200FFF,
3522 .flags = IORESOURCE_MEM,
3523 },
3524 {
3525 .name = KGSL_2D1_IRQ,
3526 .start = GFX2D1_IRQ,
3527 .end = GFX2D1_IRQ,
3528 .flags = IORESOURCE_IRQ,
3529 },
3530};
3531
3532static struct kgsl_device_platform_data kgsl_2d1_pdata = {
Lucille Sylvesterdce84cd2011-10-12 14:15:37 -06003533 .pwrlevel = {
3534 {
3535 .gpu_freq = 200000000,
Lucille Sylvester808eca22011-11-03 10:26:29 -07003536 .bus_freq = 2,
3537 },
3538 {
3539 .gpu_freq = 96000000,
Lucille Sylvesterdce84cd2011-10-12 14:15:37 -06003540 .bus_freq = 1,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003541 },
Lucille Sylvesterdce84cd2011-10-12 14:15:37 -06003542 {
Lucille Sylvester808eca22011-11-03 10:26:29 -07003543 .gpu_freq = 27000000,
Lucille Sylvesterdce84cd2011-10-12 14:15:37 -06003544 .bus_freq = 0,
3545 },
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003546 },
Lucille Sylvesterdce84cd2011-10-12 14:15:37 -06003547 .init_level = 0,
Lucille Sylvester6e362412011-12-09 16:21:42 -07003548 .num_levels = ARRAY_SIZE(grp2d_freq) + 1,
Lucille Sylvesterdce84cd2011-10-12 14:15:37 -06003549 .set_grp_async = NULL,
Lucille Sylvester808eca22011-11-03 10:26:29 -07003550 .idle_timeout = HZ/5,
Lucille Sylvesterdce84cd2011-10-12 14:15:37 -06003551 .nap_allowed = true,
3552 .clk_map = KGSL_CLK_CORE | KGSL_CLK_IFACE,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003553#ifdef CONFIG_MSM_BUS_SCALING
Lucille Sylvesterdce84cd2011-10-12 14:15:37 -06003554 .bus_scale_table = &grp2d1_bus_scale_pdata,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003555#endif
Jordan Crouse46cf4bb2012-02-21 08:54:52 -07003556 .iommu_data = kgsl_2d1_iommu_data,
3557 .iommu_count = ARRAY_SIZE(kgsl_2d1_iommu_data),
Lucille Sylvester6e362412011-12-09 16:21:42 -07003558 .core_info = &grp2d_core_info,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003559};
3560
3561struct platform_device msm_kgsl_2d1 = {
3562 .name = "kgsl-2d1",
3563 .id = 1,
3564 .num_resources = ARRAY_SIZE(kgsl_2d1_resources),
3565 .resource = kgsl_2d1_resources,
3566 .dev = {
3567 .platform_data = &kgsl_2d1_pdata,
3568 },
3569};
3570
3571#ifdef CONFIG_MSM_GEMINI
Sunid Wilson5d585172012-12-15 17:24:04 -08003572
3573static struct msm_bus_vectors gemini_init_vector[] = {
3574 {
3575 .src = MSM_BUS_MASTER_JPEG_ENC,
3576 .dst = MSM_BUS_SLAVE_EBI_CH0,
3577 .ab = 0,
3578 .ib = 0,
3579 },
3580 {
3581 .src = MSM_BUS_MASTER_JPEG_ENC,
3582 .dst = MSM_BUS_SLAVE_MM_IMEM,
3583 .ab = 0,
3584 .ib = 0,
3585 },
3586};
3587
3588static struct msm_bus_vectors gemini_encode_vector[] = {
3589 {
3590 .src = MSM_BUS_MASTER_JPEG_ENC,
3591 .dst = MSM_BUS_SLAVE_EBI_CH0,
3592 .ab = 540000000,
3593 .ib = 1350000000,
3594 },
3595 {
3596 .src = MSM_BUS_MASTER_JPEG_ENC,
3597 .dst = MSM_BUS_SLAVE_MM_IMEM,
3598 .ab = 43200000,
3599 .ib = 69120000,
3600 },
3601};
3602
3603static struct msm_bus_paths gemini_bus_path[] = {
3604 {
3605 ARRAY_SIZE(gemini_init_vector),
3606 gemini_init_vector,
3607 },
3608 {
3609 ARRAY_SIZE(gemini_encode_vector),
3610 gemini_encode_vector,
3611 },
3612};
3613
3614static struct msm_bus_scale_pdata gemini_bus_scale_pdata = {
3615 gemini_bus_path,
3616 ARRAY_SIZE(gemini_bus_path),
3617 .name = "msm_gemini",
3618};
3619
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003620static struct resource msm_gemini_resources[] = {
3621 {
3622 .start = 0x04600000,
3623 .end = 0x04600000 + SZ_1M - 1,
3624 .flags = IORESOURCE_MEM,
3625 },
3626 {
3627 .start = JPEG_IRQ,
3628 .end = JPEG_IRQ,
3629 .flags = IORESOURCE_IRQ,
3630 },
3631};
3632
3633struct platform_device msm8960_gemini_device = {
3634 .name = "msm_gemini",
3635 .resource = msm_gemini_resources,
3636 .num_resources = ARRAY_SIZE(msm_gemini_resources),
Sunid Wilson5d585172012-12-15 17:24:04 -08003637 .dev = {
3638 .platform_data = &gemini_bus_scale_pdata,
3639 },
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003640};
3641#endif
3642
Kalyani Oruganti465d1e12012-05-15 10:23:05 -07003643#ifdef CONFIG_MSM_MERCURY
3644static struct resource msm_mercury_resources[] = {
3645 {
3646 .start = 0x05000000,
3647 .end = 0x05000000 + SZ_1M - 1,
3648 .name = "mercury_resource_base",
3649 .flags = IORESOURCE_MEM,
3650 },
3651 {
3652 .start = JPEGD_IRQ,
3653 .end = JPEGD_IRQ,
3654 .flags = IORESOURCE_IRQ,
3655 },
3656};
3657struct platform_device msm8960_mercury_device = {
3658 .name = "msm_mercury",
3659 .resource = msm_mercury_resources,
3660 .num_resources = ARRAY_SIZE(msm_mercury_resources),
3661};
3662#endif
3663
Praveen Chidambaram78499012011-11-01 17:15:17 -06003664struct msm_rpm_platform_data msm8960_rpm_data __initdata = {
3665 .reg_base_addrs = {
3666 [MSM_RPM_PAGE_STATUS] = MSM_RPM_BASE,
3667 [MSM_RPM_PAGE_CTRL] = MSM_RPM_BASE + 0x400,
3668 [MSM_RPM_PAGE_REQ] = MSM_RPM_BASE + 0x600,
3669 [MSM_RPM_PAGE_ACK] = MSM_RPM_BASE + 0xa00,
3670 },
3671 .irq_ack = RPM_APCC_CPU0_GP_HIGH_IRQ,
Stephen Boydf61255e2012-02-24 14:31:09 -08003672 .irq_err = RPM_APCC_CPU0_GP_LOW_IRQ,
Praveen Chidambarame396ce62012-03-30 11:15:57 -06003673 .irq_wakeup = RPM_APCC_CPU0_WAKE_UP_IRQ,
Praveen Chidambaram78499012011-11-01 17:15:17 -06003674 .ipc_rpm_reg = MSM_APCS_GCC_BASE + 0x008,
3675 .ipc_rpm_val = 4,
3676 .target_id = {
3677 MSM_RPM_MAP(8960, NOTIFICATION_CONFIGURED_0, NOTIFICATION, 4),
3678 MSM_RPM_MAP(8960, NOTIFICATION_REGISTERED_0, NOTIFICATION, 4),
3679 MSM_RPM_MAP(8960, INVALIDATE_0, INVALIDATE, 8),
3680 MSM_RPM_MAP(8960, TRIGGER_TIMED_TO, TRIGGER_TIMED, 1),
3681 MSM_RPM_MAP(8960, TRIGGER_TIMED_SCLK_COUNT, TRIGGER_TIMED, 1),
3682 MSM_RPM_MAP(8960, RPM_CTL, RPM_CTL, 1),
3683 MSM_RPM_MAP(8960, CXO_CLK, CXO_CLK, 1),
3684 MSM_RPM_MAP(8960, PXO_CLK, PXO_CLK, 1),
3685 MSM_RPM_MAP(8960, APPS_FABRIC_CLK, APPS_FABRIC_CLK, 1),
3686 MSM_RPM_MAP(8960, SYSTEM_FABRIC_CLK, SYSTEM_FABRIC_CLK, 1),
3687 MSM_RPM_MAP(8960, MM_FABRIC_CLK, MM_FABRIC_CLK, 1),
3688 MSM_RPM_MAP(8960, DAYTONA_FABRIC_CLK, DAYTONA_FABRIC_CLK, 1),
3689 MSM_RPM_MAP(8960, SFPB_CLK, SFPB_CLK, 1),
3690 MSM_RPM_MAP(8960, CFPB_CLK, CFPB_CLK, 1),
3691 MSM_RPM_MAP(8960, MMFPB_CLK, MMFPB_CLK, 1),
3692 MSM_RPM_MAP(8960, EBI1_CLK, EBI1_CLK, 1),
3693 MSM_RPM_MAP(8960, APPS_FABRIC_CFG_HALT_0,
3694 APPS_FABRIC_CFG_HALT, 2),
3695 MSM_RPM_MAP(8960, APPS_FABRIC_CFG_CLKMOD_0,
3696 APPS_FABRIC_CFG_CLKMOD, 3),
3697 MSM_RPM_MAP(8960, APPS_FABRIC_CFG_IOCTL,
3698 APPS_FABRIC_CFG_IOCTL, 1),
3699 MSM_RPM_MAP(8960, APPS_FABRIC_ARB_0, APPS_FABRIC_ARB, 12),
3700 MSM_RPM_MAP(8960, SYS_FABRIC_CFG_HALT_0,
3701 SYS_FABRIC_CFG_HALT, 2),
3702 MSM_RPM_MAP(8960, SYS_FABRIC_CFG_CLKMOD_0,
3703 SYS_FABRIC_CFG_CLKMOD, 3),
3704 MSM_RPM_MAP(8960, SYS_FABRIC_CFG_IOCTL,
3705 SYS_FABRIC_CFG_IOCTL, 1),
3706 MSM_RPM_MAP(8960, SYSTEM_FABRIC_ARB_0,
3707 SYSTEM_FABRIC_ARB, 29),
3708 MSM_RPM_MAP(8960, MMSS_FABRIC_CFG_HALT_0,
3709 MMSS_FABRIC_CFG_HALT, 2),
3710 MSM_RPM_MAP(8960, MMSS_FABRIC_CFG_CLKMOD_0,
3711 MMSS_FABRIC_CFG_CLKMOD, 3),
3712 MSM_RPM_MAP(8960, MMSS_FABRIC_CFG_IOCTL,
3713 MMSS_FABRIC_CFG_IOCTL, 1),
3714 MSM_RPM_MAP(8960, MM_FABRIC_ARB_0, MM_FABRIC_ARB, 23),
3715 MSM_RPM_MAP(8960, PM8921_S1_0, PM8921_S1, 2),
3716 MSM_RPM_MAP(8960, PM8921_S2_0, PM8921_S2, 2),
3717 MSM_RPM_MAP(8960, PM8921_S3_0, PM8921_S3, 2),
3718 MSM_RPM_MAP(8960, PM8921_S4_0, PM8921_S4, 2),
3719 MSM_RPM_MAP(8960, PM8921_S5_0, PM8921_S5, 2),
3720 MSM_RPM_MAP(8960, PM8921_S6_0, PM8921_S6, 2),
3721 MSM_RPM_MAP(8960, PM8921_S7_0, PM8921_S7, 2),
3722 MSM_RPM_MAP(8960, PM8921_S8_0, PM8921_S8, 2),
3723 MSM_RPM_MAP(8960, PM8921_L1_0, PM8921_L1, 2),
3724 MSM_RPM_MAP(8960, PM8921_L2_0, PM8921_L2, 2),
3725 MSM_RPM_MAP(8960, PM8921_L3_0, PM8921_L3, 2),
3726 MSM_RPM_MAP(8960, PM8921_L4_0, PM8921_L4, 2),
3727 MSM_RPM_MAP(8960, PM8921_L5_0, PM8921_L5, 2),
3728 MSM_RPM_MAP(8960, PM8921_L6_0, PM8921_L6, 2),
3729 MSM_RPM_MAP(8960, PM8921_L7_0, PM8921_L7, 2),
3730 MSM_RPM_MAP(8960, PM8921_L8_0, PM8921_L8, 2),
3731 MSM_RPM_MAP(8960, PM8921_L9_0, PM8921_L9, 2),
3732 MSM_RPM_MAP(8960, PM8921_L10_0, PM8921_L10, 2),
3733 MSM_RPM_MAP(8960, PM8921_L11_0, PM8921_L11, 2),
3734 MSM_RPM_MAP(8960, PM8921_L12_0, PM8921_L12, 2),
3735 MSM_RPM_MAP(8960, PM8921_L13_0, PM8921_L13, 2),
3736 MSM_RPM_MAP(8960, PM8921_L14_0, PM8921_L14, 2),
3737 MSM_RPM_MAP(8960, PM8921_L15_0, PM8921_L15, 2),
3738 MSM_RPM_MAP(8960, PM8921_L16_0, PM8921_L16, 2),
3739 MSM_RPM_MAP(8960, PM8921_L17_0, PM8921_L17, 2),
3740 MSM_RPM_MAP(8960, PM8921_L18_0, PM8921_L18, 2),
3741 MSM_RPM_MAP(8960, PM8921_L19_0, PM8921_L19, 2),
3742 MSM_RPM_MAP(8960, PM8921_L20_0, PM8921_L20, 2),
3743 MSM_RPM_MAP(8960, PM8921_L21_0, PM8921_L21, 2),
3744 MSM_RPM_MAP(8960, PM8921_L22_0, PM8921_L22, 2),
3745 MSM_RPM_MAP(8960, PM8921_L23_0, PM8921_L23, 2),
3746 MSM_RPM_MAP(8960, PM8921_L24_0, PM8921_L24, 2),
3747 MSM_RPM_MAP(8960, PM8921_L25_0, PM8921_L25, 2),
3748 MSM_RPM_MAP(8960, PM8921_L26_0, PM8921_L26, 2),
3749 MSM_RPM_MAP(8960, PM8921_L27_0, PM8921_L27, 2),
3750 MSM_RPM_MAP(8960, PM8921_L28_0, PM8921_L28, 2),
3751 MSM_RPM_MAP(8960, PM8921_L29_0, PM8921_L29, 2),
3752 MSM_RPM_MAP(8960, PM8921_CLK1_0, PM8921_CLK1, 2),
3753 MSM_RPM_MAP(8960, PM8921_CLK2_0, PM8921_CLK2, 2),
3754 MSM_RPM_MAP(8960, PM8921_LVS1, PM8921_LVS1, 1),
3755 MSM_RPM_MAP(8960, PM8921_LVS2, PM8921_LVS2, 1),
3756 MSM_RPM_MAP(8960, PM8921_LVS3, PM8921_LVS3, 1),
3757 MSM_RPM_MAP(8960, PM8921_LVS4, PM8921_LVS4, 1),
3758 MSM_RPM_MAP(8960, PM8921_LVS5, PM8921_LVS5, 1),
3759 MSM_RPM_MAP(8960, PM8921_LVS6, PM8921_LVS6, 1),
3760 MSM_RPM_MAP(8960, PM8921_LVS7, PM8921_LVS7, 1),
3761 MSM_RPM_MAP(8960, NCP_0, NCP, 2),
3762 MSM_RPM_MAP(8960, CXO_BUFFERS, CXO_BUFFERS, 1),
3763 MSM_RPM_MAP(8960, USB_OTG_SWITCH, USB_OTG_SWITCH, 1),
3764 MSM_RPM_MAP(8960, HDMI_SWITCH, HDMI_SWITCH, 1),
3765 MSM_RPM_MAP(8960, DDR_DMM_0, DDR_DMM, 2),
3766 MSM_RPM_MAP(8960, QDSS_CLK, QDSS_CLK, 1),
3767 },
3768 .target_status = {
3769 MSM_RPM_STATUS_ID_MAP(8960, VERSION_MAJOR),
3770 MSM_RPM_STATUS_ID_MAP(8960, VERSION_MINOR),
3771 MSM_RPM_STATUS_ID_MAP(8960, VERSION_BUILD),
3772 MSM_RPM_STATUS_ID_MAP(8960, SUPPORTED_RESOURCES_0),
3773 MSM_RPM_STATUS_ID_MAP(8960, SUPPORTED_RESOURCES_1),
3774 MSM_RPM_STATUS_ID_MAP(8960, SUPPORTED_RESOURCES_2),
3775 MSM_RPM_STATUS_ID_MAP(8960, RESERVED_SUPPORTED_RESOURCES_0),
3776 MSM_RPM_STATUS_ID_MAP(8960, SEQUENCE),
3777 MSM_RPM_STATUS_ID_MAP(8960, RPM_CTL),
3778 MSM_RPM_STATUS_ID_MAP(8960, CXO_CLK),
3779 MSM_RPM_STATUS_ID_MAP(8960, PXO_CLK),
3780 MSM_RPM_STATUS_ID_MAP(8960, APPS_FABRIC_CLK),
3781 MSM_RPM_STATUS_ID_MAP(8960, SYSTEM_FABRIC_CLK),
3782 MSM_RPM_STATUS_ID_MAP(8960, MM_FABRIC_CLK),
3783 MSM_RPM_STATUS_ID_MAP(8960, DAYTONA_FABRIC_CLK),
3784 MSM_RPM_STATUS_ID_MAP(8960, SFPB_CLK),
3785 MSM_RPM_STATUS_ID_MAP(8960, CFPB_CLK),
3786 MSM_RPM_STATUS_ID_MAP(8960, MMFPB_CLK),
3787 MSM_RPM_STATUS_ID_MAP(8960, EBI1_CLK),
3788 MSM_RPM_STATUS_ID_MAP(8960, APPS_FABRIC_CFG_HALT),
3789 MSM_RPM_STATUS_ID_MAP(8960, APPS_FABRIC_CFG_CLKMOD),
3790 MSM_RPM_STATUS_ID_MAP(8960, APPS_FABRIC_CFG_IOCTL),
3791 MSM_RPM_STATUS_ID_MAP(8960, APPS_FABRIC_ARB),
3792 MSM_RPM_STATUS_ID_MAP(8960, SYS_FABRIC_CFG_HALT),
3793 MSM_RPM_STATUS_ID_MAP(8960, SYS_FABRIC_CFG_CLKMOD),
3794 MSM_RPM_STATUS_ID_MAP(8960, SYS_FABRIC_CFG_IOCTL),
3795 MSM_RPM_STATUS_ID_MAP(8960, SYSTEM_FABRIC_ARB),
3796 MSM_RPM_STATUS_ID_MAP(8960, MMSS_FABRIC_CFG_HALT),
3797 MSM_RPM_STATUS_ID_MAP(8960, MMSS_FABRIC_CFG_CLKMOD),
3798 MSM_RPM_STATUS_ID_MAP(8960, MMSS_FABRIC_CFG_IOCTL),
3799 MSM_RPM_STATUS_ID_MAP(8960, MM_FABRIC_ARB),
3800 MSM_RPM_STATUS_ID_MAP(8960, PM8921_S1_0),
3801 MSM_RPM_STATUS_ID_MAP(8960, PM8921_S1_1),
3802 MSM_RPM_STATUS_ID_MAP(8960, PM8921_S2_0),
3803 MSM_RPM_STATUS_ID_MAP(8960, PM8921_S2_1),
3804 MSM_RPM_STATUS_ID_MAP(8960, PM8921_S3_0),
3805 MSM_RPM_STATUS_ID_MAP(8960, PM8921_S3_1),
3806 MSM_RPM_STATUS_ID_MAP(8960, PM8921_S4_0),
3807 MSM_RPM_STATUS_ID_MAP(8960, PM8921_S4_1),
3808 MSM_RPM_STATUS_ID_MAP(8960, PM8921_S5_0),
3809 MSM_RPM_STATUS_ID_MAP(8960, PM8921_S5_1),
3810 MSM_RPM_STATUS_ID_MAP(8960, PM8921_S6_0),
3811 MSM_RPM_STATUS_ID_MAP(8960, PM8921_S6_1),
3812 MSM_RPM_STATUS_ID_MAP(8960, PM8921_S7_0),
3813 MSM_RPM_STATUS_ID_MAP(8960, PM8921_S7_1),
3814 MSM_RPM_STATUS_ID_MAP(8960, PM8921_S8_0),
3815 MSM_RPM_STATUS_ID_MAP(8960, PM8921_S8_1),
3816 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L1_0),
3817 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L1_1),
3818 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L2_0),
3819 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L2_1),
3820 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L3_0),
3821 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L3_1),
3822 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L4_0),
3823 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L4_1),
3824 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L5_0),
3825 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L5_1),
3826 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L6_0),
3827 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L6_1),
3828 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L7_0),
3829 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L7_1),
3830 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L8_0),
3831 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L8_1),
3832 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L9_0),
3833 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L9_1),
3834 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L10_0),
3835 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L10_1),
3836 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L11_0),
3837 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L11_1),
3838 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L12_0),
3839 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L12_1),
3840 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L13_0),
3841 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L13_1),
3842 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L14_0),
3843 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L14_1),
3844 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L15_0),
3845 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L15_1),
3846 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L16_0),
3847 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L16_1),
3848 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L17_0),
3849 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L17_1),
3850 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L18_0),
3851 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L18_1),
3852 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L19_0),
3853 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L19_1),
3854 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L20_0),
3855 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L20_1),
3856 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L21_0),
3857 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L21_1),
3858 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L22_0),
3859 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L22_1),
3860 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L23_0),
3861 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L23_1),
3862 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L24_0),
3863 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L24_1),
3864 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L25_0),
3865 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L25_1),
3866 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L26_0),
3867 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L26_1),
3868 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L27_0),
3869 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L27_1),
3870 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L28_0),
3871 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L28_1),
3872 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L29_0),
3873 MSM_RPM_STATUS_ID_MAP(8960, PM8921_L29_1),
3874 MSM_RPM_STATUS_ID_MAP(8960, PM8921_CLK1_0),
3875 MSM_RPM_STATUS_ID_MAP(8960, PM8921_CLK1_1),
3876 MSM_RPM_STATUS_ID_MAP(8960, PM8921_CLK2_0),
3877 MSM_RPM_STATUS_ID_MAP(8960, PM8921_CLK2_1),
3878 MSM_RPM_STATUS_ID_MAP(8960, PM8921_LVS1),
3879 MSM_RPM_STATUS_ID_MAP(8960, PM8921_LVS2),
3880 MSM_RPM_STATUS_ID_MAP(8960, PM8921_LVS3),
3881 MSM_RPM_STATUS_ID_MAP(8960, PM8921_LVS4),
3882 MSM_RPM_STATUS_ID_MAP(8960, PM8921_LVS5),
3883 MSM_RPM_STATUS_ID_MAP(8960, PM8921_LVS6),
3884 MSM_RPM_STATUS_ID_MAP(8960, PM8921_LVS7),
3885 MSM_RPM_STATUS_ID_MAP(8960, NCP_0),
3886 MSM_RPM_STATUS_ID_MAP(8960, NCP_1),
3887 MSM_RPM_STATUS_ID_MAP(8960, CXO_BUFFERS),
3888 MSM_RPM_STATUS_ID_MAP(8960, USB_OTG_SWITCH),
3889 MSM_RPM_STATUS_ID_MAP(8960, HDMI_SWITCH),
3890 MSM_RPM_STATUS_ID_MAP(8960, DDR_DMM_0),
3891 MSM_RPM_STATUS_ID_MAP(8960, DDR_DMM_1),
3892 MSM_RPM_STATUS_ID_MAP(8960, EBI1_CH0_RANGE),
3893 MSM_RPM_STATUS_ID_MAP(8960, EBI1_CH1_RANGE),
3894 },
3895 .target_ctrl_id = {
3896 MSM_RPM_CTRL_MAP(8960, VERSION_MAJOR),
3897 MSM_RPM_CTRL_MAP(8960, VERSION_MINOR),
3898 MSM_RPM_CTRL_MAP(8960, VERSION_BUILD),
3899 MSM_RPM_CTRL_MAP(8960, REQ_CTX_0),
3900 MSM_RPM_CTRL_MAP(8960, REQ_SEL_0),
3901 MSM_RPM_CTRL_MAP(8960, ACK_CTX_0),
3902 MSM_RPM_CTRL_MAP(8960, ACK_SEL_0),
3903 },
3904 .sel_invalidate = MSM_RPM_8960_SEL_INVALIDATE,
3905 .sel_notification = MSM_RPM_8960_SEL_NOTIFICATION,
3906 .sel_last = MSM_RPM_8960_SEL_LAST,
3907 .ver = {3, 0, 0},
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003908};
Praveen Chidambaram8985b012011-12-16 13:38:59 -07003909
Praveen Chidambaram78499012011-11-01 17:15:17 -06003910struct platform_device msm8960_rpm_device = {
Maheshkumar Sivasubramanian9c8cdc92011-09-12 14:11:30 -06003911 .name = "msm_rpm",
3912 .id = -1,
3913};
3914
Praveen Chidambaram78499012011-11-01 17:15:17 -06003915static struct msm_rpm_log_platform_data msm_rpm_log_pdata = {
3916 .phys_addr_base = 0x0010C000,
3917 .reg_offsets = {
3918 [MSM_RPM_LOG_PAGE_INDICES] = 0x00000080,
3919 [MSM_RPM_LOG_PAGE_BUFFER] = 0x000000A0,
3920 },
3921 .phys_size = SZ_8K,
Anji Jonnalaa5777ce2013-03-28 13:45:58 +05303922 .log_len = 6144, /* log's buffer length in bytes */
3923 .log_len_mask = (6144 >> 2) - 1, /* length mask in units of u32 */
Praveen Chidambaram78499012011-11-01 17:15:17 -06003924};
3925
3926struct platform_device msm8960_rpm_log_device = {
3927 .name = "msm_rpm_log",
3928 .id = -1,
3929 .dev = {
3930 .platform_data = &msm_rpm_log_pdata,
3931 },
3932};
3933
Praveen Chidambaram7a712232011-10-28 13:39:45 -06003934static struct msm_rpmstats_platform_data msm_rpm_stat_pdata = {
Anji Jonnalaa1a1c3b2012-09-18 19:20:21 +05303935 .phys_addr_base = 0x0010DD04,
3936 .phys_size = SZ_256,
Praveen Chidambaram7a712232011-10-28 13:39:45 -06003937};
3938
Praveen Chidambaram78499012011-11-01 17:15:17 -06003939struct platform_device msm8960_rpm_stat_device = {
Praveen Chidambaram7a712232011-10-28 13:39:45 -06003940 .name = "msm_rpm_stat",
3941 .id = -1,
3942 .dev = {
3943 .platform_data = &msm_rpm_stat_pdata,
3944 },
3945};
Maheshkumar Sivasubramanian9c8cdc92011-09-12 14:11:30 -06003946
Anji Jonnala2a8bd312012-11-01 13:11:42 +05303947static struct resource resources_rpm_master_stats[] = {
3948 {
3949 .start = MSM8960_RPM_MASTER_STATS_BASE,
3950 .end = MSM8960_RPM_MASTER_STATS_BASE + SZ_256,
3951 .flags = IORESOURCE_MEM,
3952 },
3953};
3954
3955static char *master_names[] = {
3956 "KPSS",
3957 "GPSS",
3958 "LPASS",
3959 "RIVA",
3960 "DSPS",
3961};
3962
3963static struct msm_rpm_master_stats_platform_data msm_rpm_master_stat_pdata = {
3964 .masters = master_names,
3965 .nomasters = ARRAY_SIZE(master_names),
3966};
3967
3968struct platform_device msm8960_rpm_master_stat_device = {
3969 .name = "msm_rpm_master_stat",
3970 .id = -1,
3971 .num_resources = ARRAY_SIZE(resources_rpm_master_stats),
3972 .resource = resources_rpm_master_stats,
3973 .dev = {
3974 .platform_data = &msm_rpm_master_stat_pdata,
3975 },
3976};
3977
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07003978struct platform_device msm_bus_sys_fabric = {
3979 .name = "msm_bus_fabric",
3980 .id = MSM_BUS_FAB_SYSTEM,
3981};
3982struct platform_device msm_bus_apps_fabric = {
3983 .name = "msm_bus_fabric",
3984 .id = MSM_BUS_FAB_APPSS,
3985};
3986struct platform_device msm_bus_mm_fabric = {
3987 .name = "msm_bus_fabric",
3988 .id = MSM_BUS_FAB_MMSS,
3989};
3990struct platform_device msm_bus_sys_fpb = {
3991 .name = "msm_bus_fabric",
3992 .id = MSM_BUS_FAB_SYSTEM_FPB,
3993};
3994struct platform_device msm_bus_cpss_fpb = {
3995 .name = "msm_bus_fabric",
3996 .id = MSM_BUS_FAB_CPSS_FPB,
3997};
3998
3999/* Sensors DSPS platform data */
4000#ifdef CONFIG_MSM_DSPS
4001
Vikram Mulukutlaac682bb2012-09-20 14:06:23 -07004002#define PPSS_DSPS_TCM_CODE_BASE 0x12000000
4003#define PPSS_DSPS_TCM_CODE_SIZE 0x28000
4004#define PPSS_DSPS_TCM_BUF_BASE 0x12040000
4005#define PPSS_DSPS_TCM_BUF_SIZE 0x4000
4006#define PPSS_DSPS_PIPE_BASE 0x12800000
4007#define PPSS_DSPS_PIPE_SIZE 0x4000
4008#define PPSS_DSPS_DDR_BASE 0x8fe00000
4009#define PPSS_DSPS_DDR_SIZE 0x100000
4010#define PPSS_SMEM_BASE 0x80000000
4011#define PPSS_SMEM_SIZE 0x200000
4012#define PPSS_REG_PHYS_BASE 0x12080000
4013#define PPSS_WDOG_UNMASKED_INT_EN 0x1808
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07004014
4015static struct dsps_clk_info dsps_clks[] = {};
4016static struct dsps_regulator_info dsps_regs[] = {};
4017
4018/*
4019 * Note: GPIOs field is intialized in run-time at the function
4020 * msm8960_init_dsps().
4021 */
4022
4023struct msm_dsps_platform_data msm_dsps_pdata = {
4024 .clks = dsps_clks,
4025 .clks_num = ARRAY_SIZE(dsps_clks),
4026 .gpios = NULL,
4027 .gpios_num = 0,
4028 .regs = dsps_regs,
4029 .regs_num = ARRAY_SIZE(dsps_regs),
4030 .dsps_pwr_ctl_en = 1,
karthik karuppasamy1a1c6b02012-05-29 15:16:32 -07004031 .tcm_code_start = PPSS_DSPS_TCM_CODE_BASE,
4032 .tcm_code_size = PPSS_DSPS_TCM_CODE_SIZE,
4033 .tcm_buf_start = PPSS_DSPS_TCM_BUF_BASE,
4034 .tcm_buf_size = PPSS_DSPS_TCM_BUF_SIZE,
4035 .pipe_start = PPSS_DSPS_PIPE_BASE,
4036 .pipe_size = PPSS_DSPS_PIPE_SIZE,
4037 .ddr_start = PPSS_DSPS_DDR_BASE,
4038 .ddr_size = PPSS_DSPS_DDR_SIZE,
4039 .smem_start = PPSS_SMEM_BASE,
4040 .smem_size = PPSS_SMEM_SIZE,
Vikram Mulukutlaac682bb2012-09-20 14:06:23 -07004041 .ppss_wdog_unmasked_int_en_reg = PPSS_WDOG_UNMASKED_INT_EN,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07004042 .signature = DSPS_SIGNATURE,
4043};
4044
4045static struct resource msm_dsps_resources[] = {
4046 {
4047 .start = PPSS_REG_PHYS_BASE,
4048 .end = PPSS_REG_PHYS_BASE + SZ_8K - 1,
4049 .name = "ppss_reg",
4050 .flags = IORESOURCE_MEM,
4051 },
Wentao Xua55500b2011-08-16 18:15:04 -04004052 {
4053 .start = PPSS_WDOG_TIMER_IRQ,
4054 .end = PPSS_WDOG_TIMER_IRQ,
4055 .name = "ppss_wdog",
4056 .flags = IORESOURCE_IRQ,
4057 },
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07004058};
4059
4060struct platform_device msm_dsps_device = {
4061 .name = "msm_dsps",
4062 .id = 0,
4063 .num_resources = ARRAY_SIZE(msm_dsps_resources),
4064 .resource = msm_dsps_resources,
4065 .dev.platform_data = &msm_dsps_pdata,
4066};
4067
4068#endif /* CONFIG_MSM_DSPS */
Pratik Patel7831c082011-06-08 21:44:37 -07004069
Pratik Patel3b0ca882012-06-01 16:54:14 -07004070#define CORESIGHT_PHYS_BASE 0x01A00000
4071#define CORESIGHT_TPIU_PHYS_BASE (CORESIGHT_PHYS_BASE + 0x3000)
4072#define CORESIGHT_ETB_PHYS_BASE (CORESIGHT_PHYS_BASE + 0x1000)
4073#define CORESIGHT_FUNNEL_PHYS_BASE (CORESIGHT_PHYS_BASE + 0x4000)
4074#define CORESIGHT_STM_PHYS_BASE (CORESIGHT_PHYS_BASE + 0x6000)
4075#define CORESIGHT_ETM0_PHYS_BASE (CORESIGHT_PHYS_BASE + 0x1C000)
4076#define CORESIGHT_ETM1_PHYS_BASE (CORESIGHT_PHYS_BASE + 0x1D000)
Pratik Patel7831c082011-06-08 21:44:37 -07004077
Pratik Patel3b0ca882012-06-01 16:54:14 -07004078#define CORESIGHT_STM_CHANNEL_PHYS_BASE (0x14000000 + 0x280000)
Pratik Patel7831c082011-06-08 21:44:37 -07004079
Pratik Patel3b0ca882012-06-01 16:54:14 -07004080static struct resource coresight_tpiu_resources[] = {
Pratik Patel7831c082011-06-08 21:44:37 -07004081 {
Pratik Patel3b0ca882012-06-01 16:54:14 -07004082 .start = CORESIGHT_TPIU_PHYS_BASE,
4083 .end = CORESIGHT_TPIU_PHYS_BASE + SZ_4K - 1,
Pratik Patel7831c082011-06-08 21:44:37 -07004084 .flags = IORESOURCE_MEM,
4085 },
4086};
4087
Pratik Patel3b0ca882012-06-01 16:54:14 -07004088static struct coresight_platform_data coresight_tpiu_pdata = {
4089 .id = 0,
4090 .name = "coresight-tpiu",
4091 .nr_inports = 1,
4092 .nr_outports = 0,
Pratik Patel7831c082011-06-08 21:44:37 -07004093};
4094
Pratik Patel3b0ca882012-06-01 16:54:14 -07004095struct platform_device coresight_tpiu_device = {
4096 .name = "coresight-tpiu",
4097 .id = 0,
4098 .num_resources = ARRAY_SIZE(coresight_tpiu_resources),
4099 .resource = coresight_tpiu_resources,
4100 .dev = {
4101 .platform_data = &coresight_tpiu_pdata,
4102 },
4103};
4104
4105static struct resource coresight_etb_resources[] = {
Pratik Patel7831c082011-06-08 21:44:37 -07004106 {
Pratik Patel3b0ca882012-06-01 16:54:14 -07004107 .start = CORESIGHT_ETB_PHYS_BASE,
4108 .end = CORESIGHT_ETB_PHYS_BASE + SZ_4K - 1,
Pratik Patel7831c082011-06-08 21:44:37 -07004109 .flags = IORESOURCE_MEM,
4110 },
4111};
4112
Pratik Patel3b0ca882012-06-01 16:54:14 -07004113static struct coresight_platform_data coresight_etb_pdata = {
4114 .id = 1,
4115 .name = "coresight-etb",
4116 .nr_inports = 1,
4117 .nr_outports = 0,
4118 .default_sink = true,
Pratik Patel7831c082011-06-08 21:44:37 -07004119};
4120
Pratik Patel3b0ca882012-06-01 16:54:14 -07004121struct platform_device coresight_etb_device = {
4122 .name = "coresight-etb",
4123 .id = 0,
4124 .num_resources = ARRAY_SIZE(coresight_etb_resources),
4125 .resource = coresight_etb_resources,
4126 .dev = {
4127 .platform_data = &coresight_etb_pdata,
4128 },
4129};
4130
4131static struct resource coresight_funnel_resources[] = {
Pratik Patel7831c082011-06-08 21:44:37 -07004132 {
Pratik Patel3b0ca882012-06-01 16:54:14 -07004133 .start = CORESIGHT_FUNNEL_PHYS_BASE,
4134 .end = CORESIGHT_FUNNEL_PHYS_BASE + SZ_4K - 1,
Pratik Patel7831c082011-06-08 21:44:37 -07004135 .flags = IORESOURCE_MEM,
4136 },
4137};
4138
Pratik Patel3b0ca882012-06-01 16:54:14 -07004139static const int coresight_funnel_outports[] = { 0, 1 };
4140static const int coresight_funnel_child_ids[] = { 0, 1 };
4141static const int coresight_funnel_child_ports[] = { 0, 0 };
4142
4143static struct coresight_platform_data coresight_funnel_pdata = {
4144 .id = 2,
4145 .name = "coresight-funnel",
4146 .nr_inports = 4,
4147 .outports = coresight_funnel_outports,
4148 .child_ids = coresight_funnel_child_ids,
4149 .child_ports = coresight_funnel_child_ports,
4150 .nr_outports = ARRAY_SIZE(coresight_funnel_outports),
Pratik Patel7831c082011-06-08 21:44:37 -07004151};
4152
Pratik Patel3b0ca882012-06-01 16:54:14 -07004153struct platform_device coresight_funnel_device = {
4154 .name = "coresight-funnel",
4155 .id = 0,
4156 .num_resources = ARRAY_SIZE(coresight_funnel_resources),
4157 .resource = coresight_funnel_resources,
4158 .dev = {
4159 .platform_data = &coresight_funnel_pdata,
4160 },
4161};
4162
4163static struct resource coresight_stm_resources[] = {
Pratik Patel7831c082011-06-08 21:44:37 -07004164 {
Pratik Patel3b0ca882012-06-01 16:54:14 -07004165 .start = CORESIGHT_STM_PHYS_BASE,
4166 .end = CORESIGHT_STM_PHYS_BASE + SZ_4K - 1,
4167 .flags = IORESOURCE_MEM,
4168 },
4169 {
4170 .start = CORESIGHT_STM_CHANNEL_PHYS_BASE,
4171 .end = CORESIGHT_STM_CHANNEL_PHYS_BASE + SZ_1M + SZ_512K - 1,
Pratik Patel7831c082011-06-08 21:44:37 -07004172 .flags = IORESOURCE_MEM,
4173 },
4174};
4175
Pratik Patel3b0ca882012-06-01 16:54:14 -07004176static const int coresight_stm_outports[] = { 0 };
4177static const int coresight_stm_child_ids[] = { 2 };
4178static const int coresight_stm_child_ports[] = { 2 };
4179
4180static struct coresight_platform_data coresight_stm_pdata = {
4181 .id = 3,
4182 .name = "coresight-stm",
4183 .nr_inports = 0,
4184 .outports = coresight_stm_outports,
4185 .child_ids = coresight_stm_child_ids,
4186 .child_ports = coresight_stm_child_ports,
4187 .nr_outports = ARRAY_SIZE(coresight_stm_outports),
Pratik Patel7831c082011-06-08 21:44:37 -07004188};
4189
Pratik Patel3b0ca882012-06-01 16:54:14 -07004190struct platform_device coresight_stm_device = {
4191 .name = "coresight-stm",
4192 .id = 0,
4193 .num_resources = ARRAY_SIZE(coresight_stm_resources),
4194 .resource = coresight_stm_resources,
4195 .dev = {
4196 .platform_data = &coresight_stm_pdata,
4197 },
4198};
4199
4200static struct resource coresight_etm0_resources[] = {
4201 {
4202 .start = CORESIGHT_ETM0_PHYS_BASE,
4203 .end = CORESIGHT_ETM0_PHYS_BASE + SZ_4K - 1,
4204 .flags = IORESOURCE_MEM,
4205 },
4206};
4207
4208static const int coresight_etm0_outports[] = { 0 };
4209static const int coresight_etm0_child_ids[] = { 2 };
4210static const int coresight_etm0_child_ports[] = { 0 };
4211
4212static struct coresight_platform_data coresight_etm0_pdata = {
4213 .id = 4,
4214 .name = "coresight-etm0",
4215 .nr_inports = 0,
4216 .outports = coresight_etm0_outports,
4217 .child_ids = coresight_etm0_child_ids,
4218 .child_ports = coresight_etm0_child_ports,
4219 .nr_outports = ARRAY_SIZE(coresight_etm0_outports),
4220};
4221
4222struct platform_device coresight_etm0_device = {
4223 .name = "coresight-etm",
4224 .id = 0,
4225 .num_resources = ARRAY_SIZE(coresight_etm0_resources),
4226 .resource = coresight_etm0_resources,
4227 .dev = {
4228 .platform_data = &coresight_etm0_pdata,
4229 },
4230};
4231
4232static struct resource coresight_etm1_resources[] = {
4233 {
4234 .start = CORESIGHT_ETM1_PHYS_BASE,
4235 .end = CORESIGHT_ETM1_PHYS_BASE + SZ_4K - 1,
4236 .flags = IORESOURCE_MEM,
4237 },
4238};
4239
4240static const int coresight_etm1_outports[] = { 0 };
4241static const int coresight_etm1_child_ids[] = { 2 };
4242static const int coresight_etm1_child_ports[] = { 1 };
4243
4244static struct coresight_platform_data coresight_etm1_pdata = {
4245 .id = 5,
4246 .name = "coresight-etm1",
4247 .nr_inports = 0,
4248 .outports = coresight_etm1_outports,
4249 .child_ids = coresight_etm1_child_ids,
4250 .child_ports = coresight_etm1_child_ports,
4251 .nr_outports = ARRAY_SIZE(coresight_etm1_outports),
4252};
4253
4254struct platform_device coresight_etm1_device = {
4255 .name = "coresight-etm",
4256 .id = 1,
4257 .num_resources = ARRAY_SIZE(coresight_etm1_resources),
4258 .resource = coresight_etm1_resources,
4259 .dev = {
4260 .platform_data = &coresight_etm1_pdata,
4261 },
4262};
Praveen Chidambaram8ea3dcd2011-12-07 14:46:31 -07004263
Stepan Moskovchenkoc0557252012-06-07 17:39:14 -07004264static struct resource msm_ebi1_ch0_erp_resources[] = {
4265 {
4266 .start = HSDDRX_EBI1CH0_IRQ,
4267 .flags = IORESOURCE_IRQ,
4268 },
4269 {
4270 .start = 0x00A40000,
4271 .end = 0x00A40000 + SZ_4K - 1,
4272 .flags = IORESOURCE_MEM,
4273 },
4274};
4275
4276struct platform_device msm8960_device_ebi1_ch0_erp = {
4277 .name = "msm_ebi_erp",
4278 .id = 0,
4279 .num_resources = ARRAY_SIZE(msm_ebi1_ch0_erp_resources),
4280 .resource = msm_ebi1_ch0_erp_resources,
4281};
4282
4283static struct resource msm_ebi1_ch1_erp_resources[] = {
4284 {
4285 .start = HSDDRX_EBI1CH1_IRQ,
4286 .flags = IORESOURCE_IRQ,
4287 },
4288 {
4289 .start = 0x00D40000,
4290 .end = 0x00D40000 + SZ_4K - 1,
4291 .flags = IORESOURCE_MEM,
4292 },
4293};
4294
4295struct platform_device msm8960_device_ebi1_ch1_erp = {
4296 .name = "msm_ebi_erp",
4297 .id = 1,
4298 .num_resources = ARRAY_SIZE(msm_ebi1_ch1_erp_resources),
4299 .resource = msm_ebi1_ch1_erp_resources,
4300};
4301
Stepan Moskovchenko28662c52012-03-01 12:48:45 -08004302static struct resource msm_cache_erp_resources[] = {
4303 {
4304 .name = "l1_irq",
4305 .start = SC_SICCPUXEXTFAULTIRPTREQ,
4306 .flags = IORESOURCE_IRQ,
4307 },
4308 {
4309 .name = "l2_irq",
4310 .start = APCC_QGICL2IRPTREQ,
4311 .flags = IORESOURCE_IRQ,
4312 }
4313};
4314
4315struct platform_device msm8960_device_cache_erp = {
4316 .name = "msm_cache_erp",
4317 .id = -1,
4318 .num_resources = ARRAY_SIZE(msm_cache_erp_resources),
4319 .resource = msm_cache_erp_resources,
4320};
Laura Abbott0577d7b2012-04-17 11:14:30 -07004321
4322struct msm_iommu_domain_name msm8960_iommu_ctx_names[] = {
4323 /* Camera */
4324 {
Laura Abbott0577d7b2012-04-17 11:14:30 -07004325 .name = "ijpeg_src",
4326 .domain = CAMERA_DOMAIN,
4327 },
4328 /* Camera */
4329 {
4330 .name = "ijpeg_dst",
4331 .domain = CAMERA_DOMAIN,
4332 },
4333 /* Camera */
4334 {
4335 .name = "jpegd_src",
4336 .domain = CAMERA_DOMAIN,
4337 },
4338 /* Camera */
4339 {
4340 .name = "jpegd_dst",
4341 .domain = CAMERA_DOMAIN,
4342 },
Mayank Chopra9c4743f2012-06-27 15:31:43 +05304343 /* Rotator */
Laura Abbott0577d7b2012-04-17 11:14:30 -07004344 {
4345 .name = "rot_src",
Olav Hauganef95ae32012-05-15 09:50:30 -07004346 .domain = ROTATOR_SRC_DOMAIN,
Laura Abbott0577d7b2012-04-17 11:14:30 -07004347 },
Mayank Chopra9c4743f2012-06-27 15:31:43 +05304348 /* Rotator */
Laura Abbott0577d7b2012-04-17 11:14:30 -07004349 {
4350 .name = "rot_dst",
Olav Hauganef95ae32012-05-15 09:50:30 -07004351 .domain = ROTATOR_SRC_DOMAIN,
Laura Abbott0577d7b2012-04-17 11:14:30 -07004352 },
4353 /* Video */
4354 {
4355 .name = "vcodec_a_mm1",
4356 .domain = VIDEO_DOMAIN,
4357 },
4358 /* Video */
4359 {
4360 .name = "vcodec_b_mm2",
4361 .domain = VIDEO_DOMAIN,
4362 },
4363 /* Video */
4364 {
4365 .name = "vcodec_a_stream",
4366 .domain = VIDEO_DOMAIN,
4367 },
4368};
4369
4370static struct mem_pool msm8960_video_pools[] = {
4371 /*
4372 * Video hardware has the following requirements:
4373 * 1. All video addresses used by the video hardware must be at a higher
4374 * address than video firmware address.
4375 * 2. Video hardware can only access a range of 256MB from the base of
4376 * the video firmware.
4377 */
4378 [VIDEO_FIRMWARE_POOL] =
4379 /* Low addresses, intended for video firmware */
4380 {
4381 .paddr = SZ_128K,
4382 .size = SZ_16M - SZ_128K,
4383 },
4384 [VIDEO_MAIN_POOL] =
4385 /* Main video pool */
4386 {
4387 .paddr = SZ_16M,
4388 .size = SZ_256M - SZ_16M,
4389 },
4390 [GEN_POOL] =
4391 /* Remaining address space up to 2G */
4392 {
4393 .paddr = SZ_256M,
4394 .size = SZ_2G - SZ_256M,
4395 },
4396};
4397
4398static struct mem_pool msm8960_camera_pools[] = {
4399 [GEN_POOL] =
4400 /* One address space for camera */
4401 {
4402 .paddr = SZ_128K,
4403 .size = SZ_2G - SZ_128K,
4404 },
4405};
4406
Olav Hauganef95ae32012-05-15 09:50:30 -07004407static struct mem_pool msm8960_display_read_pools[] = {
Laura Abbott0577d7b2012-04-17 11:14:30 -07004408 [GEN_POOL] =
Olav Hauganef95ae32012-05-15 09:50:30 -07004409 /* One address space for display reads */
Laura Abbott0577d7b2012-04-17 11:14:30 -07004410 {
4411 .paddr = SZ_128K,
4412 .size = SZ_2G - SZ_128K,
4413 },
4414};
4415
Olav Hauganef95ae32012-05-15 09:50:30 -07004416static struct mem_pool msm8960_rotator_src_pools[] = {
Laura Abbott0577d7b2012-04-17 11:14:30 -07004417 [GEN_POOL] =
Olav Hauganef95ae32012-05-15 09:50:30 -07004418 /* One address space for rotator src */
Laura Abbott0577d7b2012-04-17 11:14:30 -07004419 {
4420 .paddr = SZ_128K,
4421 .size = SZ_2G - SZ_128K,
4422 },
4423};
4424
4425static struct msm_iommu_domain msm8960_iommu_domains[] = {
4426 [VIDEO_DOMAIN] = {
4427 .iova_pools = msm8960_video_pools,
4428 .npools = ARRAY_SIZE(msm8960_video_pools),
4429 },
4430 [CAMERA_DOMAIN] = {
4431 .iova_pools = msm8960_camera_pools,
4432 .npools = ARRAY_SIZE(msm8960_camera_pools),
4433 },
Olav Hauganef95ae32012-05-15 09:50:30 -07004434 [DISPLAY_READ_DOMAIN] = {
4435 .iova_pools = msm8960_display_read_pools,
4436 .npools = ARRAY_SIZE(msm8960_display_read_pools),
Laura Abbott0577d7b2012-04-17 11:14:30 -07004437 },
Olav Hauganef95ae32012-05-15 09:50:30 -07004438 [ROTATOR_SRC_DOMAIN] = {
4439 .iova_pools = msm8960_rotator_src_pools,
4440 .npools = ARRAY_SIZE(msm8960_rotator_src_pools),
Laura Abbott0577d7b2012-04-17 11:14:30 -07004441 },
4442};
4443
4444struct iommu_domains_pdata msm8960_iommu_domain_pdata = {
4445 .domains = msm8960_iommu_domains,
4446 .ndomains = ARRAY_SIZE(msm8960_iommu_domains),
4447 .domain_names = msm8960_iommu_ctx_names,
4448 .nnames = ARRAY_SIZE(msm8960_iommu_ctx_names),
4449 .domain_alloc_flags = 0,
4450};
4451
4452struct platform_device msm8960_iommu_domain_device = {
4453 .name = "iommu_domains",
4454 .id = -1,
4455 .dev = {
4456 .platform_data = &msm8960_iommu_domain_pdata,
Laura Abbott532b2df2012-04-12 10:53:48 -07004457 }
4458};
4459
4460struct msm_rtb_platform_data msm8960_rtb_pdata = {
4461 .size = SZ_1M,
4462};
4463
4464static int __init msm_rtb_set_buffer_size(char *p)
4465{
4466 int s;
4467
4468 s = memparse(p, NULL);
4469 msm8960_rtb_pdata.size = ALIGN(s, SZ_4K);
4470 return 0;
4471}
4472early_param("msm_rtb_size", msm_rtb_set_buffer_size);
4473
4474
4475struct platform_device msm8960_rtb_device = {
4476 .name = "msm_rtb",
4477 .id = -1,
4478 .dev = {
4479 .platform_data = &msm8960_rtb_pdata,
Laura Abbott0577d7b2012-04-17 11:14:30 -07004480 },
4481};
Laura Abbott2ae8f362012-04-12 11:03:04 -07004482
Laura Abbott0a103cf2012-05-25 09:00:23 -07004483#define MSM_8960_L1_SIZE SZ_1M
4484/*
4485 * The actual L2 size is smaller but we need a larger buffer
4486 * size to store other dump information
4487 */
4488#define MSM_8960_L2_SIZE SZ_4M
4489
Laura Abbott2ae8f362012-04-12 11:03:04 -07004490struct msm_cache_dump_platform_data msm8960_cache_dump_pdata = {
Laura Abbott0a103cf2012-05-25 09:00:23 -07004491 .l2_size = MSM_8960_L2_SIZE,
4492 .l1_size = MSM_8960_L1_SIZE,
Laura Abbott2ae8f362012-04-12 11:03:04 -07004493};
4494
4495struct platform_device msm8960_cache_dump_device = {
4496 .name = "msm_cache_dump",
4497 .id = -1,
4498 .dev = {
4499 .platform_data = &msm8960_cache_dump_pdata,
4500 },
4501};
Joel King0cbf5d82012-05-24 15:21:38 -07004502
Srikanth Uyyala187ada82013-07-17 18:42:57 +05304503struct dev_avtimer_data dev_avtimer_pdata = {
4504 .avtimer_msw_phy_addr = AVTIMER_MSW_PHYSICAL_ADDRESS,
4505 .avtimer_lsw_phy_addr = AVTIMER_LSW_PHYSICAL_ADDRESS,
4506};
4507
Joel King0cbf5d82012-05-24 15:21:38 -07004508#define MDM2AP_ERRFATAL 40
4509#define AP2MDM_ERRFATAL 80
4510#define MDM2AP_STATUS 24
4511#define AP2MDM_STATUS 77
4512#define AP2MDM_PMIC_PWR_EN 22
4513#define AP2MDM_KPDPWR_N 79
4514#define AP2MDM_SOFT_RESET 78
Ameya Thakur43248fd2012-07-10 18:50:52 -07004515#define USB_SW 25
Joel King0cbf5d82012-05-24 15:21:38 -07004516
4517static struct resource sglte_resources[] = {
4518 {
4519 .start = MDM2AP_ERRFATAL,
4520 .end = MDM2AP_ERRFATAL,
4521 .name = "MDM2AP_ERRFATAL",
4522 .flags = IORESOURCE_IO,
4523 },
4524 {
4525 .start = AP2MDM_ERRFATAL,
4526 .end = AP2MDM_ERRFATAL,
4527 .name = "AP2MDM_ERRFATAL",
4528 .flags = IORESOURCE_IO,
4529 },
4530 {
4531 .start = MDM2AP_STATUS,
4532 .end = MDM2AP_STATUS,
4533 .name = "MDM2AP_STATUS",
4534 .flags = IORESOURCE_IO,
4535 },
4536 {
4537 .start = AP2MDM_STATUS,
4538 .end = AP2MDM_STATUS,
4539 .name = "AP2MDM_STATUS",
4540 .flags = IORESOURCE_IO,
4541 },
4542 {
4543 .start = AP2MDM_PMIC_PWR_EN,
4544 .end = AP2MDM_PMIC_PWR_EN,
4545 .name = "AP2MDM_PMIC_PWR_EN",
4546 .flags = IORESOURCE_IO,
4547 },
4548 {
4549 .start = AP2MDM_KPDPWR_N,
4550 .end = AP2MDM_KPDPWR_N,
4551 .name = "AP2MDM_KPDPWR_N",
4552 .flags = IORESOURCE_IO,
4553 },
4554 {
4555 .start = AP2MDM_SOFT_RESET,
4556 .end = AP2MDM_SOFT_RESET,
4557 .name = "AP2MDM_SOFT_RESET",
4558 .flags = IORESOURCE_IO,
4559 },
Ameya Thakur43248fd2012-07-10 18:50:52 -07004560 {
4561 .start = USB_SW,
4562 .end = USB_SW,
4563 .name = "USB_SW",
4564 .flags = IORESOURCE_IO,
4565 },
Joel King0cbf5d82012-05-24 15:21:38 -07004566};
4567
Rohit Vaswanib1cc4932012-07-23 21:30:11 -07004568struct platform_device msm_gpio_device = {
4569 .name = "msmgpio",
4570 .id = -1,
4571};
4572
Joel King0cbf5d82012-05-24 15:21:38 -07004573struct platform_device mdm_sglte_device = {
4574 .name = "mdm2_modem",
4575 .id = -1,
4576 .num_resources = ARRAY_SIZE(sglte_resources),
4577 .resource = sglte_resources,
4578};
Arun Menond4837f62012-08-20 15:25:50 -07004579
4580struct platform_device *msm8960_vidc_device[] __initdata = {
4581 &msm_device_vidc
4582};
4583
4584void __init msm8960_add_vidc_device(void)
4585{
4586 if (cpu_is_msm8960ab()) {
4587 struct msm_vidc_platform_data *pdata;
4588 pdata = (struct msm_vidc_platform_data *)
4589 msm_device_vidc.dev.platform_data;
4590 pdata->vidc_bus_client_pdata = &vidc_pro_bus_client_data;
4591 }
4592 platform_add_devices(msm8960_vidc_device,
4593 ARRAY_SIZE(msm8960_vidc_device));
4594}