blob: b138c4d336914c26e80c384a2d8a84a9d6c2c290 [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>
Pratik Patel1746b8f2012-06-02 21:11:41 -070020#include <linux/coresight.h>
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070021#include <mach/irqs-8064.h>
22#include <mach/board.h>
23#include <mach/msm_iomap.h>
Yan He06913ce2011-08-26 16:33:46 -070024#include <mach/usbdiag.h>
25#include <mach/msm_sps.h>
Jeff Ohlstein905f1ce2011-09-07 18:50:18 -070026#include <mach/dma.h>
Jin Hongd3024e62012-02-09 16:13:32 -080027#include <mach/msm_dsps.h>
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -080028#include <sound/msm-dai-q6.h>
29#include <sound/apr_audio.h>
Gagan Mac8a7a5d32011-11-11 16:43:06 -070030#include <mach/msm_bus_board.h>
Praveen Chidambaram78499012011-11-01 17:15:17 -060031#include <mach/rpm.h>
Joel Kingdacbc822012-01-25 13:30:57 -080032#include <mach/mdm2.h>
Eric Holmberg023d25c2012-03-01 12:27:55 -070033#include <mach/msm_smd.h>
Praveen Chidambaram5c8adf22012-02-23 18:44:37 -070034#include <mach/msm_dcvs.h>
Laura Abbott532b2df2012-04-12 10:53:48 -070035#include <mach/msm_rtb.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
Devin Kima3085422012-06-14 18:23:41 -070049#define MSM_GSBI2_PHYS 0x13440000
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070050#define MSM_GSBI3_PHYS 0x16200000
Harini Jayaramanc4c58692011-07-19 14:50:10 -060051#define MSM_GSBI4_PHYS 0x16300000
52#define MSM_GSBI5_PHYS 0x1A200000
53#define MSM_GSBI6_PHYS 0x16500000
54#define MSM_GSBI7_PHYS 0x16600000
55
Kenneth Heitke748593a2011-07-15 15:45:11 -060056/* GSBI UART devices */
Stepan Moskovchenko2701a442011-08-19 13:47:22 -070057#define MSM_UART1DM_PHYS (MSM_GSBI1_PHYS + 0x10000)
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070058#define MSM_UART3DM_PHYS (MSM_GSBI3_PHYS + 0x40000)
Devin Kima3085422012-06-14 18:23:41 -070059#define MSM_UART4DM_PHYS (MSM_GSBI4_PHYS + 0x40000)
60#define MSM_UART6DM_PHYS (MSM_GSBI6_PHYS + 0x40000)
Jin Hong4bbbfba2012-02-02 21:48:07 -080061#define MSM_UART7DM_PHYS (MSM_GSBI7_PHYS + 0x40000)
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070062
Harini Jayaramanc4c58692011-07-19 14:50:10 -060063/* GSBI QUP devices */
David Keitel3c40fc52012-02-09 17:53:52 -080064#define MSM_GSBI1_QUP_PHYS (MSM_GSBI1_PHYS + 0x20000)
Devin Kima3085422012-06-14 18:23:41 -070065#define MSM_GSBI2_QUP_PHYS (MSM_GSBI2_PHYS + 0x20000)
Harini Jayaramanc4c58692011-07-19 14:50:10 -060066#define MSM_GSBI3_QUP_PHYS (MSM_GSBI3_PHYS + 0x80000)
67#define MSM_GSBI4_QUP_PHYS (MSM_GSBI4_PHYS + 0x80000)
68#define MSM_GSBI5_QUP_PHYS (MSM_GSBI5_PHYS + 0x80000)
69#define MSM_GSBI6_QUP_PHYS (MSM_GSBI6_PHYS + 0x80000)
70#define MSM_GSBI7_QUP_PHYS (MSM_GSBI7_PHYS + 0x80000)
71#define MSM_QUP_SIZE SZ_4K
72
Kenneth Heitke36920d32011-07-20 16:44:30 -060073/* Address of SSBI CMD */
74#define MSM_PMIC1_SSBI_CMD_PHYS 0x00500000
75#define MSM_PMIC2_SSBI_CMD_PHYS 0x00C00000
76#define MSM_PMIC_SSBI_SIZE SZ_4K
Harini Jayaramanc4c58692011-07-19 14:50:10 -060077
Hemant Kumarcaa09092011-07-30 00:26:33 -070078/* Address of HS USBOTG1 */
Hemant Kumard86c4882012-01-24 19:39:37 -080079#define MSM_HSUSB1_PHYS 0x12500000
80#define MSM_HSUSB1_SIZE SZ_4K
Hemant Kumarcaa09092011-07-30 00:26:33 -070081
Manu Gautam91223e02011-11-08 15:27:22 +053082/* Address of HS USB3 */
83#define MSM_HSUSB3_PHYS 0x12520000
84#define MSM_HSUSB3_SIZE SZ_4K
85
Hemant Kumar1d66e1c2012-02-13 15:24:59 -080086/* Address of HS USB4 */
87#define MSM_HSUSB4_PHYS 0x12530000
88#define MSM_HSUSB4_SIZE SZ_4K
89
Niranjana Vishwanathapura06f89332012-05-03 17:11:13 -060090/* Address of PCIE20 PARF */
91#define PCIE20_PARF_PHYS 0x1b600000
92#define PCIE20_PARF_SIZE SZ_128
93
94/* Address of PCIE20 ELBI */
95#define PCIE20_ELBI_PHYS 0x1b502000
96#define PCIE20_ELBI_SIZE SZ_256
97
98/* Address of PCIE20 */
99#define PCIE20_PHYS 0x1b500000
100#define PCIE20_SIZE SZ_4K
101
102/* AXI address for PCIE device BAR resources */
103#define PCIE_AXI_BAR_PHYS 0x08000000
104#define PCIE_AXI_BAR_SIZE SZ_8M
105
106/* AXI address for PCIE device config space */
107#define PCIE_AXI_CONF_PHYS 0x08c00000
108#define PCIE_AXI_CONF_SIZE SZ_4K
Hemant Kumar1d66e1c2012-02-13 15:24:59 -0800109
Jeff Ohlstein7e668552011-10-06 16:17:25 -0700110static struct msm_watchdog_pdata msm_watchdog_pdata = {
111 .pet_time = 10000,
112 .bark_time = 11000,
113 .has_secure = true,
Joel Kinge7ca6f72012-02-09 20:51:25 -0800114 .needs_expired_enable = true,
Jeff Ohlstein7e668552011-10-06 16:17:25 -0700115};
116
117struct platform_device msm8064_device_watchdog = {
118 .name = "msm_watchdog",
119 .id = -1,
120 .dev = {
121 .platform_data = &msm_watchdog_pdata,
122 },
123};
124
Joel King0581896d2011-07-19 16:43:28 -0700125static struct resource msm_dmov_resource[] = {
126 {
Jeff Ohlstein4af72692011-11-07 15:59:17 -0800127 .start = ADM_0_SCSS_1_IRQ,
Joel King0581896d2011-07-19 16:43:28 -0700128 .flags = IORESOURCE_IRQ,
129 },
Jeff Ohlstein905f1ce2011-09-07 18:50:18 -0700130 {
Jeff Ohlstein4af72692011-11-07 15:59:17 -0800131 .start = 0x18320000,
132 .end = 0x18320000 + SZ_1M - 1,
Jeff Ohlstein905f1ce2011-09-07 18:50:18 -0700133 .flags = IORESOURCE_MEM,
134 },
135};
136
137static struct msm_dmov_pdata msm_dmov_pdata = {
Jeff Ohlstein4af72692011-11-07 15:59:17 -0800138 .sd = 1,
Jeff Ohlstein905f1ce2011-09-07 18:50:18 -0700139 .sd_size = 0x800,
Joel King0581896d2011-07-19 16:43:28 -0700140};
141
Stepan Moskovchenkodf13d342011-08-03 19:01:25 -0700142struct platform_device apq8064_device_dmov = {
Joel King0581896d2011-07-19 16:43:28 -0700143 .name = "msm_dmov",
144 .id = -1,
145 .resource = msm_dmov_resource,
146 .num_resources = ARRAY_SIZE(msm_dmov_resource),
Jeff Ohlstein905f1ce2011-09-07 18:50:18 -0700147 .dev = {
148 .platform_data = &msm_dmov_pdata,
149 },
Joel King0581896d2011-07-19 16:43:28 -0700150};
151
Stepan Moskovchenko2701a442011-08-19 13:47:22 -0700152static struct resource resources_uart_gsbi1[] = {
153 {
154 .start = APQ8064_GSBI1_UARTDM_IRQ,
155 .end = APQ8064_GSBI1_UARTDM_IRQ,
156 .flags = IORESOURCE_IRQ,
157 },
158 {
159 .start = MSM_UART1DM_PHYS,
160 .end = MSM_UART1DM_PHYS + PAGE_SIZE - 1,
161 .name = "uartdm_resource",
162 .flags = IORESOURCE_MEM,
163 },
164 {
165 .start = MSM_GSBI1_PHYS,
166 .end = MSM_GSBI1_PHYS + PAGE_SIZE - 1,
167 .name = "gsbi_resource",
168 .flags = IORESOURCE_MEM,
169 },
170};
171
172struct platform_device apq8064_device_uart_gsbi1 = {
173 .name = "msm_serial_hsl",
Jin Hong4bbbfba2012-02-02 21:48:07 -0800174 .id = 1,
Stepan Moskovchenko2701a442011-08-19 13:47:22 -0700175 .num_resources = ARRAY_SIZE(resources_uart_gsbi1),
176 .resource = resources_uart_gsbi1,
177};
178
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700179static struct resource resources_uart_gsbi3[] = {
180 {
181 .start = GSBI3_UARTDM_IRQ,
182 .end = GSBI3_UARTDM_IRQ,
183 .flags = IORESOURCE_IRQ,
184 },
185 {
186 .start = MSM_UART3DM_PHYS,
187 .end = MSM_UART3DM_PHYS + PAGE_SIZE - 1,
188 .name = "uartdm_resource",
189 .flags = IORESOURCE_MEM,
190 },
191 {
192 .start = MSM_GSBI3_PHYS,
193 .end = MSM_GSBI3_PHYS + PAGE_SIZE - 1,
194 .name = "gsbi_resource",
195 .flags = IORESOURCE_MEM,
196 },
197};
198
199struct platform_device apq8064_device_uart_gsbi3 = {
200 .name = "msm_serial_hsl",
201 .id = 0,
202 .num_resources = ARRAY_SIZE(resources_uart_gsbi3),
203 .resource = resources_uart_gsbi3,
204};
205
Jing Lin04601f92012-02-05 15:36:07 -0800206static struct resource resources_qup_i2c_gsbi3[] = {
207 {
208 .name = "gsbi_qup_i2c_addr",
209 .start = MSM_GSBI3_PHYS,
210 .end = MSM_GSBI3_PHYS + 4 - 1,
211 .flags = IORESOURCE_MEM,
212 },
213 {
214 .name = "qup_phys_addr",
215 .start = MSM_GSBI3_QUP_PHYS,
216 .end = MSM_GSBI3_QUP_PHYS + MSM_QUP_SIZE - 1,
217 .flags = IORESOURCE_MEM,
218 },
219 {
220 .name = "qup_err_intr",
221 .start = GSBI3_QUP_IRQ,
222 .end = GSBI3_QUP_IRQ,
223 .flags = IORESOURCE_IRQ,
224 },
225 {
226 .name = "i2c_clk",
227 .start = 9,
228 .end = 9,
229 .flags = IORESOURCE_IO,
230 },
231 {
232 .name = "i2c_sda",
233 .start = 8,
234 .end = 8,
235 .flags = IORESOURCE_IO,
236 },
237};
238
David Keitel3c40fc52012-02-09 17:53:52 -0800239static struct resource resources_qup_i2c_gsbi1[] = {
240 {
241 .name = "gsbi_qup_i2c_addr",
242 .start = MSM_GSBI1_PHYS,
243 .end = MSM_GSBI1_PHYS + 4 - 1,
244 .flags = IORESOURCE_MEM,
245 },
246 {
247 .name = "qup_phys_addr",
248 .start = MSM_GSBI1_QUP_PHYS,
249 .end = MSM_GSBI1_QUP_PHYS + MSM_QUP_SIZE - 1,
250 .flags = IORESOURCE_MEM,
251 },
252 {
253 .name = "qup_err_intr",
254 .start = APQ8064_GSBI1_QUP_IRQ,
255 .end = APQ8064_GSBI1_QUP_IRQ,
256 .flags = IORESOURCE_IRQ,
257 },
258 {
259 .name = "i2c_clk",
260 .start = 21,
261 .end = 21,
262 .flags = IORESOURCE_IO,
263 },
264 {
265 .name = "i2c_sda",
266 .start = 20,
267 .end = 20,
268 .flags = IORESOURCE_IO,
269 },
270};
271
272struct platform_device apq8064_device_qup_i2c_gsbi1 = {
273 .name = "qup_i2c",
274 .id = 0,
275 .num_resources = ARRAY_SIZE(resources_qup_i2c_gsbi1),
276 .resource = resources_qup_i2c_gsbi1,
277};
278
Jing Lin04601f92012-02-05 15:36:07 -0800279struct platform_device apq8064_device_qup_i2c_gsbi3 = {
280 .name = "qup_i2c",
281 .id = 3,
282 .num_resources = ARRAY_SIZE(resources_qup_i2c_gsbi3),
283 .resource = resources_qup_i2c_gsbi3,
284};
285
Devin Kima3085422012-06-14 18:23:41 -0700286static struct resource resources_uart_gsbi4[] = {
287 {
288 .start = GSBI4_UARTDM_IRQ,
289 .end = GSBI4_UARTDM_IRQ,
290 .flags = IORESOURCE_IRQ,
291 },
292 {
293 .start = MSM_UART4DM_PHYS,
294 .end = MSM_UART4DM_PHYS + PAGE_SIZE - 1,
295 .name = "uartdm_resource",
296 .flags = IORESOURCE_MEM,
297 },
298 {
299 .start = MSM_GSBI4_PHYS,
300 .end = MSM_GSBI4_PHYS + PAGE_SIZE - 1,
301 .name = "gsbi_resource",
302 .flags = IORESOURCE_MEM,
303 },
304};
305
306struct platform_device apq8064_device_uart_gsbi4 = {
307 .name = "msm_serial_hsl",
308 .id = 0,
309 .num_resources = ARRAY_SIZE(resources_uart_gsbi4),
310 .resource = resources_uart_gsbi4,
311};
312
Kenneth Heitke748593a2011-07-15 15:45:11 -0600313static struct resource resources_qup_i2c_gsbi4[] = {
314 {
315 .name = "gsbi_qup_i2c_addr",
316 .start = MSM_GSBI4_PHYS,
Harini Jayaramane1554a92011-09-15 14:43:02 -0600317 .end = MSM_GSBI4_PHYS + 4 - 1,
Kenneth Heitke748593a2011-07-15 15:45:11 -0600318 .flags = IORESOURCE_MEM,
319 },
320 {
321 .name = "qup_phys_addr",
322 .start = MSM_GSBI4_QUP_PHYS,
Harini Jayaramane1554a92011-09-15 14:43:02 -0600323 .end = MSM_GSBI4_QUP_PHYS + MSM_QUP_SIZE - 1,
Kenneth Heitke748593a2011-07-15 15:45:11 -0600324 .flags = IORESOURCE_MEM,
325 },
326 {
327 .name = "qup_err_intr",
328 .start = GSBI4_QUP_IRQ,
329 .end = GSBI4_QUP_IRQ,
330 .flags = IORESOURCE_IRQ,
331 },
Kevin Chand07220e2012-02-13 15:52:22 -0800332 {
333 .name = "i2c_clk",
334 .start = 11,
335 .end = 11,
336 .flags = IORESOURCE_IO,
337 },
338 {
339 .name = "i2c_sda",
340 .start = 10,
341 .end = 10,
342 .flags = IORESOURCE_IO,
343 },
Kenneth Heitke748593a2011-07-15 15:45:11 -0600344};
345
346struct platform_device apq8064_device_qup_i2c_gsbi4 = {
347 .name = "qup_i2c",
348 .id = 4,
349 .num_resources = ARRAY_SIZE(resources_qup_i2c_gsbi4),
350 .resource = resources_qup_i2c_gsbi4,
351};
352
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700353static struct resource resources_qup_spi_gsbi5[] = {
354 {
355 .name = "spi_base",
356 .start = MSM_GSBI5_QUP_PHYS,
357 .end = MSM_GSBI5_QUP_PHYS + SZ_4K - 1,
358 .flags = IORESOURCE_MEM,
359 },
360 {
361 .name = "gsbi_base",
362 .start = MSM_GSBI5_PHYS,
363 .end = MSM_GSBI5_PHYS + 4 - 1,
364 .flags = IORESOURCE_MEM,
365 },
366 {
367 .name = "spi_irq_in",
368 .start = GSBI5_QUP_IRQ,
369 .end = GSBI5_QUP_IRQ,
370 .flags = IORESOURCE_IRQ,
371 },
372};
373
374struct platform_device apq8064_device_qup_spi_gsbi5 = {
375 .name = "spi_qsd",
376 .id = 0,
377 .num_resources = ARRAY_SIZE(resources_qup_spi_gsbi5),
378 .resource = resources_qup_spi_gsbi5,
379};
380
Joel King8f839b92012-04-01 14:37:46 -0700381static struct resource resources_qup_i2c_gsbi5[] = {
382 {
383 .name = "gsbi_qup_i2c_addr",
384 .start = MSM_GSBI5_PHYS,
385 .end = MSM_GSBI5_PHYS + 4 - 1,
386 .flags = IORESOURCE_MEM,
387 },
388 {
389 .name = "qup_phys_addr",
390 .start = MSM_GSBI5_QUP_PHYS,
391 .end = MSM_GSBI5_QUP_PHYS + MSM_QUP_SIZE - 1,
392 .flags = IORESOURCE_MEM,
393 },
394 {
395 .name = "qup_err_intr",
396 .start = GSBI5_QUP_IRQ,
397 .end = GSBI5_QUP_IRQ,
398 .flags = IORESOURCE_IRQ,
399 },
400 {
401 .name = "i2c_clk",
402 .start = 54,
403 .end = 54,
404 .flags = IORESOURCE_IO,
405 },
406 {
407 .name = "i2c_sda",
408 .start = 53,
409 .end = 53,
410 .flags = IORESOURCE_IO,
411 },
412};
413
414struct platform_device mpq8064_device_qup_i2c_gsbi5 = {
415 .name = "qup_i2c",
416 .id = 5,
417 .num_resources = ARRAY_SIZE(resources_qup_i2c_gsbi5),
418 .resource = resources_qup_i2c_gsbi5,
419};
420
Jin Hong4bbbfba2012-02-02 21:48:07 -0800421static struct resource resources_uart_gsbi7[] = {
422 {
423 .start = GSBI7_UARTDM_IRQ,
424 .end = GSBI7_UARTDM_IRQ,
425 .flags = IORESOURCE_IRQ,
426 },
427 {
428 .start = MSM_UART7DM_PHYS,
429 .end = MSM_UART7DM_PHYS + PAGE_SIZE - 1,
430 .name = "uartdm_resource",
431 .flags = IORESOURCE_MEM,
432 },
433 {
434 .start = MSM_GSBI7_PHYS,
435 .end = MSM_GSBI7_PHYS + PAGE_SIZE - 1,
436 .name = "gsbi_resource",
437 .flags = IORESOURCE_MEM,
438 },
439};
440
441struct platform_device apq8064_device_uart_gsbi7 = {
442 .name = "msm_serial_hsl",
443 .id = 0,
444 .num_resources = ARRAY_SIZE(resources_uart_gsbi7),
445 .resource = resources_uart_gsbi7,
446};
447
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800448struct platform_device apq_pcm = {
449 .name = "msm-pcm-dsp",
450 .id = -1,
451};
452
453struct platform_device apq_pcm_routing = {
454 .name = "msm-pcm-routing",
455 .id = -1,
456};
457
458struct platform_device apq_cpudai0 = {
459 .name = "msm-dai-q6",
460 .id = 0x4000,
461};
462
463struct platform_device apq_cpudai1 = {
464 .name = "msm-dai-q6",
465 .id = 0x4001,
466};
Santosh Mardieff9a742012-04-09 23:23:39 +0530467struct platform_device mpq_cpudai_sec_i2s_rx = {
468 .name = "msm-dai-q6",
469 .id = 4,
470};
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800471struct platform_device apq_cpudai_hdmi_rx = {
Swaminathan Sathappanfd9dbad2012-02-15 16:56:44 -0800472 .name = "msm-dai-q6-hdmi",
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800473 .id = 8,
474};
475
476struct platform_device apq_cpudai_bt_rx = {
477 .name = "msm-dai-q6",
478 .id = 0x3000,
479};
480
481struct platform_device apq_cpudai_bt_tx = {
482 .name = "msm-dai-q6",
483 .id = 0x3001,
484};
485
486struct platform_device apq_cpudai_fm_rx = {
487 .name = "msm-dai-q6",
488 .id = 0x3004,
489};
490
491struct platform_device apq_cpudai_fm_tx = {
492 .name = "msm-dai-q6",
493 .id = 0x3005,
494};
495
Helen Zeng8f925502012-03-05 16:50:17 -0800496struct platform_device apq_cpudai_slim_4_rx = {
497 .name = "msm-dai-q6",
498 .id = 0x4008,
499};
500
501struct platform_device apq_cpudai_slim_4_tx = {
502 .name = "msm-dai-q6",
503 .id = 0x4009,
504};
505
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800506/*
507 * Machine specific data for AUX PCM Interface
508 * which the driver will be unware of.
509 */
Kiran Kandi5f4ab692012-02-23 11:23:56 -0800510struct msm_dai_auxpcm_pdata apq_auxpcm_pdata = {
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800511 .clk = "pcm_clk",
Kuirong Wang547a9982012-05-04 18:29:11 -0700512 .mode_8k = {
513 .mode = AFE_PCM_CFG_MODE_PCM,
514 .sync = AFE_PCM_CFG_SYNC_INT,
515 .frame = AFE_PCM_CFG_FRM_256BPF,
516 .quant = AFE_PCM_CFG_QUANT_LINEAR_NOPAD,
517 .slot = 0,
518 .data = AFE_PCM_CFG_CDATAOE_MASTER,
519 .pcm_clk_rate = 2048000,
520 },
521 .mode_16k = {
522 .mode = AFE_PCM_CFG_MODE_PCM,
523 .sync = AFE_PCM_CFG_SYNC_INT,
524 .frame = AFE_PCM_CFG_FRM_256BPF,
525 .quant = AFE_PCM_CFG_QUANT_LINEAR_NOPAD,
526 .slot = 0,
527 .data = AFE_PCM_CFG_CDATAOE_MASTER,
528 .pcm_clk_rate = 4096000,
529 }
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800530};
531
532struct platform_device apq_cpudai_auxpcm_rx = {
533 .name = "msm-dai-q6",
534 .id = 2,
535 .dev = {
Kiran Kandi5f4ab692012-02-23 11:23:56 -0800536 .platform_data = &apq_auxpcm_pdata,
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800537 },
538};
539
540struct platform_device apq_cpudai_auxpcm_tx = {
541 .name = "msm-dai-q6",
542 .id = 3,
Kiran Kandi5f4ab692012-02-23 11:23:56 -0800543 .dev = {
544 .platform_data = &apq_auxpcm_pdata,
545 },
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800546};
547
Patrick Lai04baee942012-05-01 14:38:47 -0700548struct msm_mi2s_pdata mpq_mi2s_tx_data = {
549 .rx_sd_lines = 0,
550 .tx_sd_lines = MSM_MI2S_SD0 | MSM_MI2S_SD1 | MSM_MI2S_SD2 |
551 MSM_MI2S_SD3,
Kuirong Wangf23f8c52012-03-31 12:34:51 -0700552};
553
554struct platform_device mpq_cpudai_mi2s_tx = {
Patrick Lai04baee942012-05-01 14:38:47 -0700555 .name = "msm-dai-q6-mi2s",
556 .id = -1, /*MI2S_TX */
Kuirong Wangf23f8c52012-03-31 12:34:51 -0700557 .dev = {
558 .platform_data = &mpq_mi2s_tx_data,
559 },
560};
561
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800562struct platform_device apq_cpu_fe = {
563 .name = "msm-dai-fe",
564 .id = -1,
565};
566
567struct platform_device apq_stub_codec = {
568 .name = "msm-stub-codec",
569 .id = 1,
570};
571
572struct platform_device apq_voice = {
573 .name = "msm-pcm-voice",
574 .id = -1,
575};
576
577struct platform_device apq_voip = {
578 .name = "msm-voip-dsp",
579 .id = -1,
580};
581
582struct platform_device apq_lpa_pcm = {
583 .name = "msm-pcm-lpa",
584 .id = -1,
585};
586
Krishnankutty Kolathappilly4374e332012-03-18 22:27:30 -0700587struct platform_device apq_compr_dsp = {
588 .name = "msm-compr-dsp",
589 .id = -1,
590};
591
592struct platform_device apq_multi_ch_pcm = {
593 .name = "msm-multi-ch-pcm-dsp",
594 .id = -1,
595};
596
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800597struct platform_device apq_pcm_hostless = {
598 .name = "msm-pcm-hostless",
599 .id = -1,
600};
601
602struct platform_device apq_cpudai_afe_01_rx = {
603 .name = "msm-dai-q6",
604 .id = 0xE0,
605};
606
607struct platform_device apq_cpudai_afe_01_tx = {
608 .name = "msm-dai-q6",
609 .id = 0xF0,
610};
611
612struct platform_device apq_cpudai_afe_02_rx = {
613 .name = "msm-dai-q6",
614 .id = 0xF1,
615};
616
617struct platform_device apq_cpudai_afe_02_tx = {
618 .name = "msm-dai-q6",
619 .id = 0xE1,
620};
621
622struct platform_device apq_pcm_afe = {
623 .name = "msm-pcm-afe",
624 .id = -1,
625};
626
Neema Shetty8427c262012-02-16 11:23:43 -0800627struct platform_device apq_cpudai_stub = {
628 .name = "msm-dai-stub",
629 .id = -1,
630};
631
Neema Shetty3c9d2862012-03-11 01:25:32 -0800632struct platform_device apq_cpudai_slimbus_1_rx = {
633 .name = "msm-dai-q6",
634 .id = 0x4002,
635};
636
637struct platform_device apq_cpudai_slimbus_1_tx = {
638 .name = "msm-dai-q6",
639 .id = 0x4003,
640};
641
Kiran Kandi97fe19d2012-05-20 22:34:04 -0700642struct platform_device apq_cpudai_slimbus_2_rx = {
643 .name = "msm-dai-q6",
644 .id = 0x4004,
645};
646
Kiran Kandi1e6371d2012-03-29 11:48:57 -0700647struct platform_device apq_cpudai_slimbus_2_tx = {
648 .name = "msm-dai-q6",
649 .id = 0x4005,
650};
651
Neema Shettyc9d86c32012-05-09 12:01:39 -0700652struct platform_device apq_cpudai_slimbus_3_rx = {
653 .name = "msm-dai-q6",
654 .id = 0x4006,
655};
656
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700657static struct resource resources_ssbi_pmic1[] = {
658 {
659 .start = MSM_PMIC1_SSBI_CMD_PHYS,
660 .end = MSM_PMIC1_SSBI_CMD_PHYS + MSM_PMIC_SSBI_SIZE - 1,
661 .flags = IORESOURCE_MEM,
662 },
663};
664
Sagar Dharia8bdcdaf2011-09-16 16:01:15 -0600665#define LPASS_SLIMBUS_PHYS 0x28080000
666#define LPASS_SLIMBUS_BAM_PHYS 0x28084000
Swaminathan Sathappan2316e082012-02-03 14:07:17 -0800667#define LPASS_SLIMBUS_SLEW (MSM8960_TLMM_PHYS + 0x207C)
Sagar Dharia8bdcdaf2011-09-16 16:01:15 -0600668/* Board info for the slimbus slave device */
669static struct resource slimbus_res[] = {
670 {
671 .start = LPASS_SLIMBUS_PHYS,
672 .end = LPASS_SLIMBUS_PHYS + 8191,
673 .flags = IORESOURCE_MEM,
674 .name = "slimbus_physical",
675 },
676 {
677 .start = LPASS_SLIMBUS_BAM_PHYS,
678 .end = LPASS_SLIMBUS_BAM_PHYS + 8191,
679 .flags = IORESOURCE_MEM,
680 .name = "slimbus_bam_physical",
681 },
682 {
Swaminathan Sathappan2316e082012-02-03 14:07:17 -0800683 .start = LPASS_SLIMBUS_SLEW,
684 .end = LPASS_SLIMBUS_SLEW + 4 - 1,
685 .flags = IORESOURCE_MEM,
686 .name = "slimbus_slew_reg",
687 },
688 {
Sagar Dharia8bdcdaf2011-09-16 16:01:15 -0600689 .start = SLIMBUS0_CORE_EE1_IRQ,
690 .end = SLIMBUS0_CORE_EE1_IRQ,
691 .flags = IORESOURCE_IRQ,
692 .name = "slimbus_irq",
693 },
694 {
695 .start = SLIMBUS0_BAM_EE1_IRQ,
696 .end = SLIMBUS0_BAM_EE1_IRQ,
697 .flags = IORESOURCE_IRQ,
698 .name = "slimbus_bam_irq",
699 },
700};
701
702struct platform_device apq8064_slim_ctrl = {
703 .name = "msm_slim_ctrl",
704 .id = 1,
705 .num_resources = ARRAY_SIZE(slimbus_res),
706 .resource = slimbus_res,
707 .dev = {
708 .coherent_dma_mask = 0xffffffffULL,
709 },
710};
711
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700712struct platform_device apq8064_device_ssbi_pmic1 = {
713 .name = "msm_ssbi",
714 .id = 0,
715 .resource = resources_ssbi_pmic1,
716 .num_resources = ARRAY_SIZE(resources_ssbi_pmic1),
717};
718
719static struct resource resources_ssbi_pmic2[] = {
720 {
721 .start = MSM_PMIC2_SSBI_CMD_PHYS,
722 .end = MSM_PMIC2_SSBI_CMD_PHYS + MSM_PMIC_SSBI_SIZE - 1,
723 .flags = IORESOURCE_MEM,
724 },
725};
726
727struct platform_device apq8064_device_ssbi_pmic2 = {
728 .name = "msm_ssbi",
729 .id = 1,
730 .resource = resources_ssbi_pmic2,
731 .num_resources = ARRAY_SIZE(resources_ssbi_pmic2),
732};
733
734static struct resource resources_otg[] = {
735 {
Hemant Kumard86c4882012-01-24 19:39:37 -0800736 .start = MSM_HSUSB1_PHYS,
737 .end = MSM_HSUSB1_PHYS + MSM_HSUSB1_SIZE - 1,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700738 .flags = IORESOURCE_MEM,
739 },
740 {
741 .start = USB1_HS_IRQ,
742 .end = USB1_HS_IRQ,
743 .flags = IORESOURCE_IRQ,
744 },
745};
746
Stepan Moskovchenko14aa6492011-08-08 15:15:01 -0700747struct platform_device apq8064_device_otg = {
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700748 .name = "msm_otg",
749 .id = -1,
750 .num_resources = ARRAY_SIZE(resources_otg),
751 .resource = resources_otg,
752 .dev = {
753 .coherent_dma_mask = 0xffffffff,
754 },
755};
756
757static struct resource resources_hsusb[] = {
758 {
Hemant Kumard86c4882012-01-24 19:39:37 -0800759 .start = MSM_HSUSB1_PHYS,
760 .end = MSM_HSUSB1_PHYS + MSM_HSUSB1_SIZE - 1,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700761 .flags = IORESOURCE_MEM,
762 },
763 {
764 .start = USB1_HS_IRQ,
765 .end = USB1_HS_IRQ,
766 .flags = IORESOURCE_IRQ,
767 },
768};
769
Stepan Moskovchenko14aa6492011-08-08 15:15:01 -0700770struct platform_device apq8064_device_gadget_peripheral = {
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700771 .name = "msm_hsusb",
772 .id = -1,
773 .num_resources = ARRAY_SIZE(resources_hsusb),
774 .resource = resources_hsusb,
775 .dev = {
776 .coherent_dma_mask = 0xffffffff,
777 },
778};
779
Hemant Kumard86c4882012-01-24 19:39:37 -0800780static struct resource resources_hsusb_host[] = {
781 {
782 .start = MSM_HSUSB1_PHYS,
783 .end = MSM_HSUSB1_PHYS + MSM_HSUSB1_SIZE - 1,
784 .flags = IORESOURCE_MEM,
785 },
786 {
787 .start = USB1_HS_IRQ,
788 .end = USB1_HS_IRQ,
789 .flags = IORESOURCE_IRQ,
790 },
791};
792
Hemant Kumara945b472012-01-25 15:08:06 -0800793static struct resource resources_hsic_host[] = {
794 {
795 .start = 0x12510000,
796 .end = 0x12510000 + SZ_4K - 1,
797 .flags = IORESOURCE_MEM,
798 },
799 {
800 .start = USB2_HSIC_IRQ,
801 .end = USB2_HSIC_IRQ,
802 .flags = IORESOURCE_IRQ,
803 },
804 {
805 .start = MSM_GPIO_TO_INT(49),
806 .end = MSM_GPIO_TO_INT(49),
807 .name = "peripheral_status_irq",
808 .flags = IORESOURCE_IRQ,
809 },
Vamsi Krishna6921cbe2012-02-21 18:34:43 -0800810 {
Hemant Kumar6fd65032012-05-23 13:02:24 -0700811 .start = 47,
812 .end = 47,
813 .name = "wakeup",
814 .flags = IORESOURCE_IO,
Vamsi Krishna6921cbe2012-02-21 18:34:43 -0800815 },
Hemant Kumara945b472012-01-25 15:08:06 -0800816};
817
Hemant Kumard86c4882012-01-24 19:39:37 -0800818static u64 dma_mask = DMA_BIT_MASK(32);
819struct platform_device apq8064_device_hsusb_host = {
820 .name = "msm_hsusb_host",
821 .id = -1,
822 .num_resources = ARRAY_SIZE(resources_hsusb_host),
823 .resource = resources_hsusb_host,
824 .dev = {
825 .dma_mask = &dma_mask,
826 .coherent_dma_mask = 0xffffffff,
827 },
828};
829
Hemant Kumara945b472012-01-25 15:08:06 -0800830struct platform_device apq8064_device_hsic_host = {
831 .name = "msm_hsic_host",
832 .id = -1,
833 .num_resources = ARRAY_SIZE(resources_hsic_host),
834 .resource = resources_hsic_host,
835 .dev = {
836 .dma_mask = &dma_mask,
837 .coherent_dma_mask = DMA_BIT_MASK(32),
838 },
839};
840
Manu Gautam91223e02011-11-08 15:27:22 +0530841static struct resource resources_ehci_host3[] = {
842{
843 .start = MSM_HSUSB3_PHYS,
844 .end = MSM_HSUSB3_PHYS + MSM_HSUSB3_SIZE - 1,
845 .flags = IORESOURCE_MEM,
846 },
847 {
848 .start = USB3_HS_IRQ,
849 .end = USB3_HS_IRQ,
850 .flags = IORESOURCE_IRQ,
851 },
852};
853
854struct platform_device apq8064_device_ehci_host3 = {
855 .name = "msm_ehci_host",
856 .id = 0,
857 .num_resources = ARRAY_SIZE(resources_ehci_host3),
858 .resource = resources_ehci_host3,
859 .dev = {
860 .dma_mask = &dma_mask,
861 .coherent_dma_mask = 0xffffffff,
862 },
863};
864
Hemant Kumar1d66e1c2012-02-13 15:24:59 -0800865static struct resource resources_ehci_host4[] = {
866{
867 .start = MSM_HSUSB4_PHYS,
868 .end = MSM_HSUSB4_PHYS + MSM_HSUSB4_SIZE - 1,
869 .flags = IORESOURCE_MEM,
870 },
871 {
872 .start = USB4_HS_IRQ,
873 .end = USB4_HS_IRQ,
874 .flags = IORESOURCE_IRQ,
875 },
876};
877
878struct platform_device apq8064_device_ehci_host4 = {
879 .name = "msm_ehci_host",
880 .id = 1,
881 .num_resources = ARRAY_SIZE(resources_ehci_host4),
882 .resource = resources_ehci_host4,
883 .dev = {
884 .dma_mask = &dma_mask,
885 .coherent_dma_mask = 0xffffffff,
886 },
887};
888
Ramesh Masavarapuf31ff242012-05-10 18:55:21 -0700889#define SHARED_IMEM_TZ_BASE 0x2a03f720
890static struct resource tzlog_resources[] = {
891 {
892 .start = SHARED_IMEM_TZ_BASE,
893 .end = SHARED_IMEM_TZ_BASE + SZ_4K - 1,
894 .flags = IORESOURCE_MEM,
895 },
896};
897
898struct platform_device apq_device_tz_log = {
899 .name = "tz_log",
900 .id = 0,
901 .num_resources = ARRAY_SIZE(tzlog_resources),
902 .resource = tzlog_resources,
903};
904
Mohan Kumar Gubbihalli Lachma Naik7f72edd2012-02-06 17:26:47 -0800905/* MSM Video core device */
906#ifdef CONFIG_MSM_BUS_SCALING
907static struct msm_bus_vectors vidc_init_vectors[] = {
908 {
909 .src = MSM_BUS_MASTER_VIDEO_ENC,
910 .dst = MSM_BUS_SLAVE_EBI_CH0,
911 .ab = 0,
912 .ib = 0,
913 },
914 {
915 .src = MSM_BUS_MASTER_VIDEO_DEC,
916 .dst = MSM_BUS_SLAVE_EBI_CH0,
917 .ab = 0,
918 .ib = 0,
919 },
920 {
921 .src = MSM_BUS_MASTER_AMPSS_M0,
922 .dst = MSM_BUS_SLAVE_EBI_CH0,
923 .ab = 0,
924 .ib = 0,
925 },
926 {
927 .src = MSM_BUS_MASTER_AMPSS_M0,
928 .dst = MSM_BUS_SLAVE_EBI_CH0,
929 .ab = 0,
930 .ib = 0,
931 },
932};
933static struct msm_bus_vectors vidc_venc_vga_vectors[] = {
934 {
935 .src = MSM_BUS_MASTER_VIDEO_ENC,
936 .dst = MSM_BUS_SLAVE_EBI_CH0,
937 .ab = 54525952,
938 .ib = 436207616,
939 },
940 {
941 .src = MSM_BUS_MASTER_VIDEO_DEC,
942 .dst = MSM_BUS_SLAVE_EBI_CH0,
943 .ab = 72351744,
944 .ib = 289406976,
945 },
946 {
947 .src = MSM_BUS_MASTER_AMPSS_M0,
948 .dst = MSM_BUS_SLAVE_EBI_CH0,
949 .ab = 500000,
950 .ib = 1000000,
951 },
952 {
953 .src = MSM_BUS_MASTER_AMPSS_M0,
954 .dst = MSM_BUS_SLAVE_EBI_CH0,
955 .ab = 500000,
956 .ib = 1000000,
957 },
958};
959static struct msm_bus_vectors vidc_vdec_vga_vectors[] = {
960 {
961 .src = MSM_BUS_MASTER_VIDEO_ENC,
962 .dst = MSM_BUS_SLAVE_EBI_CH0,
963 .ab = 40894464,
964 .ib = 327155712,
965 },
966 {
967 .src = MSM_BUS_MASTER_VIDEO_DEC,
968 .dst = MSM_BUS_SLAVE_EBI_CH0,
969 .ab = 48234496,
970 .ib = 192937984,
971 },
972 {
973 .src = MSM_BUS_MASTER_AMPSS_M0,
974 .dst = MSM_BUS_SLAVE_EBI_CH0,
975 .ab = 500000,
976 .ib = 2000000,
977 },
978 {
979 .src = MSM_BUS_MASTER_AMPSS_M0,
980 .dst = MSM_BUS_SLAVE_EBI_CH0,
981 .ab = 500000,
982 .ib = 2000000,
983 },
984};
985static struct msm_bus_vectors vidc_venc_720p_vectors[] = {
986 {
987 .src = MSM_BUS_MASTER_VIDEO_ENC,
988 .dst = MSM_BUS_SLAVE_EBI_CH0,
989 .ab = 163577856,
990 .ib = 1308622848,
991 },
992 {
993 .src = MSM_BUS_MASTER_VIDEO_DEC,
994 .dst = MSM_BUS_SLAVE_EBI_CH0,
995 .ab = 219152384,
996 .ib = 876609536,
997 },
998 {
999 .src = MSM_BUS_MASTER_AMPSS_M0,
1000 .dst = MSM_BUS_SLAVE_EBI_CH0,
1001 .ab = 1750000,
1002 .ib = 3500000,
1003 },
1004 {
1005 .src = MSM_BUS_MASTER_AMPSS_M0,
1006 .dst = MSM_BUS_SLAVE_EBI_CH0,
1007 .ab = 1750000,
1008 .ib = 3500000,
1009 },
1010};
1011static struct msm_bus_vectors vidc_vdec_720p_vectors[] = {
1012 {
1013 .src = MSM_BUS_MASTER_VIDEO_ENC,
1014 .dst = MSM_BUS_SLAVE_EBI_CH0,
1015 .ab = 121634816,
1016 .ib = 973078528,
1017 },
1018 {
1019 .src = MSM_BUS_MASTER_VIDEO_DEC,
1020 .dst = MSM_BUS_SLAVE_EBI_CH0,
1021 .ab = 155189248,
1022 .ib = 620756992,
1023 },
1024 {
1025 .src = MSM_BUS_MASTER_AMPSS_M0,
1026 .dst = MSM_BUS_SLAVE_EBI_CH0,
1027 .ab = 1750000,
1028 .ib = 7000000,
1029 },
1030 {
1031 .src = MSM_BUS_MASTER_AMPSS_M0,
1032 .dst = MSM_BUS_SLAVE_EBI_CH0,
1033 .ab = 1750000,
1034 .ib = 7000000,
1035 },
1036};
1037static struct msm_bus_vectors vidc_venc_1080p_vectors[] = {
1038 {
1039 .src = MSM_BUS_MASTER_VIDEO_ENC,
1040 .dst = MSM_BUS_SLAVE_EBI_CH0,
1041 .ab = 372244480,
1042 .ib = 2560000000U,
1043 },
1044 {
1045 .src = MSM_BUS_MASTER_VIDEO_DEC,
1046 .dst = MSM_BUS_SLAVE_EBI_CH0,
1047 .ab = 501219328,
1048 .ib = 2560000000U,
1049 },
1050 {
1051 .src = MSM_BUS_MASTER_AMPSS_M0,
1052 .dst = MSM_BUS_SLAVE_EBI_CH0,
1053 .ab = 2500000,
1054 .ib = 5000000,
1055 },
1056 {
1057 .src = MSM_BUS_MASTER_AMPSS_M0,
1058 .dst = MSM_BUS_SLAVE_EBI_CH0,
1059 .ab = 2500000,
1060 .ib = 5000000,
1061 },
1062};
1063static struct msm_bus_vectors vidc_vdec_1080p_vectors[] = {
1064 {
1065 .src = MSM_BUS_MASTER_VIDEO_ENC,
1066 .dst = MSM_BUS_SLAVE_EBI_CH0,
1067 .ab = 222298112,
1068 .ib = 2560000000U,
1069 },
1070 {
1071 .src = MSM_BUS_MASTER_VIDEO_DEC,
1072 .dst = MSM_BUS_SLAVE_EBI_CH0,
1073 .ab = 330301440,
1074 .ib = 2560000000U,
1075 },
1076 {
1077 .src = MSM_BUS_MASTER_AMPSS_M0,
1078 .dst = MSM_BUS_SLAVE_EBI_CH0,
1079 .ab = 2500000,
1080 .ib = 700000000,
1081 },
1082 {
1083 .src = MSM_BUS_MASTER_AMPSS_M0,
1084 .dst = MSM_BUS_SLAVE_EBI_CH0,
1085 .ab = 2500000,
1086 .ib = 10000000,
1087 },
1088};
1089
Arun Menon152c3c72012-06-20 11:50:08 -07001090static struct msm_bus_vectors vidc_venc_1080p_turbo_vectors[] = {
1091 {
1092 .src = MSM_BUS_MASTER_VIDEO_ENC,
1093 .dst = MSM_BUS_SLAVE_EBI_CH0,
1094 .ab = 222298112,
1095 .ib = 3522000000U,
1096 },
1097 {
1098 .src = MSM_BUS_MASTER_VIDEO_DEC,
1099 .dst = MSM_BUS_SLAVE_EBI_CH0,
1100 .ab = 330301440,
1101 .ib = 3522000000U,
1102 },
1103 {
1104 .src = MSM_BUS_MASTER_AMPSS_M0,
1105 .dst = MSM_BUS_SLAVE_EBI_CH0,
1106 .ab = 2500000,
1107 .ib = 700000000,
1108 },
1109 {
1110 .src = MSM_BUS_MASTER_AMPSS_M0,
1111 .dst = MSM_BUS_SLAVE_EBI_CH0,
1112 .ab = 2500000,
1113 .ib = 10000000,
1114 },
1115};
1116static struct msm_bus_vectors vidc_vdec_1080p_turbo_vectors[] = {
1117 {
1118 .src = MSM_BUS_MASTER_VIDEO_ENC,
1119 .dst = MSM_BUS_SLAVE_EBI_CH0,
1120 .ab = 222298112,
1121 .ib = 3522000000U,
1122 },
1123 {
1124 .src = MSM_BUS_MASTER_VIDEO_DEC,
1125 .dst = MSM_BUS_SLAVE_EBI_CH0,
1126 .ab = 330301440,
1127 .ib = 3522000000U,
1128 },
1129 {
1130 .src = MSM_BUS_MASTER_AMPSS_M0,
1131 .dst = MSM_BUS_SLAVE_EBI_CH0,
1132 .ab = 2500000,
1133 .ib = 700000000,
1134 },
1135 {
1136 .src = MSM_BUS_MASTER_AMPSS_M0,
1137 .dst = MSM_BUS_SLAVE_EBI_CH0,
1138 .ab = 2500000,
1139 .ib = 10000000,
1140 },
1141};
1142
Mohan Kumar Gubbihalli Lachma Naik7f72edd2012-02-06 17:26:47 -08001143static struct msm_bus_paths vidc_bus_client_config[] = {
1144 {
1145 ARRAY_SIZE(vidc_init_vectors),
1146 vidc_init_vectors,
1147 },
1148 {
1149 ARRAY_SIZE(vidc_venc_vga_vectors),
1150 vidc_venc_vga_vectors,
1151 },
1152 {
1153 ARRAY_SIZE(vidc_vdec_vga_vectors),
1154 vidc_vdec_vga_vectors,
1155 },
1156 {
1157 ARRAY_SIZE(vidc_venc_720p_vectors),
1158 vidc_venc_720p_vectors,
1159 },
1160 {
1161 ARRAY_SIZE(vidc_vdec_720p_vectors),
1162 vidc_vdec_720p_vectors,
1163 },
1164 {
1165 ARRAY_SIZE(vidc_venc_1080p_vectors),
1166 vidc_venc_1080p_vectors,
1167 },
1168 {
1169 ARRAY_SIZE(vidc_vdec_1080p_vectors),
1170 vidc_vdec_1080p_vectors,
1171 },
Arun Menon152c3c72012-06-20 11:50:08 -07001172 {
1173 ARRAY_SIZE(vidc_venc_1080p_turbo_vectors),
1174 vidc_venc_1080p_turbo_vectors,
1175 },
1176 {
1177 ARRAY_SIZE(vidc_vdec_1080p_turbo_vectors),
1178 vidc_vdec_1080p_turbo_vectors,
1179 },
Mohan Kumar Gubbihalli Lachma Naik7f72edd2012-02-06 17:26:47 -08001180};
1181
1182static struct msm_bus_scale_pdata vidc_bus_client_data = {
1183 vidc_bus_client_config,
1184 ARRAY_SIZE(vidc_bus_client_config),
1185 .name = "vidc",
1186};
1187#endif
1188
1189
1190#define APQ8064_VIDC_BASE_PHYS 0x04400000
1191#define APQ8064_VIDC_BASE_SIZE 0x00100000
1192
1193static struct resource apq8064_device_vidc_resources[] = {
1194 {
1195 .start = APQ8064_VIDC_BASE_PHYS,
1196 .end = APQ8064_VIDC_BASE_PHYS + APQ8064_VIDC_BASE_SIZE - 1,
1197 .flags = IORESOURCE_MEM,
1198 },
1199 {
1200 .start = VCODEC_IRQ,
1201 .end = VCODEC_IRQ,
1202 .flags = IORESOURCE_IRQ,
1203 },
1204};
1205
1206struct msm_vidc_platform_data apq8064_vidc_platform_data = {
1207#ifdef CONFIG_MSM_BUS_SCALING
1208 .vidc_bus_client_pdata = &vidc_bus_client_data,
1209#endif
1210#ifdef CONFIG_MSM_MULTIMEDIA_USE_ION
1211 .memtype = ION_CP_MM_HEAP_ID,
1212 .enable_ion = 1,
Deepak kotureda295a2012-05-10 19:49:46 -07001213 .cp_enabled = 1,
Mohan Kumar Gubbihalli Lachma Naik7f72edd2012-02-06 17:26:47 -08001214#else
1215 .memtype = MEMTYPE_EBI1,
1216 .enable_ion = 0,
1217#endif
1218 .disable_dmx = 0,
1219 .disable_fullhd = 0,
Mohan Kumar Gubbihalli Lachma Naiked9dc912012-03-01 19:11:14 -08001220 .cont_mode_dpb_count = 18,
Riaz Rahaman84f8c682012-05-30 13:32:10 +05301221 .fw_addr = 0x9fe00000,
Mohan Kumar Gubbihalli Lachma Naik7f72edd2012-02-06 17:26:47 -08001222};
1223
1224struct platform_device apq8064_msm_device_vidc = {
1225 .name = "msm_vidc",
1226 .id = 0,
1227 .num_resources = ARRAY_SIZE(apq8064_device_vidc_resources),
1228 .resource = apq8064_device_vidc_resources,
1229 .dev = {
1230 .platform_data = &apq8064_vidc_platform_data,
1231 },
1232};
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001233#define MSM_SDC1_BASE 0x12400000
1234#define MSM_SDC1_DML_BASE (MSM_SDC1_BASE + 0x800)
1235#define MSM_SDC1_BAM_BASE (MSM_SDC1_BASE + 0x2000)
1236#define MSM_SDC2_BASE 0x12140000
1237#define MSM_SDC2_DML_BASE (MSM_SDC2_BASE + 0x800)
1238#define MSM_SDC2_BAM_BASE (MSM_SDC2_BASE + 0x2000)
1239#define MSM_SDC3_BASE 0x12180000
1240#define MSM_SDC3_DML_BASE (MSM_SDC3_BASE + 0x800)
1241#define MSM_SDC3_BAM_BASE (MSM_SDC3_BASE + 0x2000)
1242#define MSM_SDC4_BASE 0x121C0000
1243#define MSM_SDC4_DML_BASE (MSM_SDC4_BASE + 0x800)
1244#define MSM_SDC4_BAM_BASE (MSM_SDC4_BASE + 0x2000)
1245
1246static struct resource resources_sdc1[] = {
1247 {
1248 .name = "core_mem",
1249 .flags = IORESOURCE_MEM,
1250 .start = MSM_SDC1_BASE,
1251 .end = MSM_SDC1_DML_BASE - 1,
1252 },
1253 {
1254 .name = "core_irq",
1255 .flags = IORESOURCE_IRQ,
1256 .start = SDC1_IRQ_0,
1257 .end = SDC1_IRQ_0
1258 },
1259#ifdef CONFIG_MMC_MSM_SPS_SUPPORT
1260 {
1261 .name = "sdcc_dml_addr",
1262 .start = MSM_SDC1_DML_BASE,
1263 .end = MSM_SDC1_BAM_BASE - 1,
1264 .flags = IORESOURCE_MEM,
1265 },
1266 {
1267 .name = "sdcc_bam_addr",
1268 .start = MSM_SDC1_BAM_BASE,
1269 .end = MSM_SDC1_BAM_BASE + (2 * SZ_4K) - 1,
1270 .flags = IORESOURCE_MEM,
1271 },
1272 {
1273 .name = "sdcc_bam_irq",
1274 .start = SDC1_BAM_IRQ,
1275 .end = SDC1_BAM_IRQ,
1276 .flags = IORESOURCE_IRQ,
1277 },
1278#endif
1279};
1280
1281static struct resource resources_sdc2[] = {
1282 {
1283 .name = "core_mem",
1284 .flags = IORESOURCE_MEM,
1285 .start = MSM_SDC2_BASE,
1286 .end = MSM_SDC2_DML_BASE - 1,
1287 },
1288 {
1289 .name = "core_irq",
1290 .flags = IORESOURCE_IRQ,
1291 .start = SDC2_IRQ_0,
1292 .end = SDC2_IRQ_0
1293 },
1294#ifdef CONFIG_MMC_MSM_SPS_SUPPORT
1295 {
1296 .name = "sdcc_dml_addr",
1297 .start = MSM_SDC2_DML_BASE,
1298 .end = MSM_SDC2_BAM_BASE - 1,
1299 .flags = IORESOURCE_MEM,
1300 },
1301 {
1302 .name = "sdcc_bam_addr",
1303 .start = MSM_SDC2_BAM_BASE,
1304 .end = MSM_SDC2_BAM_BASE + (2 * SZ_4K) - 1,
1305 .flags = IORESOURCE_MEM,
1306 },
1307 {
1308 .name = "sdcc_bam_irq",
1309 .start = SDC2_BAM_IRQ,
1310 .end = SDC2_BAM_IRQ,
1311 .flags = IORESOURCE_IRQ,
1312 },
1313#endif
1314};
1315
1316static struct resource resources_sdc3[] = {
1317 {
1318 .name = "core_mem",
1319 .flags = IORESOURCE_MEM,
1320 .start = MSM_SDC3_BASE,
1321 .end = MSM_SDC3_DML_BASE - 1,
1322 },
1323 {
1324 .name = "core_irq",
1325 .flags = IORESOURCE_IRQ,
1326 .start = SDC3_IRQ_0,
1327 .end = SDC3_IRQ_0
1328 },
1329#ifdef CONFIG_MMC_MSM_SPS_SUPPORT
1330 {
1331 .name = "sdcc_dml_addr",
1332 .start = MSM_SDC3_DML_BASE,
1333 .end = MSM_SDC3_BAM_BASE - 1,
1334 .flags = IORESOURCE_MEM,
1335 },
1336 {
1337 .name = "sdcc_bam_addr",
1338 .start = MSM_SDC3_BAM_BASE,
1339 .end = MSM_SDC3_BAM_BASE + (2 * SZ_4K) - 1,
1340 .flags = IORESOURCE_MEM,
1341 },
1342 {
1343 .name = "sdcc_bam_irq",
1344 .start = SDC3_BAM_IRQ,
1345 .end = SDC3_BAM_IRQ,
1346 .flags = IORESOURCE_IRQ,
1347 },
1348#endif
1349};
1350
1351static struct resource resources_sdc4[] = {
1352 {
1353 .name = "core_mem",
1354 .flags = IORESOURCE_MEM,
1355 .start = MSM_SDC4_BASE,
1356 .end = MSM_SDC4_DML_BASE - 1,
1357 },
1358 {
1359 .name = "core_irq",
1360 .flags = IORESOURCE_IRQ,
1361 .start = SDC4_IRQ_0,
1362 .end = SDC4_IRQ_0
1363 },
1364#ifdef CONFIG_MMC_MSM_SPS_SUPPORT
1365 {
1366 .name = "sdcc_dml_addr",
1367 .start = MSM_SDC4_DML_BASE,
1368 .end = MSM_SDC4_BAM_BASE - 1,
1369 .flags = IORESOURCE_MEM,
1370 },
1371 {
1372 .name = "sdcc_bam_addr",
1373 .start = MSM_SDC4_BAM_BASE,
1374 .end = MSM_SDC4_BAM_BASE + (2 * SZ_4K) - 1,
1375 .flags = IORESOURCE_MEM,
1376 },
1377 {
1378 .name = "sdcc_bam_irq",
1379 .start = SDC4_BAM_IRQ,
1380 .end = SDC4_BAM_IRQ,
1381 .flags = IORESOURCE_IRQ,
1382 },
1383#endif
1384};
1385
1386struct platform_device apq8064_device_sdc1 = {
1387 .name = "msm_sdcc",
1388 .id = 1,
1389 .num_resources = ARRAY_SIZE(resources_sdc1),
1390 .resource = resources_sdc1,
1391 .dev = {
1392 .coherent_dma_mask = 0xffffffff,
1393 },
1394};
1395
1396struct platform_device apq8064_device_sdc2 = {
1397 .name = "msm_sdcc",
1398 .id = 2,
1399 .num_resources = ARRAY_SIZE(resources_sdc2),
1400 .resource = resources_sdc2,
1401 .dev = {
1402 .coherent_dma_mask = 0xffffffff,
1403 },
1404};
1405
1406struct platform_device apq8064_device_sdc3 = {
1407 .name = "msm_sdcc",
1408 .id = 3,
1409 .num_resources = ARRAY_SIZE(resources_sdc3),
1410 .resource = resources_sdc3,
1411 .dev = {
1412 .coherent_dma_mask = 0xffffffff,
1413 },
1414};
1415
1416struct platform_device apq8064_device_sdc4 = {
1417 .name = "msm_sdcc",
1418 .id = 4,
1419 .num_resources = ARRAY_SIZE(resources_sdc4),
1420 .resource = resources_sdc4,
1421 .dev = {
1422 .coherent_dma_mask = 0xffffffff,
1423 },
1424};
1425
1426static struct platform_device *apq8064_sdcc_devices[] __initdata = {
1427 &apq8064_device_sdc1,
1428 &apq8064_device_sdc2,
1429 &apq8064_device_sdc3,
1430 &apq8064_device_sdc4,
1431};
1432
1433int __init apq8064_add_sdcc(unsigned int controller,
1434 struct mmc_platform_data *plat)
1435{
1436 struct platform_device *pdev;
1437
1438 if (!plat)
1439 return 0;
1440 if (controller < 1 || controller > 4)
1441 return -EINVAL;
1442
1443 pdev = apq8064_sdcc_devices[controller-1];
1444 pdev->dev.platform_data = plat;
1445 return platform_device_register(pdev);
1446}
1447
Yan He06913ce2011-08-26 16:33:46 -07001448static struct resource resources_sps[] = {
1449 {
1450 .name = "pipe_mem",
1451 .start = 0x12800000,
1452 .end = 0x12800000 + 0x4000 - 1,
1453 .flags = IORESOURCE_MEM,
1454 },
1455 {
1456 .name = "bamdma_dma",
1457 .start = 0x12240000,
1458 .end = 0x12240000 + 0x1000 - 1,
1459 .flags = IORESOURCE_MEM,
1460 },
1461 {
1462 .name = "bamdma_bam",
1463 .start = 0x12244000,
1464 .end = 0x12244000 + 0x4000 - 1,
1465 .flags = IORESOURCE_MEM,
1466 },
1467 {
1468 .name = "bamdma_irq",
1469 .start = SPS_BAM_DMA_IRQ,
1470 .end = SPS_BAM_DMA_IRQ,
1471 .flags = IORESOURCE_IRQ,
1472 },
1473};
1474
Gagan Mac8a7a5d32011-11-11 16:43:06 -07001475struct platform_device msm_bus_8064_sys_fabric = {
1476 .name = "msm_bus_fabric",
1477 .id = MSM_BUS_FAB_SYSTEM,
1478};
1479struct platform_device msm_bus_8064_apps_fabric = {
1480 .name = "msm_bus_fabric",
1481 .id = MSM_BUS_FAB_APPSS,
1482};
1483struct platform_device msm_bus_8064_mm_fabric = {
1484 .name = "msm_bus_fabric",
1485 .id = MSM_BUS_FAB_MMSS,
1486};
1487struct platform_device msm_bus_8064_sys_fpb = {
1488 .name = "msm_bus_fabric",
1489 .id = MSM_BUS_FAB_SYSTEM_FPB,
1490};
1491struct platform_device msm_bus_8064_cpss_fpb = {
1492 .name = "msm_bus_fabric",
1493 .id = MSM_BUS_FAB_CPSS_FPB,
1494};
1495
Yan He06913ce2011-08-26 16:33:46 -07001496static struct msm_sps_platform_data msm_sps_pdata = {
1497 .bamdma_restricted_pipes = 0x06,
1498};
1499
1500struct platform_device msm_device_sps_apq8064 = {
1501 .name = "msm_sps",
1502 .id = -1,
1503 .num_resources = ARRAY_SIZE(resources_sps),
1504 .resource = resources_sps,
1505 .dev.platform_data = &msm_sps_pdata,
1506};
1507
Eric Holmberg023d25c2012-03-01 12:27:55 -07001508static struct resource smd_resource[] = {
1509 {
1510 .name = "a9_m2a_0",
1511 .start = INT_A9_M2A_0,
1512 .flags = IORESOURCE_IRQ,
1513 },
1514 {
1515 .name = "a9_m2a_5",
1516 .start = INT_A9_M2A_5,
1517 .flags = IORESOURCE_IRQ,
1518 },
1519 {
1520 .name = "adsp_a11",
1521 .start = INT_ADSP_A11,
1522 .flags = IORESOURCE_IRQ,
1523 },
1524 {
1525 .name = "adsp_a11_smsm",
1526 .start = INT_ADSP_A11_SMSM,
1527 .flags = IORESOURCE_IRQ,
1528 },
1529 {
1530 .name = "dsps_a11",
1531 .start = INT_DSPS_A11,
1532 .flags = IORESOURCE_IRQ,
1533 },
1534 {
1535 .name = "dsps_a11_smsm",
1536 .start = INT_DSPS_A11_SMSM,
1537 .flags = IORESOURCE_IRQ,
1538 },
1539 {
1540 .name = "wcnss_a11",
1541 .start = INT_WCNSS_A11,
1542 .flags = IORESOURCE_IRQ,
1543 },
1544 {
1545 .name = "wcnss_a11_smsm",
1546 .start = INT_WCNSS_A11_SMSM,
1547 .flags = IORESOURCE_IRQ,
1548 },
1549};
1550
1551static struct smd_subsystem_config smd_config_list[] = {
1552 {
1553 .irq_config_id = SMD_MODEM,
1554 .subsys_name = "gss",
1555 .edge = SMD_APPS_MODEM,
1556
1557 .smd_int.irq_name = "a9_m2a_0",
1558 .smd_int.flags = IRQF_TRIGGER_RISING,
1559 .smd_int.irq_id = -1,
1560 .smd_int.device_name = "smd_dev",
1561 .smd_int.dev_id = 0,
1562 .smd_int.out_bit_pos = 1 << 3,
1563 .smd_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1564 .smd_int.out_offset = 0x8,
1565
1566 .smsm_int.irq_name = "a9_m2a_5",
1567 .smsm_int.flags = IRQF_TRIGGER_RISING,
1568 .smsm_int.irq_id = -1,
1569 .smsm_int.device_name = "smd_smsm",
1570 .smsm_int.dev_id = 0,
1571 .smsm_int.out_bit_pos = 1 << 4,
1572 .smsm_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1573 .smsm_int.out_offset = 0x8,
1574 },
1575 {
1576 .irq_config_id = SMD_Q6,
1577 .subsys_name = "q6",
1578 .edge = SMD_APPS_QDSP,
1579
1580 .smd_int.irq_name = "adsp_a11",
1581 .smd_int.flags = IRQF_TRIGGER_RISING,
1582 .smd_int.irq_id = -1,
1583 .smd_int.device_name = "smd_dev",
1584 .smd_int.dev_id = 0,
1585 .smd_int.out_bit_pos = 1 << 15,
1586 .smd_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1587 .smd_int.out_offset = 0x8,
1588
1589 .smsm_int.irq_name = "adsp_a11_smsm",
1590 .smsm_int.flags = IRQF_TRIGGER_RISING,
1591 .smsm_int.irq_id = -1,
1592 .smsm_int.device_name = "smd_smsm",
1593 .smsm_int.dev_id = 0,
1594 .smsm_int.out_bit_pos = 1 << 14,
1595 .smsm_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1596 .smsm_int.out_offset = 0x8,
1597 },
1598 {
1599 .irq_config_id = SMD_DSPS,
1600 .subsys_name = "dsps",
1601 .edge = SMD_APPS_DSPS,
1602
1603 .smd_int.irq_name = "dsps_a11",
1604 .smd_int.flags = IRQF_TRIGGER_RISING,
1605 .smd_int.irq_id = -1,
1606 .smd_int.device_name = "smd_dev",
1607 .smd_int.dev_id = 0,
1608 .smd_int.out_bit_pos = 1,
1609 .smd_int.out_base = (void __iomem *)MSM_SIC_NON_SECURE_BASE,
1610 .smd_int.out_offset = 0x4080,
1611
1612 .smsm_int.irq_name = "dsps_a11_smsm",
1613 .smsm_int.flags = IRQF_TRIGGER_RISING,
1614 .smsm_int.irq_id = -1,
1615 .smsm_int.device_name = "smd_smsm",
1616 .smsm_int.dev_id = 0,
1617 .smsm_int.out_bit_pos = 1,
1618 .smsm_int.out_base = (void __iomem *)MSM_SIC_NON_SECURE_BASE,
1619 .smsm_int.out_offset = 0x4094,
1620 },
1621 {
1622 .irq_config_id = SMD_WCNSS,
1623 .subsys_name = "wcnss",
1624 .edge = SMD_APPS_WCNSS,
1625
1626 .smd_int.irq_name = "wcnss_a11",
1627 .smd_int.flags = IRQF_TRIGGER_RISING,
1628 .smd_int.irq_id = -1,
1629 .smd_int.device_name = "smd_dev",
1630 .smd_int.dev_id = 0,
1631 .smd_int.out_bit_pos = 1 << 25,
1632 .smd_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1633 .smd_int.out_offset = 0x8,
1634
1635 .smsm_int.irq_name = "wcnss_a11_smsm",
1636 .smsm_int.flags = IRQF_TRIGGER_RISING,
1637 .smsm_int.irq_id = -1,
1638 .smsm_int.device_name = "smd_smsm",
1639 .smsm_int.dev_id = 0,
1640 .smsm_int.out_bit_pos = 1 << 23,
1641 .smsm_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1642 .smsm_int.out_offset = 0x8,
1643 },
1644};
1645
Eric Holmberg2bb6ccd2012-03-13 13:05:14 -06001646static struct smd_subsystem_restart_config smd_ssr_config = {
1647 .disable_smsm_reset_handshake = 1,
1648};
1649
Eric Holmberg023d25c2012-03-01 12:27:55 -07001650static struct smd_platform smd_platform_data = {
1651 .num_ss_configs = ARRAY_SIZE(smd_config_list),
1652 .smd_ss_configs = smd_config_list,
Eric Holmberg2bb6ccd2012-03-13 13:05:14 -06001653 .smd_ssr_config = &smd_ssr_config,
Eric Holmberg023d25c2012-03-01 12:27:55 -07001654};
1655
Jeff Hugo0c0f5e92011-09-28 13:55:45 -06001656struct platform_device msm_device_smd_apq8064 = {
1657 .name = "msm_smd",
1658 .id = -1,
Eric Holmberg023d25c2012-03-01 12:27:55 -07001659 .resource = smd_resource,
1660 .num_resources = ARRAY_SIZE(smd_resource),
1661 .dev = {
1662 .platform_data = &smd_platform_data,
1663 },
Jeff Hugo0c0f5e92011-09-28 13:55:45 -06001664};
1665
Niranjana Vishwanathapura06f89332012-05-03 17:11:13 -06001666static struct resource resources_msm_pcie[] = {
1667 {
1668 .name = "parf",
1669 .start = PCIE20_PARF_PHYS,
1670 .end = PCIE20_PARF_PHYS + PCIE20_PARF_SIZE - 1,
1671 .flags = IORESOURCE_MEM,
1672 },
1673 {
1674 .name = "elbi",
1675 .start = PCIE20_ELBI_PHYS,
1676 .end = PCIE20_ELBI_PHYS + PCIE20_ELBI_SIZE - 1,
1677 .flags = IORESOURCE_MEM,
1678 },
1679 {
1680 .name = "pcie20",
1681 .start = PCIE20_PHYS,
1682 .end = PCIE20_PHYS + PCIE20_SIZE - 1,
1683 .flags = IORESOURCE_MEM,
1684 },
1685 {
1686 .name = "axi_bar",
1687 .start = PCIE_AXI_BAR_PHYS,
1688 .end = PCIE_AXI_BAR_PHYS + PCIE_AXI_BAR_SIZE - 1,
1689 .flags = IORESOURCE_MEM,
1690 },
1691 {
1692 .name = "axi_conf",
1693 .start = PCIE_AXI_CONF_PHYS,
1694 .end = PCIE_AXI_CONF_PHYS + PCIE_AXI_CONF_SIZE - 1,
1695 .flags = IORESOURCE_MEM,
1696 },
1697};
1698
1699struct platform_device msm_device_pcie = {
1700 .name = "msm_pcie",
1701 .id = -1,
1702 .num_resources = ARRAY_SIZE(resources_msm_pcie),
1703 .resource = resources_msm_pcie,
1704};
1705
Ramesh Masavarapuf46be1b2011-11-03 11:13:41 -07001706#ifdef CONFIG_HW_RANDOM_MSM
1707/* PRNG device */
1708#define MSM_PRNG_PHYS 0x1A500000
1709static struct resource rng_resources = {
1710 .flags = IORESOURCE_MEM,
1711 .start = MSM_PRNG_PHYS,
1712 .end = MSM_PRNG_PHYS + SZ_512 - 1,
1713};
1714
1715struct platform_device apq8064_device_rng = {
1716 .name = "msm_rng",
1717 .id = 0,
1718 .num_resources = 1,
1719 .resource = &rng_resources,
1720};
1721#endif
1722
Matt Wagantall292aace2012-01-26 19:12:34 -08001723static struct resource msm_gss_resources[] = {
1724 {
1725 .start = 0x10000000,
1726 .end = 0x10000000 + SZ_256 - 1,
1727 .flags = IORESOURCE_MEM,
1728 },
Matt Wagantall19ac4fd2012-02-03 20:18:23 -08001729 {
1730 .start = 0x10008000,
1731 .end = 0x10008000 + SZ_256 - 1,
1732 .flags = IORESOURCE_MEM,
1733 },
Matt Wagantall292aace2012-01-26 19:12:34 -08001734};
1735
1736struct platform_device msm_gss = {
1737 .name = "pil_gss",
1738 .id = -1,
1739 .num_resources = ARRAY_SIZE(msm_gss_resources),
1740 .resource = msm_gss_resources,
1741};
1742
Matt Wagantall1f65d9d2012-04-25 14:24:20 -07001743static struct fs_driver_data gfx3d_fs_data = {
1744 .clks = (struct fs_clk_data[]){
1745 { .name = "core_clk", .reset_rate = 27000000 },
1746 { .name = "iface_clk" },
1747 { .name = "bus_clk" },
1748 { 0 }
1749 },
1750 .bus_port0 = MSM_BUS_MASTER_GRAPHICS_3D,
1751 .bus_port1 = MSM_BUS_MASTER_GRAPHICS_3D_PORT1,
Matt Wagantall1875d322012-02-22 16:11:33 -08001752};
Matt Wagantall1f65d9d2012-04-25 14:24:20 -07001753
1754static struct fs_driver_data ijpeg_fs_data = {
1755 .clks = (struct fs_clk_data[]){
1756 { .name = "core_clk" },
1757 { .name = "iface_clk" },
1758 { .name = "bus_clk" },
1759 { 0 }
1760 },
1761 .bus_port0 = MSM_BUS_MASTER_JPEG_ENC,
1762};
1763
Nagamalleswararao Ganji6db8c512012-05-24 20:26:23 -07001764static struct fs_driver_data mdp_fs_data = {
1765 .clks = (struct fs_clk_data[]){
1766 { .name = "core_clk" },
1767 { .name = "iface_clk" },
1768 { .name = "bus_clk" },
1769 { .name = "vsync_clk" },
1770 { .name = "lut_clk" },
1771 { .name = "tv_src_clk" },
1772 { .name = "tv_clk" },
1773 { 0 }
1774 },
1775 .bus_port0 = MSM_BUS_MASTER_MDP_PORT0,
1776 .bus_port1 = MSM_BUS_MASTER_MDP_PORT1,
1777};
1778
Matt Wagantall1f65d9d2012-04-25 14:24:20 -07001779static struct fs_driver_data rot_fs_data = {
1780 .clks = (struct fs_clk_data[]){
1781 { .name = "core_clk" },
1782 { .name = "iface_clk" },
1783 { .name = "bus_clk" },
1784 { 0 }
1785 },
1786 .bus_port0 = MSM_BUS_MASTER_ROTATOR,
1787};
1788
1789static struct fs_driver_data ved_fs_data = {
1790 .clks = (struct fs_clk_data[]){
1791 { .name = "core_clk" },
1792 { .name = "iface_clk" },
1793 { .name = "bus_clk" },
1794 { 0 }
1795 },
1796 .bus_port0 = MSM_BUS_MASTER_VIDEO_ENC,
1797 .bus_port1 = MSM_BUS_MASTER_VIDEO_DEC,
1798};
1799
1800static struct fs_driver_data vfe_fs_data = {
1801 .clks = (struct fs_clk_data[]){
1802 { .name = "core_clk" },
1803 { .name = "iface_clk" },
1804 { .name = "bus_clk" },
1805 { 0 }
1806 },
1807 .bus_port0 = MSM_BUS_MASTER_VFE,
1808};
1809
1810static struct fs_driver_data vpe_fs_data = {
1811 .clks = (struct fs_clk_data[]){
1812 { .name = "core_clk" },
1813 { .name = "iface_clk" },
1814 { .name = "bus_clk" },
1815 { 0 }
1816 },
1817 .bus_port0 = MSM_BUS_MASTER_VPE,
1818};
1819
1820static struct fs_driver_data vcap_fs_data = {
1821 .clks = (struct fs_clk_data[]){
1822 { .name = "core_clk" },
1823 { .name = "iface_clk" },
1824 { .name = "bus_clk" },
1825 { 0 },
1826 },
1827 .bus_port0 = MSM_BUS_MASTER_VIDEO_CAP,
1828};
1829
1830struct platform_device *apq8064_footswitch[] __initdata = {
Nagamalleswararao Ganji6db8c512012-05-24 20:26:23 -07001831 FS_8X60(FS_MDP, "vdd", "mdp.0", &mdp_fs_data),
Matt Wagantall316f2fc2012-05-03 20:41:42 -07001832 FS_8X60(FS_ROT, "vdd", "msm_rotator.0", &rot_fs_data),
Matt Wagantalle4454b82012-05-03 20:48:01 -07001833 FS_8X60(FS_IJPEG, "vdd", "msm_gemini.0", &ijpeg_fs_data),
Matt Wagantall5c922112012-05-03 19:25:28 -07001834 FS_8X60(FS_VFE, "fs_vfe", NULL, &vfe_fs_data),
1835 FS_8X60(FS_VPE, "fs_vpe", NULL, &vpe_fs_data),
Matt Wagantalld6fbf232012-05-03 20:09:28 -07001836 FS_8X60(FS_GFX3D, "vdd", "kgsl-3d0.0", &gfx3d_fs_data),
Matt Wagantall5e46aac2012-05-03 20:20:18 -07001837 FS_8X60(FS_VED, "vdd", "msm_vidc.0", &ved_fs_data),
Matt Wagantall3cd5b3d2012-05-03 20:35:20 -07001838 FS_8X60(FS_VCAP, "vdd", "msm_vcap.0", &vcap_fs_data),
Matt Wagantall1f65d9d2012-04-25 14:24:20 -07001839};
1840unsigned apq8064_num_footswitch __initdata = ARRAY_SIZE(apq8064_footswitch);
Matt Wagantall1875d322012-02-22 16:11:33 -08001841
Praveen Chidambaram78499012011-11-01 17:15:17 -06001842struct msm_rpm_platform_data apq8064_rpm_data __initdata = {
1843 .reg_base_addrs = {
1844 [MSM_RPM_PAGE_STATUS] = MSM_RPM_BASE,
1845 [MSM_RPM_PAGE_CTRL] = MSM_RPM_BASE + 0x400,
1846 [MSM_RPM_PAGE_REQ] = MSM_RPM_BASE + 0x600,
1847 [MSM_RPM_PAGE_ACK] = MSM_RPM_BASE + 0xa00,
1848 },
1849 .irq_ack = RPM_APCC_CPU0_GP_HIGH_IRQ,
Stephen Boydf61255e2012-02-24 14:31:09 -08001850 .irq_err = RPM_APCC_CPU0_GP_LOW_IRQ,
Praveen Chidambarame396ce62012-03-30 11:15:57 -06001851 .irq_wakeup = RPM_APCC_CPU0_WAKE_UP_IRQ,
Praveen Chidambaram78499012011-11-01 17:15:17 -06001852 .ipc_rpm_reg = MSM_APCS_GCC_BASE + 0x008,
1853 .ipc_rpm_val = 4,
1854 .target_id = {
1855 MSM_RPM_MAP(8064, NOTIFICATION_CONFIGURED_0, NOTIFICATION, 4),
1856 MSM_RPM_MAP(8064, NOTIFICATION_REGISTERED_0, NOTIFICATION, 4),
1857 MSM_RPM_MAP(8064, INVALIDATE_0, INVALIDATE, 8),
1858 MSM_RPM_MAP(8064, TRIGGER_TIMED_TO, TRIGGER_TIMED, 1),
1859 MSM_RPM_MAP(8064, TRIGGER_TIMED_SCLK_COUNT, TRIGGER_TIMED, 1),
1860 MSM_RPM_MAP(8064, RPM_CTL, RPM_CTL, 1),
1861 MSM_RPM_MAP(8064, CXO_CLK, CXO_CLK, 1),
1862 MSM_RPM_MAP(8064, PXO_CLK, PXO_CLK, 1),
1863 MSM_RPM_MAP(8064, APPS_FABRIC_CLK, APPS_FABRIC_CLK, 1),
1864 MSM_RPM_MAP(8064, SYSTEM_FABRIC_CLK, SYSTEM_FABRIC_CLK, 1),
1865 MSM_RPM_MAP(8064, MM_FABRIC_CLK, MM_FABRIC_CLK, 1),
1866 MSM_RPM_MAP(8064, DAYTONA_FABRIC_CLK, DAYTONA_FABRIC_CLK, 1),
1867 MSM_RPM_MAP(8064, SFPB_CLK, SFPB_CLK, 1),
1868 MSM_RPM_MAP(8064, CFPB_CLK, CFPB_CLK, 1),
1869 MSM_RPM_MAP(8064, MMFPB_CLK, MMFPB_CLK, 1),
1870 MSM_RPM_MAP(8064, EBI1_CLK, EBI1_CLK, 1),
1871 MSM_RPM_MAP(8064, APPS_FABRIC_CFG_HALT_0,
1872 APPS_FABRIC_CFG_HALT, 2),
1873 MSM_RPM_MAP(8064, APPS_FABRIC_CFG_CLKMOD_0,
1874 APPS_FABRIC_CFG_CLKMOD, 3),
1875 MSM_RPM_MAP(8064, APPS_FABRIC_CFG_IOCTL,
1876 APPS_FABRIC_CFG_IOCTL, 1),
1877 MSM_RPM_MAP(8064, APPS_FABRIC_ARB_0, APPS_FABRIC_ARB, 12),
1878 MSM_RPM_MAP(8064, SYS_FABRIC_CFG_HALT_0,
1879 SYS_FABRIC_CFG_HALT, 2),
1880 MSM_RPM_MAP(8064, SYS_FABRIC_CFG_CLKMOD_0,
1881 SYS_FABRIC_CFG_CLKMOD, 3),
1882 MSM_RPM_MAP(8064, SYS_FABRIC_CFG_IOCTL,
1883 SYS_FABRIC_CFG_IOCTL, 1),
1884 MSM_RPM_MAP(8064, SYSTEM_FABRIC_ARB_0, SYSTEM_FABRIC_ARB, 30),
1885 MSM_RPM_MAP(8064, MMSS_FABRIC_CFG_HALT_0,
1886 MMSS_FABRIC_CFG_HALT, 2),
1887 MSM_RPM_MAP(8064, MMSS_FABRIC_CFG_CLKMOD_0,
1888 MMSS_FABRIC_CFG_CLKMOD, 3),
1889 MSM_RPM_MAP(8064, MMSS_FABRIC_CFG_IOCTL,
1890 MMSS_FABRIC_CFG_IOCTL, 1),
1891 MSM_RPM_MAP(8064, MM_FABRIC_ARB_0, MM_FABRIC_ARB, 21),
1892 MSM_RPM_MAP(8064, PM8921_S1_0, PM8921_S1, 2),
1893 MSM_RPM_MAP(8064, PM8921_S2_0, PM8921_S2, 2),
1894 MSM_RPM_MAP(8064, PM8921_S3_0, PM8921_S3, 2),
1895 MSM_RPM_MAP(8064, PM8921_S4_0, PM8921_S4, 2),
1896 MSM_RPM_MAP(8064, PM8921_S5_0, PM8921_S5, 2),
1897 MSM_RPM_MAP(8064, PM8921_S6_0, PM8921_S6, 2),
1898 MSM_RPM_MAP(8064, PM8921_S7_0, PM8921_S7, 2),
1899 MSM_RPM_MAP(8064, PM8921_S8_0, PM8921_S8, 2),
1900 MSM_RPM_MAP(8064, PM8921_L1_0, PM8921_L1, 2),
1901 MSM_RPM_MAP(8064, PM8921_L2_0, PM8921_L2, 2),
1902 MSM_RPM_MAP(8064, PM8921_L3_0, PM8921_L3, 2),
1903 MSM_RPM_MAP(8064, PM8921_L4_0, PM8921_L4, 2),
1904 MSM_RPM_MAP(8064, PM8921_L5_0, PM8921_L5, 2),
1905 MSM_RPM_MAP(8064, PM8921_L6_0, PM8921_L6, 2),
1906 MSM_RPM_MAP(8064, PM8921_L7_0, PM8921_L7, 2),
1907 MSM_RPM_MAP(8064, PM8921_L8_0, PM8921_L8, 2),
1908 MSM_RPM_MAP(8064, PM8921_L9_0, PM8921_L9, 2),
1909 MSM_RPM_MAP(8064, PM8921_L10_0, PM8921_L10, 2),
1910 MSM_RPM_MAP(8064, PM8921_L11_0, PM8921_L11, 2),
1911 MSM_RPM_MAP(8064, PM8921_L12_0, PM8921_L12, 2),
1912 MSM_RPM_MAP(8064, PM8921_L13_0, PM8921_L13, 2),
1913 MSM_RPM_MAP(8064, PM8921_L14_0, PM8921_L14, 2),
1914 MSM_RPM_MAP(8064, PM8921_L15_0, PM8921_L15, 2),
1915 MSM_RPM_MAP(8064, PM8921_L16_0, PM8921_L16, 2),
1916 MSM_RPM_MAP(8064, PM8921_L17_0, PM8921_L17, 2),
1917 MSM_RPM_MAP(8064, PM8921_L18_0, PM8921_L18, 2),
1918 MSM_RPM_MAP(8064, PM8921_L19_0, PM8921_L19, 2),
1919 MSM_RPM_MAP(8064, PM8921_L20_0, PM8921_L20, 2),
1920 MSM_RPM_MAP(8064, PM8921_L21_0, PM8921_L21, 2),
1921 MSM_RPM_MAP(8064, PM8921_L22_0, PM8921_L22, 2),
1922 MSM_RPM_MAP(8064, PM8921_L23_0, PM8921_L23, 2),
1923 MSM_RPM_MAP(8064, PM8921_L24_0, PM8921_L24, 2),
1924 MSM_RPM_MAP(8064, PM8921_L25_0, PM8921_L25, 2),
1925 MSM_RPM_MAP(8064, PM8921_L26_0, PM8921_L26, 2),
1926 MSM_RPM_MAP(8064, PM8921_L27_0, PM8921_L27, 2),
1927 MSM_RPM_MAP(8064, PM8921_L28_0, PM8921_L28, 2),
1928 MSM_RPM_MAP(8064, PM8921_L29_0, PM8921_L29, 2),
1929 MSM_RPM_MAP(8064, PM8921_CLK1_0, PM8921_CLK1, 2),
1930 MSM_RPM_MAP(8064, PM8921_CLK2_0, PM8921_CLK2, 2),
1931 MSM_RPM_MAP(8064, PM8921_LVS1, PM8921_LVS1, 1),
1932 MSM_RPM_MAP(8064, PM8921_LVS2, PM8921_LVS2, 1),
1933 MSM_RPM_MAP(8064, PM8921_LVS3, PM8921_LVS3, 1),
1934 MSM_RPM_MAP(8064, PM8921_LVS4, PM8921_LVS4, 1),
1935 MSM_RPM_MAP(8064, PM8921_LVS5, PM8921_LVS5, 1),
1936 MSM_RPM_MAP(8064, PM8921_LVS6, PM8921_LVS6, 1),
1937 MSM_RPM_MAP(8064, PM8921_LVS7, PM8921_LVS7, 1),
1938 MSM_RPM_MAP(8064, PM8821_S1_0, PM8821_S1, 2),
1939 MSM_RPM_MAP(8064, PM8821_S2_0, PM8821_S2, 2),
1940 MSM_RPM_MAP(8064, PM8821_L1_0, PM8821_L1, 2),
1941 MSM_RPM_MAP(8064, NCP_0, NCP, 2),
1942 MSM_RPM_MAP(8064, CXO_BUFFERS, CXO_BUFFERS, 1),
1943 MSM_RPM_MAP(8064, USB_OTG_SWITCH, USB_OTG_SWITCH, 1),
1944 MSM_RPM_MAP(8064, HDMI_SWITCH, HDMI_SWITCH, 1),
1945 MSM_RPM_MAP(8064, DDR_DMM_0, DDR_DMM, 2),
1946 MSM_RPM_MAP(8064, QDSS_CLK, QDSS_CLK, 1),
Joel Kingef390842012-05-23 16:42:48 -07001947 MSM_RPM_MAP(8064, VDDMIN_GPIO, VDDMIN_GPIO, 1),
Praveen Chidambaram78499012011-11-01 17:15:17 -06001948 },
1949 .target_status = {
1950 MSM_RPM_STATUS_ID_MAP(8064, VERSION_MAJOR),
1951 MSM_RPM_STATUS_ID_MAP(8064, VERSION_MINOR),
1952 MSM_RPM_STATUS_ID_MAP(8064, VERSION_BUILD),
1953 MSM_RPM_STATUS_ID_MAP(8064, SUPPORTED_RESOURCES_0),
1954 MSM_RPM_STATUS_ID_MAP(8064, SUPPORTED_RESOURCES_1),
1955 MSM_RPM_STATUS_ID_MAP(8064, SUPPORTED_RESOURCES_2),
1956 MSM_RPM_STATUS_ID_MAP(8064, RESERVED_SUPPORTED_RESOURCES_0),
1957 MSM_RPM_STATUS_ID_MAP(8064, SEQUENCE),
1958 MSM_RPM_STATUS_ID_MAP(8064, RPM_CTL),
1959 MSM_RPM_STATUS_ID_MAP(8064, CXO_CLK),
1960 MSM_RPM_STATUS_ID_MAP(8064, PXO_CLK),
1961 MSM_RPM_STATUS_ID_MAP(8064, APPS_FABRIC_CLK),
1962 MSM_RPM_STATUS_ID_MAP(8064, SYSTEM_FABRIC_CLK),
1963 MSM_RPM_STATUS_ID_MAP(8064, MM_FABRIC_CLK),
1964 MSM_RPM_STATUS_ID_MAP(8064, DAYTONA_FABRIC_CLK),
1965 MSM_RPM_STATUS_ID_MAP(8064, SFPB_CLK),
1966 MSM_RPM_STATUS_ID_MAP(8064, CFPB_CLK),
1967 MSM_RPM_STATUS_ID_MAP(8064, MMFPB_CLK),
1968 MSM_RPM_STATUS_ID_MAP(8064, EBI1_CLK),
1969 MSM_RPM_STATUS_ID_MAP(8064, APPS_FABRIC_CFG_HALT),
1970 MSM_RPM_STATUS_ID_MAP(8064, APPS_FABRIC_CFG_CLKMOD),
1971 MSM_RPM_STATUS_ID_MAP(8064, APPS_FABRIC_CFG_IOCTL),
1972 MSM_RPM_STATUS_ID_MAP(8064, APPS_FABRIC_ARB),
1973 MSM_RPM_STATUS_ID_MAP(8064, SYS_FABRIC_CFG_HALT),
1974 MSM_RPM_STATUS_ID_MAP(8064, SYS_FABRIC_CFG_CLKMOD),
1975 MSM_RPM_STATUS_ID_MAP(8064, SYS_FABRIC_CFG_IOCTL),
1976 MSM_RPM_STATUS_ID_MAP(8064, SYSTEM_FABRIC_ARB),
1977 MSM_RPM_STATUS_ID_MAP(8064, MMSS_FABRIC_CFG_HALT),
1978 MSM_RPM_STATUS_ID_MAP(8064, MMSS_FABRIC_CFG_CLKMOD),
1979 MSM_RPM_STATUS_ID_MAP(8064, MMSS_FABRIC_CFG_IOCTL),
1980 MSM_RPM_STATUS_ID_MAP(8064, MM_FABRIC_ARB),
1981 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S1_0),
1982 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S1_1),
1983 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S2_0),
1984 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S2_1),
1985 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S3_0),
1986 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S3_1),
1987 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S4_0),
1988 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S4_1),
1989 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S5_0),
1990 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S5_1),
1991 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S6_0),
1992 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S6_1),
1993 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S7_0),
1994 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S7_1),
1995 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S8_0),
1996 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S8_1),
1997 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L1_0),
1998 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L1_1),
1999 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L2_0),
2000 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L2_1),
2001 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L3_0),
2002 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L3_1),
2003 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L4_0),
2004 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L4_1),
2005 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L5_0),
2006 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L5_1),
2007 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L6_0),
2008 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L6_1),
2009 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L7_0),
2010 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L7_1),
2011 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L8_0),
2012 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L8_1),
2013 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L9_0),
2014 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L9_1),
2015 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L10_0),
2016 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L10_1),
2017 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L11_0),
2018 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L11_1),
2019 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L12_0),
2020 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L12_1),
2021 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L13_0),
2022 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L13_1),
2023 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L14_0),
2024 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L14_1),
2025 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L15_0),
2026 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L15_1),
2027 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L16_0),
2028 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L16_1),
2029 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L17_0),
2030 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L17_1),
2031 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L18_0),
2032 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L18_1),
2033 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L19_0),
2034 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L19_1),
2035 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L20_0),
2036 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L20_1),
2037 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L21_0),
2038 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L21_1),
2039 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L22_0),
2040 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L22_1),
2041 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L23_0),
2042 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L23_1),
2043 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L24_0),
2044 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L24_1),
2045 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L25_0),
2046 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L25_1),
2047 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L26_0),
2048 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L26_1),
2049 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L27_0),
2050 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L27_1),
2051 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L28_0),
2052 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L28_1),
2053 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L29_0),
2054 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L29_1),
2055 MSM_RPM_STATUS_ID_MAP(8064, PM8921_CLK1_0),
2056 MSM_RPM_STATUS_ID_MAP(8064, PM8921_CLK1_1),
2057 MSM_RPM_STATUS_ID_MAP(8064, PM8921_CLK2_0),
2058 MSM_RPM_STATUS_ID_MAP(8064, PM8921_CLK2_1),
2059 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS1),
2060 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS2),
2061 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS3),
2062 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS4),
2063 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS5),
2064 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS6),
2065 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS7),
2066 MSM_RPM_STATUS_ID_MAP(8064, NCP_0),
2067 MSM_RPM_STATUS_ID_MAP(8064, NCP_1),
2068 MSM_RPM_STATUS_ID_MAP(8064, CXO_BUFFERS),
2069 MSM_RPM_STATUS_ID_MAP(8064, USB_OTG_SWITCH),
2070 MSM_RPM_STATUS_ID_MAP(8064, HDMI_SWITCH),
2071 MSM_RPM_STATUS_ID_MAP(8064, DDR_DMM_0),
2072 MSM_RPM_STATUS_ID_MAP(8064, DDR_DMM_1),
2073 MSM_RPM_STATUS_ID_MAP(8064, EBI1_CH0_RANGE),
2074 MSM_RPM_STATUS_ID_MAP(8064, EBI1_CH1_RANGE),
2075 MSM_RPM_STATUS_ID_MAP(8064, PM8821_S1_0),
2076 MSM_RPM_STATUS_ID_MAP(8064, PM8821_S1_1),
2077 MSM_RPM_STATUS_ID_MAP(8064, PM8821_S2_0),
2078 MSM_RPM_STATUS_ID_MAP(8064, PM8821_S2_1),
2079 MSM_RPM_STATUS_ID_MAP(8064, PM8821_L1_0),
2080 MSM_RPM_STATUS_ID_MAP(8064, PM8821_L1_1),
Joel Kingef390842012-05-23 16:42:48 -07002081 MSM_RPM_STATUS_ID_MAP(8064, VDDMIN_GPIO),
Praveen Chidambaram78499012011-11-01 17:15:17 -06002082 },
2083 .target_ctrl_id = {
2084 MSM_RPM_CTRL_MAP(8064, VERSION_MAJOR),
2085 MSM_RPM_CTRL_MAP(8064, VERSION_MINOR),
2086 MSM_RPM_CTRL_MAP(8064, VERSION_BUILD),
2087 MSM_RPM_CTRL_MAP(8064, REQ_CTX_0),
2088 MSM_RPM_CTRL_MAP(8064, REQ_SEL_0),
2089 MSM_RPM_CTRL_MAP(8064, ACK_CTX_0),
2090 MSM_RPM_CTRL_MAP(8064, ACK_SEL_0),
2091 },
2092 .sel_invalidate = MSM_RPM_8064_SEL_INVALIDATE,
2093 .sel_notification = MSM_RPM_8064_SEL_NOTIFICATION,
2094 .sel_last = MSM_RPM_8064_SEL_LAST,
2095 .ver = {3, 0, 0},
2096};
2097
2098struct platform_device apq8064_rpm_device = {
2099 .name = "msm_rpm",
2100 .id = -1,
2101};
2102
2103static struct msm_rpmstats_platform_data msm_rpm_stat_pdata = {
2104 .phys_addr_base = 0x0010D204,
2105 .phys_size = SZ_8K,
2106};
2107
2108struct platform_device apq8064_rpm_stat_device = {
2109 .name = "msm_rpm_stat",
2110 .id = -1,
2111 .dev = {
2112 .platform_data = &msm_rpm_stat_pdata,
2113 },
2114};
2115
2116static struct msm_rpm_log_platform_data msm_rpm_log_pdata = {
2117 .phys_addr_base = 0x0010C000,
2118 .reg_offsets = {
2119 [MSM_RPM_LOG_PAGE_INDICES] = 0x00000080,
2120 [MSM_RPM_LOG_PAGE_BUFFER] = 0x000000A0,
2121 },
2122 .phys_size = SZ_8K,
2123 .log_len = 4096, /* log's buffer length in bytes */
2124 .log_len_mask = (4096 >> 2) - 1, /* length mask in units of u32 */
2125};
2126
2127struct platform_device apq8064_rpm_log_device = {
2128 .name = "msm_rpm_log",
2129 .id = -1,
2130 .dev = {
2131 .platform_data = &msm_rpm_log_pdata,
2132 },
2133};
2134
Jin Hongd3024e62012-02-09 16:13:32 -08002135/* Sensors DSPS platform data */
2136
karthik karuppasamy1a1c6b02012-05-29 15:16:32 -07002137#define PPSS_DSPS_TCM_CODE_BASE 0x12000000
2138#define PPSS_DSPS_TCM_CODE_SIZE 0x28000
2139#define PPSS_DSPS_TCM_BUF_BASE 0x12040000
2140#define PPSS_DSPS_TCM_BUF_SIZE 0x4000
2141#define PPSS_DSPS_PIPE_BASE 0x12800000
2142#define PPSS_DSPS_PIPE_SIZE 0x4000
2143#define PPSS_DSPS_DDR_BASE 0x8fe00000
2144#define PPSS_DSPS_DDR_SIZE 0x100000
2145#define PPSS_SMEM_BASE 0x80000000
2146#define PPSS_SMEM_SIZE 0x200000
Jin Hongd3024e62012-02-09 16:13:32 -08002147#define PPSS_REG_PHYS_BASE 0x12080000
2148
2149static struct dsps_clk_info dsps_clks[] = {};
2150static struct dsps_regulator_info dsps_regs[] = {};
2151
2152/*
2153 * Note: GPIOs field is intialized in run-time at the function
2154 * apq8064_init_dsps().
2155 */
2156
2157struct msm_dsps_platform_data msm_dsps_pdata_8064 = {
2158 .clks = dsps_clks,
2159 .clks_num = ARRAY_SIZE(dsps_clks),
2160 .gpios = NULL,
2161 .gpios_num = 0,
2162 .regs = dsps_regs,
2163 .regs_num = ARRAY_SIZE(dsps_regs),
2164 .dsps_pwr_ctl_en = 1,
karthik karuppasamy1a1c6b02012-05-29 15:16:32 -07002165 .tcm_code_start = PPSS_DSPS_TCM_CODE_BASE,
2166 .tcm_code_size = PPSS_DSPS_TCM_CODE_SIZE,
2167 .tcm_buf_start = PPSS_DSPS_TCM_BUF_BASE,
2168 .tcm_buf_size = PPSS_DSPS_TCM_BUF_SIZE,
2169 .pipe_start = PPSS_DSPS_PIPE_BASE,
2170 .pipe_size = PPSS_DSPS_PIPE_SIZE,
2171 .ddr_start = PPSS_DSPS_DDR_BASE,
2172 .ddr_size = PPSS_DSPS_DDR_SIZE,
2173 .smem_start = PPSS_SMEM_BASE,
2174 .smem_size = PPSS_SMEM_SIZE,
Jin Hongd3024e62012-02-09 16:13:32 -08002175 .signature = DSPS_SIGNATURE,
2176};
2177
2178static struct resource msm_dsps_resources[] = {
2179 {
2180 .start = PPSS_REG_PHYS_BASE,
2181 .end = PPSS_REG_PHYS_BASE + SZ_8K - 1,
2182 .name = "ppss_reg",
2183 .flags = IORESOURCE_MEM,
2184 },
2185
2186 {
2187 .start = PPSS_WDOG_TIMER_IRQ,
2188 .end = PPSS_WDOG_TIMER_IRQ,
2189 .name = "ppss_wdog",
2190 .flags = IORESOURCE_IRQ,
2191 },
2192};
2193
2194struct platform_device msm_dsps_device_8064 = {
2195 .name = "msm_dsps",
2196 .id = 0,
2197 .num_resources = ARRAY_SIZE(msm_dsps_resources),
2198 .resource = msm_dsps_resources,
2199 .dev.platform_data = &msm_dsps_pdata_8064,
2200};
2201
Praveen Chidambaram78499012011-11-01 17:15:17 -06002202#ifdef CONFIG_MSM_MPM
2203static uint16_t msm_mpm_irqs_m2a[MSM_MPM_NR_MPM_IRQS] __initdata = {
2204 [1] = MSM_GPIO_TO_INT(26),
2205 [2] = MSM_GPIO_TO_INT(88),
2206 [4] = MSM_GPIO_TO_INT(73),
2207 [5] = MSM_GPIO_TO_INT(74),
2208 [6] = MSM_GPIO_TO_INT(75),
2209 [7] = MSM_GPIO_TO_INT(76),
2210 [8] = MSM_GPIO_TO_INT(77),
2211 [9] = MSM_GPIO_TO_INT(36),
2212 [10] = MSM_GPIO_TO_INT(84),
2213 [11] = MSM_GPIO_TO_INT(7),
2214 [12] = MSM_GPIO_TO_INT(11),
2215 [13] = MSM_GPIO_TO_INT(52),
2216 [14] = MSM_GPIO_TO_INT(15),
2217 [15] = MSM_GPIO_TO_INT(83),
2218 [16] = USB3_HS_IRQ,
2219 [19] = MSM_GPIO_TO_INT(61),
2220 [20] = MSM_GPIO_TO_INT(58),
2221 [23] = MSM_GPIO_TO_INT(65),
2222 [24] = MSM_GPIO_TO_INT(63),
2223 [25] = USB1_HS_IRQ,
2224 [27] = HDMI_IRQ,
2225 [29] = MSM_GPIO_TO_INT(22),
2226 [30] = MSM_GPIO_TO_INT(72),
2227 [31] = USB4_HS_IRQ,
2228 [33] = MSM_GPIO_TO_INT(44),
2229 [34] = MSM_GPIO_TO_INT(39),
2230 [35] = MSM_GPIO_TO_INT(19),
2231 [36] = MSM_GPIO_TO_INT(23),
2232 [37] = MSM_GPIO_TO_INT(41),
2233 [38] = MSM_GPIO_TO_INT(30),
2234 [41] = MSM_GPIO_TO_INT(42),
2235 [42] = MSM_GPIO_TO_INT(56),
2236 [43] = MSM_GPIO_TO_INT(55),
2237 [44] = MSM_GPIO_TO_INT(50),
2238 [45] = MSM_GPIO_TO_INT(49),
2239 [46] = MSM_GPIO_TO_INT(47),
2240 [47] = MSM_GPIO_TO_INT(45),
2241 [48] = MSM_GPIO_TO_INT(38),
2242 [49] = MSM_GPIO_TO_INT(34),
2243 [50] = MSM_GPIO_TO_INT(32),
2244 [51] = MSM_GPIO_TO_INT(29),
2245 [52] = MSM_GPIO_TO_INT(18),
2246 [53] = MSM_GPIO_TO_INT(10),
2247 [54] = MSM_GPIO_TO_INT(81),
2248 [55] = MSM_GPIO_TO_INT(6),
Jaeseong GIMe630a592012-07-09 18:28:39 -07002249 [56] = MSM_GPIO_TO_INT(82),
Praveen Chidambaram78499012011-11-01 17:15:17 -06002250};
2251
2252static uint16_t msm_mpm_bypassed_apps_irqs[] __initdata = {
2253 TLMM_MSM_SUMMARY_IRQ,
2254 RPM_APCC_CPU0_GP_HIGH_IRQ,
2255 RPM_APCC_CPU0_GP_MEDIUM_IRQ,
2256 RPM_APCC_CPU0_GP_LOW_IRQ,
2257 RPM_APCC_CPU0_WAKE_UP_IRQ,
2258 RPM_APCC_CPU1_GP_HIGH_IRQ,
2259 RPM_APCC_CPU1_GP_MEDIUM_IRQ,
2260 RPM_APCC_CPU1_GP_LOW_IRQ,
2261 RPM_APCC_CPU1_WAKE_UP_IRQ,
2262 MSS_TO_APPS_IRQ_0,
2263 MSS_TO_APPS_IRQ_1,
2264 MSS_TO_APPS_IRQ_2,
2265 MSS_TO_APPS_IRQ_3,
2266 MSS_TO_APPS_IRQ_4,
2267 MSS_TO_APPS_IRQ_5,
2268 MSS_TO_APPS_IRQ_6,
2269 MSS_TO_APPS_IRQ_7,
2270 MSS_TO_APPS_IRQ_8,
2271 MSS_TO_APPS_IRQ_9,
2272 LPASS_SCSS_GP_LOW_IRQ,
2273 LPASS_SCSS_GP_MEDIUM_IRQ,
2274 LPASS_SCSS_GP_HIGH_IRQ,
2275 SPS_MTI_30,
2276 SPS_MTI_31,
2277 RIVA_APSS_SPARE_IRQ,
2278 RIVA_APPS_WLAN_SMSM_IRQ,
2279 RIVA_APPS_WLAN_RX_DATA_AVAIL_IRQ,
2280 RIVA_APPS_WLAN_DATA_XFER_DONE_IRQ,
2281};
2282
2283struct msm_mpm_device_data apq8064_mpm_dev_data __initdata = {
2284 .irqs_m2a = msm_mpm_irqs_m2a,
2285 .irqs_m2a_size = ARRAY_SIZE(msm_mpm_irqs_m2a),
2286 .bypassed_apps_irqs = msm_mpm_bypassed_apps_irqs,
2287 .bypassed_apps_irqs_size = ARRAY_SIZE(msm_mpm_bypassed_apps_irqs),
2288 .mpm_request_reg_base = MSM_RPM_BASE + 0x9d8,
2289 .mpm_status_reg_base = MSM_RPM_BASE + 0xdf8,
2290 .mpm_apps_ipc_reg = MSM_APCS_GCC_BASE + 0x008,
2291 .mpm_apps_ipc_val = BIT(1),
2292 .mpm_ipc_irq = RPM_APCC_CPU0_GP_MEDIUM_IRQ,
2293
2294};
2295#endif
Joel Kingdacbc822012-01-25 13:30:57 -08002296
Joel King14fe7fa2012-05-27 14:26:11 -07002297/* AP2MDM_SOFT_RESET is implemented by the PON_RESET_N gpio */
Joel Kingdacbc822012-01-25 13:30:57 -08002298#define MDM2AP_ERRFATAL 19
2299#define AP2MDM_ERRFATAL 18
2300#define MDM2AP_STATUS 49
2301#define AP2MDM_STATUS 48
Joel King14fe7fa2012-05-27 14:26:11 -07002302#define AP2MDM_SOFT_RESET 27
Vamsi Krishna9e307cd2012-04-11 13:15:36 -07002303#define AP2MDM_WAKEUP 35
Vamsi Krishnac6dcd5e2012-05-09 15:38:01 -07002304#define MDM2AP_PBLRDY 46
Joel Kingdacbc822012-01-25 13:30:57 -08002305
2306static struct resource mdm_resources[] = {
2307 {
2308 .start = MDM2AP_ERRFATAL,
2309 .end = MDM2AP_ERRFATAL,
2310 .name = "MDM2AP_ERRFATAL",
2311 .flags = IORESOURCE_IO,
2312 },
2313 {
2314 .start = AP2MDM_ERRFATAL,
2315 .end = AP2MDM_ERRFATAL,
2316 .name = "AP2MDM_ERRFATAL",
2317 .flags = IORESOURCE_IO,
2318 },
2319 {
2320 .start = MDM2AP_STATUS,
2321 .end = MDM2AP_STATUS,
2322 .name = "MDM2AP_STATUS",
2323 .flags = IORESOURCE_IO,
2324 },
2325 {
2326 .start = AP2MDM_STATUS,
2327 .end = AP2MDM_STATUS,
2328 .name = "AP2MDM_STATUS",
2329 .flags = IORESOURCE_IO,
2330 },
2331 {
Joel King14fe7fa2012-05-27 14:26:11 -07002332 .start = AP2MDM_SOFT_RESET,
2333 .end = AP2MDM_SOFT_RESET,
2334 .name = "AP2MDM_SOFT_RESET",
Joel Kingdacbc822012-01-25 13:30:57 -08002335 .flags = IORESOURCE_IO,
2336 },
Vamsi Krishna9e307cd2012-04-11 13:15:36 -07002337 {
2338 .start = AP2MDM_WAKEUP,
2339 .end = AP2MDM_WAKEUP,
2340 .name = "AP2MDM_WAKEUP",
2341 .flags = IORESOURCE_IO,
2342 },
Vamsi Krishnac6dcd5e2012-05-09 15:38:01 -07002343 {
2344 .start = MDM2AP_PBLRDY,
2345 .end = MDM2AP_PBLRDY,
2346 .name = "MDM2AP_PBLRDY",
2347 .flags = IORESOURCE_IO,
2348 },
Joel Kingdacbc822012-01-25 13:30:57 -08002349};
2350
2351struct platform_device mdm_8064_device = {
2352 .name = "mdm2_modem",
2353 .id = -1,
2354 .num_resources = ARRAY_SIZE(mdm_resources),
2355 .resource = mdm_resources,
2356};
Praveen Chidambaram8ea3dcd2011-12-07 14:46:31 -07002357
2358static int apq8064_LPM_latency = 1000; /* >100 usec for WFI */
2359
2360struct platform_device apq8064_cpu_idle_device = {
2361 .name = "msm_cpu_idle",
2362 .id = -1,
2363 .dev = {
2364 .platform_data = &apq8064_LPM_latency,
2365 },
2366};
Praveen Chidambaram5c8adf22012-02-23 18:44:37 -07002367
2368static struct msm_dcvs_freq_entry apq8064_freq[] = {
2369 { 384000, 166981, 345600},
2370 { 702000, 213049, 632502},
2371 {1026000, 285712, 925613},
2372 {1242000, 383945, 1176550},
2373 {1458000, 419729, 1465478},
2374 {1512000, 434116, 1546674},
2375
2376};
2377
2378static struct msm_dcvs_core_info apq8064_core_info = {
2379 .freq_tbl = &apq8064_freq[0],
2380 .core_param = {
2381 .max_time_us = 100000,
2382 .num_freq = ARRAY_SIZE(apq8064_freq),
2383 },
2384 .algo_param = {
2385 .slack_time_us = 58000,
2386 .scale_slack_time = 0,
2387 .scale_slack_time_pct = 0,
2388 .disable_pc_threshold = 1458000,
2389 .em_window_size = 100000,
2390 .em_max_util_pct = 97,
2391 .ss_window_size = 1000000,
2392 .ss_util_pct = 95,
2393 .ss_iobusy_conv = 100,
2394 },
2395};
2396
2397struct platform_device apq8064_msm_gov_device = {
2398 .name = "msm_dcvs_gov",
2399 .id = -1,
2400 .dev = {
2401 .platform_data = &apq8064_core_info,
2402 },
2403};
Stepan Moskovchenko28662c52012-03-01 12:48:45 -08002404
Terence Hampson2e1705f2012-04-11 19:55:29 -04002405#ifdef CONFIG_MSM_VCAP
2406#define VCAP_HW_BASE 0x05900000
2407
2408static struct msm_bus_vectors vcap_init_vectors[] = {
2409 {
2410 .src = MSM_BUS_MASTER_VIDEO_CAP,
2411 .dst = MSM_BUS_SLAVE_EBI_CH0,
2412 .ab = 0,
2413 .ib = 0,
2414 },
2415};
2416
Terence Hampson2e1705f2012-04-11 19:55:29 -04002417static struct msm_bus_vectors vcap_480_vectors[] = {
2418 {
2419 .src = MSM_BUS_MASTER_VIDEO_CAP,
2420 .dst = MSM_BUS_SLAVE_EBI_CH0,
Terence Hampson779dc762012-06-07 15:59:27 -04002421 .ab = 480 * 720 * 3 * 60,
2422 .ib = 480 * 720 * 3 * 60 * 1.5,
2423 },
2424};
2425
2426static struct msm_bus_vectors vcap_576_vectors[] = {
2427 {
2428 .src = MSM_BUS_MASTER_VIDEO_CAP,
2429 .dst = MSM_BUS_SLAVE_EBI_CH0,
2430 .ab = 576 * 720 * 3 * 60,
2431 .ib = 576 * 720 * 3 * 60 * 1.5,
Terence Hampson2e1705f2012-04-11 19:55:29 -04002432 },
2433};
2434
2435static struct msm_bus_vectors vcap_720_vectors[] = {
2436 {
2437 .src = MSM_BUS_MASTER_VIDEO_CAP,
2438 .dst = MSM_BUS_SLAVE_EBI_CH0,
Terence Hampson35a1ff02012-04-25 17:07:18 -04002439 .ab = 1280 * 720 * 3 * 60,
2440 .ib = 1280 * 720 * 3 * 60 * 1.5,
Terence Hampson2e1705f2012-04-11 19:55:29 -04002441 },
2442};
2443
2444static struct msm_bus_vectors vcap_1080_vectors[] = {
2445 {
2446 .src = MSM_BUS_MASTER_VIDEO_CAP,
2447 .dst = MSM_BUS_SLAVE_EBI_CH0,
Terence Hampson35a1ff02012-04-25 17:07:18 -04002448 .ab = 1920 * 1080 * 3 * 60,
2449 .ib = 1920 * 1080 * 3 * 60 * 1.5,
Terence Hampson2e1705f2012-04-11 19:55:29 -04002450 },
2451};
2452
2453static struct msm_bus_paths vcap_bus_usecases[] = {
2454 {
2455 ARRAY_SIZE(vcap_init_vectors),
2456 vcap_init_vectors,
2457 },
2458 {
2459 ARRAY_SIZE(vcap_480_vectors),
2460 vcap_480_vectors,
2461 },
2462 {
Terence Hampson779dc762012-06-07 15:59:27 -04002463 ARRAY_SIZE(vcap_576_vectors),
2464 vcap_576_vectors,
2465 },
2466 {
Terence Hampson2e1705f2012-04-11 19:55:29 -04002467 ARRAY_SIZE(vcap_720_vectors),
2468 vcap_720_vectors,
2469 },
2470 {
2471 ARRAY_SIZE(vcap_1080_vectors),
2472 vcap_1080_vectors,
2473 },
2474};
2475
2476static struct msm_bus_scale_pdata vcap_axi_client_pdata = {
2477 vcap_bus_usecases,
2478 ARRAY_SIZE(vcap_bus_usecases),
2479};
2480
2481static struct resource msm_vcap_resources[] = {
2482 {
2483 .name = "vcap",
2484 .start = VCAP_HW_BASE,
2485 .end = VCAP_HW_BASE + SZ_1M - 1,
2486 .flags = IORESOURCE_MEM,
2487 },
2488 {
Terence Hampsonaeb793e2012-05-11 11:41:16 -04002489 .name = "vc_irq",
Terence Hampson2e1705f2012-04-11 19:55:29 -04002490 .start = VCAP_VC,
2491 .end = VCAP_VC,
2492 .flags = IORESOURCE_IRQ,
2493 },
Terence Hampsonaeb793e2012-05-11 11:41:16 -04002494 {
2495 .name = "vp_irq",
2496 .start = VCAP_VP,
2497 .end = VCAP_VP,
2498 .flags = IORESOURCE_IRQ,
2499 },
Terence Hampson2e1705f2012-04-11 19:55:29 -04002500};
2501
2502static unsigned vcap_gpios[] = {
2503 2, 3, 4, 5, 6, 7, 8, 9, 10,
2504 11, 12, 13, 18, 19, 20, 21,
2505 22, 23, 24, 25, 26, 80, 82,
2506 83, 84, 85, 86, 87,
2507};
2508
2509static struct vcap_platform_data vcap_pdata = {
2510 .gpios = vcap_gpios,
2511 .num_gpios = ARRAY_SIZE(vcap_gpios),
2512 .bus_client_pdata = &vcap_axi_client_pdata
2513};
2514
2515struct platform_device msm8064_device_vcap = {
2516 .name = "msm_vcap",
2517 .id = 0,
2518 .resource = msm_vcap_resources,
2519 .num_resources = ARRAY_SIZE(msm_vcap_resources),
2520 .dev = {
2521 .platform_data = &vcap_pdata,
2522 },
2523};
2524#endif
2525
Stepan Moskovchenko28662c52012-03-01 12:48:45 -08002526static struct resource msm_cache_erp_resources[] = {
2527 {
2528 .name = "l1_irq",
2529 .start = SC_SICCPUXEXTFAULTIRPTREQ,
2530 .flags = IORESOURCE_IRQ,
2531 },
2532 {
2533 .name = "l2_irq",
2534 .start = APCC_QGICL2IRPTREQ,
2535 .flags = IORESOURCE_IRQ,
2536 }
2537};
2538
2539struct platform_device apq8064_device_cache_erp = {
2540 .name = "msm_cache_erp",
2541 .id = -1,
2542 .num_resources = ARRAY_SIZE(msm_cache_erp_resources),
2543 .resource = msm_cache_erp_resources,
2544};
Pratik Patel212ab362012-03-16 12:30:07 -07002545
2546#define MSM_QDSS_PHYS_BASE 0x01A00000
2547#define MSM_ETM_PHYS_BASE (MSM_QDSS_PHYS_BASE + 0x1C000)
2548
2549#define QDSS_SOURCE(src_name, fpm) { .name = src_name, .fport_mask = fpm, }
2550
2551static struct qdss_source msm_qdss_sources[] = {
2552 QDSS_SOURCE("msm_etm", 0x33),
2553 QDSS_SOURCE("msm_oxili", 0x80),
2554};
2555
2556static struct msm_qdss_platform_data qdss_pdata = {
2557 .src_table = msm_qdss_sources,
2558 .size = ARRAY_SIZE(msm_qdss_sources),
2559 .afamily = 1,
2560};
2561
2562struct platform_device apq8064_qdss_device = {
2563 .name = "msm_qdss",
2564 .id = -1,
2565 .dev = {
2566 .platform_data = &qdss_pdata,
2567 },
2568};
2569
2570static struct resource msm_etm_resources[] = {
2571 {
2572 .start = MSM_ETM_PHYS_BASE,
2573 .end = MSM_ETM_PHYS_BASE + (SZ_4K * 4) - 1,
2574 .flags = IORESOURCE_MEM,
2575 },
2576};
2577
2578struct platform_device apq8064_etm_device = {
2579 .name = "msm_etm",
2580 .id = 0,
2581 .num_resources = ARRAY_SIZE(msm_etm_resources),
2582 .resource = msm_etm_resources,
2583};
Laura Abbott0577d7b2012-04-17 11:14:30 -07002584
2585struct msm_iommu_domain_name apq8064_iommu_ctx_names[] = {
2586 /* Camera */
2587 {
2588 .name = "vpe_src",
2589 .domain = CAMERA_DOMAIN,
2590 },
2591 /* Camera */
2592 {
2593 .name = "vpe_dst",
2594 .domain = CAMERA_DOMAIN,
2595 },
2596 /* Camera */
2597 {
2598 .name = "vfe_imgwr",
2599 .domain = CAMERA_DOMAIN,
2600 },
2601 /* Camera */
2602 {
2603 .name = "vfe_misc",
2604 .domain = CAMERA_DOMAIN,
2605 },
2606 /* Camera */
2607 {
2608 .name = "ijpeg_src",
2609 .domain = CAMERA_DOMAIN,
2610 },
2611 /* Camera */
2612 {
2613 .name = "ijpeg_dst",
2614 .domain = CAMERA_DOMAIN,
2615 },
2616 /* Camera */
2617 {
2618 .name = "jpegd_src",
2619 .domain = CAMERA_DOMAIN,
2620 },
2621 /* Camera */
2622 {
2623 .name = "jpegd_dst",
2624 .domain = CAMERA_DOMAIN,
2625 },
Mayank Chopra9c4743f2012-06-27 15:31:43 +05302626 /* Rotator */
Laura Abbott0577d7b2012-04-17 11:14:30 -07002627 {
2628 .name = "rot_src",
Mayank Chopra9c4743f2012-06-27 15:31:43 +05302629 .domain = ROTATOR_DOMAIN,
Laura Abbott0577d7b2012-04-17 11:14:30 -07002630 },
Mayank Chopra9c4743f2012-06-27 15:31:43 +05302631 /* Rotator */
Laura Abbott0577d7b2012-04-17 11:14:30 -07002632 {
2633 .name = "rot_dst",
Mayank Chopra9c4743f2012-06-27 15:31:43 +05302634 .domain = ROTATOR_DOMAIN,
Laura Abbott0577d7b2012-04-17 11:14:30 -07002635 },
2636 /* Video */
2637 {
2638 .name = "vcodec_a_mm1",
2639 .domain = VIDEO_DOMAIN,
2640 },
2641 /* Video */
2642 {
2643 .name = "vcodec_b_mm2",
2644 .domain = VIDEO_DOMAIN,
2645 },
2646 /* Video */
2647 {
2648 .name = "vcodec_a_stream",
2649 .domain = VIDEO_DOMAIN,
2650 },
2651};
2652
2653static struct mem_pool apq8064_video_pools[] = {
2654 /*
2655 * Video hardware has the following requirements:
2656 * 1. All video addresses used by the video hardware must be at a higher
2657 * address than video firmware address.
2658 * 2. Video hardware can only access a range of 256MB from the base of
2659 * the video firmware.
2660 */
2661 [VIDEO_FIRMWARE_POOL] =
2662 /* Low addresses, intended for video firmware */
2663 {
2664 .paddr = SZ_128K,
2665 .size = SZ_16M - SZ_128K,
2666 },
2667 [VIDEO_MAIN_POOL] =
2668 /* Main video pool */
2669 {
2670 .paddr = SZ_16M,
2671 .size = SZ_256M - SZ_16M,
2672 },
2673 [GEN_POOL] =
2674 /* Remaining address space up to 2G */
2675 {
2676 .paddr = SZ_256M,
2677 .size = SZ_2G - SZ_256M,
2678 },
2679};
2680
2681static struct mem_pool apq8064_camera_pools[] = {
2682 [GEN_POOL] =
2683 /* One address space for camera */
2684 {
2685 .paddr = SZ_128K,
2686 .size = SZ_2G - SZ_128K,
2687 },
2688};
2689
Mayank Chopra9c4743f2012-06-27 15:31:43 +05302690static struct mem_pool apq8064_display_pools[] = {
Laura Abbott0577d7b2012-04-17 11:14:30 -07002691 [GEN_POOL] =
Mayank Chopra9c4743f2012-06-27 15:31:43 +05302692 /* One address space for display */
Laura Abbott0577d7b2012-04-17 11:14:30 -07002693 {
2694 .paddr = SZ_128K,
2695 .size = SZ_2G - SZ_128K,
2696 },
2697};
2698
Mayank Chopra9c4743f2012-06-27 15:31:43 +05302699static struct mem_pool apq8064_rotator_pools[] = {
Laura Abbott0577d7b2012-04-17 11:14:30 -07002700 [GEN_POOL] =
Mayank Chopra9c4743f2012-06-27 15:31:43 +05302701 /* One address space for rotator */
Laura Abbott0577d7b2012-04-17 11:14:30 -07002702 {
2703 .paddr = SZ_128K,
2704 .size = SZ_2G - SZ_128K,
2705 },
2706};
2707
2708static struct msm_iommu_domain apq8064_iommu_domains[] = {
2709 [VIDEO_DOMAIN] = {
2710 .iova_pools = apq8064_video_pools,
2711 .npools = ARRAY_SIZE(apq8064_video_pools),
2712 },
2713 [CAMERA_DOMAIN] = {
2714 .iova_pools = apq8064_camera_pools,
2715 .npools = ARRAY_SIZE(apq8064_camera_pools),
2716 },
Mayank Chopra9c4743f2012-06-27 15:31:43 +05302717 [DISPLAY_DOMAIN] = {
2718 .iova_pools = apq8064_display_pools,
2719 .npools = ARRAY_SIZE(apq8064_display_pools),
Laura Abbott0577d7b2012-04-17 11:14:30 -07002720 },
Mayank Chopra9c4743f2012-06-27 15:31:43 +05302721 [ROTATOR_DOMAIN] = {
2722 .iova_pools = apq8064_rotator_pools,
2723 .npools = ARRAY_SIZE(apq8064_rotator_pools),
Laura Abbott0577d7b2012-04-17 11:14:30 -07002724 },
2725};
2726
2727struct iommu_domains_pdata apq8064_iommu_domain_pdata = {
2728 .domains = apq8064_iommu_domains,
2729 .ndomains = ARRAY_SIZE(apq8064_iommu_domains),
2730 .domain_names = apq8064_iommu_ctx_names,
2731 .nnames = ARRAY_SIZE(apq8064_iommu_ctx_names),
2732 .domain_alloc_flags = 0,
2733};
2734
2735struct platform_device apq8064_iommu_domain_device = {
2736 .name = "iommu_domains",
2737 .id = -1,
2738 .dev = {
2739 .platform_data = &apq8064_iommu_domain_pdata,
Laura Abbott532b2df2012-04-12 10:53:48 -07002740 }
2741};
2742
2743struct msm_rtb_platform_data apq8064_rtb_pdata = {
2744 .size = SZ_1M,
2745};
2746
2747static int __init msm_rtb_set_buffer_size(char *p)
2748{
2749 int s;
2750
2751 s = memparse(p, NULL);
2752 apq8064_rtb_pdata.size = ALIGN(s, SZ_4K);
2753 return 0;
2754}
2755early_param("msm_rtb_size", msm_rtb_set_buffer_size);
2756
2757struct platform_device apq8064_rtb_device = {
2758 .name = "msm_rtb",
2759 .id = -1,
2760 .dev = {
2761 .platform_data = &apq8064_rtb_pdata,
Laura Abbott0577d7b2012-04-17 11:14:30 -07002762 },
2763};
Laura Abbott93a4a352012-05-25 09:26:35 -07002764
2765#define APQ8064_L1_SIZE SZ_1M
2766/*
2767 * The actual L2 size is smaller but we need a larger buffer
2768 * size to store other dump information
2769 */
2770#define APQ8064_L2_SIZE SZ_8M
2771
2772struct msm_cache_dump_platform_data apq8064_cache_dump_pdata = {
2773 .l2_size = APQ8064_L2_SIZE,
2774 .l1_size = APQ8064_L1_SIZE,
2775};
2776
2777struct platform_device apq8064_cache_dump_device = {
2778 .name = "msm_cache_dump",
2779 .id = -1,
2780 .dev = {
2781 .platform_data = &apq8064_cache_dump_pdata,
2782 },
2783};