blob: e5261b0fff997ae9d67161a4ec1683907c412646 [file] [log] [blame]
Manu Gautam5143b252012-01-05 19:25:23 -08001/* Copyright (c) 2011-2012, Code Aurora Forum. All rights reserved.
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002 *
3 * This program is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License version 2 and
5 * only version 2 as published by the Free Software Foundation.
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
11 *
12 */
13
14#include <linux/kernel.h>
15#include <linux/list.h>
16#include <linux/platform_device.h>
17#include <linux/msm_rotator.h>
Joel Nidere5de00e2012-07-03 10:58:10 +030018#include <linux/gpio.h>
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070019#include <linux/clkdev.h>
Hemant Kumard86c4882012-01-24 19:39:37 -080020#include <linux/dma-mapping.h>
Pratik Patel1746b8f2012-06-02 21:11:41 -070021#include <linux/coresight.h>
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070022#include <mach/irqs-8064.h>
23#include <mach/board.h>
24#include <mach/msm_iomap.h>
Yan He06913ce2011-08-26 16:33:46 -070025#include <mach/usbdiag.h>
26#include <mach/msm_sps.h>
Jeff Ohlstein905f1ce2011-09-07 18:50:18 -070027#include <mach/dma.h>
Jin Hongd3024e62012-02-09 16:13:32 -080028#include <mach/msm_dsps.h>
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -080029#include <sound/msm-dai-q6.h>
30#include <sound/apr_audio.h>
Joel Nidere5de00e2012-07-03 10:58:10 +030031#include <mach/msm_tsif.h>
Joel Nider50b50fa2012-08-05 14:17:29 +030032#include <mach/msm_tspp.h>
Gagan Mac8a7a5d32011-11-11 16:43:06 -070033#include <mach/msm_bus_board.h>
Praveen Chidambaram78499012011-11-01 17:15:17 -060034#include <mach/rpm.h>
Joel Kingdacbc822012-01-25 13:30:57 -080035#include <mach/mdm2.h>
Eric Holmberg023d25c2012-03-01 12:27:55 -070036#include <mach/msm_smd.h>
Praveen Chidambaram5c8adf22012-02-23 18:44:37 -070037#include <mach/msm_dcvs.h>
Laura Abbott532b2df2012-04-12 10:53:48 -070038#include <mach/msm_rtb.h>
Mohan Kumar Gubbihalli Lachma Naik7f72edd2012-02-06 17:26:47 -080039#include <linux/ion.h>
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070040#include "clock.h"
41#include "devices.h"
Matt Wagantall1875d322012-02-22 16:11:33 -080042#include "footswitch.h"
Jeff Ohlstein7e668552011-10-06 16:17:25 -070043#include "msm_watchdog.h"
Praveen Chidambaram78499012011-11-01 17:15:17 -060044#include "rpm_stats.h"
45#include "rpm_log.h"
Subhash Jadavani909e04f2012-04-12 10:52:50 +053046#include <mach/mpm.h>
Laura Abbott0577d7b2012-04-17 11:14:30 -070047#include <mach/iommu_domains.h>
Laura Abbott93a4a352012-05-25 09:26:35 -070048#include <mach/msm_cache_dump.h>
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070049
50/* Address of GSBI blocks */
Stepan Moskovchenko2701a442011-08-19 13:47:22 -070051#define MSM_GSBI1_PHYS 0x12440000
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070052#define MSM_GSBI3_PHYS 0x16200000
Harini Jayaramanc4c58692011-07-19 14:50:10 -060053#define MSM_GSBI4_PHYS 0x16300000
54#define MSM_GSBI5_PHYS 0x1A200000
55#define MSM_GSBI6_PHYS 0x16500000
56#define MSM_GSBI7_PHYS 0x16600000
57
Kenneth Heitke748593a2011-07-15 15:45:11 -060058/* GSBI UART devices */
Stepan Moskovchenko2701a442011-08-19 13:47:22 -070059#define MSM_UART1DM_PHYS (MSM_GSBI1_PHYS + 0x10000)
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070060#define MSM_UART3DM_PHYS (MSM_GSBI3_PHYS + 0x40000)
Jin Hong4bbbfba2012-02-02 21:48:07 -080061#define MSM_UART7DM_PHYS (MSM_GSBI7_PHYS + 0x40000)
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070062
Harini Jayaramanc4c58692011-07-19 14:50:10 -060063/* GSBI QUP devices */
David Keitel3c40fc52012-02-09 17:53:52 -080064#define MSM_GSBI1_QUP_PHYS (MSM_GSBI1_PHYS + 0x20000)
Harini Jayaramanc4c58692011-07-19 14:50:10 -060065#define MSM_GSBI3_QUP_PHYS (MSM_GSBI3_PHYS + 0x80000)
66#define MSM_GSBI4_QUP_PHYS (MSM_GSBI4_PHYS + 0x80000)
67#define MSM_GSBI5_QUP_PHYS (MSM_GSBI5_PHYS + 0x80000)
68#define MSM_GSBI6_QUP_PHYS (MSM_GSBI6_PHYS + 0x80000)
69#define MSM_GSBI7_QUP_PHYS (MSM_GSBI7_PHYS + 0x80000)
70#define MSM_QUP_SIZE SZ_4K
71
Kenneth Heitke36920d32011-07-20 16:44:30 -060072/* Address of SSBI CMD */
73#define MSM_PMIC1_SSBI_CMD_PHYS 0x00500000
74#define MSM_PMIC2_SSBI_CMD_PHYS 0x00C00000
75#define MSM_PMIC_SSBI_SIZE SZ_4K
Harini Jayaramanc4c58692011-07-19 14:50:10 -060076
Hemant Kumarcaa09092011-07-30 00:26:33 -070077/* Address of HS USBOTG1 */
Hemant Kumard86c4882012-01-24 19:39:37 -080078#define MSM_HSUSB1_PHYS 0x12500000
79#define MSM_HSUSB1_SIZE SZ_4K
Hemant Kumarcaa09092011-07-30 00:26:33 -070080
Manu Gautam91223e02011-11-08 15:27:22 +053081/* Address of HS USB3 */
82#define MSM_HSUSB3_PHYS 0x12520000
83#define MSM_HSUSB3_SIZE SZ_4K
84
Hemant Kumar1d66e1c2012-02-13 15:24:59 -080085/* Address of HS USB4 */
86#define MSM_HSUSB4_PHYS 0x12530000
87#define MSM_HSUSB4_SIZE SZ_4K
88
Niranjana Vishwanathapura06f89332012-05-03 17:11:13 -060089/* Address of PCIE20 PARF */
90#define PCIE20_PARF_PHYS 0x1b600000
91#define PCIE20_PARF_SIZE SZ_128
92
93/* Address of PCIE20 ELBI */
94#define PCIE20_ELBI_PHYS 0x1b502000
95#define PCIE20_ELBI_SIZE SZ_256
96
97/* Address of PCIE20 */
98#define PCIE20_PHYS 0x1b500000
99#define PCIE20_SIZE SZ_4K
100
Jeff Ohlstein7e668552011-10-06 16:17:25 -0700101static struct msm_watchdog_pdata msm_watchdog_pdata = {
102 .pet_time = 10000,
103 .bark_time = 11000,
104 .has_secure = true,
Joel Kinge7ca6f72012-02-09 20:51:25 -0800105 .needs_expired_enable = true,
Rohit Vaswanic77e4a62012-08-09 18:10:28 -0700106 .base = MSM_TMR0_BASE + WDT0_OFFSET,
107};
108
109static struct resource msm_watchdog_resources[] = {
110 {
111 .start = WDT0_ACCSCSSNBARK_INT,
112 .end = WDT0_ACCSCSSNBARK_INT,
113 .flags = IORESOURCE_IRQ,
114 },
Jeff Ohlstein7e668552011-10-06 16:17:25 -0700115};
116
117struct platform_device msm8064_device_watchdog = {
118 .name = "msm_watchdog",
119 .id = -1,
120 .dev = {
121 .platform_data = &msm_watchdog_pdata,
122 },
Rohit Vaswanic77e4a62012-08-09 18:10:28 -0700123 .num_resources = ARRAY_SIZE(msm_watchdog_resources),
124 .resource = msm_watchdog_resources,
Jeff Ohlstein7e668552011-10-06 16:17:25 -0700125};
126
Joel King0581896d2011-07-19 16:43:28 -0700127static struct resource msm_dmov_resource[] = {
128 {
Jeff Ohlstein4af72692011-11-07 15:59:17 -0800129 .start = ADM_0_SCSS_1_IRQ,
Joel King0581896d2011-07-19 16:43:28 -0700130 .flags = IORESOURCE_IRQ,
131 },
Jeff Ohlstein905f1ce2011-09-07 18:50:18 -0700132 {
Jeff Ohlstein4af72692011-11-07 15:59:17 -0800133 .start = 0x18320000,
134 .end = 0x18320000 + SZ_1M - 1,
Jeff Ohlstein905f1ce2011-09-07 18:50:18 -0700135 .flags = IORESOURCE_MEM,
136 },
137};
138
139static struct msm_dmov_pdata msm_dmov_pdata = {
Jeff Ohlstein4af72692011-11-07 15:59:17 -0800140 .sd = 1,
Jeff Ohlstein905f1ce2011-09-07 18:50:18 -0700141 .sd_size = 0x800,
Joel King0581896d2011-07-19 16:43:28 -0700142};
143
Stepan Moskovchenkodf13d342011-08-03 19:01:25 -0700144struct platform_device apq8064_device_dmov = {
Joel King0581896d2011-07-19 16:43:28 -0700145 .name = "msm_dmov",
146 .id = -1,
147 .resource = msm_dmov_resource,
148 .num_resources = ARRAY_SIZE(msm_dmov_resource),
Jeff Ohlstein905f1ce2011-09-07 18:50:18 -0700149 .dev = {
150 .platform_data = &msm_dmov_pdata,
151 },
Joel King0581896d2011-07-19 16:43:28 -0700152};
153
Stepan Moskovchenko2701a442011-08-19 13:47:22 -0700154static struct resource resources_uart_gsbi1[] = {
155 {
156 .start = APQ8064_GSBI1_UARTDM_IRQ,
157 .end = APQ8064_GSBI1_UARTDM_IRQ,
158 .flags = IORESOURCE_IRQ,
159 },
160 {
161 .start = MSM_UART1DM_PHYS,
162 .end = MSM_UART1DM_PHYS + PAGE_SIZE - 1,
163 .name = "uartdm_resource",
164 .flags = IORESOURCE_MEM,
165 },
166 {
167 .start = MSM_GSBI1_PHYS,
168 .end = MSM_GSBI1_PHYS + PAGE_SIZE - 1,
169 .name = "gsbi_resource",
170 .flags = IORESOURCE_MEM,
171 },
172};
173
174struct platform_device apq8064_device_uart_gsbi1 = {
175 .name = "msm_serial_hsl",
Jin Hong4bbbfba2012-02-02 21:48:07 -0800176 .id = 1,
Stepan Moskovchenko2701a442011-08-19 13:47:22 -0700177 .num_resources = ARRAY_SIZE(resources_uart_gsbi1),
178 .resource = resources_uart_gsbi1,
179};
180
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700181static struct resource resources_uart_gsbi3[] = {
182 {
183 .start = GSBI3_UARTDM_IRQ,
184 .end = GSBI3_UARTDM_IRQ,
185 .flags = IORESOURCE_IRQ,
186 },
187 {
188 .start = MSM_UART3DM_PHYS,
189 .end = MSM_UART3DM_PHYS + PAGE_SIZE - 1,
190 .name = "uartdm_resource",
191 .flags = IORESOURCE_MEM,
192 },
193 {
194 .start = MSM_GSBI3_PHYS,
195 .end = MSM_GSBI3_PHYS + PAGE_SIZE - 1,
196 .name = "gsbi_resource",
197 .flags = IORESOURCE_MEM,
198 },
199};
200
201struct platform_device apq8064_device_uart_gsbi3 = {
202 .name = "msm_serial_hsl",
203 .id = 0,
204 .num_resources = ARRAY_SIZE(resources_uart_gsbi3),
205 .resource = resources_uart_gsbi3,
206};
207
Jing Lin04601f92012-02-05 15:36:07 -0800208static struct resource resources_qup_i2c_gsbi3[] = {
209 {
210 .name = "gsbi_qup_i2c_addr",
211 .start = MSM_GSBI3_PHYS,
212 .end = MSM_GSBI3_PHYS + 4 - 1,
213 .flags = IORESOURCE_MEM,
214 },
215 {
216 .name = "qup_phys_addr",
217 .start = MSM_GSBI3_QUP_PHYS,
218 .end = MSM_GSBI3_QUP_PHYS + MSM_QUP_SIZE - 1,
219 .flags = IORESOURCE_MEM,
220 },
221 {
222 .name = "qup_err_intr",
223 .start = GSBI3_QUP_IRQ,
224 .end = GSBI3_QUP_IRQ,
225 .flags = IORESOURCE_IRQ,
226 },
227 {
228 .name = "i2c_clk",
229 .start = 9,
230 .end = 9,
231 .flags = IORESOURCE_IO,
232 },
233 {
234 .name = "i2c_sda",
235 .start = 8,
236 .end = 8,
237 .flags = IORESOURCE_IO,
238 },
239};
240
David Keitel3c40fc52012-02-09 17:53:52 -0800241static struct resource resources_qup_i2c_gsbi1[] = {
242 {
243 .name = "gsbi_qup_i2c_addr",
244 .start = MSM_GSBI1_PHYS,
245 .end = MSM_GSBI1_PHYS + 4 - 1,
246 .flags = IORESOURCE_MEM,
247 },
248 {
249 .name = "qup_phys_addr",
250 .start = MSM_GSBI1_QUP_PHYS,
251 .end = MSM_GSBI1_QUP_PHYS + MSM_QUP_SIZE - 1,
252 .flags = IORESOURCE_MEM,
253 },
254 {
255 .name = "qup_err_intr",
256 .start = APQ8064_GSBI1_QUP_IRQ,
257 .end = APQ8064_GSBI1_QUP_IRQ,
258 .flags = IORESOURCE_IRQ,
259 },
260 {
261 .name = "i2c_clk",
262 .start = 21,
263 .end = 21,
264 .flags = IORESOURCE_IO,
265 },
266 {
267 .name = "i2c_sda",
268 .start = 20,
269 .end = 20,
270 .flags = IORESOURCE_IO,
271 },
272};
273
274struct platform_device apq8064_device_qup_i2c_gsbi1 = {
275 .name = "qup_i2c",
276 .id = 0,
277 .num_resources = ARRAY_SIZE(resources_qup_i2c_gsbi1),
278 .resource = resources_qup_i2c_gsbi1,
279};
280
Jing Lin04601f92012-02-05 15:36:07 -0800281struct platform_device apq8064_device_qup_i2c_gsbi3 = {
282 .name = "qup_i2c",
283 .id = 3,
284 .num_resources = ARRAY_SIZE(resources_qup_i2c_gsbi3),
285 .resource = resources_qup_i2c_gsbi3,
286};
287
Kenneth Heitke748593a2011-07-15 15:45:11 -0600288static struct resource resources_qup_i2c_gsbi4[] = {
289 {
290 .name = "gsbi_qup_i2c_addr",
291 .start = MSM_GSBI4_PHYS,
Harini Jayaramane1554a92011-09-15 14:43:02 -0600292 .end = MSM_GSBI4_PHYS + 4 - 1,
Kenneth Heitke748593a2011-07-15 15:45:11 -0600293 .flags = IORESOURCE_MEM,
294 },
295 {
296 .name = "qup_phys_addr",
297 .start = MSM_GSBI4_QUP_PHYS,
Harini Jayaramane1554a92011-09-15 14:43:02 -0600298 .end = MSM_GSBI4_QUP_PHYS + MSM_QUP_SIZE - 1,
Kenneth Heitke748593a2011-07-15 15:45:11 -0600299 .flags = IORESOURCE_MEM,
300 },
301 {
302 .name = "qup_err_intr",
303 .start = GSBI4_QUP_IRQ,
304 .end = GSBI4_QUP_IRQ,
305 .flags = IORESOURCE_IRQ,
306 },
Kevin Chand07220e2012-02-13 15:52:22 -0800307 {
308 .name = "i2c_clk",
309 .start = 11,
310 .end = 11,
311 .flags = IORESOURCE_IO,
312 },
313 {
314 .name = "i2c_sda",
315 .start = 10,
316 .end = 10,
317 .flags = IORESOURCE_IO,
318 },
Kenneth Heitke748593a2011-07-15 15:45:11 -0600319};
320
321struct platform_device apq8064_device_qup_i2c_gsbi4 = {
322 .name = "qup_i2c",
323 .id = 4,
324 .num_resources = ARRAY_SIZE(resources_qup_i2c_gsbi4),
325 .resource = resources_qup_i2c_gsbi4,
326};
327
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700328static struct resource resources_qup_spi_gsbi5[] = {
329 {
330 .name = "spi_base",
331 .start = MSM_GSBI5_QUP_PHYS,
332 .end = MSM_GSBI5_QUP_PHYS + SZ_4K - 1,
333 .flags = IORESOURCE_MEM,
334 },
335 {
336 .name = "gsbi_base",
337 .start = MSM_GSBI5_PHYS,
338 .end = MSM_GSBI5_PHYS + 4 - 1,
339 .flags = IORESOURCE_MEM,
340 },
341 {
342 .name = "spi_irq_in",
343 .start = GSBI5_QUP_IRQ,
344 .end = GSBI5_QUP_IRQ,
345 .flags = IORESOURCE_IRQ,
346 },
347};
348
349struct platform_device apq8064_device_qup_spi_gsbi5 = {
350 .name = "spi_qsd",
351 .id = 0,
352 .num_resources = ARRAY_SIZE(resources_qup_spi_gsbi5),
353 .resource = resources_qup_spi_gsbi5,
354};
355
Joel King8f839b92012-04-01 14:37:46 -0700356static struct resource resources_qup_i2c_gsbi5[] = {
357 {
358 .name = "gsbi_qup_i2c_addr",
359 .start = MSM_GSBI5_PHYS,
360 .end = MSM_GSBI5_PHYS + 4 - 1,
361 .flags = IORESOURCE_MEM,
362 },
363 {
364 .name = "qup_phys_addr",
365 .start = MSM_GSBI5_QUP_PHYS,
366 .end = MSM_GSBI5_QUP_PHYS + MSM_QUP_SIZE - 1,
367 .flags = IORESOURCE_MEM,
368 },
369 {
370 .name = "qup_err_intr",
371 .start = GSBI5_QUP_IRQ,
372 .end = GSBI5_QUP_IRQ,
373 .flags = IORESOURCE_IRQ,
374 },
375 {
376 .name = "i2c_clk",
377 .start = 54,
378 .end = 54,
379 .flags = IORESOURCE_IO,
380 },
381 {
382 .name = "i2c_sda",
383 .start = 53,
384 .end = 53,
385 .flags = IORESOURCE_IO,
386 },
387};
388
389struct platform_device mpq8064_device_qup_i2c_gsbi5 = {
390 .name = "qup_i2c",
391 .id = 5,
392 .num_resources = ARRAY_SIZE(resources_qup_i2c_gsbi5),
393 .resource = resources_qup_i2c_gsbi5,
394};
395
Jin Hong4bbbfba2012-02-02 21:48:07 -0800396static struct resource resources_uart_gsbi7[] = {
397 {
398 .start = GSBI7_UARTDM_IRQ,
399 .end = GSBI7_UARTDM_IRQ,
400 .flags = IORESOURCE_IRQ,
401 },
402 {
403 .start = MSM_UART7DM_PHYS,
404 .end = MSM_UART7DM_PHYS + PAGE_SIZE - 1,
405 .name = "uartdm_resource",
406 .flags = IORESOURCE_MEM,
407 },
408 {
409 .start = MSM_GSBI7_PHYS,
410 .end = MSM_GSBI7_PHYS + PAGE_SIZE - 1,
411 .name = "gsbi_resource",
412 .flags = IORESOURCE_MEM,
413 },
414};
415
416struct platform_device apq8064_device_uart_gsbi7 = {
417 .name = "msm_serial_hsl",
418 .id = 0,
419 .num_resources = ARRAY_SIZE(resources_uart_gsbi7),
420 .resource = resources_uart_gsbi7,
421};
422
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800423struct platform_device apq_pcm = {
424 .name = "msm-pcm-dsp",
425 .id = -1,
426};
427
428struct platform_device apq_pcm_routing = {
429 .name = "msm-pcm-routing",
430 .id = -1,
431};
432
433struct platform_device apq_cpudai0 = {
434 .name = "msm-dai-q6",
435 .id = 0x4000,
436};
437
438struct platform_device apq_cpudai1 = {
439 .name = "msm-dai-q6",
440 .id = 0x4001,
441};
Santosh Mardieff9a742012-04-09 23:23:39 +0530442struct platform_device mpq_cpudai_sec_i2s_rx = {
443 .name = "msm-dai-q6",
444 .id = 4,
445};
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800446struct platform_device apq_cpudai_hdmi_rx = {
Swaminathan Sathappanfd9dbad2012-02-15 16:56:44 -0800447 .name = "msm-dai-q6-hdmi",
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800448 .id = 8,
449};
450
451struct platform_device apq_cpudai_bt_rx = {
452 .name = "msm-dai-q6",
453 .id = 0x3000,
454};
455
456struct platform_device apq_cpudai_bt_tx = {
457 .name = "msm-dai-q6",
458 .id = 0x3001,
459};
460
461struct platform_device apq_cpudai_fm_rx = {
462 .name = "msm-dai-q6",
463 .id = 0x3004,
464};
465
466struct platform_device apq_cpudai_fm_tx = {
467 .name = "msm-dai-q6",
468 .id = 0x3005,
469};
470
Helen Zeng8f925502012-03-05 16:50:17 -0800471struct platform_device apq_cpudai_slim_4_rx = {
472 .name = "msm-dai-q6",
473 .id = 0x4008,
474};
475
476struct platform_device apq_cpudai_slim_4_tx = {
477 .name = "msm-dai-q6",
478 .id = 0x4009,
479};
480
Joel Nidere5de00e2012-07-03 10:58:10 +0300481#define MSM_TSIF0_PHYS (0x18200000)
482#define MSM_TSIF1_PHYS (0x18201000)
483#define MSM_TSIF_SIZE (0x200)
484
485#define TSIF_0_CLK GPIO_CFG(55, 1, GPIO_CFG_INPUT, \
486 GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA)
487#define TSIF_0_EN GPIO_CFG(56, 1, GPIO_CFG_INPUT, \
488 GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA)
489#define TSIF_0_DATA GPIO_CFG(57, 1, GPIO_CFG_INPUT, \
490 GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA)
491#define TSIF_0_SYNC GPIO_CFG(62, 1, GPIO_CFG_INPUT, \
492 GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA)
493#define TSIF_1_CLK GPIO_CFG(59, 1, GPIO_CFG_INPUT, \
494 GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA)
495#define TSIF_1_EN GPIO_CFG(60, 1, GPIO_CFG_INPUT, \
496 GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA)
497#define TSIF_1_DATA GPIO_CFG(61, 1, GPIO_CFG_INPUT, \
498 GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA)
499#define TSIF_1_SYNC GPIO_CFG(58, 1, GPIO_CFG_INPUT, \
500 GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA)
501
502static const struct msm_gpio tsif0_gpios[] = {
503 { .gpio_cfg = TSIF_0_CLK, .label = "tsif_clk", },
504 { .gpio_cfg = TSIF_0_EN, .label = "tsif_en", },
505 { .gpio_cfg = TSIF_0_DATA, .label = "tsif_data", },
506 { .gpio_cfg = TSIF_0_SYNC, .label = "tsif_sync", },
507};
508
509static const struct msm_gpio tsif1_gpios[] = {
510 { .gpio_cfg = TSIF_1_CLK, .label = "tsif_clk", },
511 { .gpio_cfg = TSIF_1_EN, .label = "tsif_en", },
512 { .gpio_cfg = TSIF_1_DATA, .label = "tsif_data", },
513 { .gpio_cfg = TSIF_1_SYNC, .label = "tsif_sync", },
514};
515
516struct msm_tsif_platform_data tsif1_8064_platform_data = {
517 .num_gpios = ARRAY_SIZE(tsif1_gpios),
518 .gpios = tsif1_gpios,
519 .tsif_pclk = "iface_clk",
520 .tsif_ref_clk = "ref_clk",
521};
522
523struct resource tsif1_8064_resources[] = {
524 [0] = {
525 .flags = IORESOURCE_IRQ,
526 .start = TSIF2_IRQ,
527 .end = TSIF2_IRQ,
528 },
529 [1] = {
530 .flags = IORESOURCE_MEM,
531 .start = MSM_TSIF1_PHYS,
532 .end = MSM_TSIF1_PHYS + MSM_TSIF_SIZE - 1,
533 },
534 [2] = {
535 .flags = IORESOURCE_DMA,
536 .start = DMOV8064_TSIF_CHAN,
537 .end = DMOV8064_TSIF_CRCI,
538 },
539};
540
541struct msm_tsif_platform_data tsif0_8064_platform_data = {
542 .num_gpios = ARRAY_SIZE(tsif0_gpios),
543 .gpios = tsif0_gpios,
544 .tsif_pclk = "iface_clk",
545 .tsif_ref_clk = "ref_clk",
546};
547
548struct resource tsif0_8064_resources[] = {
549 [0] = {
550 .flags = IORESOURCE_IRQ,
551 .start = TSIF1_IRQ,
552 .end = TSIF1_IRQ,
553 },
554 [1] = {
555 .flags = IORESOURCE_MEM,
556 .start = MSM_TSIF0_PHYS,
557 .end = MSM_TSIF0_PHYS + MSM_TSIF_SIZE - 1,
558 },
559 [2] = {
560 .flags = IORESOURCE_DMA,
561 .start = DMOV_TSIF_CHAN,
562 .end = DMOV_TSIF_CRCI,
563 },
564};
565
566struct platform_device msm_8064_device_tsif[2] = {
567 {
568 .name = "msm_tsif",
569 .id = 0,
570 .num_resources = ARRAY_SIZE(tsif0_8064_resources),
571 .resource = tsif0_8064_resources,
572 .dev = {
573 .platform_data = &tsif0_8064_platform_data
574 },
575 },
576 {
577 .name = "msm_tsif",
578 .id = 1,
579 .num_resources = ARRAY_SIZE(tsif1_8064_resources),
580 .resource = tsif1_8064_resources,
581 .dev = {
582 .platform_data = &tsif1_8064_platform_data
583 },
584 }
585};
586
Joel Nider50b50fa2012-08-05 14:17:29 +0300587#define MSM_TSPP_PHYS (0x18202000)
588#define MSM_TSPP_SIZE (0x1000)
589#define MSM_TSPP_BAM_PHYS (0x18204000)
590#define MSM_TSPP_BAM_SIZE (0x2000)
591
592static const struct msm_gpio tspp_gpios[] = {
593 { .gpio_cfg = TSIF_0_CLK, .label = "tsif_clk", },
594 { .gpio_cfg = TSIF_0_EN, .label = "tsif_en", },
595 { .gpio_cfg = TSIF_0_DATA, .label = "tsif_data", },
596 { .gpio_cfg = TSIF_0_SYNC, .label = "tsif_sync", },
597 { .gpio_cfg = TSIF_1_CLK, .label = "tsif_clk", },
598 { .gpio_cfg = TSIF_1_EN, .label = "tsif_en", },
599 { .gpio_cfg = TSIF_1_DATA, .label = "tsif_data", },
600 { .gpio_cfg = TSIF_1_SYNC, .label = "tsif_sync", },
601};
602
603static struct resource tspp_resources[] = {
604 [0] = {
605 .flags = IORESOURCE_IRQ,
606 .start = TSIF_TSPP_IRQ,
607 .end = TSIF1_IRQ,
608 },
609 [1] = {
610 .flags = IORESOURCE_MEM,
611 .start = MSM_TSIF0_PHYS,
612 .end = MSM_TSIF0_PHYS + MSM_TSIF_SIZE - 1,
613 },
614 [2] = {
615 .flags = IORESOURCE_MEM,
616 .start = MSM_TSIF1_PHYS,
617 .end = MSM_TSIF1_PHYS + MSM_TSIF_SIZE - 1,
618 },
619 [3] = {
620 .flags = IORESOURCE_MEM,
621 .start = MSM_TSPP_PHYS,
622 .end = MSM_TSPP_PHYS + MSM_TSPP_SIZE - 1,
623 },
624 [4] = {
625 .flags = IORESOURCE_MEM,
626 .start = MSM_TSPP_BAM_PHYS,
627 .end = MSM_TSPP_BAM_PHYS + MSM_TSPP_BAM_SIZE - 1,
628 },
629};
630
631static struct msm_tspp_platform_data tspp_platform_data = {
632 .num_gpios = ARRAY_SIZE(tspp_gpios),
633 .gpios = tspp_gpios,
634 .tsif_pclk = "iface_clk",
635 .tsif_ref_clk = "ref_clk",
636};
637
638struct platform_device msm_8064_device_tspp = {
639 .name = "msm_tspp",
640 .id = 0,
641 .num_resources = ARRAY_SIZE(tspp_resources),
642 .resource = tspp_resources,
643 .dev = {
644 .platform_data = &tspp_platform_data
645 },
646};
647
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800648/*
649 * Machine specific data for AUX PCM Interface
650 * which the driver will be unware of.
651 */
Kiran Kandi5f4ab692012-02-23 11:23:56 -0800652struct msm_dai_auxpcm_pdata apq_auxpcm_pdata = {
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800653 .clk = "pcm_clk",
Kuirong Wang547a9982012-05-04 18:29:11 -0700654 .mode_8k = {
655 .mode = AFE_PCM_CFG_MODE_PCM,
656 .sync = AFE_PCM_CFG_SYNC_INT,
657 .frame = AFE_PCM_CFG_FRM_256BPF,
658 .quant = AFE_PCM_CFG_QUANT_LINEAR_NOPAD,
659 .slot = 0,
660 .data = AFE_PCM_CFG_CDATAOE_MASTER,
661 .pcm_clk_rate = 2048000,
662 },
663 .mode_16k = {
664 .mode = AFE_PCM_CFG_MODE_PCM,
665 .sync = AFE_PCM_CFG_SYNC_INT,
666 .frame = AFE_PCM_CFG_FRM_256BPF,
667 .quant = AFE_PCM_CFG_QUANT_LINEAR_NOPAD,
668 .slot = 0,
669 .data = AFE_PCM_CFG_CDATAOE_MASTER,
670 .pcm_clk_rate = 4096000,
671 }
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800672};
673
674struct platform_device apq_cpudai_auxpcm_rx = {
675 .name = "msm-dai-q6",
676 .id = 2,
677 .dev = {
Kiran Kandi5f4ab692012-02-23 11:23:56 -0800678 .platform_data = &apq_auxpcm_pdata,
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800679 },
680};
681
682struct platform_device apq_cpudai_auxpcm_tx = {
683 .name = "msm-dai-q6",
684 .id = 3,
Kiran Kandi5f4ab692012-02-23 11:23:56 -0800685 .dev = {
686 .platform_data = &apq_auxpcm_pdata,
687 },
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800688};
689
Patrick Lai04baee942012-05-01 14:38:47 -0700690struct msm_mi2s_pdata mpq_mi2s_tx_data = {
691 .rx_sd_lines = 0,
692 .tx_sd_lines = MSM_MI2S_SD0 | MSM_MI2S_SD1 | MSM_MI2S_SD2 |
693 MSM_MI2S_SD3,
Kuirong Wangf23f8c52012-03-31 12:34:51 -0700694};
695
696struct platform_device mpq_cpudai_mi2s_tx = {
Patrick Lai04baee942012-05-01 14:38:47 -0700697 .name = "msm-dai-q6-mi2s",
698 .id = -1, /*MI2S_TX */
Kuirong Wangf23f8c52012-03-31 12:34:51 -0700699 .dev = {
700 .platform_data = &mpq_mi2s_tx_data,
701 },
702};
703
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800704struct platform_device apq_cpu_fe = {
705 .name = "msm-dai-fe",
706 .id = -1,
707};
708
709struct platform_device apq_stub_codec = {
710 .name = "msm-stub-codec",
711 .id = 1,
712};
713
714struct platform_device apq_voice = {
715 .name = "msm-pcm-voice",
716 .id = -1,
717};
718
719struct platform_device apq_voip = {
720 .name = "msm-voip-dsp",
721 .id = -1,
722};
723
724struct platform_device apq_lpa_pcm = {
725 .name = "msm-pcm-lpa",
726 .id = -1,
727};
728
Krishnankutty Kolathappilly4374e332012-03-18 22:27:30 -0700729struct platform_device apq_compr_dsp = {
730 .name = "msm-compr-dsp",
731 .id = -1,
732};
733
734struct platform_device apq_multi_ch_pcm = {
735 .name = "msm-multi-ch-pcm-dsp",
736 .id = -1,
737};
738
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800739struct platform_device apq_pcm_hostless = {
740 .name = "msm-pcm-hostless",
741 .id = -1,
742};
743
744struct platform_device apq_cpudai_afe_01_rx = {
745 .name = "msm-dai-q6",
746 .id = 0xE0,
747};
748
749struct platform_device apq_cpudai_afe_01_tx = {
750 .name = "msm-dai-q6",
751 .id = 0xF0,
752};
753
754struct platform_device apq_cpudai_afe_02_rx = {
755 .name = "msm-dai-q6",
756 .id = 0xF1,
757};
758
759struct platform_device apq_cpudai_afe_02_tx = {
760 .name = "msm-dai-q6",
761 .id = 0xE1,
762};
763
764struct platform_device apq_pcm_afe = {
765 .name = "msm-pcm-afe",
766 .id = -1,
767};
768
Neema Shetty8427c262012-02-16 11:23:43 -0800769struct platform_device apq_cpudai_stub = {
770 .name = "msm-dai-stub",
771 .id = -1,
772};
773
Neema Shetty3c9d2862012-03-11 01:25:32 -0800774struct platform_device apq_cpudai_slimbus_1_rx = {
775 .name = "msm-dai-q6",
776 .id = 0x4002,
777};
778
779struct platform_device apq_cpudai_slimbus_1_tx = {
780 .name = "msm-dai-q6",
781 .id = 0x4003,
782};
783
Kiran Kandi97fe19d2012-05-20 22:34:04 -0700784struct platform_device apq_cpudai_slimbus_2_rx = {
785 .name = "msm-dai-q6",
786 .id = 0x4004,
787};
788
Kiran Kandi1e6371d2012-03-29 11:48:57 -0700789struct platform_device apq_cpudai_slimbus_2_tx = {
790 .name = "msm-dai-q6",
791 .id = 0x4005,
792};
793
Neema Shettyc9d86c32012-05-09 12:01:39 -0700794struct platform_device apq_cpudai_slimbus_3_rx = {
795 .name = "msm-dai-q6",
796 .id = 0x4006,
797};
798
Helen Zeng38c3c962012-05-17 14:56:20 -0700799struct platform_device apq_cpudai_slimbus_3_tx = {
800 .name = "msm-dai-q6",
801 .id = 0x4007,
802};
803
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700804static struct resource resources_ssbi_pmic1[] = {
805 {
806 .start = MSM_PMIC1_SSBI_CMD_PHYS,
807 .end = MSM_PMIC1_SSBI_CMD_PHYS + MSM_PMIC_SSBI_SIZE - 1,
808 .flags = IORESOURCE_MEM,
809 },
810};
811
Sagar Dharia8bdcdaf2011-09-16 16:01:15 -0600812#define LPASS_SLIMBUS_PHYS 0x28080000
813#define LPASS_SLIMBUS_BAM_PHYS 0x28084000
Swaminathan Sathappan2316e082012-02-03 14:07:17 -0800814#define LPASS_SLIMBUS_SLEW (MSM8960_TLMM_PHYS + 0x207C)
Sagar Dharia8bdcdaf2011-09-16 16:01:15 -0600815/* Board info for the slimbus slave device */
816static struct resource slimbus_res[] = {
817 {
818 .start = LPASS_SLIMBUS_PHYS,
819 .end = LPASS_SLIMBUS_PHYS + 8191,
820 .flags = IORESOURCE_MEM,
821 .name = "slimbus_physical",
822 },
823 {
824 .start = LPASS_SLIMBUS_BAM_PHYS,
825 .end = LPASS_SLIMBUS_BAM_PHYS + 8191,
826 .flags = IORESOURCE_MEM,
827 .name = "slimbus_bam_physical",
828 },
829 {
Swaminathan Sathappan2316e082012-02-03 14:07:17 -0800830 .start = LPASS_SLIMBUS_SLEW,
831 .end = LPASS_SLIMBUS_SLEW + 4 - 1,
832 .flags = IORESOURCE_MEM,
833 .name = "slimbus_slew_reg",
834 },
835 {
Sagar Dharia8bdcdaf2011-09-16 16:01:15 -0600836 .start = SLIMBUS0_CORE_EE1_IRQ,
837 .end = SLIMBUS0_CORE_EE1_IRQ,
838 .flags = IORESOURCE_IRQ,
839 .name = "slimbus_irq",
840 },
841 {
842 .start = SLIMBUS0_BAM_EE1_IRQ,
843 .end = SLIMBUS0_BAM_EE1_IRQ,
844 .flags = IORESOURCE_IRQ,
845 .name = "slimbus_bam_irq",
846 },
847};
848
849struct platform_device apq8064_slim_ctrl = {
850 .name = "msm_slim_ctrl",
851 .id = 1,
852 .num_resources = ARRAY_SIZE(slimbus_res),
853 .resource = slimbus_res,
854 .dev = {
855 .coherent_dma_mask = 0xffffffffULL,
856 },
857};
858
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700859struct platform_device apq8064_device_ssbi_pmic1 = {
860 .name = "msm_ssbi",
861 .id = 0,
862 .resource = resources_ssbi_pmic1,
863 .num_resources = ARRAY_SIZE(resources_ssbi_pmic1),
864};
865
866static struct resource resources_ssbi_pmic2[] = {
867 {
868 .start = MSM_PMIC2_SSBI_CMD_PHYS,
869 .end = MSM_PMIC2_SSBI_CMD_PHYS + MSM_PMIC_SSBI_SIZE - 1,
870 .flags = IORESOURCE_MEM,
871 },
872};
873
874struct platform_device apq8064_device_ssbi_pmic2 = {
875 .name = "msm_ssbi",
876 .id = 1,
877 .resource = resources_ssbi_pmic2,
878 .num_resources = ARRAY_SIZE(resources_ssbi_pmic2),
879};
880
881static struct resource resources_otg[] = {
882 {
Hemant Kumard86c4882012-01-24 19:39:37 -0800883 .start = MSM_HSUSB1_PHYS,
884 .end = MSM_HSUSB1_PHYS + MSM_HSUSB1_SIZE - 1,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700885 .flags = IORESOURCE_MEM,
886 },
887 {
888 .start = USB1_HS_IRQ,
889 .end = USB1_HS_IRQ,
890 .flags = IORESOURCE_IRQ,
891 },
892};
893
Stepan Moskovchenko14aa6492011-08-08 15:15:01 -0700894struct platform_device apq8064_device_otg = {
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700895 .name = "msm_otg",
896 .id = -1,
897 .num_resources = ARRAY_SIZE(resources_otg),
898 .resource = resources_otg,
899 .dev = {
900 .coherent_dma_mask = 0xffffffff,
901 },
902};
903
904static struct resource resources_hsusb[] = {
905 {
Hemant Kumard86c4882012-01-24 19:39:37 -0800906 .start = MSM_HSUSB1_PHYS,
907 .end = MSM_HSUSB1_PHYS + MSM_HSUSB1_SIZE - 1,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700908 .flags = IORESOURCE_MEM,
909 },
910 {
911 .start = USB1_HS_IRQ,
912 .end = USB1_HS_IRQ,
913 .flags = IORESOURCE_IRQ,
914 },
915};
916
Stepan Moskovchenko14aa6492011-08-08 15:15:01 -0700917struct platform_device apq8064_device_gadget_peripheral = {
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700918 .name = "msm_hsusb",
919 .id = -1,
920 .num_resources = ARRAY_SIZE(resources_hsusb),
921 .resource = resources_hsusb,
922 .dev = {
923 .coherent_dma_mask = 0xffffffff,
924 },
925};
926
Hemant Kumard86c4882012-01-24 19:39:37 -0800927static struct resource resources_hsusb_host[] = {
928 {
929 .start = MSM_HSUSB1_PHYS,
930 .end = MSM_HSUSB1_PHYS + MSM_HSUSB1_SIZE - 1,
931 .flags = IORESOURCE_MEM,
932 },
933 {
934 .start = USB1_HS_IRQ,
935 .end = USB1_HS_IRQ,
936 .flags = IORESOURCE_IRQ,
937 },
938};
939
Hemant Kumara945b472012-01-25 15:08:06 -0800940static struct resource resources_hsic_host[] = {
941 {
942 .start = 0x12510000,
943 .end = 0x12510000 + SZ_4K - 1,
944 .flags = IORESOURCE_MEM,
945 },
946 {
947 .start = USB2_HSIC_IRQ,
948 .end = USB2_HSIC_IRQ,
949 .flags = IORESOURCE_IRQ,
950 },
951 {
952 .start = MSM_GPIO_TO_INT(49),
953 .end = MSM_GPIO_TO_INT(49),
954 .name = "peripheral_status_irq",
955 .flags = IORESOURCE_IRQ,
956 },
Vamsi Krishna6921cbe2012-02-21 18:34:43 -0800957 {
Hemant Kumar6fd65032012-05-23 13:02:24 -0700958 .start = 47,
959 .end = 47,
960 .name = "wakeup",
961 .flags = IORESOURCE_IO,
Vamsi Krishna6921cbe2012-02-21 18:34:43 -0800962 },
Hemant Kumara945b472012-01-25 15:08:06 -0800963};
964
Hemant Kumard86c4882012-01-24 19:39:37 -0800965static u64 dma_mask = DMA_BIT_MASK(32);
966struct platform_device apq8064_device_hsusb_host = {
967 .name = "msm_hsusb_host",
968 .id = -1,
969 .num_resources = ARRAY_SIZE(resources_hsusb_host),
970 .resource = resources_hsusb_host,
971 .dev = {
972 .dma_mask = &dma_mask,
973 .coherent_dma_mask = 0xffffffff,
974 },
975};
976
Hemant Kumara945b472012-01-25 15:08:06 -0800977struct platform_device apq8064_device_hsic_host = {
978 .name = "msm_hsic_host",
979 .id = -1,
980 .num_resources = ARRAY_SIZE(resources_hsic_host),
981 .resource = resources_hsic_host,
982 .dev = {
983 .dma_mask = &dma_mask,
984 .coherent_dma_mask = DMA_BIT_MASK(32),
985 },
986};
987
Manu Gautam91223e02011-11-08 15:27:22 +0530988static struct resource resources_ehci_host3[] = {
989{
990 .start = MSM_HSUSB3_PHYS,
991 .end = MSM_HSUSB3_PHYS + MSM_HSUSB3_SIZE - 1,
992 .flags = IORESOURCE_MEM,
993 },
994 {
995 .start = USB3_HS_IRQ,
996 .end = USB3_HS_IRQ,
997 .flags = IORESOURCE_IRQ,
998 },
999};
1000
1001struct platform_device apq8064_device_ehci_host3 = {
1002 .name = "msm_ehci_host",
1003 .id = 0,
1004 .num_resources = ARRAY_SIZE(resources_ehci_host3),
1005 .resource = resources_ehci_host3,
1006 .dev = {
1007 .dma_mask = &dma_mask,
1008 .coherent_dma_mask = 0xffffffff,
1009 },
1010};
1011
Hemant Kumar1d66e1c2012-02-13 15:24:59 -08001012static struct resource resources_ehci_host4[] = {
1013{
1014 .start = MSM_HSUSB4_PHYS,
1015 .end = MSM_HSUSB4_PHYS + MSM_HSUSB4_SIZE - 1,
1016 .flags = IORESOURCE_MEM,
1017 },
1018 {
1019 .start = USB4_HS_IRQ,
1020 .end = USB4_HS_IRQ,
1021 .flags = IORESOURCE_IRQ,
1022 },
1023};
1024
1025struct platform_device apq8064_device_ehci_host4 = {
1026 .name = "msm_ehci_host",
1027 .id = 1,
1028 .num_resources = ARRAY_SIZE(resources_ehci_host4),
1029 .resource = resources_ehci_host4,
1030 .dev = {
1031 .dma_mask = &dma_mask,
1032 .coherent_dma_mask = 0xffffffff,
1033 },
1034};
1035
Matt Wagantallf5cc3892012-06-07 19:47:02 -07001036struct platform_device apq8064_device_acpuclk = {
1037 .name = "acpuclk-8064",
1038 .id = -1,
1039};
1040
Ramesh Masavarapuf31ff242012-05-10 18:55:21 -07001041#define SHARED_IMEM_TZ_BASE 0x2a03f720
1042static struct resource tzlog_resources[] = {
1043 {
1044 .start = SHARED_IMEM_TZ_BASE,
1045 .end = SHARED_IMEM_TZ_BASE + SZ_4K - 1,
1046 .flags = IORESOURCE_MEM,
1047 },
1048};
1049
1050struct platform_device apq_device_tz_log = {
1051 .name = "tz_log",
1052 .id = 0,
1053 .num_resources = ARRAY_SIZE(tzlog_resources),
1054 .resource = tzlog_resources,
1055};
1056
Mohan Kumar Gubbihalli Lachma Naik7f72edd2012-02-06 17:26:47 -08001057/* MSM Video core device */
1058#ifdef CONFIG_MSM_BUS_SCALING
1059static struct msm_bus_vectors vidc_init_vectors[] = {
1060 {
1061 .src = MSM_BUS_MASTER_VIDEO_ENC,
1062 .dst = MSM_BUS_SLAVE_EBI_CH0,
1063 .ab = 0,
1064 .ib = 0,
1065 },
1066 {
1067 .src = MSM_BUS_MASTER_VIDEO_DEC,
1068 .dst = MSM_BUS_SLAVE_EBI_CH0,
1069 .ab = 0,
1070 .ib = 0,
1071 },
1072 {
1073 .src = MSM_BUS_MASTER_AMPSS_M0,
1074 .dst = MSM_BUS_SLAVE_EBI_CH0,
1075 .ab = 0,
1076 .ib = 0,
1077 },
1078 {
1079 .src = MSM_BUS_MASTER_AMPSS_M0,
1080 .dst = MSM_BUS_SLAVE_EBI_CH0,
1081 .ab = 0,
1082 .ib = 0,
1083 },
1084};
1085static struct msm_bus_vectors vidc_venc_vga_vectors[] = {
1086 {
1087 .src = MSM_BUS_MASTER_VIDEO_ENC,
1088 .dst = MSM_BUS_SLAVE_EBI_CH0,
1089 .ab = 54525952,
1090 .ib = 436207616,
1091 },
1092 {
1093 .src = MSM_BUS_MASTER_VIDEO_DEC,
1094 .dst = MSM_BUS_SLAVE_EBI_CH0,
1095 .ab = 72351744,
1096 .ib = 289406976,
1097 },
1098 {
1099 .src = MSM_BUS_MASTER_AMPSS_M0,
1100 .dst = MSM_BUS_SLAVE_EBI_CH0,
1101 .ab = 500000,
1102 .ib = 1000000,
1103 },
1104 {
1105 .src = MSM_BUS_MASTER_AMPSS_M0,
1106 .dst = MSM_BUS_SLAVE_EBI_CH0,
1107 .ab = 500000,
1108 .ib = 1000000,
1109 },
1110};
1111static struct msm_bus_vectors vidc_vdec_vga_vectors[] = {
1112 {
1113 .src = MSM_BUS_MASTER_VIDEO_ENC,
1114 .dst = MSM_BUS_SLAVE_EBI_CH0,
1115 .ab = 40894464,
1116 .ib = 327155712,
1117 },
1118 {
1119 .src = MSM_BUS_MASTER_VIDEO_DEC,
1120 .dst = MSM_BUS_SLAVE_EBI_CH0,
1121 .ab = 48234496,
1122 .ib = 192937984,
1123 },
1124 {
1125 .src = MSM_BUS_MASTER_AMPSS_M0,
1126 .dst = MSM_BUS_SLAVE_EBI_CH0,
1127 .ab = 500000,
1128 .ib = 2000000,
1129 },
1130 {
1131 .src = MSM_BUS_MASTER_AMPSS_M0,
1132 .dst = MSM_BUS_SLAVE_EBI_CH0,
1133 .ab = 500000,
1134 .ib = 2000000,
1135 },
1136};
1137static struct msm_bus_vectors vidc_venc_720p_vectors[] = {
1138 {
1139 .src = MSM_BUS_MASTER_VIDEO_ENC,
1140 .dst = MSM_BUS_SLAVE_EBI_CH0,
1141 .ab = 163577856,
1142 .ib = 1308622848,
1143 },
1144 {
1145 .src = MSM_BUS_MASTER_VIDEO_DEC,
1146 .dst = MSM_BUS_SLAVE_EBI_CH0,
1147 .ab = 219152384,
1148 .ib = 876609536,
1149 },
1150 {
1151 .src = MSM_BUS_MASTER_AMPSS_M0,
1152 .dst = MSM_BUS_SLAVE_EBI_CH0,
1153 .ab = 1750000,
1154 .ib = 3500000,
1155 },
1156 {
1157 .src = MSM_BUS_MASTER_AMPSS_M0,
1158 .dst = MSM_BUS_SLAVE_EBI_CH0,
1159 .ab = 1750000,
1160 .ib = 3500000,
1161 },
1162};
1163static struct msm_bus_vectors vidc_vdec_720p_vectors[] = {
1164 {
1165 .src = MSM_BUS_MASTER_VIDEO_ENC,
1166 .dst = MSM_BUS_SLAVE_EBI_CH0,
1167 .ab = 121634816,
1168 .ib = 973078528,
1169 },
1170 {
1171 .src = MSM_BUS_MASTER_VIDEO_DEC,
1172 .dst = MSM_BUS_SLAVE_EBI_CH0,
1173 .ab = 155189248,
1174 .ib = 620756992,
1175 },
1176 {
1177 .src = MSM_BUS_MASTER_AMPSS_M0,
1178 .dst = MSM_BUS_SLAVE_EBI_CH0,
1179 .ab = 1750000,
1180 .ib = 7000000,
1181 },
1182 {
1183 .src = MSM_BUS_MASTER_AMPSS_M0,
1184 .dst = MSM_BUS_SLAVE_EBI_CH0,
1185 .ab = 1750000,
1186 .ib = 7000000,
1187 },
1188};
1189static struct msm_bus_vectors vidc_venc_1080p_vectors[] = {
1190 {
1191 .src = MSM_BUS_MASTER_VIDEO_ENC,
1192 .dst = MSM_BUS_SLAVE_EBI_CH0,
1193 .ab = 372244480,
1194 .ib = 2560000000U,
1195 },
1196 {
1197 .src = MSM_BUS_MASTER_VIDEO_DEC,
1198 .dst = MSM_BUS_SLAVE_EBI_CH0,
1199 .ab = 501219328,
1200 .ib = 2560000000U,
1201 },
1202 {
1203 .src = MSM_BUS_MASTER_AMPSS_M0,
1204 .dst = MSM_BUS_SLAVE_EBI_CH0,
1205 .ab = 2500000,
1206 .ib = 5000000,
1207 },
1208 {
1209 .src = MSM_BUS_MASTER_AMPSS_M0,
1210 .dst = MSM_BUS_SLAVE_EBI_CH0,
1211 .ab = 2500000,
1212 .ib = 5000000,
1213 },
1214};
1215static struct msm_bus_vectors vidc_vdec_1080p_vectors[] = {
1216 {
1217 .src = MSM_BUS_MASTER_VIDEO_ENC,
1218 .dst = MSM_BUS_SLAVE_EBI_CH0,
1219 .ab = 222298112,
1220 .ib = 2560000000U,
1221 },
1222 {
1223 .src = MSM_BUS_MASTER_VIDEO_DEC,
1224 .dst = MSM_BUS_SLAVE_EBI_CH0,
1225 .ab = 330301440,
1226 .ib = 2560000000U,
1227 },
1228 {
1229 .src = MSM_BUS_MASTER_AMPSS_M0,
1230 .dst = MSM_BUS_SLAVE_EBI_CH0,
1231 .ab = 2500000,
1232 .ib = 700000000,
1233 },
1234 {
1235 .src = MSM_BUS_MASTER_AMPSS_M0,
1236 .dst = MSM_BUS_SLAVE_EBI_CH0,
1237 .ab = 2500000,
1238 .ib = 10000000,
1239 },
1240};
1241
Arun Menon152c3c72012-06-20 11:50:08 -07001242static struct msm_bus_vectors vidc_venc_1080p_turbo_vectors[] = {
1243 {
1244 .src = MSM_BUS_MASTER_VIDEO_ENC,
1245 .dst = MSM_BUS_SLAVE_EBI_CH0,
1246 .ab = 222298112,
1247 .ib = 3522000000U,
1248 },
1249 {
1250 .src = MSM_BUS_MASTER_VIDEO_DEC,
1251 .dst = MSM_BUS_SLAVE_EBI_CH0,
1252 .ab = 330301440,
1253 .ib = 3522000000U,
1254 },
1255 {
1256 .src = MSM_BUS_MASTER_AMPSS_M0,
1257 .dst = MSM_BUS_SLAVE_EBI_CH0,
1258 .ab = 2500000,
1259 .ib = 700000000,
1260 },
1261 {
1262 .src = MSM_BUS_MASTER_AMPSS_M0,
1263 .dst = MSM_BUS_SLAVE_EBI_CH0,
1264 .ab = 2500000,
1265 .ib = 10000000,
1266 },
1267};
1268static struct msm_bus_vectors vidc_vdec_1080p_turbo_vectors[] = {
1269 {
1270 .src = MSM_BUS_MASTER_VIDEO_ENC,
1271 .dst = MSM_BUS_SLAVE_EBI_CH0,
1272 .ab = 222298112,
1273 .ib = 3522000000U,
1274 },
1275 {
1276 .src = MSM_BUS_MASTER_VIDEO_DEC,
1277 .dst = MSM_BUS_SLAVE_EBI_CH0,
1278 .ab = 330301440,
1279 .ib = 3522000000U,
1280 },
1281 {
1282 .src = MSM_BUS_MASTER_AMPSS_M0,
1283 .dst = MSM_BUS_SLAVE_EBI_CH0,
1284 .ab = 2500000,
1285 .ib = 700000000,
1286 },
1287 {
1288 .src = MSM_BUS_MASTER_AMPSS_M0,
1289 .dst = MSM_BUS_SLAVE_EBI_CH0,
1290 .ab = 2500000,
1291 .ib = 10000000,
1292 },
1293};
1294
Mohan Kumar Gubbihalli Lachma Naik7f72edd2012-02-06 17:26:47 -08001295static struct msm_bus_paths vidc_bus_client_config[] = {
1296 {
1297 ARRAY_SIZE(vidc_init_vectors),
1298 vidc_init_vectors,
1299 },
1300 {
1301 ARRAY_SIZE(vidc_venc_vga_vectors),
1302 vidc_venc_vga_vectors,
1303 },
1304 {
1305 ARRAY_SIZE(vidc_vdec_vga_vectors),
1306 vidc_vdec_vga_vectors,
1307 },
1308 {
1309 ARRAY_SIZE(vidc_venc_720p_vectors),
1310 vidc_venc_720p_vectors,
1311 },
1312 {
1313 ARRAY_SIZE(vidc_vdec_720p_vectors),
1314 vidc_vdec_720p_vectors,
1315 },
1316 {
1317 ARRAY_SIZE(vidc_venc_1080p_vectors),
1318 vidc_venc_1080p_vectors,
1319 },
1320 {
1321 ARRAY_SIZE(vidc_vdec_1080p_vectors),
1322 vidc_vdec_1080p_vectors,
1323 },
Arun Menon152c3c72012-06-20 11:50:08 -07001324 {
1325 ARRAY_SIZE(vidc_venc_1080p_turbo_vectors),
1326 vidc_venc_1080p_turbo_vectors,
1327 },
1328 {
1329 ARRAY_SIZE(vidc_vdec_1080p_turbo_vectors),
1330 vidc_vdec_1080p_turbo_vectors,
1331 },
Mohan Kumar Gubbihalli Lachma Naik7f72edd2012-02-06 17:26:47 -08001332};
1333
1334static struct msm_bus_scale_pdata vidc_bus_client_data = {
1335 vidc_bus_client_config,
1336 ARRAY_SIZE(vidc_bus_client_config),
1337 .name = "vidc",
1338};
1339#endif
1340
1341
1342#define APQ8064_VIDC_BASE_PHYS 0x04400000
1343#define APQ8064_VIDC_BASE_SIZE 0x00100000
1344
1345static struct resource apq8064_device_vidc_resources[] = {
1346 {
1347 .start = APQ8064_VIDC_BASE_PHYS,
1348 .end = APQ8064_VIDC_BASE_PHYS + APQ8064_VIDC_BASE_SIZE - 1,
1349 .flags = IORESOURCE_MEM,
1350 },
1351 {
1352 .start = VCODEC_IRQ,
1353 .end = VCODEC_IRQ,
1354 .flags = IORESOURCE_IRQ,
1355 },
1356};
1357
1358struct msm_vidc_platform_data apq8064_vidc_platform_data = {
1359#ifdef CONFIG_MSM_BUS_SCALING
1360 .vidc_bus_client_pdata = &vidc_bus_client_data,
1361#endif
1362#ifdef CONFIG_MSM_MULTIMEDIA_USE_ION
1363 .memtype = ION_CP_MM_HEAP_ID,
1364 .enable_ion = 1,
Deepak kotureda295a2012-05-10 19:49:46 -07001365 .cp_enabled = 1,
Mohan Kumar Gubbihalli Lachma Naik7f72edd2012-02-06 17:26:47 -08001366#else
1367 .memtype = MEMTYPE_EBI1,
1368 .enable_ion = 0,
1369#endif
1370 .disable_dmx = 0,
1371 .disable_fullhd = 0,
Mohan Kumar Gubbihalli Lachma Naiked9dc912012-03-01 19:11:14 -08001372 .cont_mode_dpb_count = 18,
Riaz Rahaman84f8c682012-05-30 13:32:10 +05301373 .fw_addr = 0x9fe00000,
Mohan Kumar Gubbihalli Lachma Naik7f72edd2012-02-06 17:26:47 -08001374};
1375
1376struct platform_device apq8064_msm_device_vidc = {
1377 .name = "msm_vidc",
1378 .id = 0,
1379 .num_resources = ARRAY_SIZE(apq8064_device_vidc_resources),
1380 .resource = apq8064_device_vidc_resources,
1381 .dev = {
1382 .platform_data = &apq8064_vidc_platform_data,
1383 },
1384};
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001385#define MSM_SDC1_BASE 0x12400000
1386#define MSM_SDC1_DML_BASE (MSM_SDC1_BASE + 0x800)
1387#define MSM_SDC1_BAM_BASE (MSM_SDC1_BASE + 0x2000)
1388#define MSM_SDC2_BASE 0x12140000
1389#define MSM_SDC2_DML_BASE (MSM_SDC2_BASE + 0x800)
1390#define MSM_SDC2_BAM_BASE (MSM_SDC2_BASE + 0x2000)
1391#define MSM_SDC3_BASE 0x12180000
1392#define MSM_SDC3_DML_BASE (MSM_SDC3_BASE + 0x800)
1393#define MSM_SDC3_BAM_BASE (MSM_SDC3_BASE + 0x2000)
1394#define MSM_SDC4_BASE 0x121C0000
1395#define MSM_SDC4_DML_BASE (MSM_SDC4_BASE + 0x800)
1396#define MSM_SDC4_BAM_BASE (MSM_SDC4_BASE + 0x2000)
1397
1398static struct resource resources_sdc1[] = {
1399 {
1400 .name = "core_mem",
1401 .flags = IORESOURCE_MEM,
1402 .start = MSM_SDC1_BASE,
1403 .end = MSM_SDC1_DML_BASE - 1,
1404 },
1405 {
1406 .name = "core_irq",
1407 .flags = IORESOURCE_IRQ,
1408 .start = SDC1_IRQ_0,
1409 .end = SDC1_IRQ_0
1410 },
1411#ifdef CONFIG_MMC_MSM_SPS_SUPPORT
1412 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301413 .name = "dml_mem",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001414 .start = MSM_SDC1_DML_BASE,
1415 .end = MSM_SDC1_BAM_BASE - 1,
1416 .flags = IORESOURCE_MEM,
1417 },
1418 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301419 .name = "bam_mem",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001420 .start = MSM_SDC1_BAM_BASE,
1421 .end = MSM_SDC1_BAM_BASE + (2 * SZ_4K) - 1,
1422 .flags = IORESOURCE_MEM,
1423 },
1424 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301425 .name = "bam_irq",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001426 .start = SDC1_BAM_IRQ,
1427 .end = SDC1_BAM_IRQ,
1428 .flags = IORESOURCE_IRQ,
1429 },
1430#endif
1431};
1432
1433static struct resource resources_sdc2[] = {
1434 {
1435 .name = "core_mem",
1436 .flags = IORESOURCE_MEM,
1437 .start = MSM_SDC2_BASE,
1438 .end = MSM_SDC2_DML_BASE - 1,
1439 },
1440 {
1441 .name = "core_irq",
1442 .flags = IORESOURCE_IRQ,
1443 .start = SDC2_IRQ_0,
1444 .end = SDC2_IRQ_0
1445 },
1446#ifdef CONFIG_MMC_MSM_SPS_SUPPORT
1447 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301448 .name = "dml_mem",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001449 .start = MSM_SDC2_DML_BASE,
1450 .end = MSM_SDC2_BAM_BASE - 1,
1451 .flags = IORESOURCE_MEM,
1452 },
1453 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301454 .name = "bam_mem",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001455 .start = MSM_SDC2_BAM_BASE,
1456 .end = MSM_SDC2_BAM_BASE + (2 * SZ_4K) - 1,
1457 .flags = IORESOURCE_MEM,
1458 },
1459 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301460 .name = "bam_irq",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001461 .start = SDC2_BAM_IRQ,
1462 .end = SDC2_BAM_IRQ,
1463 .flags = IORESOURCE_IRQ,
1464 },
1465#endif
1466};
1467
1468static struct resource resources_sdc3[] = {
1469 {
1470 .name = "core_mem",
1471 .flags = IORESOURCE_MEM,
1472 .start = MSM_SDC3_BASE,
1473 .end = MSM_SDC3_DML_BASE - 1,
1474 },
1475 {
1476 .name = "core_irq",
1477 .flags = IORESOURCE_IRQ,
1478 .start = SDC3_IRQ_0,
1479 .end = SDC3_IRQ_0
1480 },
1481#ifdef CONFIG_MMC_MSM_SPS_SUPPORT
1482 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301483 .name = "dml_mem",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001484 .start = MSM_SDC3_DML_BASE,
1485 .end = MSM_SDC3_BAM_BASE - 1,
1486 .flags = IORESOURCE_MEM,
1487 },
1488 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301489 .name = "bam_mem",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001490 .start = MSM_SDC3_BAM_BASE,
1491 .end = MSM_SDC3_BAM_BASE + (2 * SZ_4K) - 1,
1492 .flags = IORESOURCE_MEM,
1493 },
1494 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301495 .name = "bam_irq",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001496 .start = SDC3_BAM_IRQ,
1497 .end = SDC3_BAM_IRQ,
1498 .flags = IORESOURCE_IRQ,
1499 },
1500#endif
1501};
1502
1503static struct resource resources_sdc4[] = {
1504 {
1505 .name = "core_mem",
1506 .flags = IORESOURCE_MEM,
1507 .start = MSM_SDC4_BASE,
1508 .end = MSM_SDC4_DML_BASE - 1,
1509 },
1510 {
1511 .name = "core_irq",
1512 .flags = IORESOURCE_IRQ,
1513 .start = SDC4_IRQ_0,
1514 .end = SDC4_IRQ_0
1515 },
1516#ifdef CONFIG_MMC_MSM_SPS_SUPPORT
1517 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301518 .name = "dml_mem",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001519 .start = MSM_SDC4_DML_BASE,
1520 .end = MSM_SDC4_BAM_BASE - 1,
1521 .flags = IORESOURCE_MEM,
1522 },
1523 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301524 .name = "bam_mem",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001525 .start = MSM_SDC4_BAM_BASE,
1526 .end = MSM_SDC4_BAM_BASE + (2 * SZ_4K) - 1,
1527 .flags = IORESOURCE_MEM,
1528 },
1529 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301530 .name = "bam_irq",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001531 .start = SDC4_BAM_IRQ,
1532 .end = SDC4_BAM_IRQ,
1533 .flags = IORESOURCE_IRQ,
1534 },
1535#endif
1536};
1537
1538struct platform_device apq8064_device_sdc1 = {
1539 .name = "msm_sdcc",
1540 .id = 1,
1541 .num_resources = ARRAY_SIZE(resources_sdc1),
1542 .resource = resources_sdc1,
1543 .dev = {
1544 .coherent_dma_mask = 0xffffffff,
1545 },
1546};
1547
1548struct platform_device apq8064_device_sdc2 = {
1549 .name = "msm_sdcc",
1550 .id = 2,
1551 .num_resources = ARRAY_SIZE(resources_sdc2),
1552 .resource = resources_sdc2,
1553 .dev = {
1554 .coherent_dma_mask = 0xffffffff,
1555 },
1556};
1557
1558struct platform_device apq8064_device_sdc3 = {
1559 .name = "msm_sdcc",
1560 .id = 3,
1561 .num_resources = ARRAY_SIZE(resources_sdc3),
1562 .resource = resources_sdc3,
1563 .dev = {
1564 .coherent_dma_mask = 0xffffffff,
1565 },
1566};
1567
1568struct platform_device apq8064_device_sdc4 = {
1569 .name = "msm_sdcc",
1570 .id = 4,
1571 .num_resources = ARRAY_SIZE(resources_sdc4),
1572 .resource = resources_sdc4,
1573 .dev = {
1574 .coherent_dma_mask = 0xffffffff,
1575 },
1576};
1577
1578static struct platform_device *apq8064_sdcc_devices[] __initdata = {
1579 &apq8064_device_sdc1,
1580 &apq8064_device_sdc2,
1581 &apq8064_device_sdc3,
1582 &apq8064_device_sdc4,
1583};
1584
1585int __init apq8064_add_sdcc(unsigned int controller,
1586 struct mmc_platform_data *plat)
1587{
1588 struct platform_device *pdev;
1589
1590 if (!plat)
1591 return 0;
1592 if (controller < 1 || controller > 4)
1593 return -EINVAL;
1594
1595 pdev = apq8064_sdcc_devices[controller-1];
1596 pdev->dev.platform_data = plat;
1597 return platform_device_register(pdev);
1598}
1599
Yan He06913ce2011-08-26 16:33:46 -07001600static struct resource resources_sps[] = {
1601 {
1602 .name = "pipe_mem",
1603 .start = 0x12800000,
1604 .end = 0x12800000 + 0x4000 - 1,
1605 .flags = IORESOURCE_MEM,
1606 },
1607 {
1608 .name = "bamdma_dma",
1609 .start = 0x12240000,
1610 .end = 0x12240000 + 0x1000 - 1,
1611 .flags = IORESOURCE_MEM,
1612 },
1613 {
1614 .name = "bamdma_bam",
1615 .start = 0x12244000,
1616 .end = 0x12244000 + 0x4000 - 1,
1617 .flags = IORESOURCE_MEM,
1618 },
1619 {
1620 .name = "bamdma_irq",
1621 .start = SPS_BAM_DMA_IRQ,
1622 .end = SPS_BAM_DMA_IRQ,
1623 .flags = IORESOURCE_IRQ,
1624 },
1625};
1626
Gagan Mac8a7a5d32011-11-11 16:43:06 -07001627struct platform_device msm_bus_8064_sys_fabric = {
1628 .name = "msm_bus_fabric",
1629 .id = MSM_BUS_FAB_SYSTEM,
1630};
1631struct platform_device msm_bus_8064_apps_fabric = {
1632 .name = "msm_bus_fabric",
1633 .id = MSM_BUS_FAB_APPSS,
1634};
1635struct platform_device msm_bus_8064_mm_fabric = {
1636 .name = "msm_bus_fabric",
1637 .id = MSM_BUS_FAB_MMSS,
1638};
1639struct platform_device msm_bus_8064_sys_fpb = {
1640 .name = "msm_bus_fabric",
1641 .id = MSM_BUS_FAB_SYSTEM_FPB,
1642};
1643struct platform_device msm_bus_8064_cpss_fpb = {
1644 .name = "msm_bus_fabric",
1645 .id = MSM_BUS_FAB_CPSS_FPB,
1646};
1647
Yan He06913ce2011-08-26 16:33:46 -07001648static struct msm_sps_platform_data msm_sps_pdata = {
1649 .bamdma_restricted_pipes = 0x06,
1650};
1651
1652struct platform_device msm_device_sps_apq8064 = {
1653 .name = "msm_sps",
1654 .id = -1,
1655 .num_resources = ARRAY_SIZE(resources_sps),
1656 .resource = resources_sps,
1657 .dev.platform_data = &msm_sps_pdata,
1658};
1659
Eric Holmberg023d25c2012-03-01 12:27:55 -07001660static struct resource smd_resource[] = {
1661 {
1662 .name = "a9_m2a_0",
1663 .start = INT_A9_M2A_0,
1664 .flags = IORESOURCE_IRQ,
1665 },
1666 {
1667 .name = "a9_m2a_5",
1668 .start = INT_A9_M2A_5,
1669 .flags = IORESOURCE_IRQ,
1670 },
1671 {
1672 .name = "adsp_a11",
1673 .start = INT_ADSP_A11,
1674 .flags = IORESOURCE_IRQ,
1675 },
1676 {
1677 .name = "adsp_a11_smsm",
1678 .start = INT_ADSP_A11_SMSM,
1679 .flags = IORESOURCE_IRQ,
1680 },
1681 {
1682 .name = "dsps_a11",
1683 .start = INT_DSPS_A11,
1684 .flags = IORESOURCE_IRQ,
1685 },
1686 {
1687 .name = "dsps_a11_smsm",
1688 .start = INT_DSPS_A11_SMSM,
1689 .flags = IORESOURCE_IRQ,
1690 },
1691 {
1692 .name = "wcnss_a11",
1693 .start = INT_WCNSS_A11,
1694 .flags = IORESOURCE_IRQ,
1695 },
1696 {
1697 .name = "wcnss_a11_smsm",
1698 .start = INT_WCNSS_A11_SMSM,
1699 .flags = IORESOURCE_IRQ,
1700 },
1701};
1702
1703static struct smd_subsystem_config smd_config_list[] = {
1704 {
1705 .irq_config_id = SMD_MODEM,
1706 .subsys_name = "gss",
1707 .edge = SMD_APPS_MODEM,
1708
1709 .smd_int.irq_name = "a9_m2a_0",
1710 .smd_int.flags = IRQF_TRIGGER_RISING,
1711 .smd_int.irq_id = -1,
1712 .smd_int.device_name = "smd_dev",
1713 .smd_int.dev_id = 0,
1714 .smd_int.out_bit_pos = 1 << 3,
1715 .smd_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1716 .smd_int.out_offset = 0x8,
1717
1718 .smsm_int.irq_name = "a9_m2a_5",
1719 .smsm_int.flags = IRQF_TRIGGER_RISING,
1720 .smsm_int.irq_id = -1,
1721 .smsm_int.device_name = "smd_smsm",
1722 .smsm_int.dev_id = 0,
1723 .smsm_int.out_bit_pos = 1 << 4,
1724 .smsm_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1725 .smsm_int.out_offset = 0x8,
1726 },
1727 {
1728 .irq_config_id = SMD_Q6,
1729 .subsys_name = "q6",
1730 .edge = SMD_APPS_QDSP,
1731
1732 .smd_int.irq_name = "adsp_a11",
1733 .smd_int.flags = IRQF_TRIGGER_RISING,
1734 .smd_int.irq_id = -1,
1735 .smd_int.device_name = "smd_dev",
1736 .smd_int.dev_id = 0,
1737 .smd_int.out_bit_pos = 1 << 15,
1738 .smd_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1739 .smd_int.out_offset = 0x8,
1740
1741 .smsm_int.irq_name = "adsp_a11_smsm",
1742 .smsm_int.flags = IRQF_TRIGGER_RISING,
1743 .smsm_int.irq_id = -1,
1744 .smsm_int.device_name = "smd_smsm",
1745 .smsm_int.dev_id = 0,
1746 .smsm_int.out_bit_pos = 1 << 14,
1747 .smsm_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1748 .smsm_int.out_offset = 0x8,
1749 },
1750 {
1751 .irq_config_id = SMD_DSPS,
1752 .subsys_name = "dsps",
1753 .edge = SMD_APPS_DSPS,
1754
1755 .smd_int.irq_name = "dsps_a11",
1756 .smd_int.flags = IRQF_TRIGGER_RISING,
1757 .smd_int.irq_id = -1,
1758 .smd_int.device_name = "smd_dev",
1759 .smd_int.dev_id = 0,
1760 .smd_int.out_bit_pos = 1,
1761 .smd_int.out_base = (void __iomem *)MSM_SIC_NON_SECURE_BASE,
1762 .smd_int.out_offset = 0x4080,
1763
1764 .smsm_int.irq_name = "dsps_a11_smsm",
1765 .smsm_int.flags = IRQF_TRIGGER_RISING,
1766 .smsm_int.irq_id = -1,
1767 .smsm_int.device_name = "smd_smsm",
1768 .smsm_int.dev_id = 0,
1769 .smsm_int.out_bit_pos = 1,
1770 .smsm_int.out_base = (void __iomem *)MSM_SIC_NON_SECURE_BASE,
1771 .smsm_int.out_offset = 0x4094,
1772 },
1773 {
1774 .irq_config_id = SMD_WCNSS,
1775 .subsys_name = "wcnss",
1776 .edge = SMD_APPS_WCNSS,
1777
1778 .smd_int.irq_name = "wcnss_a11",
1779 .smd_int.flags = IRQF_TRIGGER_RISING,
1780 .smd_int.irq_id = -1,
1781 .smd_int.device_name = "smd_dev",
1782 .smd_int.dev_id = 0,
1783 .smd_int.out_bit_pos = 1 << 25,
1784 .smd_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1785 .smd_int.out_offset = 0x8,
1786
1787 .smsm_int.irq_name = "wcnss_a11_smsm",
1788 .smsm_int.flags = IRQF_TRIGGER_RISING,
1789 .smsm_int.irq_id = -1,
1790 .smsm_int.device_name = "smd_smsm",
1791 .smsm_int.dev_id = 0,
1792 .smsm_int.out_bit_pos = 1 << 23,
1793 .smsm_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1794 .smsm_int.out_offset = 0x8,
1795 },
1796};
1797
Eric Holmberg2bb6ccd2012-03-13 13:05:14 -06001798static struct smd_subsystem_restart_config smd_ssr_config = {
1799 .disable_smsm_reset_handshake = 1,
1800};
1801
Eric Holmberg023d25c2012-03-01 12:27:55 -07001802static struct smd_platform smd_platform_data = {
1803 .num_ss_configs = ARRAY_SIZE(smd_config_list),
1804 .smd_ss_configs = smd_config_list,
Eric Holmberg2bb6ccd2012-03-13 13:05:14 -06001805 .smd_ssr_config = &smd_ssr_config,
Eric Holmberg023d25c2012-03-01 12:27:55 -07001806};
1807
Jeff Hugo0c0f5e92011-09-28 13:55:45 -06001808struct platform_device msm_device_smd_apq8064 = {
1809 .name = "msm_smd",
1810 .id = -1,
Eric Holmberg023d25c2012-03-01 12:27:55 -07001811 .resource = smd_resource,
1812 .num_resources = ARRAY_SIZE(smd_resource),
1813 .dev = {
1814 .platform_data = &smd_platform_data,
1815 },
Jeff Hugo0c0f5e92011-09-28 13:55:45 -06001816};
1817
Niranjana Vishwanathapura06f89332012-05-03 17:11:13 -06001818static struct resource resources_msm_pcie[] = {
1819 {
Niranjana Vishwanathapura68210ff2012-06-24 18:03:49 -06001820 .name = "pcie_parf",
Niranjana Vishwanathapura06f89332012-05-03 17:11:13 -06001821 .start = PCIE20_PARF_PHYS,
1822 .end = PCIE20_PARF_PHYS + PCIE20_PARF_SIZE - 1,
1823 .flags = IORESOURCE_MEM,
1824 },
1825 {
Niranjana Vishwanathapura68210ff2012-06-24 18:03:49 -06001826 .name = "pcie_elbi",
Niranjana Vishwanathapura06f89332012-05-03 17:11:13 -06001827 .start = PCIE20_ELBI_PHYS,
1828 .end = PCIE20_ELBI_PHYS + PCIE20_ELBI_SIZE - 1,
1829 .flags = IORESOURCE_MEM,
1830 },
1831 {
1832 .name = "pcie20",
1833 .start = PCIE20_PHYS,
1834 .end = PCIE20_PHYS + PCIE20_SIZE - 1,
1835 .flags = IORESOURCE_MEM,
1836 },
Niranjana Vishwanathapura06f89332012-05-03 17:11:13 -06001837};
1838
1839struct platform_device msm_device_pcie = {
1840 .name = "msm_pcie",
1841 .id = -1,
1842 .num_resources = ARRAY_SIZE(resources_msm_pcie),
1843 .resource = resources_msm_pcie,
1844};
1845
Ramesh Masavarapuf46be1b2011-11-03 11:13:41 -07001846#ifdef CONFIG_HW_RANDOM_MSM
1847/* PRNG device */
1848#define MSM_PRNG_PHYS 0x1A500000
1849static struct resource rng_resources = {
1850 .flags = IORESOURCE_MEM,
1851 .start = MSM_PRNG_PHYS,
1852 .end = MSM_PRNG_PHYS + SZ_512 - 1,
1853};
1854
1855struct platform_device apq8064_device_rng = {
1856 .name = "msm_rng",
1857 .id = 0,
1858 .num_resources = 1,
1859 .resource = &rng_resources,
1860};
1861#endif
1862
Matt Wagantall292aace2012-01-26 19:12:34 -08001863static struct resource msm_gss_resources[] = {
1864 {
1865 .start = 0x10000000,
1866 .end = 0x10000000 + SZ_256 - 1,
1867 .flags = IORESOURCE_MEM,
1868 },
Matt Wagantall19ac4fd2012-02-03 20:18:23 -08001869 {
1870 .start = 0x10008000,
1871 .end = 0x10008000 + SZ_256 - 1,
1872 .flags = IORESOURCE_MEM,
1873 },
Matt Wagantall292aace2012-01-26 19:12:34 -08001874};
1875
1876struct platform_device msm_gss = {
1877 .name = "pil_gss",
1878 .id = -1,
1879 .num_resources = ARRAY_SIZE(msm_gss_resources),
1880 .resource = msm_gss_resources,
1881};
1882
Matt Wagantall1f65d9d2012-04-25 14:24:20 -07001883static struct fs_driver_data gfx3d_fs_data = {
1884 .clks = (struct fs_clk_data[]){
1885 { .name = "core_clk", .reset_rate = 27000000 },
1886 { .name = "iface_clk" },
1887 { .name = "bus_clk" },
1888 { 0 }
1889 },
1890 .bus_port0 = MSM_BUS_MASTER_GRAPHICS_3D,
1891 .bus_port1 = MSM_BUS_MASTER_GRAPHICS_3D_PORT1,
Matt Wagantall1875d322012-02-22 16:11:33 -08001892};
Matt Wagantall1f65d9d2012-04-25 14:24:20 -07001893
1894static struct fs_driver_data ijpeg_fs_data = {
1895 .clks = (struct fs_clk_data[]){
1896 { .name = "core_clk" },
1897 { .name = "iface_clk" },
1898 { .name = "bus_clk" },
1899 { 0 }
1900 },
1901 .bus_port0 = MSM_BUS_MASTER_JPEG_ENC,
1902};
1903
Nagamalleswararao Ganji6db8c512012-05-24 20:26:23 -07001904static struct fs_driver_data mdp_fs_data = {
1905 .clks = (struct fs_clk_data[]){
1906 { .name = "core_clk" },
1907 { .name = "iface_clk" },
1908 { .name = "bus_clk" },
1909 { .name = "vsync_clk" },
1910 { .name = "lut_clk" },
1911 { .name = "tv_src_clk" },
1912 { .name = "tv_clk" },
Matt Wagantallc33c1ed2012-07-23 17:19:08 -07001913 { .name = "reset1_clk" },
1914 { .name = "reset2_clk" },
Nagamalleswararao Ganji6db8c512012-05-24 20:26:23 -07001915 { 0 }
1916 },
1917 .bus_port0 = MSM_BUS_MASTER_MDP_PORT0,
1918 .bus_port1 = MSM_BUS_MASTER_MDP_PORT1,
1919};
1920
Matt Wagantall1f65d9d2012-04-25 14:24:20 -07001921static struct fs_driver_data rot_fs_data = {
1922 .clks = (struct fs_clk_data[]){
1923 { .name = "core_clk" },
1924 { .name = "iface_clk" },
1925 { .name = "bus_clk" },
1926 { 0 }
1927 },
1928 .bus_port0 = MSM_BUS_MASTER_ROTATOR,
1929};
1930
1931static struct fs_driver_data ved_fs_data = {
1932 .clks = (struct fs_clk_data[]){
1933 { .name = "core_clk" },
1934 { .name = "iface_clk" },
1935 { .name = "bus_clk" },
1936 { 0 }
1937 },
1938 .bus_port0 = MSM_BUS_MASTER_VIDEO_ENC,
1939 .bus_port1 = MSM_BUS_MASTER_VIDEO_DEC,
1940};
1941
1942static struct fs_driver_data vfe_fs_data = {
1943 .clks = (struct fs_clk_data[]){
1944 { .name = "core_clk" },
1945 { .name = "iface_clk" },
1946 { .name = "bus_clk" },
1947 { 0 }
1948 },
1949 .bus_port0 = MSM_BUS_MASTER_VFE,
1950};
1951
1952static struct fs_driver_data vpe_fs_data = {
1953 .clks = (struct fs_clk_data[]){
1954 { .name = "core_clk" },
1955 { .name = "iface_clk" },
1956 { .name = "bus_clk" },
1957 { 0 }
1958 },
1959 .bus_port0 = MSM_BUS_MASTER_VPE,
1960};
1961
1962static struct fs_driver_data vcap_fs_data = {
1963 .clks = (struct fs_clk_data[]){
1964 { .name = "core_clk" },
1965 { .name = "iface_clk" },
1966 { .name = "bus_clk" },
1967 { 0 },
1968 },
1969 .bus_port0 = MSM_BUS_MASTER_VIDEO_CAP,
1970};
1971
1972struct platform_device *apq8064_footswitch[] __initdata = {
Nagamalleswararao Ganji6db8c512012-05-24 20:26:23 -07001973 FS_8X60(FS_MDP, "vdd", "mdp.0", &mdp_fs_data),
Matt Wagantall316f2fc2012-05-03 20:41:42 -07001974 FS_8X60(FS_ROT, "vdd", "msm_rotator.0", &rot_fs_data),
Matt Wagantalle4454b82012-05-03 20:48:01 -07001975 FS_8X60(FS_IJPEG, "vdd", "msm_gemini.0", &ijpeg_fs_data),
Kiran Kumar H Nfa18a032012-06-25 14:34:18 -07001976 FS_8X60(FS_VFE, "vdd", "msm_vfe.0", &vfe_fs_data),
1977 FS_8X60(FS_VPE, "vdd", "msm_vpe.0", &vpe_fs_data),
Matt Wagantalld6fbf232012-05-03 20:09:28 -07001978 FS_8X60(FS_GFX3D, "vdd", "kgsl-3d0.0", &gfx3d_fs_data),
Matt Wagantall5e46aac2012-05-03 20:20:18 -07001979 FS_8X60(FS_VED, "vdd", "msm_vidc.0", &ved_fs_data),
Matt Wagantall3cd5b3d2012-05-03 20:35:20 -07001980 FS_8X60(FS_VCAP, "vdd", "msm_vcap.0", &vcap_fs_data),
Matt Wagantall1f65d9d2012-04-25 14:24:20 -07001981};
1982unsigned apq8064_num_footswitch __initdata = ARRAY_SIZE(apq8064_footswitch);
Matt Wagantall1875d322012-02-22 16:11:33 -08001983
Praveen Chidambaram78499012011-11-01 17:15:17 -06001984struct msm_rpm_platform_data apq8064_rpm_data __initdata = {
1985 .reg_base_addrs = {
1986 [MSM_RPM_PAGE_STATUS] = MSM_RPM_BASE,
1987 [MSM_RPM_PAGE_CTRL] = MSM_RPM_BASE + 0x400,
1988 [MSM_RPM_PAGE_REQ] = MSM_RPM_BASE + 0x600,
1989 [MSM_RPM_PAGE_ACK] = MSM_RPM_BASE + 0xa00,
1990 },
1991 .irq_ack = RPM_APCC_CPU0_GP_HIGH_IRQ,
Stephen Boydf61255e2012-02-24 14:31:09 -08001992 .irq_err = RPM_APCC_CPU0_GP_LOW_IRQ,
Praveen Chidambarame396ce62012-03-30 11:15:57 -06001993 .irq_wakeup = RPM_APCC_CPU0_WAKE_UP_IRQ,
Praveen Chidambaram78499012011-11-01 17:15:17 -06001994 .ipc_rpm_reg = MSM_APCS_GCC_BASE + 0x008,
1995 .ipc_rpm_val = 4,
1996 .target_id = {
1997 MSM_RPM_MAP(8064, NOTIFICATION_CONFIGURED_0, NOTIFICATION, 4),
1998 MSM_RPM_MAP(8064, NOTIFICATION_REGISTERED_0, NOTIFICATION, 4),
1999 MSM_RPM_MAP(8064, INVALIDATE_0, INVALIDATE, 8),
2000 MSM_RPM_MAP(8064, TRIGGER_TIMED_TO, TRIGGER_TIMED, 1),
2001 MSM_RPM_MAP(8064, TRIGGER_TIMED_SCLK_COUNT, TRIGGER_TIMED, 1),
2002 MSM_RPM_MAP(8064, RPM_CTL, RPM_CTL, 1),
2003 MSM_RPM_MAP(8064, CXO_CLK, CXO_CLK, 1),
2004 MSM_RPM_MAP(8064, PXO_CLK, PXO_CLK, 1),
2005 MSM_RPM_MAP(8064, APPS_FABRIC_CLK, APPS_FABRIC_CLK, 1),
2006 MSM_RPM_MAP(8064, SYSTEM_FABRIC_CLK, SYSTEM_FABRIC_CLK, 1),
2007 MSM_RPM_MAP(8064, MM_FABRIC_CLK, MM_FABRIC_CLK, 1),
2008 MSM_RPM_MAP(8064, DAYTONA_FABRIC_CLK, DAYTONA_FABRIC_CLK, 1),
2009 MSM_RPM_MAP(8064, SFPB_CLK, SFPB_CLK, 1),
2010 MSM_RPM_MAP(8064, CFPB_CLK, CFPB_CLK, 1),
2011 MSM_RPM_MAP(8064, MMFPB_CLK, MMFPB_CLK, 1),
2012 MSM_RPM_MAP(8064, EBI1_CLK, EBI1_CLK, 1),
2013 MSM_RPM_MAP(8064, APPS_FABRIC_CFG_HALT_0,
2014 APPS_FABRIC_CFG_HALT, 2),
2015 MSM_RPM_MAP(8064, APPS_FABRIC_CFG_CLKMOD_0,
2016 APPS_FABRIC_CFG_CLKMOD, 3),
2017 MSM_RPM_MAP(8064, APPS_FABRIC_CFG_IOCTL,
2018 APPS_FABRIC_CFG_IOCTL, 1),
2019 MSM_RPM_MAP(8064, APPS_FABRIC_ARB_0, APPS_FABRIC_ARB, 12),
2020 MSM_RPM_MAP(8064, SYS_FABRIC_CFG_HALT_0,
2021 SYS_FABRIC_CFG_HALT, 2),
2022 MSM_RPM_MAP(8064, SYS_FABRIC_CFG_CLKMOD_0,
2023 SYS_FABRIC_CFG_CLKMOD, 3),
2024 MSM_RPM_MAP(8064, SYS_FABRIC_CFG_IOCTL,
2025 SYS_FABRIC_CFG_IOCTL, 1),
2026 MSM_RPM_MAP(8064, SYSTEM_FABRIC_ARB_0, SYSTEM_FABRIC_ARB, 30),
2027 MSM_RPM_MAP(8064, MMSS_FABRIC_CFG_HALT_0,
2028 MMSS_FABRIC_CFG_HALT, 2),
2029 MSM_RPM_MAP(8064, MMSS_FABRIC_CFG_CLKMOD_0,
2030 MMSS_FABRIC_CFG_CLKMOD, 3),
2031 MSM_RPM_MAP(8064, MMSS_FABRIC_CFG_IOCTL,
2032 MMSS_FABRIC_CFG_IOCTL, 1),
2033 MSM_RPM_MAP(8064, MM_FABRIC_ARB_0, MM_FABRIC_ARB, 21),
2034 MSM_RPM_MAP(8064, PM8921_S1_0, PM8921_S1, 2),
2035 MSM_RPM_MAP(8064, PM8921_S2_0, PM8921_S2, 2),
2036 MSM_RPM_MAP(8064, PM8921_S3_0, PM8921_S3, 2),
2037 MSM_RPM_MAP(8064, PM8921_S4_0, PM8921_S4, 2),
2038 MSM_RPM_MAP(8064, PM8921_S5_0, PM8921_S5, 2),
2039 MSM_RPM_MAP(8064, PM8921_S6_0, PM8921_S6, 2),
2040 MSM_RPM_MAP(8064, PM8921_S7_0, PM8921_S7, 2),
2041 MSM_RPM_MAP(8064, PM8921_S8_0, PM8921_S8, 2),
2042 MSM_RPM_MAP(8064, PM8921_L1_0, PM8921_L1, 2),
2043 MSM_RPM_MAP(8064, PM8921_L2_0, PM8921_L2, 2),
2044 MSM_RPM_MAP(8064, PM8921_L3_0, PM8921_L3, 2),
2045 MSM_RPM_MAP(8064, PM8921_L4_0, PM8921_L4, 2),
2046 MSM_RPM_MAP(8064, PM8921_L5_0, PM8921_L5, 2),
2047 MSM_RPM_MAP(8064, PM8921_L6_0, PM8921_L6, 2),
2048 MSM_RPM_MAP(8064, PM8921_L7_0, PM8921_L7, 2),
2049 MSM_RPM_MAP(8064, PM8921_L8_0, PM8921_L8, 2),
2050 MSM_RPM_MAP(8064, PM8921_L9_0, PM8921_L9, 2),
2051 MSM_RPM_MAP(8064, PM8921_L10_0, PM8921_L10, 2),
2052 MSM_RPM_MAP(8064, PM8921_L11_0, PM8921_L11, 2),
2053 MSM_RPM_MAP(8064, PM8921_L12_0, PM8921_L12, 2),
2054 MSM_RPM_MAP(8064, PM8921_L13_0, PM8921_L13, 2),
2055 MSM_RPM_MAP(8064, PM8921_L14_0, PM8921_L14, 2),
2056 MSM_RPM_MAP(8064, PM8921_L15_0, PM8921_L15, 2),
2057 MSM_RPM_MAP(8064, PM8921_L16_0, PM8921_L16, 2),
2058 MSM_RPM_MAP(8064, PM8921_L17_0, PM8921_L17, 2),
2059 MSM_RPM_MAP(8064, PM8921_L18_0, PM8921_L18, 2),
2060 MSM_RPM_MAP(8064, PM8921_L19_0, PM8921_L19, 2),
2061 MSM_RPM_MAP(8064, PM8921_L20_0, PM8921_L20, 2),
2062 MSM_RPM_MAP(8064, PM8921_L21_0, PM8921_L21, 2),
2063 MSM_RPM_MAP(8064, PM8921_L22_0, PM8921_L22, 2),
2064 MSM_RPM_MAP(8064, PM8921_L23_0, PM8921_L23, 2),
2065 MSM_RPM_MAP(8064, PM8921_L24_0, PM8921_L24, 2),
2066 MSM_RPM_MAP(8064, PM8921_L25_0, PM8921_L25, 2),
2067 MSM_RPM_MAP(8064, PM8921_L26_0, PM8921_L26, 2),
2068 MSM_RPM_MAP(8064, PM8921_L27_0, PM8921_L27, 2),
2069 MSM_RPM_MAP(8064, PM8921_L28_0, PM8921_L28, 2),
2070 MSM_RPM_MAP(8064, PM8921_L29_0, PM8921_L29, 2),
2071 MSM_RPM_MAP(8064, PM8921_CLK1_0, PM8921_CLK1, 2),
2072 MSM_RPM_MAP(8064, PM8921_CLK2_0, PM8921_CLK2, 2),
2073 MSM_RPM_MAP(8064, PM8921_LVS1, PM8921_LVS1, 1),
2074 MSM_RPM_MAP(8064, PM8921_LVS2, PM8921_LVS2, 1),
2075 MSM_RPM_MAP(8064, PM8921_LVS3, PM8921_LVS3, 1),
2076 MSM_RPM_MAP(8064, PM8921_LVS4, PM8921_LVS4, 1),
2077 MSM_RPM_MAP(8064, PM8921_LVS5, PM8921_LVS5, 1),
2078 MSM_RPM_MAP(8064, PM8921_LVS6, PM8921_LVS6, 1),
2079 MSM_RPM_MAP(8064, PM8921_LVS7, PM8921_LVS7, 1),
2080 MSM_RPM_MAP(8064, PM8821_S1_0, PM8821_S1, 2),
2081 MSM_RPM_MAP(8064, PM8821_S2_0, PM8821_S2, 2),
2082 MSM_RPM_MAP(8064, PM8821_L1_0, PM8821_L1, 2),
2083 MSM_RPM_MAP(8064, NCP_0, NCP, 2),
2084 MSM_RPM_MAP(8064, CXO_BUFFERS, CXO_BUFFERS, 1),
2085 MSM_RPM_MAP(8064, USB_OTG_SWITCH, USB_OTG_SWITCH, 1),
2086 MSM_RPM_MAP(8064, HDMI_SWITCH, HDMI_SWITCH, 1),
2087 MSM_RPM_MAP(8064, DDR_DMM_0, DDR_DMM, 2),
2088 MSM_RPM_MAP(8064, QDSS_CLK, QDSS_CLK, 1),
Joel Kingef390842012-05-23 16:42:48 -07002089 MSM_RPM_MAP(8064, VDDMIN_GPIO, VDDMIN_GPIO, 1),
Praveen Chidambaram78499012011-11-01 17:15:17 -06002090 },
2091 .target_status = {
2092 MSM_RPM_STATUS_ID_MAP(8064, VERSION_MAJOR),
2093 MSM_RPM_STATUS_ID_MAP(8064, VERSION_MINOR),
2094 MSM_RPM_STATUS_ID_MAP(8064, VERSION_BUILD),
2095 MSM_RPM_STATUS_ID_MAP(8064, SUPPORTED_RESOURCES_0),
2096 MSM_RPM_STATUS_ID_MAP(8064, SUPPORTED_RESOURCES_1),
2097 MSM_RPM_STATUS_ID_MAP(8064, SUPPORTED_RESOURCES_2),
2098 MSM_RPM_STATUS_ID_MAP(8064, RESERVED_SUPPORTED_RESOURCES_0),
2099 MSM_RPM_STATUS_ID_MAP(8064, SEQUENCE),
2100 MSM_RPM_STATUS_ID_MAP(8064, RPM_CTL),
2101 MSM_RPM_STATUS_ID_MAP(8064, CXO_CLK),
2102 MSM_RPM_STATUS_ID_MAP(8064, PXO_CLK),
2103 MSM_RPM_STATUS_ID_MAP(8064, APPS_FABRIC_CLK),
2104 MSM_RPM_STATUS_ID_MAP(8064, SYSTEM_FABRIC_CLK),
2105 MSM_RPM_STATUS_ID_MAP(8064, MM_FABRIC_CLK),
2106 MSM_RPM_STATUS_ID_MAP(8064, DAYTONA_FABRIC_CLK),
2107 MSM_RPM_STATUS_ID_MAP(8064, SFPB_CLK),
2108 MSM_RPM_STATUS_ID_MAP(8064, CFPB_CLK),
2109 MSM_RPM_STATUS_ID_MAP(8064, MMFPB_CLK),
2110 MSM_RPM_STATUS_ID_MAP(8064, EBI1_CLK),
2111 MSM_RPM_STATUS_ID_MAP(8064, APPS_FABRIC_CFG_HALT),
2112 MSM_RPM_STATUS_ID_MAP(8064, APPS_FABRIC_CFG_CLKMOD),
2113 MSM_RPM_STATUS_ID_MAP(8064, APPS_FABRIC_CFG_IOCTL),
2114 MSM_RPM_STATUS_ID_MAP(8064, APPS_FABRIC_ARB),
2115 MSM_RPM_STATUS_ID_MAP(8064, SYS_FABRIC_CFG_HALT),
2116 MSM_RPM_STATUS_ID_MAP(8064, SYS_FABRIC_CFG_CLKMOD),
2117 MSM_RPM_STATUS_ID_MAP(8064, SYS_FABRIC_CFG_IOCTL),
2118 MSM_RPM_STATUS_ID_MAP(8064, SYSTEM_FABRIC_ARB),
2119 MSM_RPM_STATUS_ID_MAP(8064, MMSS_FABRIC_CFG_HALT),
2120 MSM_RPM_STATUS_ID_MAP(8064, MMSS_FABRIC_CFG_CLKMOD),
2121 MSM_RPM_STATUS_ID_MAP(8064, MMSS_FABRIC_CFG_IOCTL),
2122 MSM_RPM_STATUS_ID_MAP(8064, MM_FABRIC_ARB),
2123 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S1_0),
2124 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S1_1),
2125 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S2_0),
2126 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S2_1),
2127 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S3_0),
2128 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S3_1),
2129 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S4_0),
2130 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S4_1),
2131 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S5_0),
2132 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S5_1),
2133 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S6_0),
2134 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S6_1),
2135 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S7_0),
2136 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S7_1),
2137 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S8_0),
2138 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S8_1),
2139 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L1_0),
2140 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L1_1),
2141 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L2_0),
2142 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L2_1),
2143 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L3_0),
2144 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L3_1),
2145 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L4_0),
2146 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L4_1),
2147 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L5_0),
2148 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L5_1),
2149 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L6_0),
2150 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L6_1),
2151 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L7_0),
2152 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L7_1),
2153 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L8_0),
2154 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L8_1),
2155 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L9_0),
2156 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L9_1),
2157 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L10_0),
2158 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L10_1),
2159 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L11_0),
2160 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L11_1),
2161 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L12_0),
2162 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L12_1),
2163 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L13_0),
2164 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L13_1),
2165 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L14_0),
2166 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L14_1),
2167 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L15_0),
2168 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L15_1),
2169 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L16_0),
2170 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L16_1),
2171 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L17_0),
2172 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L17_1),
2173 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L18_0),
2174 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L18_1),
2175 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L19_0),
2176 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L19_1),
2177 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L20_0),
2178 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L20_1),
2179 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L21_0),
2180 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L21_1),
2181 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L22_0),
2182 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L22_1),
2183 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L23_0),
2184 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L23_1),
2185 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L24_0),
2186 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L24_1),
2187 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L25_0),
2188 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L25_1),
2189 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L26_0),
2190 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L26_1),
2191 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L27_0),
2192 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L27_1),
2193 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L28_0),
2194 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L28_1),
2195 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L29_0),
2196 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L29_1),
2197 MSM_RPM_STATUS_ID_MAP(8064, PM8921_CLK1_0),
2198 MSM_RPM_STATUS_ID_MAP(8064, PM8921_CLK1_1),
2199 MSM_RPM_STATUS_ID_MAP(8064, PM8921_CLK2_0),
2200 MSM_RPM_STATUS_ID_MAP(8064, PM8921_CLK2_1),
2201 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS1),
2202 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS2),
2203 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS3),
2204 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS4),
2205 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS5),
2206 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS6),
2207 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS7),
2208 MSM_RPM_STATUS_ID_MAP(8064, NCP_0),
2209 MSM_RPM_STATUS_ID_MAP(8064, NCP_1),
2210 MSM_RPM_STATUS_ID_MAP(8064, CXO_BUFFERS),
2211 MSM_RPM_STATUS_ID_MAP(8064, USB_OTG_SWITCH),
2212 MSM_RPM_STATUS_ID_MAP(8064, HDMI_SWITCH),
2213 MSM_RPM_STATUS_ID_MAP(8064, DDR_DMM_0),
2214 MSM_RPM_STATUS_ID_MAP(8064, DDR_DMM_1),
2215 MSM_RPM_STATUS_ID_MAP(8064, EBI1_CH0_RANGE),
2216 MSM_RPM_STATUS_ID_MAP(8064, EBI1_CH1_RANGE),
2217 MSM_RPM_STATUS_ID_MAP(8064, PM8821_S1_0),
2218 MSM_RPM_STATUS_ID_MAP(8064, PM8821_S1_1),
2219 MSM_RPM_STATUS_ID_MAP(8064, PM8821_S2_0),
2220 MSM_RPM_STATUS_ID_MAP(8064, PM8821_S2_1),
2221 MSM_RPM_STATUS_ID_MAP(8064, PM8821_L1_0),
2222 MSM_RPM_STATUS_ID_MAP(8064, PM8821_L1_1),
Joel Kingef390842012-05-23 16:42:48 -07002223 MSM_RPM_STATUS_ID_MAP(8064, VDDMIN_GPIO),
Praveen Chidambaram78499012011-11-01 17:15:17 -06002224 },
2225 .target_ctrl_id = {
2226 MSM_RPM_CTRL_MAP(8064, VERSION_MAJOR),
2227 MSM_RPM_CTRL_MAP(8064, VERSION_MINOR),
2228 MSM_RPM_CTRL_MAP(8064, VERSION_BUILD),
2229 MSM_RPM_CTRL_MAP(8064, REQ_CTX_0),
2230 MSM_RPM_CTRL_MAP(8064, REQ_SEL_0),
2231 MSM_RPM_CTRL_MAP(8064, ACK_CTX_0),
2232 MSM_RPM_CTRL_MAP(8064, ACK_SEL_0),
2233 },
2234 .sel_invalidate = MSM_RPM_8064_SEL_INVALIDATE,
2235 .sel_notification = MSM_RPM_8064_SEL_NOTIFICATION,
2236 .sel_last = MSM_RPM_8064_SEL_LAST,
2237 .ver = {3, 0, 0},
2238};
2239
2240struct platform_device apq8064_rpm_device = {
2241 .name = "msm_rpm",
2242 .id = -1,
2243};
2244
2245static struct msm_rpmstats_platform_data msm_rpm_stat_pdata = {
2246 .phys_addr_base = 0x0010D204,
2247 .phys_size = SZ_8K,
2248};
2249
2250struct platform_device apq8064_rpm_stat_device = {
2251 .name = "msm_rpm_stat",
2252 .id = -1,
2253 .dev = {
2254 .platform_data = &msm_rpm_stat_pdata,
2255 },
2256};
2257
2258static struct msm_rpm_log_platform_data msm_rpm_log_pdata = {
2259 .phys_addr_base = 0x0010C000,
2260 .reg_offsets = {
2261 [MSM_RPM_LOG_PAGE_INDICES] = 0x00000080,
2262 [MSM_RPM_LOG_PAGE_BUFFER] = 0x000000A0,
2263 },
2264 .phys_size = SZ_8K,
2265 .log_len = 4096, /* log's buffer length in bytes */
2266 .log_len_mask = (4096 >> 2) - 1, /* length mask in units of u32 */
2267};
2268
2269struct platform_device apq8064_rpm_log_device = {
2270 .name = "msm_rpm_log",
2271 .id = -1,
2272 .dev = {
2273 .platform_data = &msm_rpm_log_pdata,
2274 },
2275};
2276
Jin Hongd3024e62012-02-09 16:13:32 -08002277/* Sensors DSPS platform data */
2278
karthik karuppasamy1a1c6b02012-05-29 15:16:32 -07002279#define PPSS_DSPS_TCM_CODE_BASE 0x12000000
2280#define PPSS_DSPS_TCM_CODE_SIZE 0x28000
2281#define PPSS_DSPS_TCM_BUF_BASE 0x12040000
2282#define PPSS_DSPS_TCM_BUF_SIZE 0x4000
2283#define PPSS_DSPS_PIPE_BASE 0x12800000
2284#define PPSS_DSPS_PIPE_SIZE 0x4000
2285#define PPSS_DSPS_DDR_BASE 0x8fe00000
2286#define PPSS_DSPS_DDR_SIZE 0x100000
2287#define PPSS_SMEM_BASE 0x80000000
2288#define PPSS_SMEM_SIZE 0x200000
Jin Hongd3024e62012-02-09 16:13:32 -08002289#define PPSS_REG_PHYS_BASE 0x12080000
2290
2291static struct dsps_clk_info dsps_clks[] = {};
2292static struct dsps_regulator_info dsps_regs[] = {};
2293
2294/*
2295 * Note: GPIOs field is intialized in run-time at the function
2296 * apq8064_init_dsps().
2297 */
2298
2299struct msm_dsps_platform_data msm_dsps_pdata_8064 = {
2300 .clks = dsps_clks,
2301 .clks_num = ARRAY_SIZE(dsps_clks),
2302 .gpios = NULL,
2303 .gpios_num = 0,
2304 .regs = dsps_regs,
2305 .regs_num = ARRAY_SIZE(dsps_regs),
2306 .dsps_pwr_ctl_en = 1,
karthik karuppasamy1a1c6b02012-05-29 15:16:32 -07002307 .tcm_code_start = PPSS_DSPS_TCM_CODE_BASE,
2308 .tcm_code_size = PPSS_DSPS_TCM_CODE_SIZE,
2309 .tcm_buf_start = PPSS_DSPS_TCM_BUF_BASE,
2310 .tcm_buf_size = PPSS_DSPS_TCM_BUF_SIZE,
2311 .pipe_start = PPSS_DSPS_PIPE_BASE,
2312 .pipe_size = PPSS_DSPS_PIPE_SIZE,
2313 .ddr_start = PPSS_DSPS_DDR_BASE,
2314 .ddr_size = PPSS_DSPS_DDR_SIZE,
2315 .smem_start = PPSS_SMEM_BASE,
2316 .smem_size = PPSS_SMEM_SIZE,
Jin Hongd3024e62012-02-09 16:13:32 -08002317 .signature = DSPS_SIGNATURE,
2318};
2319
2320static struct resource msm_dsps_resources[] = {
2321 {
2322 .start = PPSS_REG_PHYS_BASE,
2323 .end = PPSS_REG_PHYS_BASE + SZ_8K - 1,
2324 .name = "ppss_reg",
2325 .flags = IORESOURCE_MEM,
2326 },
2327
2328 {
2329 .start = PPSS_WDOG_TIMER_IRQ,
2330 .end = PPSS_WDOG_TIMER_IRQ,
2331 .name = "ppss_wdog",
2332 .flags = IORESOURCE_IRQ,
2333 },
2334};
2335
2336struct platform_device msm_dsps_device_8064 = {
2337 .name = "msm_dsps",
2338 .id = 0,
2339 .num_resources = ARRAY_SIZE(msm_dsps_resources),
2340 .resource = msm_dsps_resources,
2341 .dev.platform_data = &msm_dsps_pdata_8064,
2342};
2343
Praveen Chidambaram78499012011-11-01 17:15:17 -06002344#ifdef CONFIG_MSM_MPM
2345static uint16_t msm_mpm_irqs_m2a[MSM_MPM_NR_MPM_IRQS] __initdata = {
2346 [1] = MSM_GPIO_TO_INT(26),
2347 [2] = MSM_GPIO_TO_INT(88),
2348 [4] = MSM_GPIO_TO_INT(73),
2349 [5] = MSM_GPIO_TO_INT(74),
2350 [6] = MSM_GPIO_TO_INT(75),
2351 [7] = MSM_GPIO_TO_INT(76),
2352 [8] = MSM_GPIO_TO_INT(77),
2353 [9] = MSM_GPIO_TO_INT(36),
2354 [10] = MSM_GPIO_TO_INT(84),
2355 [11] = MSM_GPIO_TO_INT(7),
2356 [12] = MSM_GPIO_TO_INT(11),
2357 [13] = MSM_GPIO_TO_INT(52),
2358 [14] = MSM_GPIO_TO_INT(15),
2359 [15] = MSM_GPIO_TO_INT(83),
2360 [16] = USB3_HS_IRQ,
2361 [19] = MSM_GPIO_TO_INT(61),
2362 [20] = MSM_GPIO_TO_INT(58),
2363 [23] = MSM_GPIO_TO_INT(65),
2364 [24] = MSM_GPIO_TO_INT(63),
2365 [25] = USB1_HS_IRQ,
2366 [27] = HDMI_IRQ,
2367 [29] = MSM_GPIO_TO_INT(22),
2368 [30] = MSM_GPIO_TO_INT(72),
2369 [31] = USB4_HS_IRQ,
2370 [33] = MSM_GPIO_TO_INT(44),
2371 [34] = MSM_GPIO_TO_INT(39),
2372 [35] = MSM_GPIO_TO_INT(19),
2373 [36] = MSM_GPIO_TO_INT(23),
2374 [37] = MSM_GPIO_TO_INT(41),
2375 [38] = MSM_GPIO_TO_INT(30),
2376 [41] = MSM_GPIO_TO_INT(42),
2377 [42] = MSM_GPIO_TO_INT(56),
2378 [43] = MSM_GPIO_TO_INT(55),
2379 [44] = MSM_GPIO_TO_INT(50),
2380 [45] = MSM_GPIO_TO_INT(49),
2381 [46] = MSM_GPIO_TO_INT(47),
2382 [47] = MSM_GPIO_TO_INT(45),
2383 [48] = MSM_GPIO_TO_INT(38),
2384 [49] = MSM_GPIO_TO_INT(34),
2385 [50] = MSM_GPIO_TO_INT(32),
2386 [51] = MSM_GPIO_TO_INT(29),
2387 [52] = MSM_GPIO_TO_INT(18),
2388 [53] = MSM_GPIO_TO_INT(10),
2389 [54] = MSM_GPIO_TO_INT(81),
2390 [55] = MSM_GPIO_TO_INT(6),
2391};
2392
2393static uint16_t msm_mpm_bypassed_apps_irqs[] __initdata = {
2394 TLMM_MSM_SUMMARY_IRQ,
2395 RPM_APCC_CPU0_GP_HIGH_IRQ,
2396 RPM_APCC_CPU0_GP_MEDIUM_IRQ,
2397 RPM_APCC_CPU0_GP_LOW_IRQ,
2398 RPM_APCC_CPU0_WAKE_UP_IRQ,
2399 RPM_APCC_CPU1_GP_HIGH_IRQ,
2400 RPM_APCC_CPU1_GP_MEDIUM_IRQ,
2401 RPM_APCC_CPU1_GP_LOW_IRQ,
2402 RPM_APCC_CPU1_WAKE_UP_IRQ,
2403 MSS_TO_APPS_IRQ_0,
2404 MSS_TO_APPS_IRQ_1,
2405 MSS_TO_APPS_IRQ_2,
2406 MSS_TO_APPS_IRQ_3,
2407 MSS_TO_APPS_IRQ_4,
2408 MSS_TO_APPS_IRQ_5,
2409 MSS_TO_APPS_IRQ_6,
2410 MSS_TO_APPS_IRQ_7,
2411 MSS_TO_APPS_IRQ_8,
2412 MSS_TO_APPS_IRQ_9,
2413 LPASS_SCSS_GP_LOW_IRQ,
2414 LPASS_SCSS_GP_MEDIUM_IRQ,
2415 LPASS_SCSS_GP_HIGH_IRQ,
2416 SPS_MTI_30,
2417 SPS_MTI_31,
2418 RIVA_APSS_SPARE_IRQ,
2419 RIVA_APPS_WLAN_SMSM_IRQ,
2420 RIVA_APPS_WLAN_RX_DATA_AVAIL_IRQ,
2421 RIVA_APPS_WLAN_DATA_XFER_DONE_IRQ,
Chandra Ramachandran59851722012-07-23 11:19:48 -07002422 PM8821_SEC_IRQ_N,
Praveen Chidambaram78499012011-11-01 17:15:17 -06002423};
2424
2425struct msm_mpm_device_data apq8064_mpm_dev_data __initdata = {
2426 .irqs_m2a = msm_mpm_irqs_m2a,
2427 .irqs_m2a_size = ARRAY_SIZE(msm_mpm_irqs_m2a),
2428 .bypassed_apps_irqs = msm_mpm_bypassed_apps_irqs,
2429 .bypassed_apps_irqs_size = ARRAY_SIZE(msm_mpm_bypassed_apps_irqs),
2430 .mpm_request_reg_base = MSM_RPM_BASE + 0x9d8,
2431 .mpm_status_reg_base = MSM_RPM_BASE + 0xdf8,
2432 .mpm_apps_ipc_reg = MSM_APCS_GCC_BASE + 0x008,
2433 .mpm_apps_ipc_val = BIT(1),
2434 .mpm_ipc_irq = RPM_APCC_CPU0_GP_MEDIUM_IRQ,
2435
2436};
2437#endif
Joel Kingdacbc822012-01-25 13:30:57 -08002438
Joel King14fe7fa2012-05-27 14:26:11 -07002439/* AP2MDM_SOFT_RESET is implemented by the PON_RESET_N gpio */
Joel Kingdacbc822012-01-25 13:30:57 -08002440#define MDM2AP_ERRFATAL 19
2441#define AP2MDM_ERRFATAL 18
2442#define MDM2AP_STATUS 49
2443#define AP2MDM_STATUS 48
Joel King14fe7fa2012-05-27 14:26:11 -07002444#define AP2MDM_SOFT_RESET 27
Ameya Thakure155ece2012-07-09 12:08:37 -07002445#define I2S_AP2MDM_SOFT_RESET 0
Vamsi Krishna9e307cd2012-04-11 13:15:36 -07002446#define AP2MDM_WAKEUP 35
Ameya Thakure155ece2012-07-09 12:08:37 -07002447#define I2S_AP2MDM_WAKEUP 44
Vamsi Krishnac6dcd5e2012-05-09 15:38:01 -07002448#define MDM2AP_PBLRDY 46
Ameya Thakure155ece2012-07-09 12:08:37 -07002449#define I2S_MDM2AP_PBLRDY 81
Joel Kingdacbc822012-01-25 13:30:57 -08002450
2451static struct resource mdm_resources[] = {
2452 {
2453 .start = MDM2AP_ERRFATAL,
2454 .end = MDM2AP_ERRFATAL,
2455 .name = "MDM2AP_ERRFATAL",
2456 .flags = IORESOURCE_IO,
2457 },
2458 {
2459 .start = AP2MDM_ERRFATAL,
2460 .end = AP2MDM_ERRFATAL,
2461 .name = "AP2MDM_ERRFATAL",
2462 .flags = IORESOURCE_IO,
2463 },
2464 {
2465 .start = MDM2AP_STATUS,
2466 .end = MDM2AP_STATUS,
2467 .name = "MDM2AP_STATUS",
2468 .flags = IORESOURCE_IO,
2469 },
2470 {
2471 .start = AP2MDM_STATUS,
2472 .end = AP2MDM_STATUS,
2473 .name = "AP2MDM_STATUS",
2474 .flags = IORESOURCE_IO,
2475 },
2476 {
Joel King14fe7fa2012-05-27 14:26:11 -07002477 .start = AP2MDM_SOFT_RESET,
2478 .end = AP2MDM_SOFT_RESET,
2479 .name = "AP2MDM_SOFT_RESET",
Joel Kingdacbc822012-01-25 13:30:57 -08002480 .flags = IORESOURCE_IO,
2481 },
Vamsi Krishna9e307cd2012-04-11 13:15:36 -07002482 {
2483 .start = AP2MDM_WAKEUP,
2484 .end = AP2MDM_WAKEUP,
2485 .name = "AP2MDM_WAKEUP",
2486 .flags = IORESOURCE_IO,
2487 },
Vamsi Krishnac6dcd5e2012-05-09 15:38:01 -07002488 {
2489 .start = MDM2AP_PBLRDY,
2490 .end = MDM2AP_PBLRDY,
2491 .name = "MDM2AP_PBLRDY",
2492 .flags = IORESOURCE_IO,
2493 },
Joel Kingdacbc822012-01-25 13:30:57 -08002494};
2495
Ameya Thakure155ece2012-07-09 12:08:37 -07002496static struct resource i2s_mdm_resources[] = {
2497 {
2498 .start = MDM2AP_ERRFATAL,
2499 .end = MDM2AP_ERRFATAL,
2500 .name = "MDM2AP_ERRFATAL",
2501 .flags = IORESOURCE_IO,
2502 },
2503 {
2504 .start = AP2MDM_ERRFATAL,
2505 .end = AP2MDM_ERRFATAL,
2506 .name = "AP2MDM_ERRFATAL",
2507 .flags = IORESOURCE_IO,
2508 },
2509 {
2510 .start = MDM2AP_STATUS,
2511 .end = MDM2AP_STATUS,
2512 .name = "MDM2AP_STATUS",
2513 .flags = IORESOURCE_IO,
2514 },
2515 {
2516 .start = AP2MDM_STATUS,
2517 .end = AP2MDM_STATUS,
2518 .name = "AP2MDM_STATUS",
2519 .flags = IORESOURCE_IO,
2520 },
2521 {
2522 .start = I2S_AP2MDM_SOFT_RESET,
2523 .end = I2S_AP2MDM_SOFT_RESET,
2524 .name = "AP2MDM_SOFT_RESET",
2525 .flags = IORESOURCE_IO,
2526 },
2527 {
2528 .start = I2S_AP2MDM_WAKEUP,
2529 .end = I2S_AP2MDM_WAKEUP,
2530 .name = "AP2MDM_WAKEUP",
2531 .flags = IORESOURCE_IO,
2532 },
2533 {
2534 .start = I2S_MDM2AP_PBLRDY,
2535 .end = I2S_MDM2AP_PBLRDY,
2536 .name = "MDM2AP_PBLRDY",
2537 .flags = IORESOURCE_IO,
2538 },
2539};
2540
Joel Kingdacbc822012-01-25 13:30:57 -08002541struct platform_device mdm_8064_device = {
2542 .name = "mdm2_modem",
2543 .id = -1,
2544 .num_resources = ARRAY_SIZE(mdm_resources),
2545 .resource = mdm_resources,
2546};
Praveen Chidambaram8ea3dcd2011-12-07 14:46:31 -07002547
Ameya Thakure155ece2012-07-09 12:08:37 -07002548struct platform_device i2s_mdm_8064_device = {
2549 .name = "mdm2_modem",
2550 .id = -1,
2551 .num_resources = ARRAY_SIZE(i2s_mdm_resources),
2552 .resource = i2s_mdm_resources,
2553};
Praveen Chidambaram8ea3dcd2011-12-07 14:46:31 -07002554static int apq8064_LPM_latency = 1000; /* >100 usec for WFI */
2555
2556struct platform_device apq8064_cpu_idle_device = {
2557 .name = "msm_cpu_idle",
2558 .id = -1,
2559 .dev = {
2560 .platform_data = &apq8064_LPM_latency,
2561 },
2562};
Praveen Chidambaram5c8adf22012-02-23 18:44:37 -07002563
2564static struct msm_dcvs_freq_entry apq8064_freq[] = {
2565 { 384000, 166981, 345600},
2566 { 702000, 213049, 632502},
2567 {1026000, 285712, 925613},
2568 {1242000, 383945, 1176550},
2569 {1458000, 419729, 1465478},
2570 {1512000, 434116, 1546674},
2571
2572};
2573
2574static struct msm_dcvs_core_info apq8064_core_info = {
2575 .freq_tbl = &apq8064_freq[0],
2576 .core_param = {
2577 .max_time_us = 100000,
2578 .num_freq = ARRAY_SIZE(apq8064_freq),
2579 },
2580 .algo_param = {
2581 .slack_time_us = 58000,
2582 .scale_slack_time = 0,
2583 .scale_slack_time_pct = 0,
2584 .disable_pc_threshold = 1458000,
2585 .em_window_size = 100000,
2586 .em_max_util_pct = 97,
2587 .ss_window_size = 1000000,
2588 .ss_util_pct = 95,
2589 .ss_iobusy_conv = 100,
2590 },
2591};
2592
2593struct platform_device apq8064_msm_gov_device = {
2594 .name = "msm_dcvs_gov",
2595 .id = -1,
2596 .dev = {
2597 .platform_data = &apq8064_core_info,
2598 },
2599};
Stepan Moskovchenko28662c52012-03-01 12:48:45 -08002600
Terence Hampson2e1705f2012-04-11 19:55:29 -04002601#ifdef CONFIG_MSM_VCAP
2602#define VCAP_HW_BASE 0x05900000
2603
2604static struct msm_bus_vectors vcap_init_vectors[] = {
2605 {
2606 .src = MSM_BUS_MASTER_VIDEO_CAP,
2607 .dst = MSM_BUS_SLAVE_EBI_CH0,
2608 .ab = 0,
2609 .ib = 0,
2610 },
2611};
2612
Terence Hampson2e1705f2012-04-11 19:55:29 -04002613static struct msm_bus_vectors vcap_480_vectors[] = {
2614 {
2615 .src = MSM_BUS_MASTER_VIDEO_CAP,
2616 .dst = MSM_BUS_SLAVE_EBI_CH0,
Terence Hampson779dc762012-06-07 15:59:27 -04002617 .ab = 480 * 720 * 3 * 60,
2618 .ib = 480 * 720 * 3 * 60 * 1.5,
2619 },
2620};
2621
2622static struct msm_bus_vectors vcap_576_vectors[] = {
2623 {
2624 .src = MSM_BUS_MASTER_VIDEO_CAP,
2625 .dst = MSM_BUS_SLAVE_EBI_CH0,
2626 .ab = 576 * 720 * 3 * 60,
2627 .ib = 576 * 720 * 3 * 60 * 1.5,
Terence Hampson2e1705f2012-04-11 19:55:29 -04002628 },
2629};
2630
2631static struct msm_bus_vectors vcap_720_vectors[] = {
2632 {
2633 .src = MSM_BUS_MASTER_VIDEO_CAP,
2634 .dst = MSM_BUS_SLAVE_EBI_CH0,
Terence Hampson35a1ff02012-04-25 17:07:18 -04002635 .ab = 1280 * 720 * 3 * 60,
2636 .ib = 1280 * 720 * 3 * 60 * 1.5,
Terence Hampson2e1705f2012-04-11 19:55:29 -04002637 },
2638};
2639
2640static struct msm_bus_vectors vcap_1080_vectors[] = {
2641 {
2642 .src = MSM_BUS_MASTER_VIDEO_CAP,
2643 .dst = MSM_BUS_SLAVE_EBI_CH0,
Terence Hampson35a1ff02012-04-25 17:07:18 -04002644 .ab = 1920 * 1080 * 3 * 60,
2645 .ib = 1920 * 1080 * 3 * 60 * 1.5,
Terence Hampson2e1705f2012-04-11 19:55:29 -04002646 },
2647};
2648
2649static struct msm_bus_paths vcap_bus_usecases[] = {
2650 {
2651 ARRAY_SIZE(vcap_init_vectors),
2652 vcap_init_vectors,
2653 },
2654 {
2655 ARRAY_SIZE(vcap_480_vectors),
2656 vcap_480_vectors,
2657 },
2658 {
Terence Hampson779dc762012-06-07 15:59:27 -04002659 ARRAY_SIZE(vcap_576_vectors),
2660 vcap_576_vectors,
2661 },
2662 {
Terence Hampson2e1705f2012-04-11 19:55:29 -04002663 ARRAY_SIZE(vcap_720_vectors),
2664 vcap_720_vectors,
2665 },
2666 {
2667 ARRAY_SIZE(vcap_1080_vectors),
2668 vcap_1080_vectors,
2669 },
2670};
2671
2672static struct msm_bus_scale_pdata vcap_axi_client_pdata = {
2673 vcap_bus_usecases,
2674 ARRAY_SIZE(vcap_bus_usecases),
2675};
2676
2677static struct resource msm_vcap_resources[] = {
2678 {
2679 .name = "vcap",
2680 .start = VCAP_HW_BASE,
2681 .end = VCAP_HW_BASE + SZ_1M - 1,
2682 .flags = IORESOURCE_MEM,
2683 },
2684 {
Terence Hampsonaeb793e2012-05-11 11:41:16 -04002685 .name = "vc_irq",
Terence Hampson2e1705f2012-04-11 19:55:29 -04002686 .start = VCAP_VC,
2687 .end = VCAP_VC,
2688 .flags = IORESOURCE_IRQ,
2689 },
Terence Hampsonaeb793e2012-05-11 11:41:16 -04002690 {
2691 .name = "vp_irq",
2692 .start = VCAP_VP,
2693 .end = VCAP_VP,
2694 .flags = IORESOURCE_IRQ,
2695 },
Terence Hampson2e1705f2012-04-11 19:55:29 -04002696};
2697
2698static unsigned vcap_gpios[] = {
2699 2, 3, 4, 5, 6, 7, 8, 9, 10,
2700 11, 12, 13, 18, 19, 20, 21,
2701 22, 23, 24, 25, 26, 80, 82,
2702 83, 84, 85, 86, 87,
2703};
2704
2705static struct vcap_platform_data vcap_pdata = {
2706 .gpios = vcap_gpios,
2707 .num_gpios = ARRAY_SIZE(vcap_gpios),
2708 .bus_client_pdata = &vcap_axi_client_pdata
2709};
2710
2711struct platform_device msm8064_device_vcap = {
2712 .name = "msm_vcap",
2713 .id = 0,
2714 .resource = msm_vcap_resources,
2715 .num_resources = ARRAY_SIZE(msm_vcap_resources),
2716 .dev = {
2717 .platform_data = &vcap_pdata,
2718 },
2719};
2720#endif
2721
Stepan Moskovchenko28662c52012-03-01 12:48:45 -08002722static struct resource msm_cache_erp_resources[] = {
2723 {
2724 .name = "l1_irq",
2725 .start = SC_SICCPUXEXTFAULTIRPTREQ,
2726 .flags = IORESOURCE_IRQ,
2727 },
2728 {
2729 .name = "l2_irq",
2730 .start = APCC_QGICL2IRPTREQ,
2731 .flags = IORESOURCE_IRQ,
2732 }
2733};
2734
2735struct platform_device apq8064_device_cache_erp = {
2736 .name = "msm_cache_erp",
2737 .id = -1,
2738 .num_resources = ARRAY_SIZE(msm_cache_erp_resources),
2739 .resource = msm_cache_erp_resources,
2740};
Pratik Patel212ab362012-03-16 12:30:07 -07002741
Pratik Patel3b0ca882012-06-01 16:54:14 -07002742#define CORESIGHT_PHYS_BASE 0x01A00000
2743#define CORESIGHT_FUNNEL_PHYS_BASE (CORESIGHT_PHYS_BASE + 0x4000)
2744#define CORESIGHT_ETM2_PHYS_BASE (CORESIGHT_PHYS_BASE + 0x1E000)
2745#define CORESIGHT_ETM3_PHYS_BASE (CORESIGHT_PHYS_BASE + 0x1F000)
Pratik Patel212ab362012-03-16 12:30:07 -07002746
Pratik Patel3b0ca882012-06-01 16:54:14 -07002747static struct resource coresight_funnel_resources[] = {
Pratik Patel212ab362012-03-16 12:30:07 -07002748 {
Pratik Patel3b0ca882012-06-01 16:54:14 -07002749 .start = CORESIGHT_FUNNEL_PHYS_BASE,
2750 .end = CORESIGHT_FUNNEL_PHYS_BASE + SZ_4K - 1,
Pratik Patel212ab362012-03-16 12:30:07 -07002751 .flags = IORESOURCE_MEM,
2752 },
2753};
2754
Pratik Patel3b0ca882012-06-01 16:54:14 -07002755static const int coresight_funnel_outports[] = { 0, 1 };
2756static const int coresight_funnel_child_ids[] = { 0, 1 };
2757static const int coresight_funnel_child_ports[] = { 0, 0 };
2758
2759static struct coresight_platform_data coresight_funnel_pdata = {
2760 .id = 2,
2761 .name = "coresight-funnel",
2762 .nr_inports = 4,
2763 .outports = coresight_funnel_outports,
2764 .child_ids = coresight_funnel_child_ids,
2765 .child_ports = coresight_funnel_child_ports,
2766 .nr_outports = ARRAY_SIZE(coresight_funnel_outports),
2767};
2768
2769struct platform_device apq8064_coresight_funnel_device = {
2770 .name = "coresight-funnel",
Pratik Patel212ab362012-03-16 12:30:07 -07002771 .id = 0,
Pratik Patel3b0ca882012-06-01 16:54:14 -07002772 .num_resources = ARRAY_SIZE(coresight_funnel_resources),
2773 .resource = coresight_funnel_resources,
2774 .dev = {
2775 .platform_data = &coresight_funnel_pdata,
2776 },
2777};
2778
2779static struct resource coresight_etm2_resources[] = {
2780 {
2781 .start = CORESIGHT_ETM2_PHYS_BASE,
2782 .end = CORESIGHT_ETM2_PHYS_BASE + SZ_4K - 1,
2783 .flags = IORESOURCE_MEM,
2784 },
2785};
2786
2787static const int coresight_etm2_outports[] = { 0 };
2788static const int coresight_etm2_child_ids[] = { 2 };
2789static const int coresight_etm2_child_ports[] = { 4 };
2790
2791static struct coresight_platform_data coresight_etm2_pdata = {
2792 .id = 6,
2793 .name = "coresight-etm2",
2794 .nr_inports = 1,
2795 .outports = coresight_etm2_outports,
2796 .child_ids = coresight_etm2_child_ids,
2797 .child_ports = coresight_etm2_child_ports,
2798 .nr_outports = ARRAY_SIZE(coresight_etm2_outports),
2799};
2800
2801struct platform_device coresight_etm2_device = {
2802 .name = "coresight-etm",
2803 .id = 2,
2804 .num_resources = ARRAY_SIZE(coresight_etm2_resources),
2805 .resource = coresight_etm2_resources,
2806 .dev = {
2807 .platform_data = &coresight_etm2_pdata,
2808 },
2809};
2810
2811static struct resource coresight_etm3_resources[] = {
2812 {
2813 .start = CORESIGHT_ETM3_PHYS_BASE,
2814 .end = CORESIGHT_ETM3_PHYS_BASE + SZ_4K - 1,
2815 .flags = IORESOURCE_MEM,
2816 },
2817};
2818
2819static const int coresight_etm3_outports[] = { 0 };
2820static const int coresight_etm3_child_ids[] = { 2 };
2821static const int coresight_etm3_child_ports[] = { 5 };
2822
2823static struct coresight_platform_data coresight_etm3_pdata = {
2824 .id = 7,
2825 .name = "coresight-etm3",
2826 .nr_inports = 3,
2827 .outports = coresight_etm3_outports,
2828 .child_ids = coresight_etm3_child_ids,
2829 .child_ports = coresight_etm3_child_ports,
2830 .nr_outports = ARRAY_SIZE(coresight_etm3_outports),
2831};
2832
2833struct platform_device coresight_etm3_device = {
2834 .name = "coresight-etm",
2835 .id = 3,
2836 .num_resources = ARRAY_SIZE(coresight_etm3_resources),
2837 .resource = coresight_etm3_resources,
2838 .dev = {
2839 .platform_data = &coresight_etm3_pdata,
2840 },
Pratik Patel212ab362012-03-16 12:30:07 -07002841};
Laura Abbott0577d7b2012-04-17 11:14:30 -07002842
2843struct msm_iommu_domain_name apq8064_iommu_ctx_names[] = {
2844 /* Camera */
2845 {
2846 .name = "vpe_src",
2847 .domain = CAMERA_DOMAIN,
2848 },
2849 /* Camera */
2850 {
2851 .name = "vpe_dst",
2852 .domain = CAMERA_DOMAIN,
2853 },
2854 /* Camera */
2855 {
2856 .name = "vfe_imgwr",
2857 .domain = CAMERA_DOMAIN,
2858 },
2859 /* Camera */
2860 {
2861 .name = "vfe_misc",
2862 .domain = CAMERA_DOMAIN,
2863 },
2864 /* Camera */
2865 {
2866 .name = "ijpeg_src",
2867 .domain = CAMERA_DOMAIN,
2868 },
2869 /* Camera */
2870 {
2871 .name = "ijpeg_dst",
2872 .domain = CAMERA_DOMAIN,
2873 },
2874 /* Camera */
2875 {
2876 .name = "jpegd_src",
2877 .domain = CAMERA_DOMAIN,
2878 },
2879 /* Camera */
2880 {
2881 .name = "jpegd_dst",
2882 .domain = CAMERA_DOMAIN,
2883 },
Olav Hauganef95ae32012-05-15 09:50:30 -07002884 /* Rotator src*/
Laura Abbott0577d7b2012-04-17 11:14:30 -07002885 {
2886 .name = "rot_src",
Olav Hauganef95ae32012-05-15 09:50:30 -07002887 .domain = ROTATOR_SRC_DOMAIN,
Laura Abbott0577d7b2012-04-17 11:14:30 -07002888 },
Olav Hauganef95ae32012-05-15 09:50:30 -07002889 /* Rotator dst */
Laura Abbott0577d7b2012-04-17 11:14:30 -07002890 {
2891 .name = "rot_dst",
Olav Hauganef95ae32012-05-15 09:50:30 -07002892 .domain = ROTATOR_DST_DOMAIN,
Laura Abbott0577d7b2012-04-17 11:14:30 -07002893 },
2894 /* Video */
2895 {
2896 .name = "vcodec_a_mm1",
2897 .domain = VIDEO_DOMAIN,
2898 },
2899 /* Video */
2900 {
2901 .name = "vcodec_b_mm2",
2902 .domain = VIDEO_DOMAIN,
2903 },
2904 /* Video */
2905 {
2906 .name = "vcodec_a_stream",
2907 .domain = VIDEO_DOMAIN,
2908 },
2909};
2910
2911static struct mem_pool apq8064_video_pools[] = {
2912 /*
2913 * Video hardware has the following requirements:
2914 * 1. All video addresses used by the video hardware must be at a higher
2915 * address than video firmware address.
2916 * 2. Video hardware can only access a range of 256MB from the base of
2917 * the video firmware.
2918 */
2919 [VIDEO_FIRMWARE_POOL] =
2920 /* Low addresses, intended for video firmware */
2921 {
2922 .paddr = SZ_128K,
2923 .size = SZ_16M - SZ_128K,
2924 },
2925 [VIDEO_MAIN_POOL] =
2926 /* Main video pool */
2927 {
2928 .paddr = SZ_16M,
2929 .size = SZ_256M - SZ_16M,
2930 },
2931 [GEN_POOL] =
2932 /* Remaining address space up to 2G */
2933 {
2934 .paddr = SZ_256M,
2935 .size = SZ_2G - SZ_256M,
2936 },
2937};
2938
2939static struct mem_pool apq8064_camera_pools[] = {
2940 [GEN_POOL] =
2941 /* One address space for camera */
2942 {
2943 .paddr = SZ_128K,
2944 .size = SZ_2G - SZ_128K,
2945 },
2946};
2947
Olav Hauganef95ae32012-05-15 09:50:30 -07002948static struct mem_pool apq8064_display_read_pools[] = {
Laura Abbott0577d7b2012-04-17 11:14:30 -07002949 [GEN_POOL] =
Olav Hauganef95ae32012-05-15 09:50:30 -07002950 /* One address space for display reads */
Laura Abbott0577d7b2012-04-17 11:14:30 -07002951 {
2952 .paddr = SZ_128K,
2953 .size = SZ_2G - SZ_128K,
2954 },
2955};
2956
Olav Hauganef95ae32012-05-15 09:50:30 -07002957static struct mem_pool apq8064_display_write_pools[] = {
Laura Abbott0577d7b2012-04-17 11:14:30 -07002958 [GEN_POOL] =
Olav Hauganef95ae32012-05-15 09:50:30 -07002959 /* One address space for display writes */
2960 {
2961 .paddr = SZ_128K,
2962 .size = SZ_2G - SZ_128K,
2963 },
2964};
2965
2966static struct mem_pool apq8064_rotator_src_pools[] = {
2967 [GEN_POOL] =
2968 /* One address space for rotator src */
2969 {
2970 .paddr = SZ_128K,
2971 .size = SZ_2G - SZ_128K,
2972 },
2973};
2974
2975static struct mem_pool apq8064_rotator_dst_pools[] = {
2976 [GEN_POOL] =
2977 /* One address space for rotator dst */
Laura Abbott0577d7b2012-04-17 11:14:30 -07002978 {
2979 .paddr = SZ_128K,
2980 .size = SZ_2G - SZ_128K,
2981 },
2982};
2983
2984static struct msm_iommu_domain apq8064_iommu_domains[] = {
2985 [VIDEO_DOMAIN] = {
2986 .iova_pools = apq8064_video_pools,
2987 .npools = ARRAY_SIZE(apq8064_video_pools),
2988 },
2989 [CAMERA_DOMAIN] = {
2990 .iova_pools = apq8064_camera_pools,
2991 .npools = ARRAY_SIZE(apq8064_camera_pools),
2992 },
Olav Hauganef95ae32012-05-15 09:50:30 -07002993 [DISPLAY_READ_DOMAIN] = {
2994 .iova_pools = apq8064_display_read_pools,
2995 .npools = ARRAY_SIZE(apq8064_display_read_pools),
Laura Abbott0577d7b2012-04-17 11:14:30 -07002996 },
Olav Hauganef95ae32012-05-15 09:50:30 -07002997 [DISPLAY_WRITE_DOMAIN] = {
2998 .iova_pools = apq8064_display_write_pools,
2999 .npools = ARRAY_SIZE(apq8064_display_write_pools),
3000 },
3001 [ROTATOR_SRC_DOMAIN] = {
3002 .iova_pools = apq8064_rotator_src_pools,
3003 .npools = ARRAY_SIZE(apq8064_rotator_src_pools),
3004 },
3005 [ROTATOR_DST_DOMAIN] = {
3006 .iova_pools = apq8064_rotator_dst_pools,
3007 .npools = ARRAY_SIZE(apq8064_rotator_dst_pools),
Laura Abbott0577d7b2012-04-17 11:14:30 -07003008 },
3009};
3010
3011struct iommu_domains_pdata apq8064_iommu_domain_pdata = {
3012 .domains = apq8064_iommu_domains,
3013 .ndomains = ARRAY_SIZE(apq8064_iommu_domains),
3014 .domain_names = apq8064_iommu_ctx_names,
3015 .nnames = ARRAY_SIZE(apq8064_iommu_ctx_names),
3016 .domain_alloc_flags = 0,
3017};
3018
3019struct platform_device apq8064_iommu_domain_device = {
3020 .name = "iommu_domains",
3021 .id = -1,
3022 .dev = {
3023 .platform_data = &apq8064_iommu_domain_pdata,
Laura Abbott532b2df2012-04-12 10:53:48 -07003024 }
3025};
3026
3027struct msm_rtb_platform_data apq8064_rtb_pdata = {
3028 .size = SZ_1M,
3029};
3030
3031static int __init msm_rtb_set_buffer_size(char *p)
3032{
3033 int s;
3034
3035 s = memparse(p, NULL);
3036 apq8064_rtb_pdata.size = ALIGN(s, SZ_4K);
3037 return 0;
3038}
3039early_param("msm_rtb_size", msm_rtb_set_buffer_size);
3040
3041struct platform_device apq8064_rtb_device = {
3042 .name = "msm_rtb",
3043 .id = -1,
3044 .dev = {
3045 .platform_data = &apq8064_rtb_pdata,
Laura Abbott0577d7b2012-04-17 11:14:30 -07003046 },
3047};
Laura Abbott93a4a352012-05-25 09:26:35 -07003048
3049#define APQ8064_L1_SIZE SZ_1M
3050/*
3051 * The actual L2 size is smaller but we need a larger buffer
3052 * size to store other dump information
3053 */
3054#define APQ8064_L2_SIZE SZ_8M
3055
3056struct msm_cache_dump_platform_data apq8064_cache_dump_pdata = {
3057 .l2_size = APQ8064_L2_SIZE,
3058 .l1_size = APQ8064_L1_SIZE,
3059};
3060
3061struct platform_device apq8064_cache_dump_device = {
3062 .name = "msm_cache_dump",
3063 .id = -1,
3064 .dev = {
3065 .platform_data = &apq8064_cache_dump_pdata,
3066 },
3067};