blob: 1ad089df50b3d958e11d1f1b6fedc15a138b1a85 [file] [log] [blame]
Manu Gautam5143b252012-01-05 19:25:23 -08001/* Copyright (c) 2011-2012, Code Aurora Forum. All rights reserved.
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002 *
3 * This program is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License version 2 and
5 * only version 2 as published by the Free Software Foundation.
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
11 *
12 */
13
14#include <linux/kernel.h>
15#include <linux/list.h>
16#include <linux/platform_device.h>
17#include <linux/msm_rotator.h>
18#include <linux/clkdev.h>
Hemant Kumard86c4882012-01-24 19:39:37 -080019#include <linux/dma-mapping.h>
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070020#include <mach/irqs-8064.h>
21#include <mach/board.h>
22#include <mach/msm_iomap.h>
Yan He06913ce2011-08-26 16:33:46 -070023#include <mach/usbdiag.h>
24#include <mach/msm_sps.h>
Jeff Ohlstein905f1ce2011-09-07 18:50:18 -070025#include <mach/dma.h>
Jin Hongd3024e62012-02-09 16:13:32 -080026#include <mach/msm_dsps.h>
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -080027#include <sound/msm-dai-q6.h>
28#include <sound/apr_audio.h>
Gagan Mac8a7a5d32011-11-11 16:43:06 -070029#include <mach/msm_bus_board.h>
Praveen Chidambaram78499012011-11-01 17:15:17 -060030#include <mach/rpm.h>
Joel Kingdacbc822012-01-25 13:30:57 -080031#include <mach/mdm2.h>
Eric Holmberg023d25c2012-03-01 12:27:55 -070032#include <mach/msm_smd.h>
Praveen Chidambaram5c8adf22012-02-23 18:44:37 -070033#include <mach/msm_dcvs.h>
Pratik Patel212ab362012-03-16 12:30:07 -070034#include <mach/qdss.h>
Mohan Kumar Gubbihalli Lachma Naik7f72edd2012-02-06 17:26:47 -080035#include <linux/ion.h>
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070036#include "clock.h"
37#include "devices.h"
Matt Wagantall1875d322012-02-22 16:11:33 -080038#include "footswitch.h"
Jeff Ohlstein7e668552011-10-06 16:17:25 -070039#include "msm_watchdog.h"
Praveen Chidambaram78499012011-11-01 17:15:17 -060040#include "rpm_stats.h"
41#include "rpm_log.h"
Subhash Jadavani909e04f2012-04-12 10:52:50 +053042#include <mach/mpm.h>
Laura Abbott0577d7b2012-04-17 11:14:30 -070043#include <mach/iommu_domains.h>
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070044
45/* Address of GSBI blocks */
Stepan Moskovchenko2701a442011-08-19 13:47:22 -070046#define MSM_GSBI1_PHYS 0x12440000
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070047#define MSM_GSBI3_PHYS 0x16200000
Harini Jayaramanc4c58692011-07-19 14:50:10 -060048#define MSM_GSBI4_PHYS 0x16300000
49#define MSM_GSBI5_PHYS 0x1A200000
50#define MSM_GSBI6_PHYS 0x16500000
51#define MSM_GSBI7_PHYS 0x16600000
52
Kenneth Heitke748593a2011-07-15 15:45:11 -060053/* GSBI UART devices */
Stepan Moskovchenko2701a442011-08-19 13:47:22 -070054#define MSM_UART1DM_PHYS (MSM_GSBI1_PHYS + 0x10000)
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070055#define MSM_UART3DM_PHYS (MSM_GSBI3_PHYS + 0x40000)
Jin Hong4bbbfba2012-02-02 21:48:07 -080056#define MSM_UART7DM_PHYS (MSM_GSBI7_PHYS + 0x40000)
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070057
Harini Jayaramanc4c58692011-07-19 14:50:10 -060058/* GSBI QUP devices */
David Keitel3c40fc52012-02-09 17:53:52 -080059#define MSM_GSBI1_QUP_PHYS (MSM_GSBI1_PHYS + 0x20000)
Harini Jayaramanc4c58692011-07-19 14:50:10 -060060#define MSM_GSBI3_QUP_PHYS (MSM_GSBI3_PHYS + 0x80000)
61#define MSM_GSBI4_QUP_PHYS (MSM_GSBI4_PHYS + 0x80000)
62#define MSM_GSBI5_QUP_PHYS (MSM_GSBI5_PHYS + 0x80000)
63#define MSM_GSBI6_QUP_PHYS (MSM_GSBI6_PHYS + 0x80000)
64#define MSM_GSBI7_QUP_PHYS (MSM_GSBI7_PHYS + 0x80000)
65#define MSM_QUP_SIZE SZ_4K
66
Kenneth Heitke36920d32011-07-20 16:44:30 -060067/* Address of SSBI CMD */
68#define MSM_PMIC1_SSBI_CMD_PHYS 0x00500000
69#define MSM_PMIC2_SSBI_CMD_PHYS 0x00C00000
70#define MSM_PMIC_SSBI_SIZE SZ_4K
Harini Jayaramanc4c58692011-07-19 14:50:10 -060071
Hemant Kumarcaa09092011-07-30 00:26:33 -070072/* Address of HS USBOTG1 */
Hemant Kumard86c4882012-01-24 19:39:37 -080073#define MSM_HSUSB1_PHYS 0x12500000
74#define MSM_HSUSB1_SIZE SZ_4K
Hemant Kumarcaa09092011-07-30 00:26:33 -070075
Manu Gautam91223e02011-11-08 15:27:22 +053076/* Address of HS USB3 */
77#define MSM_HSUSB3_PHYS 0x12520000
78#define MSM_HSUSB3_SIZE SZ_4K
79
Hemant Kumar1d66e1c2012-02-13 15:24:59 -080080/* Address of HS USB4 */
81#define MSM_HSUSB4_PHYS 0x12530000
82#define MSM_HSUSB4_SIZE SZ_4K
83
84
Jeff Ohlstein7e668552011-10-06 16:17:25 -070085static struct msm_watchdog_pdata msm_watchdog_pdata = {
86 .pet_time = 10000,
87 .bark_time = 11000,
88 .has_secure = true,
Joel Kinge7ca6f72012-02-09 20:51:25 -080089 .needs_expired_enable = true,
Jeff Ohlstein7e668552011-10-06 16:17:25 -070090};
91
92struct platform_device msm8064_device_watchdog = {
93 .name = "msm_watchdog",
94 .id = -1,
95 .dev = {
96 .platform_data = &msm_watchdog_pdata,
97 },
98};
99
Joel King0581896d2011-07-19 16:43:28 -0700100static struct resource msm_dmov_resource[] = {
101 {
Jeff Ohlstein4af72692011-11-07 15:59:17 -0800102 .start = ADM_0_SCSS_1_IRQ,
Joel King0581896d2011-07-19 16:43:28 -0700103 .flags = IORESOURCE_IRQ,
104 },
Jeff Ohlstein905f1ce2011-09-07 18:50:18 -0700105 {
Jeff Ohlstein4af72692011-11-07 15:59:17 -0800106 .start = 0x18320000,
107 .end = 0x18320000 + SZ_1M - 1,
Jeff Ohlstein905f1ce2011-09-07 18:50:18 -0700108 .flags = IORESOURCE_MEM,
109 },
110};
111
112static struct msm_dmov_pdata msm_dmov_pdata = {
Jeff Ohlstein4af72692011-11-07 15:59:17 -0800113 .sd = 1,
Jeff Ohlstein905f1ce2011-09-07 18:50:18 -0700114 .sd_size = 0x800,
Joel King0581896d2011-07-19 16:43:28 -0700115};
116
Stepan Moskovchenkodf13d342011-08-03 19:01:25 -0700117struct platform_device apq8064_device_dmov = {
Joel King0581896d2011-07-19 16:43:28 -0700118 .name = "msm_dmov",
119 .id = -1,
120 .resource = msm_dmov_resource,
121 .num_resources = ARRAY_SIZE(msm_dmov_resource),
Jeff Ohlstein905f1ce2011-09-07 18:50:18 -0700122 .dev = {
123 .platform_data = &msm_dmov_pdata,
124 },
Joel King0581896d2011-07-19 16:43:28 -0700125};
126
Stepan Moskovchenko2701a442011-08-19 13:47:22 -0700127static struct resource resources_uart_gsbi1[] = {
128 {
129 .start = APQ8064_GSBI1_UARTDM_IRQ,
130 .end = APQ8064_GSBI1_UARTDM_IRQ,
131 .flags = IORESOURCE_IRQ,
132 },
133 {
134 .start = MSM_UART1DM_PHYS,
135 .end = MSM_UART1DM_PHYS + PAGE_SIZE - 1,
136 .name = "uartdm_resource",
137 .flags = IORESOURCE_MEM,
138 },
139 {
140 .start = MSM_GSBI1_PHYS,
141 .end = MSM_GSBI1_PHYS + PAGE_SIZE - 1,
142 .name = "gsbi_resource",
143 .flags = IORESOURCE_MEM,
144 },
145};
146
147struct platform_device apq8064_device_uart_gsbi1 = {
148 .name = "msm_serial_hsl",
Jin Hong4bbbfba2012-02-02 21:48:07 -0800149 .id = 1,
Stepan Moskovchenko2701a442011-08-19 13:47:22 -0700150 .num_resources = ARRAY_SIZE(resources_uart_gsbi1),
151 .resource = resources_uart_gsbi1,
152};
153
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700154static struct resource resources_uart_gsbi3[] = {
155 {
156 .start = GSBI3_UARTDM_IRQ,
157 .end = GSBI3_UARTDM_IRQ,
158 .flags = IORESOURCE_IRQ,
159 },
160 {
161 .start = MSM_UART3DM_PHYS,
162 .end = MSM_UART3DM_PHYS + PAGE_SIZE - 1,
163 .name = "uartdm_resource",
164 .flags = IORESOURCE_MEM,
165 },
166 {
167 .start = MSM_GSBI3_PHYS,
168 .end = MSM_GSBI3_PHYS + PAGE_SIZE - 1,
169 .name = "gsbi_resource",
170 .flags = IORESOURCE_MEM,
171 },
172};
173
174struct platform_device apq8064_device_uart_gsbi3 = {
175 .name = "msm_serial_hsl",
176 .id = 0,
177 .num_resources = ARRAY_SIZE(resources_uart_gsbi3),
178 .resource = resources_uart_gsbi3,
179};
180
Jing Lin04601f92012-02-05 15:36:07 -0800181static struct resource resources_qup_i2c_gsbi3[] = {
182 {
183 .name = "gsbi_qup_i2c_addr",
184 .start = MSM_GSBI3_PHYS,
185 .end = MSM_GSBI3_PHYS + 4 - 1,
186 .flags = IORESOURCE_MEM,
187 },
188 {
189 .name = "qup_phys_addr",
190 .start = MSM_GSBI3_QUP_PHYS,
191 .end = MSM_GSBI3_QUP_PHYS + MSM_QUP_SIZE - 1,
192 .flags = IORESOURCE_MEM,
193 },
194 {
195 .name = "qup_err_intr",
196 .start = GSBI3_QUP_IRQ,
197 .end = GSBI3_QUP_IRQ,
198 .flags = IORESOURCE_IRQ,
199 },
200 {
201 .name = "i2c_clk",
202 .start = 9,
203 .end = 9,
204 .flags = IORESOURCE_IO,
205 },
206 {
207 .name = "i2c_sda",
208 .start = 8,
209 .end = 8,
210 .flags = IORESOURCE_IO,
211 },
212};
213
David Keitel3c40fc52012-02-09 17:53:52 -0800214static struct resource resources_qup_i2c_gsbi1[] = {
215 {
216 .name = "gsbi_qup_i2c_addr",
217 .start = MSM_GSBI1_PHYS,
218 .end = MSM_GSBI1_PHYS + 4 - 1,
219 .flags = IORESOURCE_MEM,
220 },
221 {
222 .name = "qup_phys_addr",
223 .start = MSM_GSBI1_QUP_PHYS,
224 .end = MSM_GSBI1_QUP_PHYS + MSM_QUP_SIZE - 1,
225 .flags = IORESOURCE_MEM,
226 },
227 {
228 .name = "qup_err_intr",
229 .start = APQ8064_GSBI1_QUP_IRQ,
230 .end = APQ8064_GSBI1_QUP_IRQ,
231 .flags = IORESOURCE_IRQ,
232 },
233 {
234 .name = "i2c_clk",
235 .start = 21,
236 .end = 21,
237 .flags = IORESOURCE_IO,
238 },
239 {
240 .name = "i2c_sda",
241 .start = 20,
242 .end = 20,
243 .flags = IORESOURCE_IO,
244 },
245};
246
247struct platform_device apq8064_device_qup_i2c_gsbi1 = {
248 .name = "qup_i2c",
249 .id = 0,
250 .num_resources = ARRAY_SIZE(resources_qup_i2c_gsbi1),
251 .resource = resources_qup_i2c_gsbi1,
252};
253
Jing Lin04601f92012-02-05 15:36:07 -0800254struct platform_device apq8064_device_qup_i2c_gsbi3 = {
255 .name = "qup_i2c",
256 .id = 3,
257 .num_resources = ARRAY_SIZE(resources_qup_i2c_gsbi3),
258 .resource = resources_qup_i2c_gsbi3,
259};
260
Kenneth Heitke748593a2011-07-15 15:45:11 -0600261static struct resource resources_qup_i2c_gsbi4[] = {
262 {
263 .name = "gsbi_qup_i2c_addr",
264 .start = MSM_GSBI4_PHYS,
Harini Jayaramane1554a92011-09-15 14:43:02 -0600265 .end = MSM_GSBI4_PHYS + 4 - 1,
Kenneth Heitke748593a2011-07-15 15:45:11 -0600266 .flags = IORESOURCE_MEM,
267 },
268 {
269 .name = "qup_phys_addr",
270 .start = MSM_GSBI4_QUP_PHYS,
Harini Jayaramane1554a92011-09-15 14:43:02 -0600271 .end = MSM_GSBI4_QUP_PHYS + MSM_QUP_SIZE - 1,
Kenneth Heitke748593a2011-07-15 15:45:11 -0600272 .flags = IORESOURCE_MEM,
273 },
274 {
275 .name = "qup_err_intr",
276 .start = GSBI4_QUP_IRQ,
277 .end = GSBI4_QUP_IRQ,
278 .flags = IORESOURCE_IRQ,
279 },
Kevin Chand07220e2012-02-13 15:52:22 -0800280 {
281 .name = "i2c_clk",
282 .start = 11,
283 .end = 11,
284 .flags = IORESOURCE_IO,
285 },
286 {
287 .name = "i2c_sda",
288 .start = 10,
289 .end = 10,
290 .flags = IORESOURCE_IO,
291 },
Kenneth Heitke748593a2011-07-15 15:45:11 -0600292};
293
294struct platform_device apq8064_device_qup_i2c_gsbi4 = {
295 .name = "qup_i2c",
296 .id = 4,
297 .num_resources = ARRAY_SIZE(resources_qup_i2c_gsbi4),
298 .resource = resources_qup_i2c_gsbi4,
299};
300
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700301static struct resource resources_qup_spi_gsbi5[] = {
302 {
303 .name = "spi_base",
304 .start = MSM_GSBI5_QUP_PHYS,
305 .end = MSM_GSBI5_QUP_PHYS + SZ_4K - 1,
306 .flags = IORESOURCE_MEM,
307 },
308 {
309 .name = "gsbi_base",
310 .start = MSM_GSBI5_PHYS,
311 .end = MSM_GSBI5_PHYS + 4 - 1,
312 .flags = IORESOURCE_MEM,
313 },
314 {
315 .name = "spi_irq_in",
316 .start = GSBI5_QUP_IRQ,
317 .end = GSBI5_QUP_IRQ,
318 .flags = IORESOURCE_IRQ,
319 },
320};
321
322struct platform_device apq8064_device_qup_spi_gsbi5 = {
323 .name = "spi_qsd",
324 .id = 0,
325 .num_resources = ARRAY_SIZE(resources_qup_spi_gsbi5),
326 .resource = resources_qup_spi_gsbi5,
327};
328
Joel King8f839b92012-04-01 14:37:46 -0700329static struct resource resources_qup_i2c_gsbi5[] = {
330 {
331 .name = "gsbi_qup_i2c_addr",
332 .start = MSM_GSBI5_PHYS,
333 .end = MSM_GSBI5_PHYS + 4 - 1,
334 .flags = IORESOURCE_MEM,
335 },
336 {
337 .name = "qup_phys_addr",
338 .start = MSM_GSBI5_QUP_PHYS,
339 .end = MSM_GSBI5_QUP_PHYS + MSM_QUP_SIZE - 1,
340 .flags = IORESOURCE_MEM,
341 },
342 {
343 .name = "qup_err_intr",
344 .start = GSBI5_QUP_IRQ,
345 .end = GSBI5_QUP_IRQ,
346 .flags = IORESOURCE_IRQ,
347 },
348 {
349 .name = "i2c_clk",
350 .start = 54,
351 .end = 54,
352 .flags = IORESOURCE_IO,
353 },
354 {
355 .name = "i2c_sda",
356 .start = 53,
357 .end = 53,
358 .flags = IORESOURCE_IO,
359 },
360};
361
362struct platform_device mpq8064_device_qup_i2c_gsbi5 = {
363 .name = "qup_i2c",
364 .id = 5,
365 .num_resources = ARRAY_SIZE(resources_qup_i2c_gsbi5),
366 .resource = resources_qup_i2c_gsbi5,
367};
368
Jin Hong4bbbfba2012-02-02 21:48:07 -0800369static struct resource resources_uart_gsbi7[] = {
370 {
371 .start = GSBI7_UARTDM_IRQ,
372 .end = GSBI7_UARTDM_IRQ,
373 .flags = IORESOURCE_IRQ,
374 },
375 {
376 .start = MSM_UART7DM_PHYS,
377 .end = MSM_UART7DM_PHYS + PAGE_SIZE - 1,
378 .name = "uartdm_resource",
379 .flags = IORESOURCE_MEM,
380 },
381 {
382 .start = MSM_GSBI7_PHYS,
383 .end = MSM_GSBI7_PHYS + PAGE_SIZE - 1,
384 .name = "gsbi_resource",
385 .flags = IORESOURCE_MEM,
386 },
387};
388
389struct platform_device apq8064_device_uart_gsbi7 = {
390 .name = "msm_serial_hsl",
391 .id = 0,
392 .num_resources = ARRAY_SIZE(resources_uart_gsbi7),
393 .resource = resources_uart_gsbi7,
394};
395
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800396struct platform_device apq_pcm = {
397 .name = "msm-pcm-dsp",
398 .id = -1,
399};
400
401struct platform_device apq_pcm_routing = {
402 .name = "msm-pcm-routing",
403 .id = -1,
404};
405
406struct platform_device apq_cpudai0 = {
407 .name = "msm-dai-q6",
408 .id = 0x4000,
409};
410
411struct platform_device apq_cpudai1 = {
412 .name = "msm-dai-q6",
413 .id = 0x4001,
414};
Santosh Mardieff9a742012-04-09 23:23:39 +0530415struct platform_device mpq_cpudai_sec_i2s_rx = {
416 .name = "msm-dai-q6",
417 .id = 4,
418};
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800419struct platform_device apq_cpudai_hdmi_rx = {
Swaminathan Sathappanfd9dbad2012-02-15 16:56:44 -0800420 .name = "msm-dai-q6-hdmi",
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800421 .id = 8,
422};
423
424struct platform_device apq_cpudai_bt_rx = {
425 .name = "msm-dai-q6",
426 .id = 0x3000,
427};
428
429struct platform_device apq_cpudai_bt_tx = {
430 .name = "msm-dai-q6",
431 .id = 0x3001,
432};
433
434struct platform_device apq_cpudai_fm_rx = {
435 .name = "msm-dai-q6",
436 .id = 0x3004,
437};
438
439struct platform_device apq_cpudai_fm_tx = {
440 .name = "msm-dai-q6",
441 .id = 0x3005,
442};
443
Helen Zeng8f925502012-03-05 16:50:17 -0800444struct platform_device apq_cpudai_slim_4_rx = {
445 .name = "msm-dai-q6",
446 .id = 0x4008,
447};
448
449struct platform_device apq_cpudai_slim_4_tx = {
450 .name = "msm-dai-q6",
451 .id = 0x4009,
452};
453
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800454/*
455 * Machine specific data for AUX PCM Interface
456 * which the driver will be unware of.
457 */
Kiran Kandi5f4ab692012-02-23 11:23:56 -0800458struct msm_dai_auxpcm_pdata apq_auxpcm_pdata = {
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800459 .clk = "pcm_clk",
460 .mode = AFE_PCM_CFG_MODE_PCM,
461 .sync = AFE_PCM_CFG_SYNC_INT,
462 .frame = AFE_PCM_CFG_FRM_256BPF,
463 .quant = AFE_PCM_CFG_QUANT_LINEAR_NOPAD,
464 .slot = 0,
465 .data = AFE_PCM_CFG_CDATAOE_MASTER,
466 .pcm_clk_rate = 2048000,
467};
468
469struct platform_device apq_cpudai_auxpcm_rx = {
470 .name = "msm-dai-q6",
471 .id = 2,
472 .dev = {
Kiran Kandi5f4ab692012-02-23 11:23:56 -0800473 .platform_data = &apq_auxpcm_pdata,
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800474 },
475};
476
477struct platform_device apq_cpudai_auxpcm_tx = {
478 .name = "msm-dai-q6",
479 .id = 3,
Kiran Kandi5f4ab692012-02-23 11:23:56 -0800480 .dev = {
481 .platform_data = &apq_auxpcm_pdata,
482 },
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800483};
484
Kuirong Wangf23f8c52012-03-31 12:34:51 -0700485struct msm_mi2s_data mpq_mi2s_tx_data = {
486 .sd_lines = MSM_MI2S_SD0 | MSM_MI2S_SD1 | MSM_MI2S_SD2 | MSM_MI2S_SD3,
487 .capability = MSM_MI2S_CAP_TX,
488};
489
490struct platform_device mpq_cpudai_mi2s_tx = {
491 .name = "msm-dai-q6",
492 .id = 7, /*MI2S_TX */
493 .dev = {
494 .platform_data = &mpq_mi2s_tx_data,
495 },
496};
497
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800498struct platform_device apq_cpu_fe = {
499 .name = "msm-dai-fe",
500 .id = -1,
501};
502
503struct platform_device apq_stub_codec = {
504 .name = "msm-stub-codec",
505 .id = 1,
506};
507
508struct platform_device apq_voice = {
509 .name = "msm-pcm-voice",
510 .id = -1,
511};
512
513struct platform_device apq_voip = {
514 .name = "msm-voip-dsp",
515 .id = -1,
516};
517
518struct platform_device apq_lpa_pcm = {
519 .name = "msm-pcm-lpa",
520 .id = -1,
521};
522
Krishnankutty Kolathappilly4374e332012-03-18 22:27:30 -0700523struct platform_device apq_compr_dsp = {
524 .name = "msm-compr-dsp",
525 .id = -1,
526};
527
528struct platform_device apq_multi_ch_pcm = {
529 .name = "msm-multi-ch-pcm-dsp",
530 .id = -1,
531};
532
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800533struct platform_device apq_pcm_hostless = {
534 .name = "msm-pcm-hostless",
535 .id = -1,
536};
537
538struct platform_device apq_cpudai_afe_01_rx = {
539 .name = "msm-dai-q6",
540 .id = 0xE0,
541};
542
543struct platform_device apq_cpudai_afe_01_tx = {
544 .name = "msm-dai-q6",
545 .id = 0xF0,
546};
547
548struct platform_device apq_cpudai_afe_02_rx = {
549 .name = "msm-dai-q6",
550 .id = 0xF1,
551};
552
553struct platform_device apq_cpudai_afe_02_tx = {
554 .name = "msm-dai-q6",
555 .id = 0xE1,
556};
557
558struct platform_device apq_pcm_afe = {
559 .name = "msm-pcm-afe",
560 .id = -1,
561};
562
Neema Shetty8427c262012-02-16 11:23:43 -0800563struct platform_device apq_cpudai_stub = {
564 .name = "msm-dai-stub",
565 .id = -1,
566};
567
Neema Shetty3c9d2862012-03-11 01:25:32 -0800568struct platform_device apq_cpudai_slimbus_1_rx = {
569 .name = "msm-dai-q6",
570 .id = 0x4002,
571};
572
573struct platform_device apq_cpudai_slimbus_1_tx = {
574 .name = "msm-dai-q6",
575 .id = 0x4003,
576};
577
Kiran Kandi1e6371d2012-03-29 11:48:57 -0700578struct platform_device apq_cpudai_slimbus_2_tx = {
579 .name = "msm-dai-q6",
580 .id = 0x4005,
581};
582
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700583static struct resource resources_ssbi_pmic1[] = {
584 {
585 .start = MSM_PMIC1_SSBI_CMD_PHYS,
586 .end = MSM_PMIC1_SSBI_CMD_PHYS + MSM_PMIC_SSBI_SIZE - 1,
587 .flags = IORESOURCE_MEM,
588 },
589};
590
Sagar Dharia8bdcdaf2011-09-16 16:01:15 -0600591#define LPASS_SLIMBUS_PHYS 0x28080000
592#define LPASS_SLIMBUS_BAM_PHYS 0x28084000
Swaminathan Sathappan2316e082012-02-03 14:07:17 -0800593#define LPASS_SLIMBUS_SLEW (MSM8960_TLMM_PHYS + 0x207C)
Sagar Dharia8bdcdaf2011-09-16 16:01:15 -0600594/* Board info for the slimbus slave device */
595static struct resource slimbus_res[] = {
596 {
597 .start = LPASS_SLIMBUS_PHYS,
598 .end = LPASS_SLIMBUS_PHYS + 8191,
599 .flags = IORESOURCE_MEM,
600 .name = "slimbus_physical",
601 },
602 {
603 .start = LPASS_SLIMBUS_BAM_PHYS,
604 .end = LPASS_SLIMBUS_BAM_PHYS + 8191,
605 .flags = IORESOURCE_MEM,
606 .name = "slimbus_bam_physical",
607 },
608 {
Swaminathan Sathappan2316e082012-02-03 14:07:17 -0800609 .start = LPASS_SLIMBUS_SLEW,
610 .end = LPASS_SLIMBUS_SLEW + 4 - 1,
611 .flags = IORESOURCE_MEM,
612 .name = "slimbus_slew_reg",
613 },
614 {
Sagar Dharia8bdcdaf2011-09-16 16:01:15 -0600615 .start = SLIMBUS0_CORE_EE1_IRQ,
616 .end = SLIMBUS0_CORE_EE1_IRQ,
617 .flags = IORESOURCE_IRQ,
618 .name = "slimbus_irq",
619 },
620 {
621 .start = SLIMBUS0_BAM_EE1_IRQ,
622 .end = SLIMBUS0_BAM_EE1_IRQ,
623 .flags = IORESOURCE_IRQ,
624 .name = "slimbus_bam_irq",
625 },
626};
627
628struct platform_device apq8064_slim_ctrl = {
629 .name = "msm_slim_ctrl",
630 .id = 1,
631 .num_resources = ARRAY_SIZE(slimbus_res),
632 .resource = slimbus_res,
633 .dev = {
634 .coherent_dma_mask = 0xffffffffULL,
635 },
636};
637
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700638struct platform_device apq8064_device_ssbi_pmic1 = {
639 .name = "msm_ssbi",
640 .id = 0,
641 .resource = resources_ssbi_pmic1,
642 .num_resources = ARRAY_SIZE(resources_ssbi_pmic1),
643};
644
645static struct resource resources_ssbi_pmic2[] = {
646 {
647 .start = MSM_PMIC2_SSBI_CMD_PHYS,
648 .end = MSM_PMIC2_SSBI_CMD_PHYS + MSM_PMIC_SSBI_SIZE - 1,
649 .flags = IORESOURCE_MEM,
650 },
651};
652
653struct platform_device apq8064_device_ssbi_pmic2 = {
654 .name = "msm_ssbi",
655 .id = 1,
656 .resource = resources_ssbi_pmic2,
657 .num_resources = ARRAY_SIZE(resources_ssbi_pmic2),
658};
659
660static struct resource resources_otg[] = {
661 {
Hemant Kumard86c4882012-01-24 19:39:37 -0800662 .start = MSM_HSUSB1_PHYS,
663 .end = MSM_HSUSB1_PHYS + MSM_HSUSB1_SIZE - 1,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700664 .flags = IORESOURCE_MEM,
665 },
666 {
667 .start = USB1_HS_IRQ,
668 .end = USB1_HS_IRQ,
669 .flags = IORESOURCE_IRQ,
670 },
671};
672
Stepan Moskovchenko14aa6492011-08-08 15:15:01 -0700673struct platform_device apq8064_device_otg = {
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700674 .name = "msm_otg",
675 .id = -1,
676 .num_resources = ARRAY_SIZE(resources_otg),
677 .resource = resources_otg,
678 .dev = {
679 .coherent_dma_mask = 0xffffffff,
680 },
681};
682
683static struct resource resources_hsusb[] = {
684 {
Hemant Kumard86c4882012-01-24 19:39:37 -0800685 .start = MSM_HSUSB1_PHYS,
686 .end = MSM_HSUSB1_PHYS + MSM_HSUSB1_SIZE - 1,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700687 .flags = IORESOURCE_MEM,
688 },
689 {
690 .start = USB1_HS_IRQ,
691 .end = USB1_HS_IRQ,
692 .flags = IORESOURCE_IRQ,
693 },
694};
695
Stepan Moskovchenko14aa6492011-08-08 15:15:01 -0700696struct platform_device apq8064_device_gadget_peripheral = {
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700697 .name = "msm_hsusb",
698 .id = -1,
699 .num_resources = ARRAY_SIZE(resources_hsusb),
700 .resource = resources_hsusb,
701 .dev = {
702 .coherent_dma_mask = 0xffffffff,
703 },
704};
705
Hemant Kumard86c4882012-01-24 19:39:37 -0800706static struct resource resources_hsusb_host[] = {
707 {
708 .start = MSM_HSUSB1_PHYS,
709 .end = MSM_HSUSB1_PHYS + MSM_HSUSB1_SIZE - 1,
710 .flags = IORESOURCE_MEM,
711 },
712 {
713 .start = USB1_HS_IRQ,
714 .end = USB1_HS_IRQ,
715 .flags = IORESOURCE_IRQ,
716 },
717};
718
Hemant Kumara945b472012-01-25 15:08:06 -0800719static struct resource resources_hsic_host[] = {
720 {
721 .start = 0x12510000,
722 .end = 0x12510000 + SZ_4K - 1,
723 .flags = IORESOURCE_MEM,
724 },
725 {
726 .start = USB2_HSIC_IRQ,
727 .end = USB2_HSIC_IRQ,
728 .flags = IORESOURCE_IRQ,
729 },
730 {
731 .start = MSM_GPIO_TO_INT(49),
732 .end = MSM_GPIO_TO_INT(49),
733 .name = "peripheral_status_irq",
734 .flags = IORESOURCE_IRQ,
735 },
Vamsi Krishna6921cbe2012-02-21 18:34:43 -0800736 {
737 .start = MSM_GPIO_TO_INT(88),
738 .end = MSM_GPIO_TO_INT(88),
739 .name = "wakeup_irq",
740 .flags = IORESOURCE_IRQ,
741 },
Hemant Kumara945b472012-01-25 15:08:06 -0800742};
743
Hemant Kumard86c4882012-01-24 19:39:37 -0800744static u64 dma_mask = DMA_BIT_MASK(32);
745struct platform_device apq8064_device_hsusb_host = {
746 .name = "msm_hsusb_host",
747 .id = -1,
748 .num_resources = ARRAY_SIZE(resources_hsusb_host),
749 .resource = resources_hsusb_host,
750 .dev = {
751 .dma_mask = &dma_mask,
752 .coherent_dma_mask = 0xffffffff,
753 },
754};
755
Hemant Kumara945b472012-01-25 15:08:06 -0800756struct platform_device apq8064_device_hsic_host = {
757 .name = "msm_hsic_host",
758 .id = -1,
759 .num_resources = ARRAY_SIZE(resources_hsic_host),
760 .resource = resources_hsic_host,
761 .dev = {
762 .dma_mask = &dma_mask,
763 .coherent_dma_mask = DMA_BIT_MASK(32),
764 },
765};
766
Manu Gautam91223e02011-11-08 15:27:22 +0530767static struct resource resources_ehci_host3[] = {
768{
769 .start = MSM_HSUSB3_PHYS,
770 .end = MSM_HSUSB3_PHYS + MSM_HSUSB3_SIZE - 1,
771 .flags = IORESOURCE_MEM,
772 },
773 {
774 .start = USB3_HS_IRQ,
775 .end = USB3_HS_IRQ,
776 .flags = IORESOURCE_IRQ,
777 },
778};
779
780struct platform_device apq8064_device_ehci_host3 = {
781 .name = "msm_ehci_host",
782 .id = 0,
783 .num_resources = ARRAY_SIZE(resources_ehci_host3),
784 .resource = resources_ehci_host3,
785 .dev = {
786 .dma_mask = &dma_mask,
787 .coherent_dma_mask = 0xffffffff,
788 },
789};
790
Hemant Kumar1d66e1c2012-02-13 15:24:59 -0800791static struct resource resources_ehci_host4[] = {
792{
793 .start = MSM_HSUSB4_PHYS,
794 .end = MSM_HSUSB4_PHYS + MSM_HSUSB4_SIZE - 1,
795 .flags = IORESOURCE_MEM,
796 },
797 {
798 .start = USB4_HS_IRQ,
799 .end = USB4_HS_IRQ,
800 .flags = IORESOURCE_IRQ,
801 },
802};
803
804struct platform_device apq8064_device_ehci_host4 = {
805 .name = "msm_ehci_host",
806 .id = 1,
807 .num_resources = ARRAY_SIZE(resources_ehci_host4),
808 .resource = resources_ehci_host4,
809 .dev = {
810 .dma_mask = &dma_mask,
811 .coherent_dma_mask = 0xffffffff,
812 },
813};
814
Mohan Kumar Gubbihalli Lachma Naik7f72edd2012-02-06 17:26:47 -0800815/* MSM Video core device */
816#ifdef CONFIG_MSM_BUS_SCALING
817static struct msm_bus_vectors vidc_init_vectors[] = {
818 {
819 .src = MSM_BUS_MASTER_VIDEO_ENC,
820 .dst = MSM_BUS_SLAVE_EBI_CH0,
821 .ab = 0,
822 .ib = 0,
823 },
824 {
825 .src = MSM_BUS_MASTER_VIDEO_DEC,
826 .dst = MSM_BUS_SLAVE_EBI_CH0,
827 .ab = 0,
828 .ib = 0,
829 },
830 {
831 .src = MSM_BUS_MASTER_AMPSS_M0,
832 .dst = MSM_BUS_SLAVE_EBI_CH0,
833 .ab = 0,
834 .ib = 0,
835 },
836 {
837 .src = MSM_BUS_MASTER_AMPSS_M0,
838 .dst = MSM_BUS_SLAVE_EBI_CH0,
839 .ab = 0,
840 .ib = 0,
841 },
842};
843static struct msm_bus_vectors vidc_venc_vga_vectors[] = {
844 {
845 .src = MSM_BUS_MASTER_VIDEO_ENC,
846 .dst = MSM_BUS_SLAVE_EBI_CH0,
847 .ab = 54525952,
848 .ib = 436207616,
849 },
850 {
851 .src = MSM_BUS_MASTER_VIDEO_DEC,
852 .dst = MSM_BUS_SLAVE_EBI_CH0,
853 .ab = 72351744,
854 .ib = 289406976,
855 },
856 {
857 .src = MSM_BUS_MASTER_AMPSS_M0,
858 .dst = MSM_BUS_SLAVE_EBI_CH0,
859 .ab = 500000,
860 .ib = 1000000,
861 },
862 {
863 .src = MSM_BUS_MASTER_AMPSS_M0,
864 .dst = MSM_BUS_SLAVE_EBI_CH0,
865 .ab = 500000,
866 .ib = 1000000,
867 },
868};
869static struct msm_bus_vectors vidc_vdec_vga_vectors[] = {
870 {
871 .src = MSM_BUS_MASTER_VIDEO_ENC,
872 .dst = MSM_BUS_SLAVE_EBI_CH0,
873 .ab = 40894464,
874 .ib = 327155712,
875 },
876 {
877 .src = MSM_BUS_MASTER_VIDEO_DEC,
878 .dst = MSM_BUS_SLAVE_EBI_CH0,
879 .ab = 48234496,
880 .ib = 192937984,
881 },
882 {
883 .src = MSM_BUS_MASTER_AMPSS_M0,
884 .dst = MSM_BUS_SLAVE_EBI_CH0,
885 .ab = 500000,
886 .ib = 2000000,
887 },
888 {
889 .src = MSM_BUS_MASTER_AMPSS_M0,
890 .dst = MSM_BUS_SLAVE_EBI_CH0,
891 .ab = 500000,
892 .ib = 2000000,
893 },
894};
895static struct msm_bus_vectors vidc_venc_720p_vectors[] = {
896 {
897 .src = MSM_BUS_MASTER_VIDEO_ENC,
898 .dst = MSM_BUS_SLAVE_EBI_CH0,
899 .ab = 163577856,
900 .ib = 1308622848,
901 },
902 {
903 .src = MSM_BUS_MASTER_VIDEO_DEC,
904 .dst = MSM_BUS_SLAVE_EBI_CH0,
905 .ab = 219152384,
906 .ib = 876609536,
907 },
908 {
909 .src = MSM_BUS_MASTER_AMPSS_M0,
910 .dst = MSM_BUS_SLAVE_EBI_CH0,
911 .ab = 1750000,
912 .ib = 3500000,
913 },
914 {
915 .src = MSM_BUS_MASTER_AMPSS_M0,
916 .dst = MSM_BUS_SLAVE_EBI_CH0,
917 .ab = 1750000,
918 .ib = 3500000,
919 },
920};
921static struct msm_bus_vectors vidc_vdec_720p_vectors[] = {
922 {
923 .src = MSM_BUS_MASTER_VIDEO_ENC,
924 .dst = MSM_BUS_SLAVE_EBI_CH0,
925 .ab = 121634816,
926 .ib = 973078528,
927 },
928 {
929 .src = MSM_BUS_MASTER_VIDEO_DEC,
930 .dst = MSM_BUS_SLAVE_EBI_CH0,
931 .ab = 155189248,
932 .ib = 620756992,
933 },
934 {
935 .src = MSM_BUS_MASTER_AMPSS_M0,
936 .dst = MSM_BUS_SLAVE_EBI_CH0,
937 .ab = 1750000,
938 .ib = 7000000,
939 },
940 {
941 .src = MSM_BUS_MASTER_AMPSS_M0,
942 .dst = MSM_BUS_SLAVE_EBI_CH0,
943 .ab = 1750000,
944 .ib = 7000000,
945 },
946};
947static struct msm_bus_vectors vidc_venc_1080p_vectors[] = {
948 {
949 .src = MSM_BUS_MASTER_VIDEO_ENC,
950 .dst = MSM_BUS_SLAVE_EBI_CH0,
951 .ab = 372244480,
952 .ib = 2560000000U,
953 },
954 {
955 .src = MSM_BUS_MASTER_VIDEO_DEC,
956 .dst = MSM_BUS_SLAVE_EBI_CH0,
957 .ab = 501219328,
958 .ib = 2560000000U,
959 },
960 {
961 .src = MSM_BUS_MASTER_AMPSS_M0,
962 .dst = MSM_BUS_SLAVE_EBI_CH0,
963 .ab = 2500000,
964 .ib = 5000000,
965 },
966 {
967 .src = MSM_BUS_MASTER_AMPSS_M0,
968 .dst = MSM_BUS_SLAVE_EBI_CH0,
969 .ab = 2500000,
970 .ib = 5000000,
971 },
972};
973static struct msm_bus_vectors vidc_vdec_1080p_vectors[] = {
974 {
975 .src = MSM_BUS_MASTER_VIDEO_ENC,
976 .dst = MSM_BUS_SLAVE_EBI_CH0,
977 .ab = 222298112,
978 .ib = 2560000000U,
979 },
980 {
981 .src = MSM_BUS_MASTER_VIDEO_DEC,
982 .dst = MSM_BUS_SLAVE_EBI_CH0,
983 .ab = 330301440,
984 .ib = 2560000000U,
985 },
986 {
987 .src = MSM_BUS_MASTER_AMPSS_M0,
988 .dst = MSM_BUS_SLAVE_EBI_CH0,
989 .ab = 2500000,
990 .ib = 700000000,
991 },
992 {
993 .src = MSM_BUS_MASTER_AMPSS_M0,
994 .dst = MSM_BUS_SLAVE_EBI_CH0,
995 .ab = 2500000,
996 .ib = 10000000,
997 },
998};
999
1000static struct msm_bus_paths vidc_bus_client_config[] = {
1001 {
1002 ARRAY_SIZE(vidc_init_vectors),
1003 vidc_init_vectors,
1004 },
1005 {
1006 ARRAY_SIZE(vidc_venc_vga_vectors),
1007 vidc_venc_vga_vectors,
1008 },
1009 {
1010 ARRAY_SIZE(vidc_vdec_vga_vectors),
1011 vidc_vdec_vga_vectors,
1012 },
1013 {
1014 ARRAY_SIZE(vidc_venc_720p_vectors),
1015 vidc_venc_720p_vectors,
1016 },
1017 {
1018 ARRAY_SIZE(vidc_vdec_720p_vectors),
1019 vidc_vdec_720p_vectors,
1020 },
1021 {
1022 ARRAY_SIZE(vidc_venc_1080p_vectors),
1023 vidc_venc_1080p_vectors,
1024 },
1025 {
1026 ARRAY_SIZE(vidc_vdec_1080p_vectors),
1027 vidc_vdec_1080p_vectors,
1028 },
1029};
1030
1031static struct msm_bus_scale_pdata vidc_bus_client_data = {
1032 vidc_bus_client_config,
1033 ARRAY_SIZE(vidc_bus_client_config),
1034 .name = "vidc",
1035};
1036#endif
1037
1038
1039#define APQ8064_VIDC_BASE_PHYS 0x04400000
1040#define APQ8064_VIDC_BASE_SIZE 0x00100000
1041
1042static struct resource apq8064_device_vidc_resources[] = {
1043 {
1044 .start = APQ8064_VIDC_BASE_PHYS,
1045 .end = APQ8064_VIDC_BASE_PHYS + APQ8064_VIDC_BASE_SIZE - 1,
1046 .flags = IORESOURCE_MEM,
1047 },
1048 {
1049 .start = VCODEC_IRQ,
1050 .end = VCODEC_IRQ,
1051 .flags = IORESOURCE_IRQ,
1052 },
1053};
1054
1055struct msm_vidc_platform_data apq8064_vidc_platform_data = {
1056#ifdef CONFIG_MSM_BUS_SCALING
1057 .vidc_bus_client_pdata = &vidc_bus_client_data,
1058#endif
1059#ifdef CONFIG_MSM_MULTIMEDIA_USE_ION
1060 .memtype = ION_CP_MM_HEAP_ID,
1061 .enable_ion = 1,
1062#else
1063 .memtype = MEMTYPE_EBI1,
1064 .enable_ion = 0,
1065#endif
1066 .disable_dmx = 0,
1067 .disable_fullhd = 0,
Mohan Kumar Gubbihalli Lachma Naiked9dc912012-03-01 19:11:14 -08001068 .cont_mode_dpb_count = 18,
Mohan Kumar Gubbihalli Lachma Naik7f72edd2012-02-06 17:26:47 -08001069};
1070
1071struct platform_device apq8064_msm_device_vidc = {
1072 .name = "msm_vidc",
1073 .id = 0,
1074 .num_resources = ARRAY_SIZE(apq8064_device_vidc_resources),
1075 .resource = apq8064_device_vidc_resources,
1076 .dev = {
1077 .platform_data = &apq8064_vidc_platform_data,
1078 },
1079};
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001080#define MSM_SDC1_BASE 0x12400000
1081#define MSM_SDC1_DML_BASE (MSM_SDC1_BASE + 0x800)
1082#define MSM_SDC1_BAM_BASE (MSM_SDC1_BASE + 0x2000)
1083#define MSM_SDC2_BASE 0x12140000
1084#define MSM_SDC2_DML_BASE (MSM_SDC2_BASE + 0x800)
1085#define MSM_SDC2_BAM_BASE (MSM_SDC2_BASE + 0x2000)
1086#define MSM_SDC3_BASE 0x12180000
1087#define MSM_SDC3_DML_BASE (MSM_SDC3_BASE + 0x800)
1088#define MSM_SDC3_BAM_BASE (MSM_SDC3_BASE + 0x2000)
1089#define MSM_SDC4_BASE 0x121C0000
1090#define MSM_SDC4_DML_BASE (MSM_SDC4_BASE + 0x800)
1091#define MSM_SDC4_BAM_BASE (MSM_SDC4_BASE + 0x2000)
1092
1093static struct resource resources_sdc1[] = {
1094 {
1095 .name = "core_mem",
1096 .flags = IORESOURCE_MEM,
1097 .start = MSM_SDC1_BASE,
1098 .end = MSM_SDC1_DML_BASE - 1,
1099 },
1100 {
1101 .name = "core_irq",
1102 .flags = IORESOURCE_IRQ,
1103 .start = SDC1_IRQ_0,
1104 .end = SDC1_IRQ_0
1105 },
1106#ifdef CONFIG_MMC_MSM_SPS_SUPPORT
1107 {
1108 .name = "sdcc_dml_addr",
1109 .start = MSM_SDC1_DML_BASE,
1110 .end = MSM_SDC1_BAM_BASE - 1,
1111 .flags = IORESOURCE_MEM,
1112 },
1113 {
1114 .name = "sdcc_bam_addr",
1115 .start = MSM_SDC1_BAM_BASE,
1116 .end = MSM_SDC1_BAM_BASE + (2 * SZ_4K) - 1,
1117 .flags = IORESOURCE_MEM,
1118 },
1119 {
1120 .name = "sdcc_bam_irq",
1121 .start = SDC1_BAM_IRQ,
1122 .end = SDC1_BAM_IRQ,
1123 .flags = IORESOURCE_IRQ,
1124 },
1125#endif
1126};
1127
1128static struct resource resources_sdc2[] = {
1129 {
1130 .name = "core_mem",
1131 .flags = IORESOURCE_MEM,
1132 .start = MSM_SDC2_BASE,
1133 .end = MSM_SDC2_DML_BASE - 1,
1134 },
1135 {
1136 .name = "core_irq",
1137 .flags = IORESOURCE_IRQ,
1138 .start = SDC2_IRQ_0,
1139 .end = SDC2_IRQ_0
1140 },
1141#ifdef CONFIG_MMC_MSM_SPS_SUPPORT
1142 {
1143 .name = "sdcc_dml_addr",
1144 .start = MSM_SDC2_DML_BASE,
1145 .end = MSM_SDC2_BAM_BASE - 1,
1146 .flags = IORESOURCE_MEM,
1147 },
1148 {
1149 .name = "sdcc_bam_addr",
1150 .start = MSM_SDC2_BAM_BASE,
1151 .end = MSM_SDC2_BAM_BASE + (2 * SZ_4K) - 1,
1152 .flags = IORESOURCE_MEM,
1153 },
1154 {
1155 .name = "sdcc_bam_irq",
1156 .start = SDC2_BAM_IRQ,
1157 .end = SDC2_BAM_IRQ,
1158 .flags = IORESOURCE_IRQ,
1159 },
1160#endif
1161};
1162
1163static struct resource resources_sdc3[] = {
1164 {
1165 .name = "core_mem",
1166 .flags = IORESOURCE_MEM,
1167 .start = MSM_SDC3_BASE,
1168 .end = MSM_SDC3_DML_BASE - 1,
1169 },
1170 {
1171 .name = "core_irq",
1172 .flags = IORESOURCE_IRQ,
1173 .start = SDC3_IRQ_0,
1174 .end = SDC3_IRQ_0
1175 },
1176#ifdef CONFIG_MMC_MSM_SPS_SUPPORT
1177 {
1178 .name = "sdcc_dml_addr",
1179 .start = MSM_SDC3_DML_BASE,
1180 .end = MSM_SDC3_BAM_BASE - 1,
1181 .flags = IORESOURCE_MEM,
1182 },
1183 {
1184 .name = "sdcc_bam_addr",
1185 .start = MSM_SDC3_BAM_BASE,
1186 .end = MSM_SDC3_BAM_BASE + (2 * SZ_4K) - 1,
1187 .flags = IORESOURCE_MEM,
1188 },
1189 {
1190 .name = "sdcc_bam_irq",
1191 .start = SDC3_BAM_IRQ,
1192 .end = SDC3_BAM_IRQ,
1193 .flags = IORESOURCE_IRQ,
1194 },
1195#endif
1196};
1197
1198static struct resource resources_sdc4[] = {
1199 {
1200 .name = "core_mem",
1201 .flags = IORESOURCE_MEM,
1202 .start = MSM_SDC4_BASE,
1203 .end = MSM_SDC4_DML_BASE - 1,
1204 },
1205 {
1206 .name = "core_irq",
1207 .flags = IORESOURCE_IRQ,
1208 .start = SDC4_IRQ_0,
1209 .end = SDC4_IRQ_0
1210 },
1211#ifdef CONFIG_MMC_MSM_SPS_SUPPORT
1212 {
1213 .name = "sdcc_dml_addr",
1214 .start = MSM_SDC4_DML_BASE,
1215 .end = MSM_SDC4_BAM_BASE - 1,
1216 .flags = IORESOURCE_MEM,
1217 },
1218 {
1219 .name = "sdcc_bam_addr",
1220 .start = MSM_SDC4_BAM_BASE,
1221 .end = MSM_SDC4_BAM_BASE + (2 * SZ_4K) - 1,
1222 .flags = IORESOURCE_MEM,
1223 },
1224 {
1225 .name = "sdcc_bam_irq",
1226 .start = SDC4_BAM_IRQ,
1227 .end = SDC4_BAM_IRQ,
1228 .flags = IORESOURCE_IRQ,
1229 },
1230#endif
1231};
1232
1233struct platform_device apq8064_device_sdc1 = {
1234 .name = "msm_sdcc",
1235 .id = 1,
1236 .num_resources = ARRAY_SIZE(resources_sdc1),
1237 .resource = resources_sdc1,
1238 .dev = {
1239 .coherent_dma_mask = 0xffffffff,
1240 },
1241};
1242
1243struct platform_device apq8064_device_sdc2 = {
1244 .name = "msm_sdcc",
1245 .id = 2,
1246 .num_resources = ARRAY_SIZE(resources_sdc2),
1247 .resource = resources_sdc2,
1248 .dev = {
1249 .coherent_dma_mask = 0xffffffff,
1250 },
1251};
1252
1253struct platform_device apq8064_device_sdc3 = {
1254 .name = "msm_sdcc",
1255 .id = 3,
1256 .num_resources = ARRAY_SIZE(resources_sdc3),
1257 .resource = resources_sdc3,
1258 .dev = {
1259 .coherent_dma_mask = 0xffffffff,
1260 },
1261};
1262
1263struct platform_device apq8064_device_sdc4 = {
1264 .name = "msm_sdcc",
1265 .id = 4,
1266 .num_resources = ARRAY_SIZE(resources_sdc4),
1267 .resource = resources_sdc4,
1268 .dev = {
1269 .coherent_dma_mask = 0xffffffff,
1270 },
1271};
1272
1273static struct platform_device *apq8064_sdcc_devices[] __initdata = {
1274 &apq8064_device_sdc1,
1275 &apq8064_device_sdc2,
1276 &apq8064_device_sdc3,
1277 &apq8064_device_sdc4,
1278};
1279
1280int __init apq8064_add_sdcc(unsigned int controller,
1281 struct mmc_platform_data *plat)
1282{
1283 struct platform_device *pdev;
1284
1285 if (!plat)
1286 return 0;
1287 if (controller < 1 || controller > 4)
1288 return -EINVAL;
1289
1290 pdev = apq8064_sdcc_devices[controller-1];
1291 pdev->dev.platform_data = plat;
1292 return platform_device_register(pdev);
1293}
1294
Yan He06913ce2011-08-26 16:33:46 -07001295static struct resource resources_sps[] = {
1296 {
1297 .name = "pipe_mem",
1298 .start = 0x12800000,
1299 .end = 0x12800000 + 0x4000 - 1,
1300 .flags = IORESOURCE_MEM,
1301 },
1302 {
1303 .name = "bamdma_dma",
1304 .start = 0x12240000,
1305 .end = 0x12240000 + 0x1000 - 1,
1306 .flags = IORESOURCE_MEM,
1307 },
1308 {
1309 .name = "bamdma_bam",
1310 .start = 0x12244000,
1311 .end = 0x12244000 + 0x4000 - 1,
1312 .flags = IORESOURCE_MEM,
1313 },
1314 {
1315 .name = "bamdma_irq",
1316 .start = SPS_BAM_DMA_IRQ,
1317 .end = SPS_BAM_DMA_IRQ,
1318 .flags = IORESOURCE_IRQ,
1319 },
1320};
1321
Gagan Mac8a7a5d32011-11-11 16:43:06 -07001322struct platform_device msm_bus_8064_sys_fabric = {
1323 .name = "msm_bus_fabric",
1324 .id = MSM_BUS_FAB_SYSTEM,
1325};
1326struct platform_device msm_bus_8064_apps_fabric = {
1327 .name = "msm_bus_fabric",
1328 .id = MSM_BUS_FAB_APPSS,
1329};
1330struct platform_device msm_bus_8064_mm_fabric = {
1331 .name = "msm_bus_fabric",
1332 .id = MSM_BUS_FAB_MMSS,
1333};
1334struct platform_device msm_bus_8064_sys_fpb = {
1335 .name = "msm_bus_fabric",
1336 .id = MSM_BUS_FAB_SYSTEM_FPB,
1337};
1338struct platform_device msm_bus_8064_cpss_fpb = {
1339 .name = "msm_bus_fabric",
1340 .id = MSM_BUS_FAB_CPSS_FPB,
1341};
1342
Yan He06913ce2011-08-26 16:33:46 -07001343static struct msm_sps_platform_data msm_sps_pdata = {
1344 .bamdma_restricted_pipes = 0x06,
1345};
1346
1347struct platform_device msm_device_sps_apq8064 = {
1348 .name = "msm_sps",
1349 .id = -1,
1350 .num_resources = ARRAY_SIZE(resources_sps),
1351 .resource = resources_sps,
1352 .dev.platform_data = &msm_sps_pdata,
1353};
1354
Eric Holmberg023d25c2012-03-01 12:27:55 -07001355static struct resource smd_resource[] = {
1356 {
1357 .name = "a9_m2a_0",
1358 .start = INT_A9_M2A_0,
1359 .flags = IORESOURCE_IRQ,
1360 },
1361 {
1362 .name = "a9_m2a_5",
1363 .start = INT_A9_M2A_5,
1364 .flags = IORESOURCE_IRQ,
1365 },
1366 {
1367 .name = "adsp_a11",
1368 .start = INT_ADSP_A11,
1369 .flags = IORESOURCE_IRQ,
1370 },
1371 {
1372 .name = "adsp_a11_smsm",
1373 .start = INT_ADSP_A11_SMSM,
1374 .flags = IORESOURCE_IRQ,
1375 },
1376 {
1377 .name = "dsps_a11",
1378 .start = INT_DSPS_A11,
1379 .flags = IORESOURCE_IRQ,
1380 },
1381 {
1382 .name = "dsps_a11_smsm",
1383 .start = INT_DSPS_A11_SMSM,
1384 .flags = IORESOURCE_IRQ,
1385 },
1386 {
1387 .name = "wcnss_a11",
1388 .start = INT_WCNSS_A11,
1389 .flags = IORESOURCE_IRQ,
1390 },
1391 {
1392 .name = "wcnss_a11_smsm",
1393 .start = INT_WCNSS_A11_SMSM,
1394 .flags = IORESOURCE_IRQ,
1395 },
1396};
1397
1398static struct smd_subsystem_config smd_config_list[] = {
1399 {
1400 .irq_config_id = SMD_MODEM,
1401 .subsys_name = "gss",
1402 .edge = SMD_APPS_MODEM,
1403
1404 .smd_int.irq_name = "a9_m2a_0",
1405 .smd_int.flags = IRQF_TRIGGER_RISING,
1406 .smd_int.irq_id = -1,
1407 .smd_int.device_name = "smd_dev",
1408 .smd_int.dev_id = 0,
1409 .smd_int.out_bit_pos = 1 << 3,
1410 .smd_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1411 .smd_int.out_offset = 0x8,
1412
1413 .smsm_int.irq_name = "a9_m2a_5",
1414 .smsm_int.flags = IRQF_TRIGGER_RISING,
1415 .smsm_int.irq_id = -1,
1416 .smsm_int.device_name = "smd_smsm",
1417 .smsm_int.dev_id = 0,
1418 .smsm_int.out_bit_pos = 1 << 4,
1419 .smsm_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1420 .smsm_int.out_offset = 0x8,
1421 },
1422 {
1423 .irq_config_id = SMD_Q6,
1424 .subsys_name = "q6",
1425 .edge = SMD_APPS_QDSP,
1426
1427 .smd_int.irq_name = "adsp_a11",
1428 .smd_int.flags = IRQF_TRIGGER_RISING,
1429 .smd_int.irq_id = -1,
1430 .smd_int.device_name = "smd_dev",
1431 .smd_int.dev_id = 0,
1432 .smd_int.out_bit_pos = 1 << 15,
1433 .smd_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1434 .smd_int.out_offset = 0x8,
1435
1436 .smsm_int.irq_name = "adsp_a11_smsm",
1437 .smsm_int.flags = IRQF_TRIGGER_RISING,
1438 .smsm_int.irq_id = -1,
1439 .smsm_int.device_name = "smd_smsm",
1440 .smsm_int.dev_id = 0,
1441 .smsm_int.out_bit_pos = 1 << 14,
1442 .smsm_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1443 .smsm_int.out_offset = 0x8,
1444 },
1445 {
1446 .irq_config_id = SMD_DSPS,
1447 .subsys_name = "dsps",
1448 .edge = SMD_APPS_DSPS,
1449
1450 .smd_int.irq_name = "dsps_a11",
1451 .smd_int.flags = IRQF_TRIGGER_RISING,
1452 .smd_int.irq_id = -1,
1453 .smd_int.device_name = "smd_dev",
1454 .smd_int.dev_id = 0,
1455 .smd_int.out_bit_pos = 1,
1456 .smd_int.out_base = (void __iomem *)MSM_SIC_NON_SECURE_BASE,
1457 .smd_int.out_offset = 0x4080,
1458
1459 .smsm_int.irq_name = "dsps_a11_smsm",
1460 .smsm_int.flags = IRQF_TRIGGER_RISING,
1461 .smsm_int.irq_id = -1,
1462 .smsm_int.device_name = "smd_smsm",
1463 .smsm_int.dev_id = 0,
1464 .smsm_int.out_bit_pos = 1,
1465 .smsm_int.out_base = (void __iomem *)MSM_SIC_NON_SECURE_BASE,
1466 .smsm_int.out_offset = 0x4094,
1467 },
1468 {
1469 .irq_config_id = SMD_WCNSS,
1470 .subsys_name = "wcnss",
1471 .edge = SMD_APPS_WCNSS,
1472
1473 .smd_int.irq_name = "wcnss_a11",
1474 .smd_int.flags = IRQF_TRIGGER_RISING,
1475 .smd_int.irq_id = -1,
1476 .smd_int.device_name = "smd_dev",
1477 .smd_int.dev_id = 0,
1478 .smd_int.out_bit_pos = 1 << 25,
1479 .smd_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1480 .smd_int.out_offset = 0x8,
1481
1482 .smsm_int.irq_name = "wcnss_a11_smsm",
1483 .smsm_int.flags = IRQF_TRIGGER_RISING,
1484 .smsm_int.irq_id = -1,
1485 .smsm_int.device_name = "smd_smsm",
1486 .smsm_int.dev_id = 0,
1487 .smsm_int.out_bit_pos = 1 << 23,
1488 .smsm_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1489 .smsm_int.out_offset = 0x8,
1490 },
1491};
1492
Eric Holmberg2bb6ccd2012-03-13 13:05:14 -06001493static struct smd_subsystem_restart_config smd_ssr_config = {
1494 .disable_smsm_reset_handshake = 1,
1495};
1496
Eric Holmberg023d25c2012-03-01 12:27:55 -07001497static struct smd_platform smd_platform_data = {
1498 .num_ss_configs = ARRAY_SIZE(smd_config_list),
1499 .smd_ss_configs = smd_config_list,
Eric Holmberg2bb6ccd2012-03-13 13:05:14 -06001500 .smd_ssr_config = &smd_ssr_config,
Eric Holmberg023d25c2012-03-01 12:27:55 -07001501};
1502
Jeff Hugo0c0f5e92011-09-28 13:55:45 -06001503struct platform_device msm_device_smd_apq8064 = {
1504 .name = "msm_smd",
1505 .id = -1,
Eric Holmberg023d25c2012-03-01 12:27:55 -07001506 .resource = smd_resource,
1507 .num_resources = ARRAY_SIZE(smd_resource),
1508 .dev = {
1509 .platform_data = &smd_platform_data,
1510 },
Jeff Hugo0c0f5e92011-09-28 13:55:45 -06001511};
1512
Ramesh Masavarapuf46be1b2011-11-03 11:13:41 -07001513#ifdef CONFIG_HW_RANDOM_MSM
1514/* PRNG device */
1515#define MSM_PRNG_PHYS 0x1A500000
1516static struct resource rng_resources = {
1517 .flags = IORESOURCE_MEM,
1518 .start = MSM_PRNG_PHYS,
1519 .end = MSM_PRNG_PHYS + SZ_512 - 1,
1520};
1521
1522struct platform_device apq8064_device_rng = {
1523 .name = "msm_rng",
1524 .id = 0,
1525 .num_resources = 1,
1526 .resource = &rng_resources,
1527};
1528#endif
1529
Matt Wagantall292aace2012-01-26 19:12:34 -08001530static struct resource msm_gss_resources[] = {
1531 {
1532 .start = 0x10000000,
1533 .end = 0x10000000 + SZ_256 - 1,
1534 .flags = IORESOURCE_MEM,
1535 },
Matt Wagantall19ac4fd2012-02-03 20:18:23 -08001536 {
1537 .start = 0x10008000,
1538 .end = 0x10008000 + SZ_256 - 1,
1539 .flags = IORESOURCE_MEM,
1540 },
Matt Wagantall292aace2012-01-26 19:12:34 -08001541};
1542
1543struct platform_device msm_gss = {
1544 .name = "pil_gss",
1545 .id = -1,
1546 .num_resources = ARRAY_SIZE(msm_gss_resources),
1547 .resource = msm_gss_resources,
1548};
1549
Matt Wagantall1875d322012-02-22 16:11:33 -08001550struct platform_device *apq8064_fs_devices[] = {
1551 FS_8X60(FS_ROT, "fs_rot"),
1552 FS_8X60(FS_IJPEG, "fs_ijpeg"),
1553 FS_8X60(FS_VFE, "fs_vfe"),
1554 FS_8X60(FS_VPE, "fs_vpe"),
1555 FS_8X60(FS_GFX3D, "fs_gfx3d"),
1556 FS_8X60(FS_VED, "fs_ved"),
1557 FS_8X60(FS_VCAP, "fs_vcap"),
1558};
1559unsigned apq8064_num_fs_devices = ARRAY_SIZE(apq8064_fs_devices);
1560
Praveen Chidambaram78499012011-11-01 17:15:17 -06001561struct msm_rpm_platform_data apq8064_rpm_data __initdata = {
1562 .reg_base_addrs = {
1563 [MSM_RPM_PAGE_STATUS] = MSM_RPM_BASE,
1564 [MSM_RPM_PAGE_CTRL] = MSM_RPM_BASE + 0x400,
1565 [MSM_RPM_PAGE_REQ] = MSM_RPM_BASE + 0x600,
1566 [MSM_RPM_PAGE_ACK] = MSM_RPM_BASE + 0xa00,
1567 },
1568 .irq_ack = RPM_APCC_CPU0_GP_HIGH_IRQ,
Stephen Boydf61255e2012-02-24 14:31:09 -08001569 .irq_err = RPM_APCC_CPU0_GP_LOW_IRQ,
Praveen Chidambarame396ce62012-03-30 11:15:57 -06001570 .irq_wakeup = RPM_APCC_CPU0_WAKE_UP_IRQ,
Praveen Chidambaram78499012011-11-01 17:15:17 -06001571 .ipc_rpm_reg = MSM_APCS_GCC_BASE + 0x008,
1572 .ipc_rpm_val = 4,
1573 .target_id = {
1574 MSM_RPM_MAP(8064, NOTIFICATION_CONFIGURED_0, NOTIFICATION, 4),
1575 MSM_RPM_MAP(8064, NOTIFICATION_REGISTERED_0, NOTIFICATION, 4),
1576 MSM_RPM_MAP(8064, INVALIDATE_0, INVALIDATE, 8),
1577 MSM_RPM_MAP(8064, TRIGGER_TIMED_TO, TRIGGER_TIMED, 1),
1578 MSM_RPM_MAP(8064, TRIGGER_TIMED_SCLK_COUNT, TRIGGER_TIMED, 1),
1579 MSM_RPM_MAP(8064, RPM_CTL, RPM_CTL, 1),
1580 MSM_RPM_MAP(8064, CXO_CLK, CXO_CLK, 1),
1581 MSM_RPM_MAP(8064, PXO_CLK, PXO_CLK, 1),
1582 MSM_RPM_MAP(8064, APPS_FABRIC_CLK, APPS_FABRIC_CLK, 1),
1583 MSM_RPM_MAP(8064, SYSTEM_FABRIC_CLK, SYSTEM_FABRIC_CLK, 1),
1584 MSM_RPM_MAP(8064, MM_FABRIC_CLK, MM_FABRIC_CLK, 1),
1585 MSM_RPM_MAP(8064, DAYTONA_FABRIC_CLK, DAYTONA_FABRIC_CLK, 1),
1586 MSM_RPM_MAP(8064, SFPB_CLK, SFPB_CLK, 1),
1587 MSM_RPM_MAP(8064, CFPB_CLK, CFPB_CLK, 1),
1588 MSM_RPM_MAP(8064, MMFPB_CLK, MMFPB_CLK, 1),
1589 MSM_RPM_MAP(8064, EBI1_CLK, EBI1_CLK, 1),
1590 MSM_RPM_MAP(8064, APPS_FABRIC_CFG_HALT_0,
1591 APPS_FABRIC_CFG_HALT, 2),
1592 MSM_RPM_MAP(8064, APPS_FABRIC_CFG_CLKMOD_0,
1593 APPS_FABRIC_CFG_CLKMOD, 3),
1594 MSM_RPM_MAP(8064, APPS_FABRIC_CFG_IOCTL,
1595 APPS_FABRIC_CFG_IOCTL, 1),
1596 MSM_RPM_MAP(8064, APPS_FABRIC_ARB_0, APPS_FABRIC_ARB, 12),
1597 MSM_RPM_MAP(8064, SYS_FABRIC_CFG_HALT_0,
1598 SYS_FABRIC_CFG_HALT, 2),
1599 MSM_RPM_MAP(8064, SYS_FABRIC_CFG_CLKMOD_0,
1600 SYS_FABRIC_CFG_CLKMOD, 3),
1601 MSM_RPM_MAP(8064, SYS_FABRIC_CFG_IOCTL,
1602 SYS_FABRIC_CFG_IOCTL, 1),
1603 MSM_RPM_MAP(8064, SYSTEM_FABRIC_ARB_0, SYSTEM_FABRIC_ARB, 30),
1604 MSM_RPM_MAP(8064, MMSS_FABRIC_CFG_HALT_0,
1605 MMSS_FABRIC_CFG_HALT, 2),
1606 MSM_RPM_MAP(8064, MMSS_FABRIC_CFG_CLKMOD_0,
1607 MMSS_FABRIC_CFG_CLKMOD, 3),
1608 MSM_RPM_MAP(8064, MMSS_FABRIC_CFG_IOCTL,
1609 MMSS_FABRIC_CFG_IOCTL, 1),
1610 MSM_RPM_MAP(8064, MM_FABRIC_ARB_0, MM_FABRIC_ARB, 21),
1611 MSM_RPM_MAP(8064, PM8921_S1_0, PM8921_S1, 2),
1612 MSM_RPM_MAP(8064, PM8921_S2_0, PM8921_S2, 2),
1613 MSM_RPM_MAP(8064, PM8921_S3_0, PM8921_S3, 2),
1614 MSM_RPM_MAP(8064, PM8921_S4_0, PM8921_S4, 2),
1615 MSM_RPM_MAP(8064, PM8921_S5_0, PM8921_S5, 2),
1616 MSM_RPM_MAP(8064, PM8921_S6_0, PM8921_S6, 2),
1617 MSM_RPM_MAP(8064, PM8921_S7_0, PM8921_S7, 2),
1618 MSM_RPM_MAP(8064, PM8921_S8_0, PM8921_S8, 2),
1619 MSM_RPM_MAP(8064, PM8921_L1_0, PM8921_L1, 2),
1620 MSM_RPM_MAP(8064, PM8921_L2_0, PM8921_L2, 2),
1621 MSM_RPM_MAP(8064, PM8921_L3_0, PM8921_L3, 2),
1622 MSM_RPM_MAP(8064, PM8921_L4_0, PM8921_L4, 2),
1623 MSM_RPM_MAP(8064, PM8921_L5_0, PM8921_L5, 2),
1624 MSM_RPM_MAP(8064, PM8921_L6_0, PM8921_L6, 2),
1625 MSM_RPM_MAP(8064, PM8921_L7_0, PM8921_L7, 2),
1626 MSM_RPM_MAP(8064, PM8921_L8_0, PM8921_L8, 2),
1627 MSM_RPM_MAP(8064, PM8921_L9_0, PM8921_L9, 2),
1628 MSM_RPM_MAP(8064, PM8921_L10_0, PM8921_L10, 2),
1629 MSM_RPM_MAP(8064, PM8921_L11_0, PM8921_L11, 2),
1630 MSM_RPM_MAP(8064, PM8921_L12_0, PM8921_L12, 2),
1631 MSM_RPM_MAP(8064, PM8921_L13_0, PM8921_L13, 2),
1632 MSM_RPM_MAP(8064, PM8921_L14_0, PM8921_L14, 2),
1633 MSM_RPM_MAP(8064, PM8921_L15_0, PM8921_L15, 2),
1634 MSM_RPM_MAP(8064, PM8921_L16_0, PM8921_L16, 2),
1635 MSM_RPM_MAP(8064, PM8921_L17_0, PM8921_L17, 2),
1636 MSM_RPM_MAP(8064, PM8921_L18_0, PM8921_L18, 2),
1637 MSM_RPM_MAP(8064, PM8921_L19_0, PM8921_L19, 2),
1638 MSM_RPM_MAP(8064, PM8921_L20_0, PM8921_L20, 2),
1639 MSM_RPM_MAP(8064, PM8921_L21_0, PM8921_L21, 2),
1640 MSM_RPM_MAP(8064, PM8921_L22_0, PM8921_L22, 2),
1641 MSM_RPM_MAP(8064, PM8921_L23_0, PM8921_L23, 2),
1642 MSM_RPM_MAP(8064, PM8921_L24_0, PM8921_L24, 2),
1643 MSM_RPM_MAP(8064, PM8921_L25_0, PM8921_L25, 2),
1644 MSM_RPM_MAP(8064, PM8921_L26_0, PM8921_L26, 2),
1645 MSM_RPM_MAP(8064, PM8921_L27_0, PM8921_L27, 2),
1646 MSM_RPM_MAP(8064, PM8921_L28_0, PM8921_L28, 2),
1647 MSM_RPM_MAP(8064, PM8921_L29_0, PM8921_L29, 2),
1648 MSM_RPM_MAP(8064, PM8921_CLK1_0, PM8921_CLK1, 2),
1649 MSM_RPM_MAP(8064, PM8921_CLK2_0, PM8921_CLK2, 2),
1650 MSM_RPM_MAP(8064, PM8921_LVS1, PM8921_LVS1, 1),
1651 MSM_RPM_MAP(8064, PM8921_LVS2, PM8921_LVS2, 1),
1652 MSM_RPM_MAP(8064, PM8921_LVS3, PM8921_LVS3, 1),
1653 MSM_RPM_MAP(8064, PM8921_LVS4, PM8921_LVS4, 1),
1654 MSM_RPM_MAP(8064, PM8921_LVS5, PM8921_LVS5, 1),
1655 MSM_RPM_MAP(8064, PM8921_LVS6, PM8921_LVS6, 1),
1656 MSM_RPM_MAP(8064, PM8921_LVS7, PM8921_LVS7, 1),
1657 MSM_RPM_MAP(8064, PM8821_S1_0, PM8821_S1, 2),
1658 MSM_RPM_MAP(8064, PM8821_S2_0, PM8821_S2, 2),
1659 MSM_RPM_MAP(8064, PM8821_L1_0, PM8821_L1, 2),
1660 MSM_RPM_MAP(8064, NCP_0, NCP, 2),
1661 MSM_RPM_MAP(8064, CXO_BUFFERS, CXO_BUFFERS, 1),
1662 MSM_RPM_MAP(8064, USB_OTG_SWITCH, USB_OTG_SWITCH, 1),
1663 MSM_RPM_MAP(8064, HDMI_SWITCH, HDMI_SWITCH, 1),
1664 MSM_RPM_MAP(8064, DDR_DMM_0, DDR_DMM, 2),
1665 MSM_RPM_MAP(8064, QDSS_CLK, QDSS_CLK, 1),
1666 },
1667 .target_status = {
1668 MSM_RPM_STATUS_ID_MAP(8064, VERSION_MAJOR),
1669 MSM_RPM_STATUS_ID_MAP(8064, VERSION_MINOR),
1670 MSM_RPM_STATUS_ID_MAP(8064, VERSION_BUILD),
1671 MSM_RPM_STATUS_ID_MAP(8064, SUPPORTED_RESOURCES_0),
1672 MSM_RPM_STATUS_ID_MAP(8064, SUPPORTED_RESOURCES_1),
1673 MSM_RPM_STATUS_ID_MAP(8064, SUPPORTED_RESOURCES_2),
1674 MSM_RPM_STATUS_ID_MAP(8064, RESERVED_SUPPORTED_RESOURCES_0),
1675 MSM_RPM_STATUS_ID_MAP(8064, SEQUENCE),
1676 MSM_RPM_STATUS_ID_MAP(8064, RPM_CTL),
1677 MSM_RPM_STATUS_ID_MAP(8064, CXO_CLK),
1678 MSM_RPM_STATUS_ID_MAP(8064, PXO_CLK),
1679 MSM_RPM_STATUS_ID_MAP(8064, APPS_FABRIC_CLK),
1680 MSM_RPM_STATUS_ID_MAP(8064, SYSTEM_FABRIC_CLK),
1681 MSM_RPM_STATUS_ID_MAP(8064, MM_FABRIC_CLK),
1682 MSM_RPM_STATUS_ID_MAP(8064, DAYTONA_FABRIC_CLK),
1683 MSM_RPM_STATUS_ID_MAP(8064, SFPB_CLK),
1684 MSM_RPM_STATUS_ID_MAP(8064, CFPB_CLK),
1685 MSM_RPM_STATUS_ID_MAP(8064, MMFPB_CLK),
1686 MSM_RPM_STATUS_ID_MAP(8064, EBI1_CLK),
1687 MSM_RPM_STATUS_ID_MAP(8064, APPS_FABRIC_CFG_HALT),
1688 MSM_RPM_STATUS_ID_MAP(8064, APPS_FABRIC_CFG_CLKMOD),
1689 MSM_RPM_STATUS_ID_MAP(8064, APPS_FABRIC_CFG_IOCTL),
1690 MSM_RPM_STATUS_ID_MAP(8064, APPS_FABRIC_ARB),
1691 MSM_RPM_STATUS_ID_MAP(8064, SYS_FABRIC_CFG_HALT),
1692 MSM_RPM_STATUS_ID_MAP(8064, SYS_FABRIC_CFG_CLKMOD),
1693 MSM_RPM_STATUS_ID_MAP(8064, SYS_FABRIC_CFG_IOCTL),
1694 MSM_RPM_STATUS_ID_MAP(8064, SYSTEM_FABRIC_ARB),
1695 MSM_RPM_STATUS_ID_MAP(8064, MMSS_FABRIC_CFG_HALT),
1696 MSM_RPM_STATUS_ID_MAP(8064, MMSS_FABRIC_CFG_CLKMOD),
1697 MSM_RPM_STATUS_ID_MAP(8064, MMSS_FABRIC_CFG_IOCTL),
1698 MSM_RPM_STATUS_ID_MAP(8064, MM_FABRIC_ARB),
1699 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S1_0),
1700 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S1_1),
1701 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S2_0),
1702 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S2_1),
1703 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S3_0),
1704 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S3_1),
1705 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S4_0),
1706 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S4_1),
1707 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S5_0),
1708 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S5_1),
1709 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S6_0),
1710 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S6_1),
1711 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S7_0),
1712 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S7_1),
1713 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S8_0),
1714 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S8_1),
1715 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L1_0),
1716 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L1_1),
1717 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L2_0),
1718 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L2_1),
1719 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L3_0),
1720 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L3_1),
1721 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L4_0),
1722 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L4_1),
1723 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L5_0),
1724 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L5_1),
1725 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L6_0),
1726 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L6_1),
1727 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L7_0),
1728 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L7_1),
1729 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L8_0),
1730 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L8_1),
1731 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L9_0),
1732 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L9_1),
1733 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L10_0),
1734 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L10_1),
1735 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L11_0),
1736 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L11_1),
1737 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L12_0),
1738 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L12_1),
1739 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L13_0),
1740 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L13_1),
1741 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L14_0),
1742 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L14_1),
1743 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L15_0),
1744 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L15_1),
1745 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L16_0),
1746 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L16_1),
1747 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L17_0),
1748 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L17_1),
1749 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L18_0),
1750 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L18_1),
1751 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L19_0),
1752 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L19_1),
1753 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L20_0),
1754 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L20_1),
1755 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L21_0),
1756 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L21_1),
1757 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L22_0),
1758 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L22_1),
1759 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L23_0),
1760 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L23_1),
1761 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L24_0),
1762 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L24_1),
1763 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L25_0),
1764 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L25_1),
1765 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L26_0),
1766 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L26_1),
1767 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L27_0),
1768 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L27_1),
1769 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L28_0),
1770 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L28_1),
1771 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L29_0),
1772 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L29_1),
1773 MSM_RPM_STATUS_ID_MAP(8064, PM8921_CLK1_0),
1774 MSM_RPM_STATUS_ID_MAP(8064, PM8921_CLK1_1),
1775 MSM_RPM_STATUS_ID_MAP(8064, PM8921_CLK2_0),
1776 MSM_RPM_STATUS_ID_MAP(8064, PM8921_CLK2_1),
1777 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS1),
1778 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS2),
1779 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS3),
1780 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS4),
1781 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS5),
1782 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS6),
1783 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS7),
1784 MSM_RPM_STATUS_ID_MAP(8064, NCP_0),
1785 MSM_RPM_STATUS_ID_MAP(8064, NCP_1),
1786 MSM_RPM_STATUS_ID_MAP(8064, CXO_BUFFERS),
1787 MSM_RPM_STATUS_ID_MAP(8064, USB_OTG_SWITCH),
1788 MSM_RPM_STATUS_ID_MAP(8064, HDMI_SWITCH),
1789 MSM_RPM_STATUS_ID_MAP(8064, DDR_DMM_0),
1790 MSM_RPM_STATUS_ID_MAP(8064, DDR_DMM_1),
1791 MSM_RPM_STATUS_ID_MAP(8064, EBI1_CH0_RANGE),
1792 MSM_RPM_STATUS_ID_MAP(8064, EBI1_CH1_RANGE),
1793 MSM_RPM_STATUS_ID_MAP(8064, PM8821_S1_0),
1794 MSM_RPM_STATUS_ID_MAP(8064, PM8821_S1_1),
1795 MSM_RPM_STATUS_ID_MAP(8064, PM8821_S2_0),
1796 MSM_RPM_STATUS_ID_MAP(8064, PM8821_S2_1),
1797 MSM_RPM_STATUS_ID_MAP(8064, PM8821_L1_0),
1798 MSM_RPM_STATUS_ID_MAP(8064, PM8821_L1_1),
1799 },
1800 .target_ctrl_id = {
1801 MSM_RPM_CTRL_MAP(8064, VERSION_MAJOR),
1802 MSM_RPM_CTRL_MAP(8064, VERSION_MINOR),
1803 MSM_RPM_CTRL_MAP(8064, VERSION_BUILD),
1804 MSM_RPM_CTRL_MAP(8064, REQ_CTX_0),
1805 MSM_RPM_CTRL_MAP(8064, REQ_SEL_0),
1806 MSM_RPM_CTRL_MAP(8064, ACK_CTX_0),
1807 MSM_RPM_CTRL_MAP(8064, ACK_SEL_0),
1808 },
1809 .sel_invalidate = MSM_RPM_8064_SEL_INVALIDATE,
1810 .sel_notification = MSM_RPM_8064_SEL_NOTIFICATION,
1811 .sel_last = MSM_RPM_8064_SEL_LAST,
1812 .ver = {3, 0, 0},
1813};
1814
1815struct platform_device apq8064_rpm_device = {
1816 .name = "msm_rpm",
1817 .id = -1,
1818};
1819
1820static struct msm_rpmstats_platform_data msm_rpm_stat_pdata = {
1821 .phys_addr_base = 0x0010D204,
1822 .phys_size = SZ_8K,
1823};
1824
1825struct platform_device apq8064_rpm_stat_device = {
1826 .name = "msm_rpm_stat",
1827 .id = -1,
1828 .dev = {
1829 .platform_data = &msm_rpm_stat_pdata,
1830 },
1831};
1832
1833static struct msm_rpm_log_platform_data msm_rpm_log_pdata = {
1834 .phys_addr_base = 0x0010C000,
1835 .reg_offsets = {
1836 [MSM_RPM_LOG_PAGE_INDICES] = 0x00000080,
1837 [MSM_RPM_LOG_PAGE_BUFFER] = 0x000000A0,
1838 },
1839 .phys_size = SZ_8K,
1840 .log_len = 4096, /* log's buffer length in bytes */
1841 .log_len_mask = (4096 >> 2) - 1, /* length mask in units of u32 */
1842};
1843
1844struct platform_device apq8064_rpm_log_device = {
1845 .name = "msm_rpm_log",
1846 .id = -1,
1847 .dev = {
1848 .platform_data = &msm_rpm_log_pdata,
1849 },
1850};
1851
Jin Hongd3024e62012-02-09 16:13:32 -08001852/* Sensors DSPS platform data */
1853
1854#define PPSS_REG_PHYS_BASE 0x12080000
1855
1856static struct dsps_clk_info dsps_clks[] = {};
1857static struct dsps_regulator_info dsps_regs[] = {};
1858
1859/*
1860 * Note: GPIOs field is intialized in run-time at the function
1861 * apq8064_init_dsps().
1862 */
1863
1864struct msm_dsps_platform_data msm_dsps_pdata_8064 = {
1865 .clks = dsps_clks,
1866 .clks_num = ARRAY_SIZE(dsps_clks),
1867 .gpios = NULL,
1868 .gpios_num = 0,
1869 .regs = dsps_regs,
1870 .regs_num = ARRAY_SIZE(dsps_regs),
1871 .dsps_pwr_ctl_en = 1,
1872 .signature = DSPS_SIGNATURE,
1873};
1874
1875static struct resource msm_dsps_resources[] = {
1876 {
1877 .start = PPSS_REG_PHYS_BASE,
1878 .end = PPSS_REG_PHYS_BASE + SZ_8K - 1,
1879 .name = "ppss_reg",
1880 .flags = IORESOURCE_MEM,
1881 },
1882
1883 {
1884 .start = PPSS_WDOG_TIMER_IRQ,
1885 .end = PPSS_WDOG_TIMER_IRQ,
1886 .name = "ppss_wdog",
1887 .flags = IORESOURCE_IRQ,
1888 },
1889};
1890
1891struct platform_device msm_dsps_device_8064 = {
1892 .name = "msm_dsps",
1893 .id = 0,
1894 .num_resources = ARRAY_SIZE(msm_dsps_resources),
1895 .resource = msm_dsps_resources,
1896 .dev.platform_data = &msm_dsps_pdata_8064,
1897};
1898
Praveen Chidambaram78499012011-11-01 17:15:17 -06001899#ifdef CONFIG_MSM_MPM
1900static uint16_t msm_mpm_irqs_m2a[MSM_MPM_NR_MPM_IRQS] __initdata = {
1901 [1] = MSM_GPIO_TO_INT(26),
1902 [2] = MSM_GPIO_TO_INT(88),
1903 [4] = MSM_GPIO_TO_INT(73),
1904 [5] = MSM_GPIO_TO_INT(74),
1905 [6] = MSM_GPIO_TO_INT(75),
1906 [7] = MSM_GPIO_TO_INT(76),
1907 [8] = MSM_GPIO_TO_INT(77),
1908 [9] = MSM_GPIO_TO_INT(36),
1909 [10] = MSM_GPIO_TO_INT(84),
1910 [11] = MSM_GPIO_TO_INT(7),
1911 [12] = MSM_GPIO_TO_INT(11),
1912 [13] = MSM_GPIO_TO_INT(52),
1913 [14] = MSM_GPIO_TO_INT(15),
1914 [15] = MSM_GPIO_TO_INT(83),
1915 [16] = USB3_HS_IRQ,
1916 [19] = MSM_GPIO_TO_INT(61),
1917 [20] = MSM_GPIO_TO_INT(58),
1918 [23] = MSM_GPIO_TO_INT(65),
1919 [24] = MSM_GPIO_TO_INT(63),
1920 [25] = USB1_HS_IRQ,
1921 [27] = HDMI_IRQ,
1922 [29] = MSM_GPIO_TO_INT(22),
1923 [30] = MSM_GPIO_TO_INT(72),
1924 [31] = USB4_HS_IRQ,
1925 [33] = MSM_GPIO_TO_INT(44),
1926 [34] = MSM_GPIO_TO_INT(39),
1927 [35] = MSM_GPIO_TO_INT(19),
1928 [36] = MSM_GPIO_TO_INT(23),
1929 [37] = MSM_GPIO_TO_INT(41),
1930 [38] = MSM_GPIO_TO_INT(30),
1931 [41] = MSM_GPIO_TO_INT(42),
1932 [42] = MSM_GPIO_TO_INT(56),
1933 [43] = MSM_GPIO_TO_INT(55),
1934 [44] = MSM_GPIO_TO_INT(50),
1935 [45] = MSM_GPIO_TO_INT(49),
1936 [46] = MSM_GPIO_TO_INT(47),
1937 [47] = MSM_GPIO_TO_INT(45),
1938 [48] = MSM_GPIO_TO_INT(38),
1939 [49] = MSM_GPIO_TO_INT(34),
1940 [50] = MSM_GPIO_TO_INT(32),
1941 [51] = MSM_GPIO_TO_INT(29),
1942 [52] = MSM_GPIO_TO_INT(18),
1943 [53] = MSM_GPIO_TO_INT(10),
1944 [54] = MSM_GPIO_TO_INT(81),
1945 [55] = MSM_GPIO_TO_INT(6),
1946};
1947
1948static uint16_t msm_mpm_bypassed_apps_irqs[] __initdata = {
1949 TLMM_MSM_SUMMARY_IRQ,
1950 RPM_APCC_CPU0_GP_HIGH_IRQ,
1951 RPM_APCC_CPU0_GP_MEDIUM_IRQ,
1952 RPM_APCC_CPU0_GP_LOW_IRQ,
1953 RPM_APCC_CPU0_WAKE_UP_IRQ,
1954 RPM_APCC_CPU1_GP_HIGH_IRQ,
1955 RPM_APCC_CPU1_GP_MEDIUM_IRQ,
1956 RPM_APCC_CPU1_GP_LOW_IRQ,
1957 RPM_APCC_CPU1_WAKE_UP_IRQ,
1958 MSS_TO_APPS_IRQ_0,
1959 MSS_TO_APPS_IRQ_1,
1960 MSS_TO_APPS_IRQ_2,
1961 MSS_TO_APPS_IRQ_3,
1962 MSS_TO_APPS_IRQ_4,
1963 MSS_TO_APPS_IRQ_5,
1964 MSS_TO_APPS_IRQ_6,
1965 MSS_TO_APPS_IRQ_7,
1966 MSS_TO_APPS_IRQ_8,
1967 MSS_TO_APPS_IRQ_9,
1968 LPASS_SCSS_GP_LOW_IRQ,
1969 LPASS_SCSS_GP_MEDIUM_IRQ,
1970 LPASS_SCSS_GP_HIGH_IRQ,
1971 SPS_MTI_30,
1972 SPS_MTI_31,
1973 RIVA_APSS_SPARE_IRQ,
1974 RIVA_APPS_WLAN_SMSM_IRQ,
1975 RIVA_APPS_WLAN_RX_DATA_AVAIL_IRQ,
1976 RIVA_APPS_WLAN_DATA_XFER_DONE_IRQ,
1977};
1978
1979struct msm_mpm_device_data apq8064_mpm_dev_data __initdata = {
1980 .irqs_m2a = msm_mpm_irqs_m2a,
1981 .irqs_m2a_size = ARRAY_SIZE(msm_mpm_irqs_m2a),
1982 .bypassed_apps_irqs = msm_mpm_bypassed_apps_irqs,
1983 .bypassed_apps_irqs_size = ARRAY_SIZE(msm_mpm_bypassed_apps_irqs),
1984 .mpm_request_reg_base = MSM_RPM_BASE + 0x9d8,
1985 .mpm_status_reg_base = MSM_RPM_BASE + 0xdf8,
1986 .mpm_apps_ipc_reg = MSM_APCS_GCC_BASE + 0x008,
1987 .mpm_apps_ipc_val = BIT(1),
1988 .mpm_ipc_irq = RPM_APCC_CPU0_GP_MEDIUM_IRQ,
1989
1990};
1991#endif
Joel Kingdacbc822012-01-25 13:30:57 -08001992
1993#define MDM2AP_ERRFATAL 19
1994#define AP2MDM_ERRFATAL 18
1995#define MDM2AP_STATUS 49
1996#define AP2MDM_STATUS 48
1997#define AP2MDM_PMIC_RESET_N 27
Vamsi Krishna9e307cd2012-04-11 13:15:36 -07001998#define AP2MDM_WAKEUP 35
Joel Kingdacbc822012-01-25 13:30:57 -08001999
2000static struct resource mdm_resources[] = {
2001 {
2002 .start = MDM2AP_ERRFATAL,
2003 .end = MDM2AP_ERRFATAL,
2004 .name = "MDM2AP_ERRFATAL",
2005 .flags = IORESOURCE_IO,
2006 },
2007 {
2008 .start = AP2MDM_ERRFATAL,
2009 .end = AP2MDM_ERRFATAL,
2010 .name = "AP2MDM_ERRFATAL",
2011 .flags = IORESOURCE_IO,
2012 },
2013 {
2014 .start = MDM2AP_STATUS,
2015 .end = MDM2AP_STATUS,
2016 .name = "MDM2AP_STATUS",
2017 .flags = IORESOURCE_IO,
2018 },
2019 {
2020 .start = AP2MDM_STATUS,
2021 .end = AP2MDM_STATUS,
2022 .name = "AP2MDM_STATUS",
2023 .flags = IORESOURCE_IO,
2024 },
2025 {
2026 .start = AP2MDM_PMIC_RESET_N,
2027 .end = AP2MDM_PMIC_RESET_N,
2028 .name = "AP2MDM_PMIC_RESET_N",
2029 .flags = IORESOURCE_IO,
2030 },
Vamsi Krishna9e307cd2012-04-11 13:15:36 -07002031 {
2032 .start = AP2MDM_WAKEUP,
2033 .end = AP2MDM_WAKEUP,
2034 .name = "AP2MDM_WAKEUP",
2035 .flags = IORESOURCE_IO,
2036 },
Joel Kingdacbc822012-01-25 13:30:57 -08002037};
2038
2039struct platform_device mdm_8064_device = {
2040 .name = "mdm2_modem",
2041 .id = -1,
2042 .num_resources = ARRAY_SIZE(mdm_resources),
2043 .resource = mdm_resources,
2044};
Praveen Chidambaram8ea3dcd2011-12-07 14:46:31 -07002045
2046static int apq8064_LPM_latency = 1000; /* >100 usec for WFI */
2047
2048struct platform_device apq8064_cpu_idle_device = {
2049 .name = "msm_cpu_idle",
2050 .id = -1,
2051 .dev = {
2052 .platform_data = &apq8064_LPM_latency,
2053 },
2054};
Praveen Chidambaram5c8adf22012-02-23 18:44:37 -07002055
2056static struct msm_dcvs_freq_entry apq8064_freq[] = {
2057 { 384000, 166981, 345600},
2058 { 702000, 213049, 632502},
2059 {1026000, 285712, 925613},
2060 {1242000, 383945, 1176550},
2061 {1458000, 419729, 1465478},
2062 {1512000, 434116, 1546674},
2063
2064};
2065
2066static struct msm_dcvs_core_info apq8064_core_info = {
2067 .freq_tbl = &apq8064_freq[0],
2068 .core_param = {
2069 .max_time_us = 100000,
2070 .num_freq = ARRAY_SIZE(apq8064_freq),
2071 },
2072 .algo_param = {
2073 .slack_time_us = 58000,
2074 .scale_slack_time = 0,
2075 .scale_slack_time_pct = 0,
2076 .disable_pc_threshold = 1458000,
2077 .em_window_size = 100000,
2078 .em_max_util_pct = 97,
2079 .ss_window_size = 1000000,
2080 .ss_util_pct = 95,
2081 .ss_iobusy_conv = 100,
2082 },
2083};
2084
2085struct platform_device apq8064_msm_gov_device = {
2086 .name = "msm_dcvs_gov",
2087 .id = -1,
2088 .dev = {
2089 .platform_data = &apq8064_core_info,
2090 },
2091};
Stepan Moskovchenko28662c52012-03-01 12:48:45 -08002092
Terence Hampson2e1705f2012-04-11 19:55:29 -04002093#ifdef CONFIG_MSM_VCAP
2094#define VCAP_HW_BASE 0x05900000
2095
2096static struct msm_bus_vectors vcap_init_vectors[] = {
2097 {
2098 .src = MSM_BUS_MASTER_VIDEO_CAP,
2099 .dst = MSM_BUS_SLAVE_EBI_CH0,
2100 .ab = 0,
2101 .ib = 0,
2102 },
2103};
2104
2105
2106static struct msm_bus_vectors vcap_480_vectors[] = {
2107 {
2108 .src = MSM_BUS_MASTER_VIDEO_CAP,
2109 .dst = MSM_BUS_SLAVE_EBI_CH0,
Terence Hampson35a1ff02012-04-25 17:07:18 -04002110 .ab = 1280 * 720 * 3 * 60,
2111 .ib = 1280 * 720 * 3 * 60 * 1.5,
Terence Hampson2e1705f2012-04-11 19:55:29 -04002112 },
2113};
2114
2115static struct msm_bus_vectors vcap_720_vectors[] = {
2116 {
2117 .src = MSM_BUS_MASTER_VIDEO_CAP,
2118 .dst = MSM_BUS_SLAVE_EBI_CH0,
Terence Hampson35a1ff02012-04-25 17:07:18 -04002119 .ab = 1280 * 720 * 3 * 60,
2120 .ib = 1280 * 720 * 3 * 60 * 1.5,
Terence Hampson2e1705f2012-04-11 19:55:29 -04002121 },
2122};
2123
2124static struct msm_bus_vectors vcap_1080_vectors[] = {
2125 {
2126 .src = MSM_BUS_MASTER_VIDEO_CAP,
2127 .dst = MSM_BUS_SLAVE_EBI_CH0,
Terence Hampson35a1ff02012-04-25 17:07:18 -04002128 .ab = 1920 * 1080 * 3 * 60,
2129 .ib = 1920 * 1080 * 3 * 60 * 1.5,
Terence Hampson2e1705f2012-04-11 19:55:29 -04002130 },
2131};
2132
2133static struct msm_bus_paths vcap_bus_usecases[] = {
2134 {
2135 ARRAY_SIZE(vcap_init_vectors),
2136 vcap_init_vectors,
2137 },
2138 {
2139 ARRAY_SIZE(vcap_480_vectors),
2140 vcap_480_vectors,
2141 },
2142 {
2143 ARRAY_SIZE(vcap_720_vectors),
2144 vcap_720_vectors,
2145 },
2146 {
2147 ARRAY_SIZE(vcap_1080_vectors),
2148 vcap_1080_vectors,
2149 },
2150};
2151
2152static struct msm_bus_scale_pdata vcap_axi_client_pdata = {
2153 vcap_bus_usecases,
2154 ARRAY_SIZE(vcap_bus_usecases),
2155};
2156
2157static struct resource msm_vcap_resources[] = {
2158 {
2159 .name = "vcap",
2160 .start = VCAP_HW_BASE,
2161 .end = VCAP_HW_BASE + SZ_1M - 1,
2162 .flags = IORESOURCE_MEM,
2163 },
2164 {
2165 .name = "vcap",
2166 .start = VCAP_VC,
2167 .end = VCAP_VC,
2168 .flags = IORESOURCE_IRQ,
2169 },
2170};
2171
2172static unsigned vcap_gpios[] = {
2173 2, 3, 4, 5, 6, 7, 8, 9, 10,
2174 11, 12, 13, 18, 19, 20, 21,
2175 22, 23, 24, 25, 26, 80, 82,
2176 83, 84, 85, 86, 87,
2177};
2178
2179static struct vcap_platform_data vcap_pdata = {
2180 .gpios = vcap_gpios,
2181 .num_gpios = ARRAY_SIZE(vcap_gpios),
2182 .bus_client_pdata = &vcap_axi_client_pdata
2183};
2184
2185struct platform_device msm8064_device_vcap = {
2186 .name = "msm_vcap",
2187 .id = 0,
2188 .resource = msm_vcap_resources,
2189 .num_resources = ARRAY_SIZE(msm_vcap_resources),
2190 .dev = {
2191 .platform_data = &vcap_pdata,
2192 },
2193};
2194#endif
2195
Stepan Moskovchenko28662c52012-03-01 12:48:45 -08002196static struct resource msm_cache_erp_resources[] = {
2197 {
2198 .name = "l1_irq",
2199 .start = SC_SICCPUXEXTFAULTIRPTREQ,
2200 .flags = IORESOURCE_IRQ,
2201 },
2202 {
2203 .name = "l2_irq",
2204 .start = APCC_QGICL2IRPTREQ,
2205 .flags = IORESOURCE_IRQ,
2206 }
2207};
2208
2209struct platform_device apq8064_device_cache_erp = {
2210 .name = "msm_cache_erp",
2211 .id = -1,
2212 .num_resources = ARRAY_SIZE(msm_cache_erp_resources),
2213 .resource = msm_cache_erp_resources,
2214};
Pratik Patel212ab362012-03-16 12:30:07 -07002215
2216#define MSM_QDSS_PHYS_BASE 0x01A00000
2217#define MSM_ETM_PHYS_BASE (MSM_QDSS_PHYS_BASE + 0x1C000)
2218
2219#define QDSS_SOURCE(src_name, fpm) { .name = src_name, .fport_mask = fpm, }
2220
2221static struct qdss_source msm_qdss_sources[] = {
2222 QDSS_SOURCE("msm_etm", 0x33),
2223 QDSS_SOURCE("msm_oxili", 0x80),
2224};
2225
2226static struct msm_qdss_platform_data qdss_pdata = {
2227 .src_table = msm_qdss_sources,
2228 .size = ARRAY_SIZE(msm_qdss_sources),
2229 .afamily = 1,
2230};
2231
2232struct platform_device apq8064_qdss_device = {
2233 .name = "msm_qdss",
2234 .id = -1,
2235 .dev = {
2236 .platform_data = &qdss_pdata,
2237 },
2238};
2239
2240static struct resource msm_etm_resources[] = {
2241 {
2242 .start = MSM_ETM_PHYS_BASE,
2243 .end = MSM_ETM_PHYS_BASE + (SZ_4K * 4) - 1,
2244 .flags = IORESOURCE_MEM,
2245 },
2246};
2247
2248struct platform_device apq8064_etm_device = {
2249 .name = "msm_etm",
2250 .id = 0,
2251 .num_resources = ARRAY_SIZE(msm_etm_resources),
2252 .resource = msm_etm_resources,
2253};
Laura Abbott0577d7b2012-04-17 11:14:30 -07002254
2255struct msm_iommu_domain_name apq8064_iommu_ctx_names[] = {
2256 /* Camera */
2257 {
2258 .name = "vpe_src",
2259 .domain = CAMERA_DOMAIN,
2260 },
2261 /* Camera */
2262 {
2263 .name = "vpe_dst",
2264 .domain = CAMERA_DOMAIN,
2265 },
2266 /* Camera */
2267 {
2268 .name = "vfe_imgwr",
2269 .domain = CAMERA_DOMAIN,
2270 },
2271 /* Camera */
2272 {
2273 .name = "vfe_misc",
2274 .domain = CAMERA_DOMAIN,
2275 },
2276 /* Camera */
2277 {
2278 .name = "ijpeg_src",
2279 .domain = CAMERA_DOMAIN,
2280 },
2281 /* Camera */
2282 {
2283 .name = "ijpeg_dst",
2284 .domain = CAMERA_DOMAIN,
2285 },
2286 /* Camera */
2287 {
2288 .name = "jpegd_src",
2289 .domain = CAMERA_DOMAIN,
2290 },
2291 /* Camera */
2292 {
2293 .name = "jpegd_dst",
2294 .domain = CAMERA_DOMAIN,
2295 },
2296 /* Rotator */
2297 {
2298 .name = "rot_src",
2299 .domain = ROTATOR_DOMAIN,
2300 },
2301 /* Rotator */
2302 {
2303 .name = "rot_dst",
2304 .domain = ROTATOR_DOMAIN,
2305 },
2306 /* Video */
2307 {
2308 .name = "vcodec_a_mm1",
2309 .domain = VIDEO_DOMAIN,
2310 },
2311 /* Video */
2312 {
2313 .name = "vcodec_b_mm2",
2314 .domain = VIDEO_DOMAIN,
2315 },
2316 /* Video */
2317 {
2318 .name = "vcodec_a_stream",
2319 .domain = VIDEO_DOMAIN,
2320 },
2321};
2322
2323static struct mem_pool apq8064_video_pools[] = {
2324 /*
2325 * Video hardware has the following requirements:
2326 * 1. All video addresses used by the video hardware must be at a higher
2327 * address than video firmware address.
2328 * 2. Video hardware can only access a range of 256MB from the base of
2329 * the video firmware.
2330 */
2331 [VIDEO_FIRMWARE_POOL] =
2332 /* Low addresses, intended for video firmware */
2333 {
2334 .paddr = SZ_128K,
2335 .size = SZ_16M - SZ_128K,
2336 },
2337 [VIDEO_MAIN_POOL] =
2338 /* Main video pool */
2339 {
2340 .paddr = SZ_16M,
2341 .size = SZ_256M - SZ_16M,
2342 },
2343 [GEN_POOL] =
2344 /* Remaining address space up to 2G */
2345 {
2346 .paddr = SZ_256M,
2347 .size = SZ_2G - SZ_256M,
2348 },
2349};
2350
2351static struct mem_pool apq8064_camera_pools[] = {
2352 [GEN_POOL] =
2353 /* One address space for camera */
2354 {
2355 .paddr = SZ_128K,
2356 .size = SZ_2G - SZ_128K,
2357 },
2358};
2359
2360static struct mem_pool apq8064_display_pools[] = {
2361 [GEN_POOL] =
2362 /* One address space for display */
2363 {
2364 .paddr = SZ_128K,
2365 .size = SZ_2G - SZ_128K,
2366 },
2367};
2368
2369static struct mem_pool apq8064_rotator_pools[] = {
2370 [GEN_POOL] =
2371 /* One address space for rotator */
2372 {
2373 .paddr = SZ_128K,
2374 .size = SZ_2G - SZ_128K,
2375 },
2376};
2377
2378static struct msm_iommu_domain apq8064_iommu_domains[] = {
2379 [VIDEO_DOMAIN] = {
2380 .iova_pools = apq8064_video_pools,
2381 .npools = ARRAY_SIZE(apq8064_video_pools),
2382 },
2383 [CAMERA_DOMAIN] = {
2384 .iova_pools = apq8064_camera_pools,
2385 .npools = ARRAY_SIZE(apq8064_camera_pools),
2386 },
2387 [DISPLAY_DOMAIN] = {
2388 .iova_pools = apq8064_display_pools,
2389 .npools = ARRAY_SIZE(apq8064_display_pools),
2390 },
2391 [ROTATOR_DOMAIN] = {
2392 .iova_pools = apq8064_rotator_pools,
2393 .npools = ARRAY_SIZE(apq8064_rotator_pools),
2394 },
2395};
2396
2397struct iommu_domains_pdata apq8064_iommu_domain_pdata = {
2398 .domains = apq8064_iommu_domains,
2399 .ndomains = ARRAY_SIZE(apq8064_iommu_domains),
2400 .domain_names = apq8064_iommu_ctx_names,
2401 .nnames = ARRAY_SIZE(apq8064_iommu_ctx_names),
2402 .domain_alloc_flags = 0,
2403};
2404
2405struct platform_device apq8064_iommu_domain_device = {
2406 .name = "iommu_domains",
2407 .id = -1,
2408 .dev = {
2409 .platform_data = &apq8064_iommu_domain_pdata,
2410 },
2411};