blob: ef9b62a8774acd3d3b6dae76bdae805d9808852a [file] [log] [blame]
Manu Gautam5143b252012-01-05 19:25:23 -08001/* Copyright (c) 2011-2012, Code Aurora Forum. All rights reserved.
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002 *
3 * This program is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License version 2 and
5 * only version 2 as published by the Free Software Foundation.
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
11 *
12 */
13
14#include <linux/kernel.h>
15#include <linux/list.h>
16#include <linux/platform_device.h>
17#include <linux/msm_rotator.h>
18#include <linux/clkdev.h>
Hemant Kumard86c4882012-01-24 19:39:37 -080019#include <linux/dma-mapping.h>
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070020#include <mach/irqs-8064.h>
21#include <mach/board.h>
22#include <mach/msm_iomap.h>
Yan He06913ce2011-08-26 16:33:46 -070023#include <mach/usbdiag.h>
24#include <mach/msm_sps.h>
Jeff Ohlstein905f1ce2011-09-07 18:50:18 -070025#include <mach/dma.h>
Jin Hongd3024e62012-02-09 16:13:32 -080026#include <mach/msm_dsps.h>
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -080027#include <sound/msm-dai-q6.h>
28#include <sound/apr_audio.h>
Gagan Mac8a7a5d32011-11-11 16:43:06 -070029#include <mach/msm_bus_board.h>
Praveen Chidambaram78499012011-11-01 17:15:17 -060030#include <mach/rpm.h>
Joel Kingdacbc822012-01-25 13:30:57 -080031#include <mach/mdm2.h>
Eric Holmberg023d25c2012-03-01 12:27:55 -070032#include <mach/msm_smd.h>
Praveen Chidambaram5c8adf22012-02-23 18:44:37 -070033#include <mach/msm_dcvs.h>
Laura Abbott532b2df2012-04-12 10:53:48 -070034#include <mach/msm_rtb.h>
Pratik Patel212ab362012-03-16 12:30:07 -070035#include <mach/qdss.h>
Mohan Kumar Gubbihalli Lachma Naik7f72edd2012-02-06 17:26:47 -080036#include <linux/ion.h>
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070037#include "clock.h"
38#include "devices.h"
Matt Wagantall1875d322012-02-22 16:11:33 -080039#include "footswitch.h"
Jeff Ohlstein7e668552011-10-06 16:17:25 -070040#include "msm_watchdog.h"
Praveen Chidambaram78499012011-11-01 17:15:17 -060041#include "rpm_stats.h"
42#include "rpm_log.h"
Subhash Jadavani909e04f2012-04-12 10:52:50 +053043#include <mach/mpm.h>
Laura Abbott0577d7b2012-04-17 11:14:30 -070044#include <mach/iommu_domains.h>
Laura Abbott93a4a352012-05-25 09:26:35 -070045#include <mach/msm_cache_dump.h>
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070046
47/* Address of GSBI blocks */
Stepan Moskovchenko2701a442011-08-19 13:47:22 -070048#define MSM_GSBI1_PHYS 0x12440000
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070049#define MSM_GSBI3_PHYS 0x16200000
Harini Jayaramanc4c58692011-07-19 14:50:10 -060050#define MSM_GSBI4_PHYS 0x16300000
51#define MSM_GSBI5_PHYS 0x1A200000
52#define MSM_GSBI6_PHYS 0x16500000
53#define MSM_GSBI7_PHYS 0x16600000
54
Kenneth Heitke748593a2011-07-15 15:45:11 -060055/* GSBI UART devices */
Stepan Moskovchenko2701a442011-08-19 13:47:22 -070056#define MSM_UART1DM_PHYS (MSM_GSBI1_PHYS + 0x10000)
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070057#define MSM_UART3DM_PHYS (MSM_GSBI3_PHYS + 0x40000)
Jin Hong4bbbfba2012-02-02 21:48:07 -080058#define MSM_UART7DM_PHYS (MSM_GSBI7_PHYS + 0x40000)
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070059
Harini Jayaramanc4c58692011-07-19 14:50:10 -060060/* GSBI QUP devices */
David Keitel3c40fc52012-02-09 17:53:52 -080061#define MSM_GSBI1_QUP_PHYS (MSM_GSBI1_PHYS + 0x20000)
Harini Jayaramanc4c58692011-07-19 14:50:10 -060062#define MSM_GSBI3_QUP_PHYS (MSM_GSBI3_PHYS + 0x80000)
63#define MSM_GSBI4_QUP_PHYS (MSM_GSBI4_PHYS + 0x80000)
64#define MSM_GSBI5_QUP_PHYS (MSM_GSBI5_PHYS + 0x80000)
65#define MSM_GSBI6_QUP_PHYS (MSM_GSBI6_PHYS + 0x80000)
66#define MSM_GSBI7_QUP_PHYS (MSM_GSBI7_PHYS + 0x80000)
67#define MSM_QUP_SIZE SZ_4K
68
Kenneth Heitke36920d32011-07-20 16:44:30 -060069/* Address of SSBI CMD */
70#define MSM_PMIC1_SSBI_CMD_PHYS 0x00500000
71#define MSM_PMIC2_SSBI_CMD_PHYS 0x00C00000
72#define MSM_PMIC_SSBI_SIZE SZ_4K
Harini Jayaramanc4c58692011-07-19 14:50:10 -060073
Hemant Kumarcaa09092011-07-30 00:26:33 -070074/* Address of HS USBOTG1 */
Hemant Kumard86c4882012-01-24 19:39:37 -080075#define MSM_HSUSB1_PHYS 0x12500000
76#define MSM_HSUSB1_SIZE SZ_4K
Hemant Kumarcaa09092011-07-30 00:26:33 -070077
Manu Gautam91223e02011-11-08 15:27:22 +053078/* Address of HS USB3 */
79#define MSM_HSUSB3_PHYS 0x12520000
80#define MSM_HSUSB3_SIZE SZ_4K
81
Hemant Kumar1d66e1c2012-02-13 15:24:59 -080082/* Address of HS USB4 */
83#define MSM_HSUSB4_PHYS 0x12530000
84#define MSM_HSUSB4_SIZE SZ_4K
85
Niranjana Vishwanathapura06f89332012-05-03 17:11:13 -060086/* Address of PCIE20 PARF */
87#define PCIE20_PARF_PHYS 0x1b600000
88#define PCIE20_PARF_SIZE SZ_128
89
90/* Address of PCIE20 ELBI */
91#define PCIE20_ELBI_PHYS 0x1b502000
92#define PCIE20_ELBI_SIZE SZ_256
93
94/* Address of PCIE20 */
95#define PCIE20_PHYS 0x1b500000
96#define PCIE20_SIZE SZ_4K
97
98/* AXI address for PCIE device BAR resources */
99#define PCIE_AXI_BAR_PHYS 0x08000000
100#define PCIE_AXI_BAR_SIZE SZ_8M
101
102/* AXI address for PCIE device config space */
103#define PCIE_AXI_CONF_PHYS 0x08c00000
104#define PCIE_AXI_CONF_SIZE SZ_4K
Hemant Kumar1d66e1c2012-02-13 15:24:59 -0800105
Jeff Ohlstein7e668552011-10-06 16:17:25 -0700106static struct msm_watchdog_pdata msm_watchdog_pdata = {
107 .pet_time = 10000,
108 .bark_time = 11000,
109 .has_secure = true,
Joel Kinge7ca6f72012-02-09 20:51:25 -0800110 .needs_expired_enable = true,
Jeff Ohlstein7e668552011-10-06 16:17:25 -0700111};
112
113struct platform_device msm8064_device_watchdog = {
114 .name = "msm_watchdog",
115 .id = -1,
116 .dev = {
117 .platform_data = &msm_watchdog_pdata,
118 },
119};
120
Joel King0581896d2011-07-19 16:43:28 -0700121static struct resource msm_dmov_resource[] = {
122 {
Jeff Ohlstein4af72692011-11-07 15:59:17 -0800123 .start = ADM_0_SCSS_1_IRQ,
Joel King0581896d2011-07-19 16:43:28 -0700124 .flags = IORESOURCE_IRQ,
125 },
Jeff Ohlstein905f1ce2011-09-07 18:50:18 -0700126 {
Jeff Ohlstein4af72692011-11-07 15:59:17 -0800127 .start = 0x18320000,
128 .end = 0x18320000 + SZ_1M - 1,
Jeff Ohlstein905f1ce2011-09-07 18:50:18 -0700129 .flags = IORESOURCE_MEM,
130 },
131};
132
133static struct msm_dmov_pdata msm_dmov_pdata = {
Jeff Ohlstein4af72692011-11-07 15:59:17 -0800134 .sd = 1,
Jeff Ohlstein905f1ce2011-09-07 18:50:18 -0700135 .sd_size = 0x800,
Joel King0581896d2011-07-19 16:43:28 -0700136};
137
Stepan Moskovchenkodf13d342011-08-03 19:01:25 -0700138struct platform_device apq8064_device_dmov = {
Joel King0581896d2011-07-19 16:43:28 -0700139 .name = "msm_dmov",
140 .id = -1,
141 .resource = msm_dmov_resource,
142 .num_resources = ARRAY_SIZE(msm_dmov_resource),
Jeff Ohlstein905f1ce2011-09-07 18:50:18 -0700143 .dev = {
144 .platform_data = &msm_dmov_pdata,
145 },
Joel King0581896d2011-07-19 16:43:28 -0700146};
147
Stepan Moskovchenko2701a442011-08-19 13:47:22 -0700148static struct resource resources_uart_gsbi1[] = {
149 {
150 .start = APQ8064_GSBI1_UARTDM_IRQ,
151 .end = APQ8064_GSBI1_UARTDM_IRQ,
152 .flags = IORESOURCE_IRQ,
153 },
154 {
155 .start = MSM_UART1DM_PHYS,
156 .end = MSM_UART1DM_PHYS + PAGE_SIZE - 1,
157 .name = "uartdm_resource",
158 .flags = IORESOURCE_MEM,
159 },
160 {
161 .start = MSM_GSBI1_PHYS,
162 .end = MSM_GSBI1_PHYS + PAGE_SIZE - 1,
163 .name = "gsbi_resource",
164 .flags = IORESOURCE_MEM,
165 },
166};
167
168struct platform_device apq8064_device_uart_gsbi1 = {
169 .name = "msm_serial_hsl",
Jin Hong4bbbfba2012-02-02 21:48:07 -0800170 .id = 1,
Stepan Moskovchenko2701a442011-08-19 13:47:22 -0700171 .num_resources = ARRAY_SIZE(resources_uart_gsbi1),
172 .resource = resources_uart_gsbi1,
173};
174
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700175static struct resource resources_uart_gsbi3[] = {
176 {
177 .start = GSBI3_UARTDM_IRQ,
178 .end = GSBI3_UARTDM_IRQ,
179 .flags = IORESOURCE_IRQ,
180 },
181 {
182 .start = MSM_UART3DM_PHYS,
183 .end = MSM_UART3DM_PHYS + PAGE_SIZE - 1,
184 .name = "uartdm_resource",
185 .flags = IORESOURCE_MEM,
186 },
187 {
188 .start = MSM_GSBI3_PHYS,
189 .end = MSM_GSBI3_PHYS + PAGE_SIZE - 1,
190 .name = "gsbi_resource",
191 .flags = IORESOURCE_MEM,
192 },
193};
194
195struct platform_device apq8064_device_uart_gsbi3 = {
196 .name = "msm_serial_hsl",
197 .id = 0,
198 .num_resources = ARRAY_SIZE(resources_uart_gsbi3),
199 .resource = resources_uart_gsbi3,
200};
201
Jing Lin04601f92012-02-05 15:36:07 -0800202static struct resource resources_qup_i2c_gsbi3[] = {
203 {
204 .name = "gsbi_qup_i2c_addr",
205 .start = MSM_GSBI3_PHYS,
206 .end = MSM_GSBI3_PHYS + 4 - 1,
207 .flags = IORESOURCE_MEM,
208 },
209 {
210 .name = "qup_phys_addr",
211 .start = MSM_GSBI3_QUP_PHYS,
212 .end = MSM_GSBI3_QUP_PHYS + MSM_QUP_SIZE - 1,
213 .flags = IORESOURCE_MEM,
214 },
215 {
216 .name = "qup_err_intr",
217 .start = GSBI3_QUP_IRQ,
218 .end = GSBI3_QUP_IRQ,
219 .flags = IORESOURCE_IRQ,
220 },
221 {
222 .name = "i2c_clk",
223 .start = 9,
224 .end = 9,
225 .flags = IORESOURCE_IO,
226 },
227 {
228 .name = "i2c_sda",
229 .start = 8,
230 .end = 8,
231 .flags = IORESOURCE_IO,
232 },
233};
234
David Keitel3c40fc52012-02-09 17:53:52 -0800235static struct resource resources_qup_i2c_gsbi1[] = {
236 {
237 .name = "gsbi_qup_i2c_addr",
238 .start = MSM_GSBI1_PHYS,
239 .end = MSM_GSBI1_PHYS + 4 - 1,
240 .flags = IORESOURCE_MEM,
241 },
242 {
243 .name = "qup_phys_addr",
244 .start = MSM_GSBI1_QUP_PHYS,
245 .end = MSM_GSBI1_QUP_PHYS + MSM_QUP_SIZE - 1,
246 .flags = IORESOURCE_MEM,
247 },
248 {
249 .name = "qup_err_intr",
250 .start = APQ8064_GSBI1_QUP_IRQ,
251 .end = APQ8064_GSBI1_QUP_IRQ,
252 .flags = IORESOURCE_IRQ,
253 },
254 {
255 .name = "i2c_clk",
256 .start = 21,
257 .end = 21,
258 .flags = IORESOURCE_IO,
259 },
260 {
261 .name = "i2c_sda",
262 .start = 20,
263 .end = 20,
264 .flags = IORESOURCE_IO,
265 },
266};
267
268struct platform_device apq8064_device_qup_i2c_gsbi1 = {
269 .name = "qup_i2c",
270 .id = 0,
271 .num_resources = ARRAY_SIZE(resources_qup_i2c_gsbi1),
272 .resource = resources_qup_i2c_gsbi1,
273};
274
Jing Lin04601f92012-02-05 15:36:07 -0800275struct platform_device apq8064_device_qup_i2c_gsbi3 = {
276 .name = "qup_i2c",
277 .id = 3,
278 .num_resources = ARRAY_SIZE(resources_qup_i2c_gsbi3),
279 .resource = resources_qup_i2c_gsbi3,
280};
281
Kenneth Heitke748593a2011-07-15 15:45:11 -0600282static struct resource resources_qup_i2c_gsbi4[] = {
283 {
284 .name = "gsbi_qup_i2c_addr",
285 .start = MSM_GSBI4_PHYS,
Harini Jayaramane1554a92011-09-15 14:43:02 -0600286 .end = MSM_GSBI4_PHYS + 4 - 1,
Kenneth Heitke748593a2011-07-15 15:45:11 -0600287 .flags = IORESOURCE_MEM,
288 },
289 {
290 .name = "qup_phys_addr",
291 .start = MSM_GSBI4_QUP_PHYS,
Harini Jayaramane1554a92011-09-15 14:43:02 -0600292 .end = MSM_GSBI4_QUP_PHYS + MSM_QUP_SIZE - 1,
Kenneth Heitke748593a2011-07-15 15:45:11 -0600293 .flags = IORESOURCE_MEM,
294 },
295 {
296 .name = "qup_err_intr",
297 .start = GSBI4_QUP_IRQ,
298 .end = GSBI4_QUP_IRQ,
299 .flags = IORESOURCE_IRQ,
300 },
Kevin Chand07220e2012-02-13 15:52:22 -0800301 {
302 .name = "i2c_clk",
303 .start = 11,
304 .end = 11,
305 .flags = IORESOURCE_IO,
306 },
307 {
308 .name = "i2c_sda",
309 .start = 10,
310 .end = 10,
311 .flags = IORESOURCE_IO,
312 },
Kenneth Heitke748593a2011-07-15 15:45:11 -0600313};
314
315struct platform_device apq8064_device_qup_i2c_gsbi4 = {
316 .name = "qup_i2c",
317 .id = 4,
318 .num_resources = ARRAY_SIZE(resources_qup_i2c_gsbi4),
319 .resource = resources_qup_i2c_gsbi4,
320};
321
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700322static struct resource resources_qup_spi_gsbi5[] = {
323 {
324 .name = "spi_base",
325 .start = MSM_GSBI5_QUP_PHYS,
326 .end = MSM_GSBI5_QUP_PHYS + SZ_4K - 1,
327 .flags = IORESOURCE_MEM,
328 },
329 {
330 .name = "gsbi_base",
331 .start = MSM_GSBI5_PHYS,
332 .end = MSM_GSBI5_PHYS + 4 - 1,
333 .flags = IORESOURCE_MEM,
334 },
335 {
336 .name = "spi_irq_in",
337 .start = GSBI5_QUP_IRQ,
338 .end = GSBI5_QUP_IRQ,
339 .flags = IORESOURCE_IRQ,
340 },
341};
342
343struct platform_device apq8064_device_qup_spi_gsbi5 = {
344 .name = "spi_qsd",
345 .id = 0,
346 .num_resources = ARRAY_SIZE(resources_qup_spi_gsbi5),
347 .resource = resources_qup_spi_gsbi5,
348};
349
Joel King8f839b92012-04-01 14:37:46 -0700350static struct resource resources_qup_i2c_gsbi5[] = {
351 {
352 .name = "gsbi_qup_i2c_addr",
353 .start = MSM_GSBI5_PHYS,
354 .end = MSM_GSBI5_PHYS + 4 - 1,
355 .flags = IORESOURCE_MEM,
356 },
357 {
358 .name = "qup_phys_addr",
359 .start = MSM_GSBI5_QUP_PHYS,
360 .end = MSM_GSBI5_QUP_PHYS + MSM_QUP_SIZE - 1,
361 .flags = IORESOURCE_MEM,
362 },
363 {
364 .name = "qup_err_intr",
365 .start = GSBI5_QUP_IRQ,
366 .end = GSBI5_QUP_IRQ,
367 .flags = IORESOURCE_IRQ,
368 },
369 {
370 .name = "i2c_clk",
371 .start = 54,
372 .end = 54,
373 .flags = IORESOURCE_IO,
374 },
375 {
376 .name = "i2c_sda",
377 .start = 53,
378 .end = 53,
379 .flags = IORESOURCE_IO,
380 },
381};
382
383struct platform_device mpq8064_device_qup_i2c_gsbi5 = {
384 .name = "qup_i2c",
385 .id = 5,
386 .num_resources = ARRAY_SIZE(resources_qup_i2c_gsbi5),
387 .resource = resources_qup_i2c_gsbi5,
388};
389
Jin Hong4bbbfba2012-02-02 21:48:07 -0800390static struct resource resources_uart_gsbi7[] = {
391 {
392 .start = GSBI7_UARTDM_IRQ,
393 .end = GSBI7_UARTDM_IRQ,
394 .flags = IORESOURCE_IRQ,
395 },
396 {
397 .start = MSM_UART7DM_PHYS,
398 .end = MSM_UART7DM_PHYS + PAGE_SIZE - 1,
399 .name = "uartdm_resource",
400 .flags = IORESOURCE_MEM,
401 },
402 {
403 .start = MSM_GSBI7_PHYS,
404 .end = MSM_GSBI7_PHYS + PAGE_SIZE - 1,
405 .name = "gsbi_resource",
406 .flags = IORESOURCE_MEM,
407 },
408};
409
410struct platform_device apq8064_device_uart_gsbi7 = {
411 .name = "msm_serial_hsl",
412 .id = 0,
413 .num_resources = ARRAY_SIZE(resources_uart_gsbi7),
414 .resource = resources_uart_gsbi7,
415};
416
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800417struct platform_device apq_pcm = {
418 .name = "msm-pcm-dsp",
419 .id = -1,
420};
421
422struct platform_device apq_pcm_routing = {
423 .name = "msm-pcm-routing",
424 .id = -1,
425};
426
427struct platform_device apq_cpudai0 = {
428 .name = "msm-dai-q6",
429 .id = 0x4000,
430};
431
432struct platform_device apq_cpudai1 = {
433 .name = "msm-dai-q6",
434 .id = 0x4001,
435};
Santosh Mardieff9a742012-04-09 23:23:39 +0530436struct platform_device mpq_cpudai_sec_i2s_rx = {
437 .name = "msm-dai-q6",
438 .id = 4,
439};
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800440struct platform_device apq_cpudai_hdmi_rx = {
Swaminathan Sathappanfd9dbad2012-02-15 16:56:44 -0800441 .name = "msm-dai-q6-hdmi",
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800442 .id = 8,
443};
444
445struct platform_device apq_cpudai_bt_rx = {
446 .name = "msm-dai-q6",
447 .id = 0x3000,
448};
449
450struct platform_device apq_cpudai_bt_tx = {
451 .name = "msm-dai-q6",
452 .id = 0x3001,
453};
454
455struct platform_device apq_cpudai_fm_rx = {
456 .name = "msm-dai-q6",
457 .id = 0x3004,
458};
459
460struct platform_device apq_cpudai_fm_tx = {
461 .name = "msm-dai-q6",
462 .id = 0x3005,
463};
464
Helen Zeng8f925502012-03-05 16:50:17 -0800465struct platform_device apq_cpudai_slim_4_rx = {
466 .name = "msm-dai-q6",
467 .id = 0x4008,
468};
469
470struct platform_device apq_cpudai_slim_4_tx = {
471 .name = "msm-dai-q6",
472 .id = 0x4009,
473};
474
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800475/*
476 * Machine specific data for AUX PCM Interface
477 * which the driver will be unware of.
478 */
Kiran Kandi5f4ab692012-02-23 11:23:56 -0800479struct msm_dai_auxpcm_pdata apq_auxpcm_pdata = {
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800480 .clk = "pcm_clk",
Kuirong Wang547a9982012-05-04 18:29:11 -0700481 .mode_8k = {
482 .mode = AFE_PCM_CFG_MODE_PCM,
483 .sync = AFE_PCM_CFG_SYNC_INT,
484 .frame = AFE_PCM_CFG_FRM_256BPF,
485 .quant = AFE_PCM_CFG_QUANT_LINEAR_NOPAD,
486 .slot = 0,
487 .data = AFE_PCM_CFG_CDATAOE_MASTER,
488 .pcm_clk_rate = 2048000,
489 },
490 .mode_16k = {
491 .mode = AFE_PCM_CFG_MODE_PCM,
492 .sync = AFE_PCM_CFG_SYNC_INT,
493 .frame = AFE_PCM_CFG_FRM_256BPF,
494 .quant = AFE_PCM_CFG_QUANT_LINEAR_NOPAD,
495 .slot = 0,
496 .data = AFE_PCM_CFG_CDATAOE_MASTER,
497 .pcm_clk_rate = 4096000,
498 }
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800499};
500
501struct platform_device apq_cpudai_auxpcm_rx = {
502 .name = "msm-dai-q6",
503 .id = 2,
504 .dev = {
Kiran Kandi5f4ab692012-02-23 11:23:56 -0800505 .platform_data = &apq_auxpcm_pdata,
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800506 },
507};
508
509struct platform_device apq_cpudai_auxpcm_tx = {
510 .name = "msm-dai-q6",
511 .id = 3,
Kiran Kandi5f4ab692012-02-23 11:23:56 -0800512 .dev = {
513 .platform_data = &apq_auxpcm_pdata,
514 },
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800515};
516
Patrick Lai04baee942012-05-01 14:38:47 -0700517struct msm_mi2s_pdata mpq_mi2s_tx_data = {
518 .rx_sd_lines = 0,
519 .tx_sd_lines = MSM_MI2S_SD0 | MSM_MI2S_SD1 | MSM_MI2S_SD2 |
520 MSM_MI2S_SD3,
Kuirong Wangf23f8c52012-03-31 12:34:51 -0700521};
522
523struct platform_device mpq_cpudai_mi2s_tx = {
Patrick Lai04baee942012-05-01 14:38:47 -0700524 .name = "msm-dai-q6-mi2s",
525 .id = -1, /*MI2S_TX */
Kuirong Wangf23f8c52012-03-31 12:34:51 -0700526 .dev = {
527 .platform_data = &mpq_mi2s_tx_data,
528 },
529};
530
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800531struct platform_device apq_cpu_fe = {
532 .name = "msm-dai-fe",
533 .id = -1,
534};
535
536struct platform_device apq_stub_codec = {
537 .name = "msm-stub-codec",
538 .id = 1,
539};
540
541struct platform_device apq_voice = {
542 .name = "msm-pcm-voice",
543 .id = -1,
544};
545
546struct platform_device apq_voip = {
547 .name = "msm-voip-dsp",
548 .id = -1,
549};
550
551struct platform_device apq_lpa_pcm = {
552 .name = "msm-pcm-lpa",
553 .id = -1,
554};
555
Krishnankutty Kolathappilly4374e332012-03-18 22:27:30 -0700556struct platform_device apq_compr_dsp = {
557 .name = "msm-compr-dsp",
558 .id = -1,
559};
560
561struct platform_device apq_multi_ch_pcm = {
562 .name = "msm-multi-ch-pcm-dsp",
563 .id = -1,
564};
565
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800566struct platform_device apq_pcm_hostless = {
567 .name = "msm-pcm-hostless",
568 .id = -1,
569};
570
571struct platform_device apq_cpudai_afe_01_rx = {
572 .name = "msm-dai-q6",
573 .id = 0xE0,
574};
575
576struct platform_device apq_cpudai_afe_01_tx = {
577 .name = "msm-dai-q6",
578 .id = 0xF0,
579};
580
581struct platform_device apq_cpudai_afe_02_rx = {
582 .name = "msm-dai-q6",
583 .id = 0xF1,
584};
585
586struct platform_device apq_cpudai_afe_02_tx = {
587 .name = "msm-dai-q6",
588 .id = 0xE1,
589};
590
591struct platform_device apq_pcm_afe = {
592 .name = "msm-pcm-afe",
593 .id = -1,
594};
595
Neema Shetty8427c262012-02-16 11:23:43 -0800596struct platform_device apq_cpudai_stub = {
597 .name = "msm-dai-stub",
598 .id = -1,
599};
600
Neema Shetty3c9d2862012-03-11 01:25:32 -0800601struct platform_device apq_cpudai_slimbus_1_rx = {
602 .name = "msm-dai-q6",
603 .id = 0x4002,
604};
605
606struct platform_device apq_cpudai_slimbus_1_tx = {
607 .name = "msm-dai-q6",
608 .id = 0x4003,
609};
610
Kiran Kandi1e6371d2012-03-29 11:48:57 -0700611struct platform_device apq_cpudai_slimbus_2_tx = {
612 .name = "msm-dai-q6",
613 .id = 0x4005,
614};
615
Neema Shettyc9d86c32012-05-09 12:01:39 -0700616struct platform_device apq_cpudai_slimbus_3_rx = {
617 .name = "msm-dai-q6",
618 .id = 0x4006,
619};
620
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700621static struct resource resources_ssbi_pmic1[] = {
622 {
623 .start = MSM_PMIC1_SSBI_CMD_PHYS,
624 .end = MSM_PMIC1_SSBI_CMD_PHYS + MSM_PMIC_SSBI_SIZE - 1,
625 .flags = IORESOURCE_MEM,
626 },
627};
628
Sagar Dharia8bdcdaf2011-09-16 16:01:15 -0600629#define LPASS_SLIMBUS_PHYS 0x28080000
630#define LPASS_SLIMBUS_BAM_PHYS 0x28084000
Swaminathan Sathappan2316e082012-02-03 14:07:17 -0800631#define LPASS_SLIMBUS_SLEW (MSM8960_TLMM_PHYS + 0x207C)
Sagar Dharia8bdcdaf2011-09-16 16:01:15 -0600632/* Board info for the slimbus slave device */
633static struct resource slimbus_res[] = {
634 {
635 .start = LPASS_SLIMBUS_PHYS,
636 .end = LPASS_SLIMBUS_PHYS + 8191,
637 .flags = IORESOURCE_MEM,
638 .name = "slimbus_physical",
639 },
640 {
641 .start = LPASS_SLIMBUS_BAM_PHYS,
642 .end = LPASS_SLIMBUS_BAM_PHYS + 8191,
643 .flags = IORESOURCE_MEM,
644 .name = "slimbus_bam_physical",
645 },
646 {
Swaminathan Sathappan2316e082012-02-03 14:07:17 -0800647 .start = LPASS_SLIMBUS_SLEW,
648 .end = LPASS_SLIMBUS_SLEW + 4 - 1,
649 .flags = IORESOURCE_MEM,
650 .name = "slimbus_slew_reg",
651 },
652 {
Sagar Dharia8bdcdaf2011-09-16 16:01:15 -0600653 .start = SLIMBUS0_CORE_EE1_IRQ,
654 .end = SLIMBUS0_CORE_EE1_IRQ,
655 .flags = IORESOURCE_IRQ,
656 .name = "slimbus_irq",
657 },
658 {
659 .start = SLIMBUS0_BAM_EE1_IRQ,
660 .end = SLIMBUS0_BAM_EE1_IRQ,
661 .flags = IORESOURCE_IRQ,
662 .name = "slimbus_bam_irq",
663 },
664};
665
666struct platform_device apq8064_slim_ctrl = {
667 .name = "msm_slim_ctrl",
668 .id = 1,
669 .num_resources = ARRAY_SIZE(slimbus_res),
670 .resource = slimbus_res,
671 .dev = {
672 .coherent_dma_mask = 0xffffffffULL,
673 },
674};
675
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700676struct platform_device apq8064_device_ssbi_pmic1 = {
677 .name = "msm_ssbi",
678 .id = 0,
679 .resource = resources_ssbi_pmic1,
680 .num_resources = ARRAY_SIZE(resources_ssbi_pmic1),
681};
682
683static struct resource resources_ssbi_pmic2[] = {
684 {
685 .start = MSM_PMIC2_SSBI_CMD_PHYS,
686 .end = MSM_PMIC2_SSBI_CMD_PHYS + MSM_PMIC_SSBI_SIZE - 1,
687 .flags = IORESOURCE_MEM,
688 },
689};
690
691struct platform_device apq8064_device_ssbi_pmic2 = {
692 .name = "msm_ssbi",
693 .id = 1,
694 .resource = resources_ssbi_pmic2,
695 .num_resources = ARRAY_SIZE(resources_ssbi_pmic2),
696};
697
698static struct resource resources_otg[] = {
699 {
Hemant Kumard86c4882012-01-24 19:39:37 -0800700 .start = MSM_HSUSB1_PHYS,
701 .end = MSM_HSUSB1_PHYS + MSM_HSUSB1_SIZE - 1,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700702 .flags = IORESOURCE_MEM,
703 },
704 {
705 .start = USB1_HS_IRQ,
706 .end = USB1_HS_IRQ,
707 .flags = IORESOURCE_IRQ,
708 },
709};
710
Stepan Moskovchenko14aa6492011-08-08 15:15:01 -0700711struct platform_device apq8064_device_otg = {
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700712 .name = "msm_otg",
713 .id = -1,
714 .num_resources = ARRAY_SIZE(resources_otg),
715 .resource = resources_otg,
716 .dev = {
717 .coherent_dma_mask = 0xffffffff,
718 },
719};
720
721static struct resource resources_hsusb[] = {
722 {
Hemant Kumard86c4882012-01-24 19:39:37 -0800723 .start = MSM_HSUSB1_PHYS,
724 .end = MSM_HSUSB1_PHYS + MSM_HSUSB1_SIZE - 1,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700725 .flags = IORESOURCE_MEM,
726 },
727 {
728 .start = USB1_HS_IRQ,
729 .end = USB1_HS_IRQ,
730 .flags = IORESOURCE_IRQ,
731 },
732};
733
Stepan Moskovchenko14aa6492011-08-08 15:15:01 -0700734struct platform_device apq8064_device_gadget_peripheral = {
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700735 .name = "msm_hsusb",
736 .id = -1,
737 .num_resources = ARRAY_SIZE(resources_hsusb),
738 .resource = resources_hsusb,
739 .dev = {
740 .coherent_dma_mask = 0xffffffff,
741 },
742};
743
Hemant Kumard86c4882012-01-24 19:39:37 -0800744static struct resource resources_hsusb_host[] = {
745 {
746 .start = MSM_HSUSB1_PHYS,
747 .end = MSM_HSUSB1_PHYS + MSM_HSUSB1_SIZE - 1,
748 .flags = IORESOURCE_MEM,
749 },
750 {
751 .start = USB1_HS_IRQ,
752 .end = USB1_HS_IRQ,
753 .flags = IORESOURCE_IRQ,
754 },
755};
756
Hemant Kumara945b472012-01-25 15:08:06 -0800757static struct resource resources_hsic_host[] = {
758 {
759 .start = 0x12510000,
760 .end = 0x12510000 + SZ_4K - 1,
761 .flags = IORESOURCE_MEM,
762 },
763 {
764 .start = USB2_HSIC_IRQ,
765 .end = USB2_HSIC_IRQ,
766 .flags = IORESOURCE_IRQ,
767 },
768 {
769 .start = MSM_GPIO_TO_INT(49),
770 .end = MSM_GPIO_TO_INT(49),
771 .name = "peripheral_status_irq",
772 .flags = IORESOURCE_IRQ,
773 },
Vamsi Krishna6921cbe2012-02-21 18:34:43 -0800774 {
Hemant Kumar6fd65032012-05-23 13:02:24 -0700775 .start = 47,
776 .end = 47,
777 .name = "wakeup",
778 .flags = IORESOURCE_IO,
Vamsi Krishna6921cbe2012-02-21 18:34:43 -0800779 },
Hemant Kumara945b472012-01-25 15:08:06 -0800780};
781
Hemant Kumard86c4882012-01-24 19:39:37 -0800782static u64 dma_mask = DMA_BIT_MASK(32);
783struct platform_device apq8064_device_hsusb_host = {
784 .name = "msm_hsusb_host",
785 .id = -1,
786 .num_resources = ARRAY_SIZE(resources_hsusb_host),
787 .resource = resources_hsusb_host,
788 .dev = {
789 .dma_mask = &dma_mask,
790 .coherent_dma_mask = 0xffffffff,
791 },
792};
793
Hemant Kumara945b472012-01-25 15:08:06 -0800794struct platform_device apq8064_device_hsic_host = {
795 .name = "msm_hsic_host",
796 .id = -1,
797 .num_resources = ARRAY_SIZE(resources_hsic_host),
798 .resource = resources_hsic_host,
799 .dev = {
800 .dma_mask = &dma_mask,
801 .coherent_dma_mask = DMA_BIT_MASK(32),
802 },
803};
804
Manu Gautam91223e02011-11-08 15:27:22 +0530805static struct resource resources_ehci_host3[] = {
806{
807 .start = MSM_HSUSB3_PHYS,
808 .end = MSM_HSUSB3_PHYS + MSM_HSUSB3_SIZE - 1,
809 .flags = IORESOURCE_MEM,
810 },
811 {
812 .start = USB3_HS_IRQ,
813 .end = USB3_HS_IRQ,
814 .flags = IORESOURCE_IRQ,
815 },
816};
817
818struct platform_device apq8064_device_ehci_host3 = {
819 .name = "msm_ehci_host",
820 .id = 0,
821 .num_resources = ARRAY_SIZE(resources_ehci_host3),
822 .resource = resources_ehci_host3,
823 .dev = {
824 .dma_mask = &dma_mask,
825 .coherent_dma_mask = 0xffffffff,
826 },
827};
828
Hemant Kumar1d66e1c2012-02-13 15:24:59 -0800829static struct resource resources_ehci_host4[] = {
830{
831 .start = MSM_HSUSB4_PHYS,
832 .end = MSM_HSUSB4_PHYS + MSM_HSUSB4_SIZE - 1,
833 .flags = IORESOURCE_MEM,
834 },
835 {
836 .start = USB4_HS_IRQ,
837 .end = USB4_HS_IRQ,
838 .flags = IORESOURCE_IRQ,
839 },
840};
841
842struct platform_device apq8064_device_ehci_host4 = {
843 .name = "msm_ehci_host",
844 .id = 1,
845 .num_resources = ARRAY_SIZE(resources_ehci_host4),
846 .resource = resources_ehci_host4,
847 .dev = {
848 .dma_mask = &dma_mask,
849 .coherent_dma_mask = 0xffffffff,
850 },
851};
852
Mohan Kumar Gubbihalli Lachma Naik7f72edd2012-02-06 17:26:47 -0800853/* MSM Video core device */
854#ifdef CONFIG_MSM_BUS_SCALING
855static struct msm_bus_vectors vidc_init_vectors[] = {
856 {
857 .src = MSM_BUS_MASTER_VIDEO_ENC,
858 .dst = MSM_BUS_SLAVE_EBI_CH0,
859 .ab = 0,
860 .ib = 0,
861 },
862 {
863 .src = MSM_BUS_MASTER_VIDEO_DEC,
864 .dst = MSM_BUS_SLAVE_EBI_CH0,
865 .ab = 0,
866 .ib = 0,
867 },
868 {
869 .src = MSM_BUS_MASTER_AMPSS_M0,
870 .dst = MSM_BUS_SLAVE_EBI_CH0,
871 .ab = 0,
872 .ib = 0,
873 },
874 {
875 .src = MSM_BUS_MASTER_AMPSS_M0,
876 .dst = MSM_BUS_SLAVE_EBI_CH0,
877 .ab = 0,
878 .ib = 0,
879 },
880};
881static struct msm_bus_vectors vidc_venc_vga_vectors[] = {
882 {
883 .src = MSM_BUS_MASTER_VIDEO_ENC,
884 .dst = MSM_BUS_SLAVE_EBI_CH0,
885 .ab = 54525952,
886 .ib = 436207616,
887 },
888 {
889 .src = MSM_BUS_MASTER_VIDEO_DEC,
890 .dst = MSM_BUS_SLAVE_EBI_CH0,
891 .ab = 72351744,
892 .ib = 289406976,
893 },
894 {
895 .src = MSM_BUS_MASTER_AMPSS_M0,
896 .dst = MSM_BUS_SLAVE_EBI_CH0,
897 .ab = 500000,
898 .ib = 1000000,
899 },
900 {
901 .src = MSM_BUS_MASTER_AMPSS_M0,
902 .dst = MSM_BUS_SLAVE_EBI_CH0,
903 .ab = 500000,
904 .ib = 1000000,
905 },
906};
907static struct msm_bus_vectors vidc_vdec_vga_vectors[] = {
908 {
909 .src = MSM_BUS_MASTER_VIDEO_ENC,
910 .dst = MSM_BUS_SLAVE_EBI_CH0,
911 .ab = 40894464,
912 .ib = 327155712,
913 },
914 {
915 .src = MSM_BUS_MASTER_VIDEO_DEC,
916 .dst = MSM_BUS_SLAVE_EBI_CH0,
917 .ab = 48234496,
918 .ib = 192937984,
919 },
920 {
921 .src = MSM_BUS_MASTER_AMPSS_M0,
922 .dst = MSM_BUS_SLAVE_EBI_CH0,
923 .ab = 500000,
924 .ib = 2000000,
925 },
926 {
927 .src = MSM_BUS_MASTER_AMPSS_M0,
928 .dst = MSM_BUS_SLAVE_EBI_CH0,
929 .ab = 500000,
930 .ib = 2000000,
931 },
932};
933static struct msm_bus_vectors vidc_venc_720p_vectors[] = {
934 {
935 .src = MSM_BUS_MASTER_VIDEO_ENC,
936 .dst = MSM_BUS_SLAVE_EBI_CH0,
937 .ab = 163577856,
938 .ib = 1308622848,
939 },
940 {
941 .src = MSM_BUS_MASTER_VIDEO_DEC,
942 .dst = MSM_BUS_SLAVE_EBI_CH0,
943 .ab = 219152384,
944 .ib = 876609536,
945 },
946 {
947 .src = MSM_BUS_MASTER_AMPSS_M0,
948 .dst = MSM_BUS_SLAVE_EBI_CH0,
949 .ab = 1750000,
950 .ib = 3500000,
951 },
952 {
953 .src = MSM_BUS_MASTER_AMPSS_M0,
954 .dst = MSM_BUS_SLAVE_EBI_CH0,
955 .ab = 1750000,
956 .ib = 3500000,
957 },
958};
959static struct msm_bus_vectors vidc_vdec_720p_vectors[] = {
960 {
961 .src = MSM_BUS_MASTER_VIDEO_ENC,
962 .dst = MSM_BUS_SLAVE_EBI_CH0,
963 .ab = 121634816,
964 .ib = 973078528,
965 },
966 {
967 .src = MSM_BUS_MASTER_VIDEO_DEC,
968 .dst = MSM_BUS_SLAVE_EBI_CH0,
969 .ab = 155189248,
970 .ib = 620756992,
971 },
972 {
973 .src = MSM_BUS_MASTER_AMPSS_M0,
974 .dst = MSM_BUS_SLAVE_EBI_CH0,
975 .ab = 1750000,
976 .ib = 7000000,
977 },
978 {
979 .src = MSM_BUS_MASTER_AMPSS_M0,
980 .dst = MSM_BUS_SLAVE_EBI_CH0,
981 .ab = 1750000,
982 .ib = 7000000,
983 },
984};
985static struct msm_bus_vectors vidc_venc_1080p_vectors[] = {
986 {
987 .src = MSM_BUS_MASTER_VIDEO_ENC,
988 .dst = MSM_BUS_SLAVE_EBI_CH0,
989 .ab = 372244480,
990 .ib = 2560000000U,
991 },
992 {
993 .src = MSM_BUS_MASTER_VIDEO_DEC,
994 .dst = MSM_BUS_SLAVE_EBI_CH0,
995 .ab = 501219328,
996 .ib = 2560000000U,
997 },
998 {
999 .src = MSM_BUS_MASTER_AMPSS_M0,
1000 .dst = MSM_BUS_SLAVE_EBI_CH0,
1001 .ab = 2500000,
1002 .ib = 5000000,
1003 },
1004 {
1005 .src = MSM_BUS_MASTER_AMPSS_M0,
1006 .dst = MSM_BUS_SLAVE_EBI_CH0,
1007 .ab = 2500000,
1008 .ib = 5000000,
1009 },
1010};
1011static struct msm_bus_vectors vidc_vdec_1080p_vectors[] = {
1012 {
1013 .src = MSM_BUS_MASTER_VIDEO_ENC,
1014 .dst = MSM_BUS_SLAVE_EBI_CH0,
1015 .ab = 222298112,
1016 .ib = 2560000000U,
1017 },
1018 {
1019 .src = MSM_BUS_MASTER_VIDEO_DEC,
1020 .dst = MSM_BUS_SLAVE_EBI_CH0,
1021 .ab = 330301440,
1022 .ib = 2560000000U,
1023 },
1024 {
1025 .src = MSM_BUS_MASTER_AMPSS_M0,
1026 .dst = MSM_BUS_SLAVE_EBI_CH0,
1027 .ab = 2500000,
1028 .ib = 700000000,
1029 },
1030 {
1031 .src = MSM_BUS_MASTER_AMPSS_M0,
1032 .dst = MSM_BUS_SLAVE_EBI_CH0,
1033 .ab = 2500000,
1034 .ib = 10000000,
1035 },
1036};
1037
1038static struct msm_bus_paths vidc_bus_client_config[] = {
1039 {
1040 ARRAY_SIZE(vidc_init_vectors),
1041 vidc_init_vectors,
1042 },
1043 {
1044 ARRAY_SIZE(vidc_venc_vga_vectors),
1045 vidc_venc_vga_vectors,
1046 },
1047 {
1048 ARRAY_SIZE(vidc_vdec_vga_vectors),
1049 vidc_vdec_vga_vectors,
1050 },
1051 {
1052 ARRAY_SIZE(vidc_venc_720p_vectors),
1053 vidc_venc_720p_vectors,
1054 },
1055 {
1056 ARRAY_SIZE(vidc_vdec_720p_vectors),
1057 vidc_vdec_720p_vectors,
1058 },
1059 {
1060 ARRAY_SIZE(vidc_venc_1080p_vectors),
1061 vidc_venc_1080p_vectors,
1062 },
1063 {
1064 ARRAY_SIZE(vidc_vdec_1080p_vectors),
1065 vidc_vdec_1080p_vectors,
1066 },
1067};
1068
1069static struct msm_bus_scale_pdata vidc_bus_client_data = {
1070 vidc_bus_client_config,
1071 ARRAY_SIZE(vidc_bus_client_config),
1072 .name = "vidc",
1073};
1074#endif
1075
1076
1077#define APQ8064_VIDC_BASE_PHYS 0x04400000
1078#define APQ8064_VIDC_BASE_SIZE 0x00100000
1079
1080static struct resource apq8064_device_vidc_resources[] = {
1081 {
1082 .start = APQ8064_VIDC_BASE_PHYS,
1083 .end = APQ8064_VIDC_BASE_PHYS + APQ8064_VIDC_BASE_SIZE - 1,
1084 .flags = IORESOURCE_MEM,
1085 },
1086 {
1087 .start = VCODEC_IRQ,
1088 .end = VCODEC_IRQ,
1089 .flags = IORESOURCE_IRQ,
1090 },
1091};
1092
1093struct msm_vidc_platform_data apq8064_vidc_platform_data = {
1094#ifdef CONFIG_MSM_BUS_SCALING
1095 .vidc_bus_client_pdata = &vidc_bus_client_data,
1096#endif
1097#ifdef CONFIG_MSM_MULTIMEDIA_USE_ION
1098 .memtype = ION_CP_MM_HEAP_ID,
1099 .enable_ion = 1,
Deepak kotureda295a2012-05-10 19:49:46 -07001100 .cp_enabled = 1,
Mohan Kumar Gubbihalli Lachma Naik7f72edd2012-02-06 17:26:47 -08001101#else
1102 .memtype = MEMTYPE_EBI1,
1103 .enable_ion = 0,
1104#endif
1105 .disable_dmx = 0,
1106 .disable_fullhd = 0,
Mohan Kumar Gubbihalli Lachma Naiked9dc912012-03-01 19:11:14 -08001107 .cont_mode_dpb_count = 18,
Mohan Kumar Gubbihalli Lachma Naik7f72edd2012-02-06 17:26:47 -08001108};
1109
1110struct platform_device apq8064_msm_device_vidc = {
1111 .name = "msm_vidc",
1112 .id = 0,
1113 .num_resources = ARRAY_SIZE(apq8064_device_vidc_resources),
1114 .resource = apq8064_device_vidc_resources,
1115 .dev = {
1116 .platform_data = &apq8064_vidc_platform_data,
1117 },
1118};
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001119#define MSM_SDC1_BASE 0x12400000
1120#define MSM_SDC1_DML_BASE (MSM_SDC1_BASE + 0x800)
1121#define MSM_SDC1_BAM_BASE (MSM_SDC1_BASE + 0x2000)
1122#define MSM_SDC2_BASE 0x12140000
1123#define MSM_SDC2_DML_BASE (MSM_SDC2_BASE + 0x800)
1124#define MSM_SDC2_BAM_BASE (MSM_SDC2_BASE + 0x2000)
1125#define MSM_SDC3_BASE 0x12180000
1126#define MSM_SDC3_DML_BASE (MSM_SDC3_BASE + 0x800)
1127#define MSM_SDC3_BAM_BASE (MSM_SDC3_BASE + 0x2000)
1128#define MSM_SDC4_BASE 0x121C0000
1129#define MSM_SDC4_DML_BASE (MSM_SDC4_BASE + 0x800)
1130#define MSM_SDC4_BAM_BASE (MSM_SDC4_BASE + 0x2000)
1131
1132static struct resource resources_sdc1[] = {
1133 {
1134 .name = "core_mem",
1135 .flags = IORESOURCE_MEM,
1136 .start = MSM_SDC1_BASE,
1137 .end = MSM_SDC1_DML_BASE - 1,
1138 },
1139 {
1140 .name = "core_irq",
1141 .flags = IORESOURCE_IRQ,
1142 .start = SDC1_IRQ_0,
1143 .end = SDC1_IRQ_0
1144 },
1145#ifdef CONFIG_MMC_MSM_SPS_SUPPORT
1146 {
1147 .name = "sdcc_dml_addr",
1148 .start = MSM_SDC1_DML_BASE,
1149 .end = MSM_SDC1_BAM_BASE - 1,
1150 .flags = IORESOURCE_MEM,
1151 },
1152 {
1153 .name = "sdcc_bam_addr",
1154 .start = MSM_SDC1_BAM_BASE,
1155 .end = MSM_SDC1_BAM_BASE + (2 * SZ_4K) - 1,
1156 .flags = IORESOURCE_MEM,
1157 },
1158 {
1159 .name = "sdcc_bam_irq",
1160 .start = SDC1_BAM_IRQ,
1161 .end = SDC1_BAM_IRQ,
1162 .flags = IORESOURCE_IRQ,
1163 },
1164#endif
1165};
1166
1167static struct resource resources_sdc2[] = {
1168 {
1169 .name = "core_mem",
1170 .flags = IORESOURCE_MEM,
1171 .start = MSM_SDC2_BASE,
1172 .end = MSM_SDC2_DML_BASE - 1,
1173 },
1174 {
1175 .name = "core_irq",
1176 .flags = IORESOURCE_IRQ,
1177 .start = SDC2_IRQ_0,
1178 .end = SDC2_IRQ_0
1179 },
1180#ifdef CONFIG_MMC_MSM_SPS_SUPPORT
1181 {
1182 .name = "sdcc_dml_addr",
1183 .start = MSM_SDC2_DML_BASE,
1184 .end = MSM_SDC2_BAM_BASE - 1,
1185 .flags = IORESOURCE_MEM,
1186 },
1187 {
1188 .name = "sdcc_bam_addr",
1189 .start = MSM_SDC2_BAM_BASE,
1190 .end = MSM_SDC2_BAM_BASE + (2 * SZ_4K) - 1,
1191 .flags = IORESOURCE_MEM,
1192 },
1193 {
1194 .name = "sdcc_bam_irq",
1195 .start = SDC2_BAM_IRQ,
1196 .end = SDC2_BAM_IRQ,
1197 .flags = IORESOURCE_IRQ,
1198 },
1199#endif
1200};
1201
1202static struct resource resources_sdc3[] = {
1203 {
1204 .name = "core_mem",
1205 .flags = IORESOURCE_MEM,
1206 .start = MSM_SDC3_BASE,
1207 .end = MSM_SDC3_DML_BASE - 1,
1208 },
1209 {
1210 .name = "core_irq",
1211 .flags = IORESOURCE_IRQ,
1212 .start = SDC3_IRQ_0,
1213 .end = SDC3_IRQ_0
1214 },
1215#ifdef CONFIG_MMC_MSM_SPS_SUPPORT
1216 {
1217 .name = "sdcc_dml_addr",
1218 .start = MSM_SDC3_DML_BASE,
1219 .end = MSM_SDC3_BAM_BASE - 1,
1220 .flags = IORESOURCE_MEM,
1221 },
1222 {
1223 .name = "sdcc_bam_addr",
1224 .start = MSM_SDC3_BAM_BASE,
1225 .end = MSM_SDC3_BAM_BASE + (2 * SZ_4K) - 1,
1226 .flags = IORESOURCE_MEM,
1227 },
1228 {
1229 .name = "sdcc_bam_irq",
1230 .start = SDC3_BAM_IRQ,
1231 .end = SDC3_BAM_IRQ,
1232 .flags = IORESOURCE_IRQ,
1233 },
1234#endif
1235};
1236
1237static struct resource resources_sdc4[] = {
1238 {
1239 .name = "core_mem",
1240 .flags = IORESOURCE_MEM,
1241 .start = MSM_SDC4_BASE,
1242 .end = MSM_SDC4_DML_BASE - 1,
1243 },
1244 {
1245 .name = "core_irq",
1246 .flags = IORESOURCE_IRQ,
1247 .start = SDC4_IRQ_0,
1248 .end = SDC4_IRQ_0
1249 },
1250#ifdef CONFIG_MMC_MSM_SPS_SUPPORT
1251 {
1252 .name = "sdcc_dml_addr",
1253 .start = MSM_SDC4_DML_BASE,
1254 .end = MSM_SDC4_BAM_BASE - 1,
1255 .flags = IORESOURCE_MEM,
1256 },
1257 {
1258 .name = "sdcc_bam_addr",
1259 .start = MSM_SDC4_BAM_BASE,
1260 .end = MSM_SDC4_BAM_BASE + (2 * SZ_4K) - 1,
1261 .flags = IORESOURCE_MEM,
1262 },
1263 {
1264 .name = "sdcc_bam_irq",
1265 .start = SDC4_BAM_IRQ,
1266 .end = SDC4_BAM_IRQ,
1267 .flags = IORESOURCE_IRQ,
1268 },
1269#endif
1270};
1271
1272struct platform_device apq8064_device_sdc1 = {
1273 .name = "msm_sdcc",
1274 .id = 1,
1275 .num_resources = ARRAY_SIZE(resources_sdc1),
1276 .resource = resources_sdc1,
1277 .dev = {
1278 .coherent_dma_mask = 0xffffffff,
1279 },
1280};
1281
1282struct platform_device apq8064_device_sdc2 = {
1283 .name = "msm_sdcc",
1284 .id = 2,
1285 .num_resources = ARRAY_SIZE(resources_sdc2),
1286 .resource = resources_sdc2,
1287 .dev = {
1288 .coherent_dma_mask = 0xffffffff,
1289 },
1290};
1291
1292struct platform_device apq8064_device_sdc3 = {
1293 .name = "msm_sdcc",
1294 .id = 3,
1295 .num_resources = ARRAY_SIZE(resources_sdc3),
1296 .resource = resources_sdc3,
1297 .dev = {
1298 .coherent_dma_mask = 0xffffffff,
1299 },
1300};
1301
1302struct platform_device apq8064_device_sdc4 = {
1303 .name = "msm_sdcc",
1304 .id = 4,
1305 .num_resources = ARRAY_SIZE(resources_sdc4),
1306 .resource = resources_sdc4,
1307 .dev = {
1308 .coherent_dma_mask = 0xffffffff,
1309 },
1310};
1311
1312static struct platform_device *apq8064_sdcc_devices[] __initdata = {
1313 &apq8064_device_sdc1,
1314 &apq8064_device_sdc2,
1315 &apq8064_device_sdc3,
1316 &apq8064_device_sdc4,
1317};
1318
1319int __init apq8064_add_sdcc(unsigned int controller,
1320 struct mmc_platform_data *plat)
1321{
1322 struct platform_device *pdev;
1323
1324 if (!plat)
1325 return 0;
1326 if (controller < 1 || controller > 4)
1327 return -EINVAL;
1328
1329 pdev = apq8064_sdcc_devices[controller-1];
1330 pdev->dev.platform_data = plat;
1331 return platform_device_register(pdev);
1332}
1333
Yan He06913ce2011-08-26 16:33:46 -07001334static struct resource resources_sps[] = {
1335 {
1336 .name = "pipe_mem",
1337 .start = 0x12800000,
1338 .end = 0x12800000 + 0x4000 - 1,
1339 .flags = IORESOURCE_MEM,
1340 },
1341 {
1342 .name = "bamdma_dma",
1343 .start = 0x12240000,
1344 .end = 0x12240000 + 0x1000 - 1,
1345 .flags = IORESOURCE_MEM,
1346 },
1347 {
1348 .name = "bamdma_bam",
1349 .start = 0x12244000,
1350 .end = 0x12244000 + 0x4000 - 1,
1351 .flags = IORESOURCE_MEM,
1352 },
1353 {
1354 .name = "bamdma_irq",
1355 .start = SPS_BAM_DMA_IRQ,
1356 .end = SPS_BAM_DMA_IRQ,
1357 .flags = IORESOURCE_IRQ,
1358 },
1359};
1360
Gagan Mac8a7a5d32011-11-11 16:43:06 -07001361struct platform_device msm_bus_8064_sys_fabric = {
1362 .name = "msm_bus_fabric",
1363 .id = MSM_BUS_FAB_SYSTEM,
1364};
1365struct platform_device msm_bus_8064_apps_fabric = {
1366 .name = "msm_bus_fabric",
1367 .id = MSM_BUS_FAB_APPSS,
1368};
1369struct platform_device msm_bus_8064_mm_fabric = {
1370 .name = "msm_bus_fabric",
1371 .id = MSM_BUS_FAB_MMSS,
1372};
1373struct platform_device msm_bus_8064_sys_fpb = {
1374 .name = "msm_bus_fabric",
1375 .id = MSM_BUS_FAB_SYSTEM_FPB,
1376};
1377struct platform_device msm_bus_8064_cpss_fpb = {
1378 .name = "msm_bus_fabric",
1379 .id = MSM_BUS_FAB_CPSS_FPB,
1380};
1381
Yan He06913ce2011-08-26 16:33:46 -07001382static struct msm_sps_platform_data msm_sps_pdata = {
1383 .bamdma_restricted_pipes = 0x06,
1384};
1385
1386struct platform_device msm_device_sps_apq8064 = {
1387 .name = "msm_sps",
1388 .id = -1,
1389 .num_resources = ARRAY_SIZE(resources_sps),
1390 .resource = resources_sps,
1391 .dev.platform_data = &msm_sps_pdata,
1392};
1393
Eric Holmberg023d25c2012-03-01 12:27:55 -07001394static struct resource smd_resource[] = {
1395 {
1396 .name = "a9_m2a_0",
1397 .start = INT_A9_M2A_0,
1398 .flags = IORESOURCE_IRQ,
1399 },
1400 {
1401 .name = "a9_m2a_5",
1402 .start = INT_A9_M2A_5,
1403 .flags = IORESOURCE_IRQ,
1404 },
1405 {
1406 .name = "adsp_a11",
1407 .start = INT_ADSP_A11,
1408 .flags = IORESOURCE_IRQ,
1409 },
1410 {
1411 .name = "adsp_a11_smsm",
1412 .start = INT_ADSP_A11_SMSM,
1413 .flags = IORESOURCE_IRQ,
1414 },
1415 {
1416 .name = "dsps_a11",
1417 .start = INT_DSPS_A11,
1418 .flags = IORESOURCE_IRQ,
1419 },
1420 {
1421 .name = "dsps_a11_smsm",
1422 .start = INT_DSPS_A11_SMSM,
1423 .flags = IORESOURCE_IRQ,
1424 },
1425 {
1426 .name = "wcnss_a11",
1427 .start = INT_WCNSS_A11,
1428 .flags = IORESOURCE_IRQ,
1429 },
1430 {
1431 .name = "wcnss_a11_smsm",
1432 .start = INT_WCNSS_A11_SMSM,
1433 .flags = IORESOURCE_IRQ,
1434 },
1435};
1436
1437static struct smd_subsystem_config smd_config_list[] = {
1438 {
1439 .irq_config_id = SMD_MODEM,
1440 .subsys_name = "gss",
1441 .edge = SMD_APPS_MODEM,
1442
1443 .smd_int.irq_name = "a9_m2a_0",
1444 .smd_int.flags = IRQF_TRIGGER_RISING,
1445 .smd_int.irq_id = -1,
1446 .smd_int.device_name = "smd_dev",
1447 .smd_int.dev_id = 0,
1448 .smd_int.out_bit_pos = 1 << 3,
1449 .smd_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1450 .smd_int.out_offset = 0x8,
1451
1452 .smsm_int.irq_name = "a9_m2a_5",
1453 .smsm_int.flags = IRQF_TRIGGER_RISING,
1454 .smsm_int.irq_id = -1,
1455 .smsm_int.device_name = "smd_smsm",
1456 .smsm_int.dev_id = 0,
1457 .smsm_int.out_bit_pos = 1 << 4,
1458 .smsm_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1459 .smsm_int.out_offset = 0x8,
1460 },
1461 {
1462 .irq_config_id = SMD_Q6,
1463 .subsys_name = "q6",
1464 .edge = SMD_APPS_QDSP,
1465
1466 .smd_int.irq_name = "adsp_a11",
1467 .smd_int.flags = IRQF_TRIGGER_RISING,
1468 .smd_int.irq_id = -1,
1469 .smd_int.device_name = "smd_dev",
1470 .smd_int.dev_id = 0,
1471 .smd_int.out_bit_pos = 1 << 15,
1472 .smd_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1473 .smd_int.out_offset = 0x8,
1474
1475 .smsm_int.irq_name = "adsp_a11_smsm",
1476 .smsm_int.flags = IRQF_TRIGGER_RISING,
1477 .smsm_int.irq_id = -1,
1478 .smsm_int.device_name = "smd_smsm",
1479 .smsm_int.dev_id = 0,
1480 .smsm_int.out_bit_pos = 1 << 14,
1481 .smsm_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1482 .smsm_int.out_offset = 0x8,
1483 },
1484 {
1485 .irq_config_id = SMD_DSPS,
1486 .subsys_name = "dsps",
1487 .edge = SMD_APPS_DSPS,
1488
1489 .smd_int.irq_name = "dsps_a11",
1490 .smd_int.flags = IRQF_TRIGGER_RISING,
1491 .smd_int.irq_id = -1,
1492 .smd_int.device_name = "smd_dev",
1493 .smd_int.dev_id = 0,
1494 .smd_int.out_bit_pos = 1,
1495 .smd_int.out_base = (void __iomem *)MSM_SIC_NON_SECURE_BASE,
1496 .smd_int.out_offset = 0x4080,
1497
1498 .smsm_int.irq_name = "dsps_a11_smsm",
1499 .smsm_int.flags = IRQF_TRIGGER_RISING,
1500 .smsm_int.irq_id = -1,
1501 .smsm_int.device_name = "smd_smsm",
1502 .smsm_int.dev_id = 0,
1503 .smsm_int.out_bit_pos = 1,
1504 .smsm_int.out_base = (void __iomem *)MSM_SIC_NON_SECURE_BASE,
1505 .smsm_int.out_offset = 0x4094,
1506 },
1507 {
1508 .irq_config_id = SMD_WCNSS,
1509 .subsys_name = "wcnss",
1510 .edge = SMD_APPS_WCNSS,
1511
1512 .smd_int.irq_name = "wcnss_a11",
1513 .smd_int.flags = IRQF_TRIGGER_RISING,
1514 .smd_int.irq_id = -1,
1515 .smd_int.device_name = "smd_dev",
1516 .smd_int.dev_id = 0,
1517 .smd_int.out_bit_pos = 1 << 25,
1518 .smd_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1519 .smd_int.out_offset = 0x8,
1520
1521 .smsm_int.irq_name = "wcnss_a11_smsm",
1522 .smsm_int.flags = IRQF_TRIGGER_RISING,
1523 .smsm_int.irq_id = -1,
1524 .smsm_int.device_name = "smd_smsm",
1525 .smsm_int.dev_id = 0,
1526 .smsm_int.out_bit_pos = 1 << 23,
1527 .smsm_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1528 .smsm_int.out_offset = 0x8,
1529 },
1530};
1531
Eric Holmberg2bb6ccd2012-03-13 13:05:14 -06001532static struct smd_subsystem_restart_config smd_ssr_config = {
1533 .disable_smsm_reset_handshake = 1,
1534};
1535
Eric Holmberg023d25c2012-03-01 12:27:55 -07001536static struct smd_platform smd_platform_data = {
1537 .num_ss_configs = ARRAY_SIZE(smd_config_list),
1538 .smd_ss_configs = smd_config_list,
Eric Holmberg2bb6ccd2012-03-13 13:05:14 -06001539 .smd_ssr_config = &smd_ssr_config,
Eric Holmberg023d25c2012-03-01 12:27:55 -07001540};
1541
Jeff Hugo0c0f5e92011-09-28 13:55:45 -06001542struct platform_device msm_device_smd_apq8064 = {
1543 .name = "msm_smd",
1544 .id = -1,
Eric Holmberg023d25c2012-03-01 12:27:55 -07001545 .resource = smd_resource,
1546 .num_resources = ARRAY_SIZE(smd_resource),
1547 .dev = {
1548 .platform_data = &smd_platform_data,
1549 },
Jeff Hugo0c0f5e92011-09-28 13:55:45 -06001550};
1551
Niranjana Vishwanathapura06f89332012-05-03 17:11:13 -06001552static struct resource resources_msm_pcie[] = {
1553 {
1554 .name = "parf",
1555 .start = PCIE20_PARF_PHYS,
1556 .end = PCIE20_PARF_PHYS + PCIE20_PARF_SIZE - 1,
1557 .flags = IORESOURCE_MEM,
1558 },
1559 {
1560 .name = "elbi",
1561 .start = PCIE20_ELBI_PHYS,
1562 .end = PCIE20_ELBI_PHYS + PCIE20_ELBI_SIZE - 1,
1563 .flags = IORESOURCE_MEM,
1564 },
1565 {
1566 .name = "pcie20",
1567 .start = PCIE20_PHYS,
1568 .end = PCIE20_PHYS + PCIE20_SIZE - 1,
1569 .flags = IORESOURCE_MEM,
1570 },
1571 {
1572 .name = "axi_bar",
1573 .start = PCIE_AXI_BAR_PHYS,
1574 .end = PCIE_AXI_BAR_PHYS + PCIE_AXI_BAR_SIZE - 1,
1575 .flags = IORESOURCE_MEM,
1576 },
1577 {
1578 .name = "axi_conf",
1579 .start = PCIE_AXI_CONF_PHYS,
1580 .end = PCIE_AXI_CONF_PHYS + PCIE_AXI_CONF_SIZE - 1,
1581 .flags = IORESOURCE_MEM,
1582 },
1583};
1584
1585struct platform_device msm_device_pcie = {
1586 .name = "msm_pcie",
1587 .id = -1,
1588 .num_resources = ARRAY_SIZE(resources_msm_pcie),
1589 .resource = resources_msm_pcie,
1590};
1591
Ramesh Masavarapuf46be1b2011-11-03 11:13:41 -07001592#ifdef CONFIG_HW_RANDOM_MSM
1593/* PRNG device */
1594#define MSM_PRNG_PHYS 0x1A500000
1595static struct resource rng_resources = {
1596 .flags = IORESOURCE_MEM,
1597 .start = MSM_PRNG_PHYS,
1598 .end = MSM_PRNG_PHYS + SZ_512 - 1,
1599};
1600
1601struct platform_device apq8064_device_rng = {
1602 .name = "msm_rng",
1603 .id = 0,
1604 .num_resources = 1,
1605 .resource = &rng_resources,
1606};
1607#endif
1608
Matt Wagantall292aace2012-01-26 19:12:34 -08001609static struct resource msm_gss_resources[] = {
1610 {
1611 .start = 0x10000000,
1612 .end = 0x10000000 + SZ_256 - 1,
1613 .flags = IORESOURCE_MEM,
1614 },
Matt Wagantall19ac4fd2012-02-03 20:18:23 -08001615 {
1616 .start = 0x10008000,
1617 .end = 0x10008000 + SZ_256 - 1,
1618 .flags = IORESOURCE_MEM,
1619 },
Matt Wagantall292aace2012-01-26 19:12:34 -08001620};
1621
1622struct platform_device msm_gss = {
1623 .name = "pil_gss",
1624 .id = -1,
1625 .num_resources = ARRAY_SIZE(msm_gss_resources),
1626 .resource = msm_gss_resources,
1627};
1628
Matt Wagantall1f65d9d2012-04-25 14:24:20 -07001629static struct fs_driver_data gfx3d_fs_data = {
1630 .clks = (struct fs_clk_data[]){
1631 { .name = "core_clk", .reset_rate = 27000000 },
1632 { .name = "iface_clk" },
1633 { .name = "bus_clk" },
1634 { 0 }
1635 },
1636 .bus_port0 = MSM_BUS_MASTER_GRAPHICS_3D,
1637 .bus_port1 = MSM_BUS_MASTER_GRAPHICS_3D_PORT1,
Matt Wagantall1875d322012-02-22 16:11:33 -08001638};
Matt Wagantall1f65d9d2012-04-25 14:24:20 -07001639
1640static struct fs_driver_data ijpeg_fs_data = {
1641 .clks = (struct fs_clk_data[]){
1642 { .name = "core_clk" },
1643 { .name = "iface_clk" },
1644 { .name = "bus_clk" },
1645 { 0 }
1646 },
1647 .bus_port0 = MSM_BUS_MASTER_JPEG_ENC,
1648};
1649
1650static struct fs_driver_data rot_fs_data = {
1651 .clks = (struct fs_clk_data[]){
1652 { .name = "core_clk" },
1653 { .name = "iface_clk" },
1654 { .name = "bus_clk" },
1655 { 0 }
1656 },
1657 .bus_port0 = MSM_BUS_MASTER_ROTATOR,
1658};
1659
1660static struct fs_driver_data ved_fs_data = {
1661 .clks = (struct fs_clk_data[]){
1662 { .name = "core_clk" },
1663 { .name = "iface_clk" },
1664 { .name = "bus_clk" },
1665 { 0 }
1666 },
1667 .bus_port0 = MSM_BUS_MASTER_VIDEO_ENC,
1668 .bus_port1 = MSM_BUS_MASTER_VIDEO_DEC,
1669};
1670
1671static struct fs_driver_data vfe_fs_data = {
1672 .clks = (struct fs_clk_data[]){
1673 { .name = "core_clk" },
1674 { .name = "iface_clk" },
1675 { .name = "bus_clk" },
1676 { 0 }
1677 },
1678 .bus_port0 = MSM_BUS_MASTER_VFE,
1679};
1680
1681static struct fs_driver_data vpe_fs_data = {
1682 .clks = (struct fs_clk_data[]){
1683 { .name = "core_clk" },
1684 { .name = "iface_clk" },
1685 { .name = "bus_clk" },
1686 { 0 }
1687 },
1688 .bus_port0 = MSM_BUS_MASTER_VPE,
1689};
1690
1691static struct fs_driver_data vcap_fs_data = {
1692 .clks = (struct fs_clk_data[]){
1693 { .name = "core_clk" },
1694 { .name = "iface_clk" },
1695 { .name = "bus_clk" },
1696 { 0 },
1697 },
1698 .bus_port0 = MSM_BUS_MASTER_VIDEO_CAP,
1699};
1700
1701struct platform_device *apq8064_footswitch[] __initdata = {
Matt Wagantall316f2fc2012-05-03 20:41:42 -07001702 FS_8X60(FS_ROT, "vdd", "msm_rotator.0", &rot_fs_data),
Matt Wagantalle4454b82012-05-03 20:48:01 -07001703 FS_8X60(FS_IJPEG, "vdd", "msm_gemini.0", &ijpeg_fs_data),
Matt Wagantall5c922112012-05-03 19:25:28 -07001704 FS_8X60(FS_VFE, "fs_vfe", NULL, &vfe_fs_data),
1705 FS_8X60(FS_VPE, "fs_vpe", NULL, &vpe_fs_data),
Matt Wagantalld6fbf232012-05-03 20:09:28 -07001706 FS_8X60(FS_GFX3D, "vdd", "kgsl-3d0.0", &gfx3d_fs_data),
Matt Wagantall5e46aac2012-05-03 20:20:18 -07001707 FS_8X60(FS_VED, "vdd", "msm_vidc.0", &ved_fs_data),
Matt Wagantall3cd5b3d2012-05-03 20:35:20 -07001708 FS_8X60(FS_VCAP, "vdd", "msm_vcap.0", &vcap_fs_data),
Matt Wagantall1f65d9d2012-04-25 14:24:20 -07001709};
1710unsigned apq8064_num_footswitch __initdata = ARRAY_SIZE(apq8064_footswitch);
Matt Wagantall1875d322012-02-22 16:11:33 -08001711
Praveen Chidambaram78499012011-11-01 17:15:17 -06001712struct msm_rpm_platform_data apq8064_rpm_data __initdata = {
1713 .reg_base_addrs = {
1714 [MSM_RPM_PAGE_STATUS] = MSM_RPM_BASE,
1715 [MSM_RPM_PAGE_CTRL] = MSM_RPM_BASE + 0x400,
1716 [MSM_RPM_PAGE_REQ] = MSM_RPM_BASE + 0x600,
1717 [MSM_RPM_PAGE_ACK] = MSM_RPM_BASE + 0xa00,
1718 },
1719 .irq_ack = RPM_APCC_CPU0_GP_HIGH_IRQ,
Stephen Boydf61255e2012-02-24 14:31:09 -08001720 .irq_err = RPM_APCC_CPU0_GP_LOW_IRQ,
Praveen Chidambarame396ce62012-03-30 11:15:57 -06001721 .irq_wakeup = RPM_APCC_CPU0_WAKE_UP_IRQ,
Praveen Chidambaram78499012011-11-01 17:15:17 -06001722 .ipc_rpm_reg = MSM_APCS_GCC_BASE + 0x008,
1723 .ipc_rpm_val = 4,
1724 .target_id = {
1725 MSM_RPM_MAP(8064, NOTIFICATION_CONFIGURED_0, NOTIFICATION, 4),
1726 MSM_RPM_MAP(8064, NOTIFICATION_REGISTERED_0, NOTIFICATION, 4),
1727 MSM_RPM_MAP(8064, INVALIDATE_0, INVALIDATE, 8),
1728 MSM_RPM_MAP(8064, TRIGGER_TIMED_TO, TRIGGER_TIMED, 1),
1729 MSM_RPM_MAP(8064, TRIGGER_TIMED_SCLK_COUNT, TRIGGER_TIMED, 1),
1730 MSM_RPM_MAP(8064, RPM_CTL, RPM_CTL, 1),
1731 MSM_RPM_MAP(8064, CXO_CLK, CXO_CLK, 1),
1732 MSM_RPM_MAP(8064, PXO_CLK, PXO_CLK, 1),
1733 MSM_RPM_MAP(8064, APPS_FABRIC_CLK, APPS_FABRIC_CLK, 1),
1734 MSM_RPM_MAP(8064, SYSTEM_FABRIC_CLK, SYSTEM_FABRIC_CLK, 1),
1735 MSM_RPM_MAP(8064, MM_FABRIC_CLK, MM_FABRIC_CLK, 1),
1736 MSM_RPM_MAP(8064, DAYTONA_FABRIC_CLK, DAYTONA_FABRIC_CLK, 1),
1737 MSM_RPM_MAP(8064, SFPB_CLK, SFPB_CLK, 1),
1738 MSM_RPM_MAP(8064, CFPB_CLK, CFPB_CLK, 1),
1739 MSM_RPM_MAP(8064, MMFPB_CLK, MMFPB_CLK, 1),
1740 MSM_RPM_MAP(8064, EBI1_CLK, EBI1_CLK, 1),
1741 MSM_RPM_MAP(8064, APPS_FABRIC_CFG_HALT_0,
1742 APPS_FABRIC_CFG_HALT, 2),
1743 MSM_RPM_MAP(8064, APPS_FABRIC_CFG_CLKMOD_0,
1744 APPS_FABRIC_CFG_CLKMOD, 3),
1745 MSM_RPM_MAP(8064, APPS_FABRIC_CFG_IOCTL,
1746 APPS_FABRIC_CFG_IOCTL, 1),
1747 MSM_RPM_MAP(8064, APPS_FABRIC_ARB_0, APPS_FABRIC_ARB, 12),
1748 MSM_RPM_MAP(8064, SYS_FABRIC_CFG_HALT_0,
1749 SYS_FABRIC_CFG_HALT, 2),
1750 MSM_RPM_MAP(8064, SYS_FABRIC_CFG_CLKMOD_0,
1751 SYS_FABRIC_CFG_CLKMOD, 3),
1752 MSM_RPM_MAP(8064, SYS_FABRIC_CFG_IOCTL,
1753 SYS_FABRIC_CFG_IOCTL, 1),
1754 MSM_RPM_MAP(8064, SYSTEM_FABRIC_ARB_0, SYSTEM_FABRIC_ARB, 30),
1755 MSM_RPM_MAP(8064, MMSS_FABRIC_CFG_HALT_0,
1756 MMSS_FABRIC_CFG_HALT, 2),
1757 MSM_RPM_MAP(8064, MMSS_FABRIC_CFG_CLKMOD_0,
1758 MMSS_FABRIC_CFG_CLKMOD, 3),
1759 MSM_RPM_MAP(8064, MMSS_FABRIC_CFG_IOCTL,
1760 MMSS_FABRIC_CFG_IOCTL, 1),
1761 MSM_RPM_MAP(8064, MM_FABRIC_ARB_0, MM_FABRIC_ARB, 21),
1762 MSM_RPM_MAP(8064, PM8921_S1_0, PM8921_S1, 2),
1763 MSM_RPM_MAP(8064, PM8921_S2_0, PM8921_S2, 2),
1764 MSM_RPM_MAP(8064, PM8921_S3_0, PM8921_S3, 2),
1765 MSM_RPM_MAP(8064, PM8921_S4_0, PM8921_S4, 2),
1766 MSM_RPM_MAP(8064, PM8921_S5_0, PM8921_S5, 2),
1767 MSM_RPM_MAP(8064, PM8921_S6_0, PM8921_S6, 2),
1768 MSM_RPM_MAP(8064, PM8921_S7_0, PM8921_S7, 2),
1769 MSM_RPM_MAP(8064, PM8921_S8_0, PM8921_S8, 2),
1770 MSM_RPM_MAP(8064, PM8921_L1_0, PM8921_L1, 2),
1771 MSM_RPM_MAP(8064, PM8921_L2_0, PM8921_L2, 2),
1772 MSM_RPM_MAP(8064, PM8921_L3_0, PM8921_L3, 2),
1773 MSM_RPM_MAP(8064, PM8921_L4_0, PM8921_L4, 2),
1774 MSM_RPM_MAP(8064, PM8921_L5_0, PM8921_L5, 2),
1775 MSM_RPM_MAP(8064, PM8921_L6_0, PM8921_L6, 2),
1776 MSM_RPM_MAP(8064, PM8921_L7_0, PM8921_L7, 2),
1777 MSM_RPM_MAP(8064, PM8921_L8_0, PM8921_L8, 2),
1778 MSM_RPM_MAP(8064, PM8921_L9_0, PM8921_L9, 2),
1779 MSM_RPM_MAP(8064, PM8921_L10_0, PM8921_L10, 2),
1780 MSM_RPM_MAP(8064, PM8921_L11_0, PM8921_L11, 2),
1781 MSM_RPM_MAP(8064, PM8921_L12_0, PM8921_L12, 2),
1782 MSM_RPM_MAP(8064, PM8921_L13_0, PM8921_L13, 2),
1783 MSM_RPM_MAP(8064, PM8921_L14_0, PM8921_L14, 2),
1784 MSM_RPM_MAP(8064, PM8921_L15_0, PM8921_L15, 2),
1785 MSM_RPM_MAP(8064, PM8921_L16_0, PM8921_L16, 2),
1786 MSM_RPM_MAP(8064, PM8921_L17_0, PM8921_L17, 2),
1787 MSM_RPM_MAP(8064, PM8921_L18_0, PM8921_L18, 2),
1788 MSM_RPM_MAP(8064, PM8921_L19_0, PM8921_L19, 2),
1789 MSM_RPM_MAP(8064, PM8921_L20_0, PM8921_L20, 2),
1790 MSM_RPM_MAP(8064, PM8921_L21_0, PM8921_L21, 2),
1791 MSM_RPM_MAP(8064, PM8921_L22_0, PM8921_L22, 2),
1792 MSM_RPM_MAP(8064, PM8921_L23_0, PM8921_L23, 2),
1793 MSM_RPM_MAP(8064, PM8921_L24_0, PM8921_L24, 2),
1794 MSM_RPM_MAP(8064, PM8921_L25_0, PM8921_L25, 2),
1795 MSM_RPM_MAP(8064, PM8921_L26_0, PM8921_L26, 2),
1796 MSM_RPM_MAP(8064, PM8921_L27_0, PM8921_L27, 2),
1797 MSM_RPM_MAP(8064, PM8921_L28_0, PM8921_L28, 2),
1798 MSM_RPM_MAP(8064, PM8921_L29_0, PM8921_L29, 2),
1799 MSM_RPM_MAP(8064, PM8921_CLK1_0, PM8921_CLK1, 2),
1800 MSM_RPM_MAP(8064, PM8921_CLK2_0, PM8921_CLK2, 2),
1801 MSM_RPM_MAP(8064, PM8921_LVS1, PM8921_LVS1, 1),
1802 MSM_RPM_MAP(8064, PM8921_LVS2, PM8921_LVS2, 1),
1803 MSM_RPM_MAP(8064, PM8921_LVS3, PM8921_LVS3, 1),
1804 MSM_RPM_MAP(8064, PM8921_LVS4, PM8921_LVS4, 1),
1805 MSM_RPM_MAP(8064, PM8921_LVS5, PM8921_LVS5, 1),
1806 MSM_RPM_MAP(8064, PM8921_LVS6, PM8921_LVS6, 1),
1807 MSM_RPM_MAP(8064, PM8921_LVS7, PM8921_LVS7, 1),
1808 MSM_RPM_MAP(8064, PM8821_S1_0, PM8821_S1, 2),
1809 MSM_RPM_MAP(8064, PM8821_S2_0, PM8821_S2, 2),
1810 MSM_RPM_MAP(8064, PM8821_L1_0, PM8821_L1, 2),
1811 MSM_RPM_MAP(8064, NCP_0, NCP, 2),
1812 MSM_RPM_MAP(8064, CXO_BUFFERS, CXO_BUFFERS, 1),
1813 MSM_RPM_MAP(8064, USB_OTG_SWITCH, USB_OTG_SWITCH, 1),
1814 MSM_RPM_MAP(8064, HDMI_SWITCH, HDMI_SWITCH, 1),
1815 MSM_RPM_MAP(8064, DDR_DMM_0, DDR_DMM, 2),
1816 MSM_RPM_MAP(8064, QDSS_CLK, QDSS_CLK, 1),
1817 },
1818 .target_status = {
1819 MSM_RPM_STATUS_ID_MAP(8064, VERSION_MAJOR),
1820 MSM_RPM_STATUS_ID_MAP(8064, VERSION_MINOR),
1821 MSM_RPM_STATUS_ID_MAP(8064, VERSION_BUILD),
1822 MSM_RPM_STATUS_ID_MAP(8064, SUPPORTED_RESOURCES_0),
1823 MSM_RPM_STATUS_ID_MAP(8064, SUPPORTED_RESOURCES_1),
1824 MSM_RPM_STATUS_ID_MAP(8064, SUPPORTED_RESOURCES_2),
1825 MSM_RPM_STATUS_ID_MAP(8064, RESERVED_SUPPORTED_RESOURCES_0),
1826 MSM_RPM_STATUS_ID_MAP(8064, SEQUENCE),
1827 MSM_RPM_STATUS_ID_MAP(8064, RPM_CTL),
1828 MSM_RPM_STATUS_ID_MAP(8064, CXO_CLK),
1829 MSM_RPM_STATUS_ID_MAP(8064, PXO_CLK),
1830 MSM_RPM_STATUS_ID_MAP(8064, APPS_FABRIC_CLK),
1831 MSM_RPM_STATUS_ID_MAP(8064, SYSTEM_FABRIC_CLK),
1832 MSM_RPM_STATUS_ID_MAP(8064, MM_FABRIC_CLK),
1833 MSM_RPM_STATUS_ID_MAP(8064, DAYTONA_FABRIC_CLK),
1834 MSM_RPM_STATUS_ID_MAP(8064, SFPB_CLK),
1835 MSM_RPM_STATUS_ID_MAP(8064, CFPB_CLK),
1836 MSM_RPM_STATUS_ID_MAP(8064, MMFPB_CLK),
1837 MSM_RPM_STATUS_ID_MAP(8064, EBI1_CLK),
1838 MSM_RPM_STATUS_ID_MAP(8064, APPS_FABRIC_CFG_HALT),
1839 MSM_RPM_STATUS_ID_MAP(8064, APPS_FABRIC_CFG_CLKMOD),
1840 MSM_RPM_STATUS_ID_MAP(8064, APPS_FABRIC_CFG_IOCTL),
1841 MSM_RPM_STATUS_ID_MAP(8064, APPS_FABRIC_ARB),
1842 MSM_RPM_STATUS_ID_MAP(8064, SYS_FABRIC_CFG_HALT),
1843 MSM_RPM_STATUS_ID_MAP(8064, SYS_FABRIC_CFG_CLKMOD),
1844 MSM_RPM_STATUS_ID_MAP(8064, SYS_FABRIC_CFG_IOCTL),
1845 MSM_RPM_STATUS_ID_MAP(8064, SYSTEM_FABRIC_ARB),
1846 MSM_RPM_STATUS_ID_MAP(8064, MMSS_FABRIC_CFG_HALT),
1847 MSM_RPM_STATUS_ID_MAP(8064, MMSS_FABRIC_CFG_CLKMOD),
1848 MSM_RPM_STATUS_ID_MAP(8064, MMSS_FABRIC_CFG_IOCTL),
1849 MSM_RPM_STATUS_ID_MAP(8064, MM_FABRIC_ARB),
1850 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S1_0),
1851 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S1_1),
1852 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S2_0),
1853 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S2_1),
1854 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S3_0),
1855 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S3_1),
1856 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S4_0),
1857 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S4_1),
1858 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S5_0),
1859 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S5_1),
1860 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S6_0),
1861 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S6_1),
1862 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S7_0),
1863 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S7_1),
1864 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S8_0),
1865 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S8_1),
1866 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L1_0),
1867 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L1_1),
1868 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L2_0),
1869 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L2_1),
1870 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L3_0),
1871 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L3_1),
1872 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L4_0),
1873 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L4_1),
1874 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L5_0),
1875 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L5_1),
1876 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L6_0),
1877 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L6_1),
1878 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L7_0),
1879 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L7_1),
1880 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L8_0),
1881 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L8_1),
1882 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L9_0),
1883 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L9_1),
1884 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L10_0),
1885 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L10_1),
1886 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L11_0),
1887 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L11_1),
1888 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L12_0),
1889 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L12_1),
1890 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L13_0),
1891 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L13_1),
1892 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L14_0),
1893 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L14_1),
1894 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L15_0),
1895 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L15_1),
1896 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L16_0),
1897 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L16_1),
1898 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L17_0),
1899 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L17_1),
1900 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L18_0),
1901 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L18_1),
1902 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L19_0),
1903 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L19_1),
1904 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L20_0),
1905 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L20_1),
1906 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L21_0),
1907 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L21_1),
1908 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L22_0),
1909 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L22_1),
1910 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L23_0),
1911 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L23_1),
1912 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L24_0),
1913 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L24_1),
1914 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L25_0),
1915 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L25_1),
1916 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L26_0),
1917 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L26_1),
1918 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L27_0),
1919 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L27_1),
1920 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L28_0),
1921 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L28_1),
1922 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L29_0),
1923 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L29_1),
1924 MSM_RPM_STATUS_ID_MAP(8064, PM8921_CLK1_0),
1925 MSM_RPM_STATUS_ID_MAP(8064, PM8921_CLK1_1),
1926 MSM_RPM_STATUS_ID_MAP(8064, PM8921_CLK2_0),
1927 MSM_RPM_STATUS_ID_MAP(8064, PM8921_CLK2_1),
1928 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS1),
1929 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS2),
1930 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS3),
1931 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS4),
1932 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS5),
1933 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS6),
1934 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS7),
1935 MSM_RPM_STATUS_ID_MAP(8064, NCP_0),
1936 MSM_RPM_STATUS_ID_MAP(8064, NCP_1),
1937 MSM_RPM_STATUS_ID_MAP(8064, CXO_BUFFERS),
1938 MSM_RPM_STATUS_ID_MAP(8064, USB_OTG_SWITCH),
1939 MSM_RPM_STATUS_ID_MAP(8064, HDMI_SWITCH),
1940 MSM_RPM_STATUS_ID_MAP(8064, DDR_DMM_0),
1941 MSM_RPM_STATUS_ID_MAP(8064, DDR_DMM_1),
1942 MSM_RPM_STATUS_ID_MAP(8064, EBI1_CH0_RANGE),
1943 MSM_RPM_STATUS_ID_MAP(8064, EBI1_CH1_RANGE),
1944 MSM_RPM_STATUS_ID_MAP(8064, PM8821_S1_0),
1945 MSM_RPM_STATUS_ID_MAP(8064, PM8821_S1_1),
1946 MSM_RPM_STATUS_ID_MAP(8064, PM8821_S2_0),
1947 MSM_RPM_STATUS_ID_MAP(8064, PM8821_S2_1),
1948 MSM_RPM_STATUS_ID_MAP(8064, PM8821_L1_0),
1949 MSM_RPM_STATUS_ID_MAP(8064, PM8821_L1_1),
1950 },
1951 .target_ctrl_id = {
1952 MSM_RPM_CTRL_MAP(8064, VERSION_MAJOR),
1953 MSM_RPM_CTRL_MAP(8064, VERSION_MINOR),
1954 MSM_RPM_CTRL_MAP(8064, VERSION_BUILD),
1955 MSM_RPM_CTRL_MAP(8064, REQ_CTX_0),
1956 MSM_RPM_CTRL_MAP(8064, REQ_SEL_0),
1957 MSM_RPM_CTRL_MAP(8064, ACK_CTX_0),
1958 MSM_RPM_CTRL_MAP(8064, ACK_SEL_0),
1959 },
1960 .sel_invalidate = MSM_RPM_8064_SEL_INVALIDATE,
1961 .sel_notification = MSM_RPM_8064_SEL_NOTIFICATION,
1962 .sel_last = MSM_RPM_8064_SEL_LAST,
1963 .ver = {3, 0, 0},
1964};
1965
1966struct platform_device apq8064_rpm_device = {
1967 .name = "msm_rpm",
1968 .id = -1,
1969};
1970
1971static struct msm_rpmstats_platform_data msm_rpm_stat_pdata = {
1972 .phys_addr_base = 0x0010D204,
1973 .phys_size = SZ_8K,
1974};
1975
1976struct platform_device apq8064_rpm_stat_device = {
1977 .name = "msm_rpm_stat",
1978 .id = -1,
1979 .dev = {
1980 .platform_data = &msm_rpm_stat_pdata,
1981 },
1982};
1983
1984static struct msm_rpm_log_platform_data msm_rpm_log_pdata = {
1985 .phys_addr_base = 0x0010C000,
1986 .reg_offsets = {
1987 [MSM_RPM_LOG_PAGE_INDICES] = 0x00000080,
1988 [MSM_RPM_LOG_PAGE_BUFFER] = 0x000000A0,
1989 },
1990 .phys_size = SZ_8K,
1991 .log_len = 4096, /* log's buffer length in bytes */
1992 .log_len_mask = (4096 >> 2) - 1, /* length mask in units of u32 */
1993};
1994
1995struct platform_device apq8064_rpm_log_device = {
1996 .name = "msm_rpm_log",
1997 .id = -1,
1998 .dev = {
1999 .platform_data = &msm_rpm_log_pdata,
2000 },
2001};
2002
Jin Hongd3024e62012-02-09 16:13:32 -08002003/* Sensors DSPS platform data */
2004
2005#define PPSS_REG_PHYS_BASE 0x12080000
2006
2007static struct dsps_clk_info dsps_clks[] = {};
2008static struct dsps_regulator_info dsps_regs[] = {};
2009
2010/*
2011 * Note: GPIOs field is intialized in run-time at the function
2012 * apq8064_init_dsps().
2013 */
2014
2015struct msm_dsps_platform_data msm_dsps_pdata_8064 = {
2016 .clks = dsps_clks,
2017 .clks_num = ARRAY_SIZE(dsps_clks),
2018 .gpios = NULL,
2019 .gpios_num = 0,
2020 .regs = dsps_regs,
2021 .regs_num = ARRAY_SIZE(dsps_regs),
2022 .dsps_pwr_ctl_en = 1,
2023 .signature = DSPS_SIGNATURE,
2024};
2025
2026static struct resource msm_dsps_resources[] = {
2027 {
2028 .start = PPSS_REG_PHYS_BASE,
2029 .end = PPSS_REG_PHYS_BASE + SZ_8K - 1,
2030 .name = "ppss_reg",
2031 .flags = IORESOURCE_MEM,
2032 },
2033
2034 {
2035 .start = PPSS_WDOG_TIMER_IRQ,
2036 .end = PPSS_WDOG_TIMER_IRQ,
2037 .name = "ppss_wdog",
2038 .flags = IORESOURCE_IRQ,
2039 },
2040};
2041
2042struct platform_device msm_dsps_device_8064 = {
2043 .name = "msm_dsps",
2044 .id = 0,
2045 .num_resources = ARRAY_SIZE(msm_dsps_resources),
2046 .resource = msm_dsps_resources,
2047 .dev.platform_data = &msm_dsps_pdata_8064,
2048};
2049
Praveen Chidambaram78499012011-11-01 17:15:17 -06002050#ifdef CONFIG_MSM_MPM
2051static uint16_t msm_mpm_irqs_m2a[MSM_MPM_NR_MPM_IRQS] __initdata = {
2052 [1] = MSM_GPIO_TO_INT(26),
2053 [2] = MSM_GPIO_TO_INT(88),
2054 [4] = MSM_GPIO_TO_INT(73),
2055 [5] = MSM_GPIO_TO_INT(74),
2056 [6] = MSM_GPIO_TO_INT(75),
2057 [7] = MSM_GPIO_TO_INT(76),
2058 [8] = MSM_GPIO_TO_INT(77),
2059 [9] = MSM_GPIO_TO_INT(36),
2060 [10] = MSM_GPIO_TO_INT(84),
2061 [11] = MSM_GPIO_TO_INT(7),
2062 [12] = MSM_GPIO_TO_INT(11),
2063 [13] = MSM_GPIO_TO_INT(52),
2064 [14] = MSM_GPIO_TO_INT(15),
2065 [15] = MSM_GPIO_TO_INT(83),
2066 [16] = USB3_HS_IRQ,
2067 [19] = MSM_GPIO_TO_INT(61),
2068 [20] = MSM_GPIO_TO_INT(58),
2069 [23] = MSM_GPIO_TO_INT(65),
2070 [24] = MSM_GPIO_TO_INT(63),
2071 [25] = USB1_HS_IRQ,
2072 [27] = HDMI_IRQ,
2073 [29] = MSM_GPIO_TO_INT(22),
2074 [30] = MSM_GPIO_TO_INT(72),
2075 [31] = USB4_HS_IRQ,
2076 [33] = MSM_GPIO_TO_INT(44),
2077 [34] = MSM_GPIO_TO_INT(39),
2078 [35] = MSM_GPIO_TO_INT(19),
2079 [36] = MSM_GPIO_TO_INT(23),
2080 [37] = MSM_GPIO_TO_INT(41),
2081 [38] = MSM_GPIO_TO_INT(30),
2082 [41] = MSM_GPIO_TO_INT(42),
2083 [42] = MSM_GPIO_TO_INT(56),
2084 [43] = MSM_GPIO_TO_INT(55),
2085 [44] = MSM_GPIO_TO_INT(50),
2086 [45] = MSM_GPIO_TO_INT(49),
2087 [46] = MSM_GPIO_TO_INT(47),
2088 [47] = MSM_GPIO_TO_INT(45),
2089 [48] = MSM_GPIO_TO_INT(38),
2090 [49] = MSM_GPIO_TO_INT(34),
2091 [50] = MSM_GPIO_TO_INT(32),
2092 [51] = MSM_GPIO_TO_INT(29),
2093 [52] = MSM_GPIO_TO_INT(18),
2094 [53] = MSM_GPIO_TO_INT(10),
2095 [54] = MSM_GPIO_TO_INT(81),
2096 [55] = MSM_GPIO_TO_INT(6),
2097};
2098
2099static uint16_t msm_mpm_bypassed_apps_irqs[] __initdata = {
2100 TLMM_MSM_SUMMARY_IRQ,
2101 RPM_APCC_CPU0_GP_HIGH_IRQ,
2102 RPM_APCC_CPU0_GP_MEDIUM_IRQ,
2103 RPM_APCC_CPU0_GP_LOW_IRQ,
2104 RPM_APCC_CPU0_WAKE_UP_IRQ,
2105 RPM_APCC_CPU1_GP_HIGH_IRQ,
2106 RPM_APCC_CPU1_GP_MEDIUM_IRQ,
2107 RPM_APCC_CPU1_GP_LOW_IRQ,
2108 RPM_APCC_CPU1_WAKE_UP_IRQ,
2109 MSS_TO_APPS_IRQ_0,
2110 MSS_TO_APPS_IRQ_1,
2111 MSS_TO_APPS_IRQ_2,
2112 MSS_TO_APPS_IRQ_3,
2113 MSS_TO_APPS_IRQ_4,
2114 MSS_TO_APPS_IRQ_5,
2115 MSS_TO_APPS_IRQ_6,
2116 MSS_TO_APPS_IRQ_7,
2117 MSS_TO_APPS_IRQ_8,
2118 MSS_TO_APPS_IRQ_9,
2119 LPASS_SCSS_GP_LOW_IRQ,
2120 LPASS_SCSS_GP_MEDIUM_IRQ,
2121 LPASS_SCSS_GP_HIGH_IRQ,
2122 SPS_MTI_30,
2123 SPS_MTI_31,
2124 RIVA_APSS_SPARE_IRQ,
2125 RIVA_APPS_WLAN_SMSM_IRQ,
2126 RIVA_APPS_WLAN_RX_DATA_AVAIL_IRQ,
2127 RIVA_APPS_WLAN_DATA_XFER_DONE_IRQ,
2128};
2129
2130struct msm_mpm_device_data apq8064_mpm_dev_data __initdata = {
2131 .irqs_m2a = msm_mpm_irqs_m2a,
2132 .irqs_m2a_size = ARRAY_SIZE(msm_mpm_irqs_m2a),
2133 .bypassed_apps_irqs = msm_mpm_bypassed_apps_irqs,
2134 .bypassed_apps_irqs_size = ARRAY_SIZE(msm_mpm_bypassed_apps_irqs),
2135 .mpm_request_reg_base = MSM_RPM_BASE + 0x9d8,
2136 .mpm_status_reg_base = MSM_RPM_BASE + 0xdf8,
2137 .mpm_apps_ipc_reg = MSM_APCS_GCC_BASE + 0x008,
2138 .mpm_apps_ipc_val = BIT(1),
2139 .mpm_ipc_irq = RPM_APCC_CPU0_GP_MEDIUM_IRQ,
2140
2141};
2142#endif
Joel Kingdacbc822012-01-25 13:30:57 -08002143
Joel King14fe7fa2012-05-27 14:26:11 -07002144/* AP2MDM_SOFT_RESET is implemented by the PON_RESET_N gpio */
Joel Kingdacbc822012-01-25 13:30:57 -08002145#define MDM2AP_ERRFATAL 19
2146#define AP2MDM_ERRFATAL 18
2147#define MDM2AP_STATUS 49
2148#define AP2MDM_STATUS 48
Joel King14fe7fa2012-05-27 14:26:11 -07002149#define AP2MDM_SOFT_RESET 27
Vamsi Krishna9e307cd2012-04-11 13:15:36 -07002150#define AP2MDM_WAKEUP 35
Joel Kingdacbc822012-01-25 13:30:57 -08002151
2152static struct resource mdm_resources[] = {
2153 {
2154 .start = MDM2AP_ERRFATAL,
2155 .end = MDM2AP_ERRFATAL,
2156 .name = "MDM2AP_ERRFATAL",
2157 .flags = IORESOURCE_IO,
2158 },
2159 {
2160 .start = AP2MDM_ERRFATAL,
2161 .end = AP2MDM_ERRFATAL,
2162 .name = "AP2MDM_ERRFATAL",
2163 .flags = IORESOURCE_IO,
2164 },
2165 {
2166 .start = MDM2AP_STATUS,
2167 .end = MDM2AP_STATUS,
2168 .name = "MDM2AP_STATUS",
2169 .flags = IORESOURCE_IO,
2170 },
2171 {
2172 .start = AP2MDM_STATUS,
2173 .end = AP2MDM_STATUS,
2174 .name = "AP2MDM_STATUS",
2175 .flags = IORESOURCE_IO,
2176 },
2177 {
Joel King14fe7fa2012-05-27 14:26:11 -07002178 .start = AP2MDM_SOFT_RESET,
2179 .end = AP2MDM_SOFT_RESET,
2180 .name = "AP2MDM_SOFT_RESET",
Joel Kingdacbc822012-01-25 13:30:57 -08002181 .flags = IORESOURCE_IO,
2182 },
Vamsi Krishna9e307cd2012-04-11 13:15:36 -07002183 {
2184 .start = AP2MDM_WAKEUP,
2185 .end = AP2MDM_WAKEUP,
2186 .name = "AP2MDM_WAKEUP",
2187 .flags = IORESOURCE_IO,
2188 },
Joel Kingdacbc822012-01-25 13:30:57 -08002189};
2190
2191struct platform_device mdm_8064_device = {
2192 .name = "mdm2_modem",
2193 .id = -1,
2194 .num_resources = ARRAY_SIZE(mdm_resources),
2195 .resource = mdm_resources,
2196};
Praveen Chidambaram8ea3dcd2011-12-07 14:46:31 -07002197
2198static int apq8064_LPM_latency = 1000; /* >100 usec for WFI */
2199
2200struct platform_device apq8064_cpu_idle_device = {
2201 .name = "msm_cpu_idle",
2202 .id = -1,
2203 .dev = {
2204 .platform_data = &apq8064_LPM_latency,
2205 },
2206};
Praveen Chidambaram5c8adf22012-02-23 18:44:37 -07002207
2208static struct msm_dcvs_freq_entry apq8064_freq[] = {
2209 { 384000, 166981, 345600},
2210 { 702000, 213049, 632502},
2211 {1026000, 285712, 925613},
2212 {1242000, 383945, 1176550},
2213 {1458000, 419729, 1465478},
2214 {1512000, 434116, 1546674},
2215
2216};
2217
2218static struct msm_dcvs_core_info apq8064_core_info = {
2219 .freq_tbl = &apq8064_freq[0],
2220 .core_param = {
2221 .max_time_us = 100000,
2222 .num_freq = ARRAY_SIZE(apq8064_freq),
2223 },
2224 .algo_param = {
2225 .slack_time_us = 58000,
2226 .scale_slack_time = 0,
2227 .scale_slack_time_pct = 0,
2228 .disable_pc_threshold = 1458000,
2229 .em_window_size = 100000,
2230 .em_max_util_pct = 97,
2231 .ss_window_size = 1000000,
2232 .ss_util_pct = 95,
2233 .ss_iobusy_conv = 100,
2234 },
2235};
2236
2237struct platform_device apq8064_msm_gov_device = {
2238 .name = "msm_dcvs_gov",
2239 .id = -1,
2240 .dev = {
2241 .platform_data = &apq8064_core_info,
2242 },
2243};
Stepan Moskovchenko28662c52012-03-01 12:48:45 -08002244
Terence Hampson2e1705f2012-04-11 19:55:29 -04002245#ifdef CONFIG_MSM_VCAP
2246#define VCAP_HW_BASE 0x05900000
2247
2248static struct msm_bus_vectors vcap_init_vectors[] = {
2249 {
2250 .src = MSM_BUS_MASTER_VIDEO_CAP,
2251 .dst = MSM_BUS_SLAVE_EBI_CH0,
2252 .ab = 0,
2253 .ib = 0,
2254 },
2255};
2256
2257
2258static struct msm_bus_vectors vcap_480_vectors[] = {
2259 {
2260 .src = MSM_BUS_MASTER_VIDEO_CAP,
2261 .dst = MSM_BUS_SLAVE_EBI_CH0,
Terence Hampson35a1ff02012-04-25 17:07:18 -04002262 .ab = 1280 * 720 * 3 * 60,
2263 .ib = 1280 * 720 * 3 * 60 * 1.5,
Terence Hampson2e1705f2012-04-11 19:55:29 -04002264 },
2265};
2266
2267static struct msm_bus_vectors vcap_720_vectors[] = {
2268 {
2269 .src = MSM_BUS_MASTER_VIDEO_CAP,
2270 .dst = MSM_BUS_SLAVE_EBI_CH0,
Terence Hampson35a1ff02012-04-25 17:07:18 -04002271 .ab = 1280 * 720 * 3 * 60,
2272 .ib = 1280 * 720 * 3 * 60 * 1.5,
Terence Hampson2e1705f2012-04-11 19:55:29 -04002273 },
2274};
2275
2276static struct msm_bus_vectors vcap_1080_vectors[] = {
2277 {
2278 .src = MSM_BUS_MASTER_VIDEO_CAP,
2279 .dst = MSM_BUS_SLAVE_EBI_CH0,
Terence Hampson35a1ff02012-04-25 17:07:18 -04002280 .ab = 1920 * 1080 * 3 * 60,
2281 .ib = 1920 * 1080 * 3 * 60 * 1.5,
Terence Hampson2e1705f2012-04-11 19:55:29 -04002282 },
2283};
2284
2285static struct msm_bus_paths vcap_bus_usecases[] = {
2286 {
2287 ARRAY_SIZE(vcap_init_vectors),
2288 vcap_init_vectors,
2289 },
2290 {
2291 ARRAY_SIZE(vcap_480_vectors),
2292 vcap_480_vectors,
2293 },
2294 {
2295 ARRAY_SIZE(vcap_720_vectors),
2296 vcap_720_vectors,
2297 },
2298 {
2299 ARRAY_SIZE(vcap_1080_vectors),
2300 vcap_1080_vectors,
2301 },
2302};
2303
2304static struct msm_bus_scale_pdata vcap_axi_client_pdata = {
2305 vcap_bus_usecases,
2306 ARRAY_SIZE(vcap_bus_usecases),
2307};
2308
2309static struct resource msm_vcap_resources[] = {
2310 {
2311 .name = "vcap",
2312 .start = VCAP_HW_BASE,
2313 .end = VCAP_HW_BASE + SZ_1M - 1,
2314 .flags = IORESOURCE_MEM,
2315 },
2316 {
Terence Hampsonaeb793e2012-05-11 11:41:16 -04002317 .name = "vc_irq",
Terence Hampson2e1705f2012-04-11 19:55:29 -04002318 .start = VCAP_VC,
2319 .end = VCAP_VC,
2320 .flags = IORESOURCE_IRQ,
2321 },
Terence Hampsonaeb793e2012-05-11 11:41:16 -04002322 {
2323 .name = "vp_irq",
2324 .start = VCAP_VP,
2325 .end = VCAP_VP,
2326 .flags = IORESOURCE_IRQ,
2327 },
Terence Hampson2e1705f2012-04-11 19:55:29 -04002328};
2329
2330static unsigned vcap_gpios[] = {
2331 2, 3, 4, 5, 6, 7, 8, 9, 10,
2332 11, 12, 13, 18, 19, 20, 21,
2333 22, 23, 24, 25, 26, 80, 82,
2334 83, 84, 85, 86, 87,
2335};
2336
2337static struct vcap_platform_data vcap_pdata = {
2338 .gpios = vcap_gpios,
2339 .num_gpios = ARRAY_SIZE(vcap_gpios),
2340 .bus_client_pdata = &vcap_axi_client_pdata
2341};
2342
2343struct platform_device msm8064_device_vcap = {
2344 .name = "msm_vcap",
2345 .id = 0,
2346 .resource = msm_vcap_resources,
2347 .num_resources = ARRAY_SIZE(msm_vcap_resources),
2348 .dev = {
2349 .platform_data = &vcap_pdata,
2350 },
2351};
2352#endif
2353
Stepan Moskovchenko28662c52012-03-01 12:48:45 -08002354static struct resource msm_cache_erp_resources[] = {
2355 {
2356 .name = "l1_irq",
2357 .start = SC_SICCPUXEXTFAULTIRPTREQ,
2358 .flags = IORESOURCE_IRQ,
2359 },
2360 {
2361 .name = "l2_irq",
2362 .start = APCC_QGICL2IRPTREQ,
2363 .flags = IORESOURCE_IRQ,
2364 }
2365};
2366
2367struct platform_device apq8064_device_cache_erp = {
2368 .name = "msm_cache_erp",
2369 .id = -1,
2370 .num_resources = ARRAY_SIZE(msm_cache_erp_resources),
2371 .resource = msm_cache_erp_resources,
2372};
Pratik Patel212ab362012-03-16 12:30:07 -07002373
2374#define MSM_QDSS_PHYS_BASE 0x01A00000
2375#define MSM_ETM_PHYS_BASE (MSM_QDSS_PHYS_BASE + 0x1C000)
2376
2377#define QDSS_SOURCE(src_name, fpm) { .name = src_name, .fport_mask = fpm, }
2378
2379static struct qdss_source msm_qdss_sources[] = {
2380 QDSS_SOURCE("msm_etm", 0x33),
2381 QDSS_SOURCE("msm_oxili", 0x80),
2382};
2383
2384static struct msm_qdss_platform_data qdss_pdata = {
2385 .src_table = msm_qdss_sources,
2386 .size = ARRAY_SIZE(msm_qdss_sources),
2387 .afamily = 1,
2388};
2389
2390struct platform_device apq8064_qdss_device = {
2391 .name = "msm_qdss",
2392 .id = -1,
2393 .dev = {
2394 .platform_data = &qdss_pdata,
2395 },
2396};
2397
2398static struct resource msm_etm_resources[] = {
2399 {
2400 .start = MSM_ETM_PHYS_BASE,
2401 .end = MSM_ETM_PHYS_BASE + (SZ_4K * 4) - 1,
2402 .flags = IORESOURCE_MEM,
2403 },
2404};
2405
2406struct platform_device apq8064_etm_device = {
2407 .name = "msm_etm",
2408 .id = 0,
2409 .num_resources = ARRAY_SIZE(msm_etm_resources),
2410 .resource = msm_etm_resources,
2411};
Laura Abbott0577d7b2012-04-17 11:14:30 -07002412
2413struct msm_iommu_domain_name apq8064_iommu_ctx_names[] = {
2414 /* Camera */
2415 {
2416 .name = "vpe_src",
2417 .domain = CAMERA_DOMAIN,
2418 },
2419 /* Camera */
2420 {
2421 .name = "vpe_dst",
2422 .domain = CAMERA_DOMAIN,
2423 },
2424 /* Camera */
2425 {
2426 .name = "vfe_imgwr",
2427 .domain = CAMERA_DOMAIN,
2428 },
2429 /* Camera */
2430 {
2431 .name = "vfe_misc",
2432 .domain = CAMERA_DOMAIN,
2433 },
2434 /* Camera */
2435 {
2436 .name = "ijpeg_src",
2437 .domain = CAMERA_DOMAIN,
2438 },
2439 /* Camera */
2440 {
2441 .name = "ijpeg_dst",
2442 .domain = CAMERA_DOMAIN,
2443 },
2444 /* Camera */
2445 {
2446 .name = "jpegd_src",
2447 .domain = CAMERA_DOMAIN,
2448 },
2449 /* Camera */
2450 {
2451 .name = "jpegd_dst",
2452 .domain = CAMERA_DOMAIN,
2453 },
2454 /* Rotator */
2455 {
2456 .name = "rot_src",
2457 .domain = ROTATOR_DOMAIN,
2458 },
2459 /* Rotator */
2460 {
2461 .name = "rot_dst",
2462 .domain = ROTATOR_DOMAIN,
2463 },
2464 /* Video */
2465 {
2466 .name = "vcodec_a_mm1",
2467 .domain = VIDEO_DOMAIN,
2468 },
2469 /* Video */
2470 {
2471 .name = "vcodec_b_mm2",
2472 .domain = VIDEO_DOMAIN,
2473 },
2474 /* Video */
2475 {
2476 .name = "vcodec_a_stream",
2477 .domain = VIDEO_DOMAIN,
2478 },
2479};
2480
2481static struct mem_pool apq8064_video_pools[] = {
2482 /*
2483 * Video hardware has the following requirements:
2484 * 1. All video addresses used by the video hardware must be at a higher
2485 * address than video firmware address.
2486 * 2. Video hardware can only access a range of 256MB from the base of
2487 * the video firmware.
2488 */
2489 [VIDEO_FIRMWARE_POOL] =
2490 /* Low addresses, intended for video firmware */
2491 {
2492 .paddr = SZ_128K,
2493 .size = SZ_16M - SZ_128K,
2494 },
2495 [VIDEO_MAIN_POOL] =
2496 /* Main video pool */
2497 {
2498 .paddr = SZ_16M,
2499 .size = SZ_256M - SZ_16M,
2500 },
2501 [GEN_POOL] =
2502 /* Remaining address space up to 2G */
2503 {
2504 .paddr = SZ_256M,
2505 .size = SZ_2G - SZ_256M,
2506 },
2507};
2508
2509static struct mem_pool apq8064_camera_pools[] = {
2510 [GEN_POOL] =
2511 /* One address space for camera */
2512 {
2513 .paddr = SZ_128K,
2514 .size = SZ_2G - SZ_128K,
2515 },
2516};
2517
2518static struct mem_pool apq8064_display_pools[] = {
2519 [GEN_POOL] =
2520 /* One address space for display */
2521 {
2522 .paddr = SZ_128K,
2523 .size = SZ_2G - SZ_128K,
2524 },
2525};
2526
2527static struct mem_pool apq8064_rotator_pools[] = {
2528 [GEN_POOL] =
2529 /* One address space for rotator */
2530 {
2531 .paddr = SZ_128K,
2532 .size = SZ_2G - SZ_128K,
2533 },
2534};
2535
2536static struct msm_iommu_domain apq8064_iommu_domains[] = {
2537 [VIDEO_DOMAIN] = {
2538 .iova_pools = apq8064_video_pools,
2539 .npools = ARRAY_SIZE(apq8064_video_pools),
2540 },
2541 [CAMERA_DOMAIN] = {
2542 .iova_pools = apq8064_camera_pools,
2543 .npools = ARRAY_SIZE(apq8064_camera_pools),
2544 },
2545 [DISPLAY_DOMAIN] = {
2546 .iova_pools = apq8064_display_pools,
2547 .npools = ARRAY_SIZE(apq8064_display_pools),
2548 },
2549 [ROTATOR_DOMAIN] = {
2550 .iova_pools = apq8064_rotator_pools,
2551 .npools = ARRAY_SIZE(apq8064_rotator_pools),
2552 },
2553};
2554
2555struct iommu_domains_pdata apq8064_iommu_domain_pdata = {
2556 .domains = apq8064_iommu_domains,
2557 .ndomains = ARRAY_SIZE(apq8064_iommu_domains),
2558 .domain_names = apq8064_iommu_ctx_names,
2559 .nnames = ARRAY_SIZE(apq8064_iommu_ctx_names),
2560 .domain_alloc_flags = 0,
2561};
2562
2563struct platform_device apq8064_iommu_domain_device = {
2564 .name = "iommu_domains",
2565 .id = -1,
2566 .dev = {
2567 .platform_data = &apq8064_iommu_domain_pdata,
Laura Abbott532b2df2012-04-12 10:53:48 -07002568 }
2569};
2570
2571struct msm_rtb_platform_data apq8064_rtb_pdata = {
2572 .size = SZ_1M,
2573};
2574
2575static int __init msm_rtb_set_buffer_size(char *p)
2576{
2577 int s;
2578
2579 s = memparse(p, NULL);
2580 apq8064_rtb_pdata.size = ALIGN(s, SZ_4K);
2581 return 0;
2582}
2583early_param("msm_rtb_size", msm_rtb_set_buffer_size);
2584
2585struct platform_device apq8064_rtb_device = {
2586 .name = "msm_rtb",
2587 .id = -1,
2588 .dev = {
2589 .platform_data = &apq8064_rtb_pdata,
Laura Abbott0577d7b2012-04-17 11:14:30 -07002590 },
2591};
Laura Abbott93a4a352012-05-25 09:26:35 -07002592
2593#define APQ8064_L1_SIZE SZ_1M
2594/*
2595 * The actual L2 size is smaller but we need a larger buffer
2596 * size to store other dump information
2597 */
2598#define APQ8064_L2_SIZE SZ_8M
2599
2600struct msm_cache_dump_platform_data apq8064_cache_dump_pdata = {
2601 .l2_size = APQ8064_L2_SIZE,
2602 .l1_size = APQ8064_L1_SIZE,
2603};
2604
2605struct platform_device apq8064_cache_dump_device = {
2606 .name = "msm_cache_dump",
2607 .id = -1,
2608 .dev = {
2609 .platform_data = &apq8064_cache_dump_pdata,
2610 },
2611};