blob: b756307a790b3584450d7e6f0106f49012d0c8a1 [file] [log] [blame]
Manu Gautam5143b252012-01-05 19:25:23 -08001/* Copyright (c) 2011-2012, Code Aurora Forum. All rights reserved.
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002 *
3 * This program is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License version 2 and
5 * only version 2 as published by the Free Software Foundation.
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
11 *
12 */
13
14#include <linux/kernel.h>
15#include <linux/list.h>
16#include <linux/platform_device.h>
17#include <linux/msm_rotator.h>
Joel Nidere5de00e2012-07-03 10:58:10 +030018#include <linux/gpio.h>
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070019#include <linux/clkdev.h>
Hemant Kumard86c4882012-01-24 19:39:37 -080020#include <linux/dma-mapping.h>
Pratik Patel1746b8f2012-06-02 21:11:41 -070021#include <linux/coresight.h>
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070022#include <mach/irqs-8064.h>
23#include <mach/board.h>
24#include <mach/msm_iomap.h>
Yan He06913ce2011-08-26 16:33:46 -070025#include <mach/usbdiag.h>
26#include <mach/msm_sps.h>
Jeff Ohlstein905f1ce2011-09-07 18:50:18 -070027#include <mach/dma.h>
Jin Hongd3024e62012-02-09 16:13:32 -080028#include <mach/msm_dsps.h>
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -080029#include <sound/msm-dai-q6.h>
30#include <sound/apr_audio.h>
Joel Nidere5de00e2012-07-03 10:58:10 +030031#include <mach/msm_tsif.h>
Gagan Mac8a7a5d32011-11-11 16:43:06 -070032#include <mach/msm_bus_board.h>
Praveen Chidambaram78499012011-11-01 17:15:17 -060033#include <mach/rpm.h>
Joel Kingdacbc822012-01-25 13:30:57 -080034#include <mach/mdm2.h>
Eric Holmberg023d25c2012-03-01 12:27:55 -070035#include <mach/msm_smd.h>
Praveen Chidambaram5c8adf22012-02-23 18:44:37 -070036#include <mach/msm_dcvs.h>
Laura Abbott532b2df2012-04-12 10:53:48 -070037#include <mach/msm_rtb.h>
Mohan Kumar Gubbihalli Lachma Naik7f72edd2012-02-06 17:26:47 -080038#include <linux/ion.h>
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070039#include "clock.h"
40#include "devices.h"
Matt Wagantall1875d322012-02-22 16:11:33 -080041#include "footswitch.h"
Jeff Ohlstein7e668552011-10-06 16:17:25 -070042#include "msm_watchdog.h"
Praveen Chidambaram78499012011-11-01 17:15:17 -060043#include "rpm_stats.h"
44#include "rpm_log.h"
Subhash Jadavani909e04f2012-04-12 10:52:50 +053045#include <mach/mpm.h>
Laura Abbott0577d7b2012-04-17 11:14:30 -070046#include <mach/iommu_domains.h>
Laura Abbott93a4a352012-05-25 09:26:35 -070047#include <mach/msm_cache_dump.h>
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070048
49/* Address of GSBI blocks */
Stepan Moskovchenko2701a442011-08-19 13:47:22 -070050#define MSM_GSBI1_PHYS 0x12440000
Devin Kima3085422012-06-14 18:23:41 -070051#define MSM_GSBI2_PHYS 0x13440000
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070052#define MSM_GSBI3_PHYS 0x16200000
Harini Jayaramanc4c58692011-07-19 14:50:10 -060053#define MSM_GSBI4_PHYS 0x16300000
54#define MSM_GSBI5_PHYS 0x1A200000
55#define MSM_GSBI6_PHYS 0x16500000
56#define MSM_GSBI7_PHYS 0x16600000
57
Kenneth Heitke748593a2011-07-15 15:45:11 -060058/* GSBI UART devices */
Stepan Moskovchenko2701a442011-08-19 13:47:22 -070059#define MSM_UART1DM_PHYS (MSM_GSBI1_PHYS + 0x10000)
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070060#define MSM_UART3DM_PHYS (MSM_GSBI3_PHYS + 0x40000)
Devin Kima3085422012-06-14 18:23:41 -070061#define MSM_UART4DM_PHYS (MSM_GSBI4_PHYS + 0x40000)
62#define MSM_UART6DM_PHYS (MSM_GSBI6_PHYS + 0x40000)
Jin Hong4bbbfba2012-02-02 21:48:07 -080063#define MSM_UART7DM_PHYS (MSM_GSBI7_PHYS + 0x40000)
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070064
Harini Jayaramanc4c58692011-07-19 14:50:10 -060065/* GSBI QUP devices */
David Keitel3c40fc52012-02-09 17:53:52 -080066#define MSM_GSBI1_QUP_PHYS (MSM_GSBI1_PHYS + 0x20000)
Devin Kima3085422012-06-14 18:23:41 -070067#define MSM_GSBI2_QUP_PHYS (MSM_GSBI2_PHYS + 0x20000)
Harini Jayaramanc4c58692011-07-19 14:50:10 -060068#define MSM_GSBI3_QUP_PHYS (MSM_GSBI3_PHYS + 0x80000)
69#define MSM_GSBI4_QUP_PHYS (MSM_GSBI4_PHYS + 0x80000)
70#define MSM_GSBI5_QUP_PHYS (MSM_GSBI5_PHYS + 0x80000)
71#define MSM_GSBI6_QUP_PHYS (MSM_GSBI6_PHYS + 0x80000)
72#define MSM_GSBI7_QUP_PHYS (MSM_GSBI7_PHYS + 0x80000)
73#define MSM_QUP_SIZE SZ_4K
74
Kenneth Heitke36920d32011-07-20 16:44:30 -060075/* Address of SSBI CMD */
76#define MSM_PMIC1_SSBI_CMD_PHYS 0x00500000
77#define MSM_PMIC2_SSBI_CMD_PHYS 0x00C00000
78#define MSM_PMIC_SSBI_SIZE SZ_4K
Harini Jayaramanc4c58692011-07-19 14:50:10 -060079
Hemant Kumarcaa09092011-07-30 00:26:33 -070080/* Address of HS USBOTG1 */
Hemant Kumard86c4882012-01-24 19:39:37 -080081#define MSM_HSUSB1_PHYS 0x12500000
82#define MSM_HSUSB1_SIZE SZ_4K
Hemant Kumarcaa09092011-07-30 00:26:33 -070083
Manu Gautam91223e02011-11-08 15:27:22 +053084/* Address of HS USB3 */
85#define MSM_HSUSB3_PHYS 0x12520000
86#define MSM_HSUSB3_SIZE SZ_4K
87
Hemant Kumar1d66e1c2012-02-13 15:24:59 -080088/* Address of HS USB4 */
89#define MSM_HSUSB4_PHYS 0x12530000
90#define MSM_HSUSB4_SIZE SZ_4K
91
Niranjana Vishwanathapura06f89332012-05-03 17:11:13 -060092/* Address of PCIE20 PARF */
93#define PCIE20_PARF_PHYS 0x1b600000
94#define PCIE20_PARF_SIZE SZ_128
95
96/* Address of PCIE20 ELBI */
97#define PCIE20_ELBI_PHYS 0x1b502000
98#define PCIE20_ELBI_SIZE SZ_256
99
100/* Address of PCIE20 */
101#define PCIE20_PHYS 0x1b500000
102#define PCIE20_SIZE SZ_4K
103
Jeff Ohlstein7e668552011-10-06 16:17:25 -0700104static struct msm_watchdog_pdata msm_watchdog_pdata = {
105 .pet_time = 10000,
106 .bark_time = 11000,
107 .has_secure = true,
Joel Kinge7ca6f72012-02-09 20:51:25 -0800108 .needs_expired_enable = true,
Jeff Ohlstein7e668552011-10-06 16:17:25 -0700109};
110
111struct platform_device msm8064_device_watchdog = {
112 .name = "msm_watchdog",
113 .id = -1,
114 .dev = {
115 .platform_data = &msm_watchdog_pdata,
116 },
117};
118
Joel King0581896d2011-07-19 16:43:28 -0700119static struct resource msm_dmov_resource[] = {
120 {
Jeff Ohlstein4af72692011-11-07 15:59:17 -0800121 .start = ADM_0_SCSS_1_IRQ,
Joel King0581896d2011-07-19 16:43:28 -0700122 .flags = IORESOURCE_IRQ,
123 },
Jeff Ohlstein905f1ce2011-09-07 18:50:18 -0700124 {
Jeff Ohlstein4af72692011-11-07 15:59:17 -0800125 .start = 0x18320000,
126 .end = 0x18320000 + SZ_1M - 1,
Jeff Ohlstein905f1ce2011-09-07 18:50:18 -0700127 .flags = IORESOURCE_MEM,
128 },
129};
130
131static struct msm_dmov_pdata msm_dmov_pdata = {
Jeff Ohlstein4af72692011-11-07 15:59:17 -0800132 .sd = 1,
Jeff Ohlstein905f1ce2011-09-07 18:50:18 -0700133 .sd_size = 0x800,
Joel King0581896d2011-07-19 16:43:28 -0700134};
135
Stepan Moskovchenkodf13d342011-08-03 19:01:25 -0700136struct platform_device apq8064_device_dmov = {
Joel King0581896d2011-07-19 16:43:28 -0700137 .name = "msm_dmov",
138 .id = -1,
139 .resource = msm_dmov_resource,
140 .num_resources = ARRAY_SIZE(msm_dmov_resource),
Jeff Ohlstein905f1ce2011-09-07 18:50:18 -0700141 .dev = {
142 .platform_data = &msm_dmov_pdata,
143 },
Joel King0581896d2011-07-19 16:43:28 -0700144};
145
Stepan Moskovchenko2701a442011-08-19 13:47:22 -0700146static struct resource resources_uart_gsbi1[] = {
147 {
148 .start = APQ8064_GSBI1_UARTDM_IRQ,
149 .end = APQ8064_GSBI1_UARTDM_IRQ,
150 .flags = IORESOURCE_IRQ,
151 },
152 {
153 .start = MSM_UART1DM_PHYS,
154 .end = MSM_UART1DM_PHYS + PAGE_SIZE - 1,
155 .name = "uartdm_resource",
156 .flags = IORESOURCE_MEM,
157 },
158 {
159 .start = MSM_GSBI1_PHYS,
160 .end = MSM_GSBI1_PHYS + PAGE_SIZE - 1,
161 .name = "gsbi_resource",
162 .flags = IORESOURCE_MEM,
163 },
164};
165
166struct platform_device apq8064_device_uart_gsbi1 = {
167 .name = "msm_serial_hsl",
Jin Hong4bbbfba2012-02-02 21:48:07 -0800168 .id = 1,
Stepan Moskovchenko2701a442011-08-19 13:47:22 -0700169 .num_resources = ARRAY_SIZE(resources_uart_gsbi1),
170 .resource = resources_uart_gsbi1,
171};
172
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700173static struct resource resources_uart_gsbi3[] = {
174 {
175 .start = GSBI3_UARTDM_IRQ,
176 .end = GSBI3_UARTDM_IRQ,
177 .flags = IORESOURCE_IRQ,
178 },
179 {
180 .start = MSM_UART3DM_PHYS,
181 .end = MSM_UART3DM_PHYS + PAGE_SIZE - 1,
182 .name = "uartdm_resource",
183 .flags = IORESOURCE_MEM,
184 },
185 {
186 .start = MSM_GSBI3_PHYS,
187 .end = MSM_GSBI3_PHYS + PAGE_SIZE - 1,
188 .name = "gsbi_resource",
189 .flags = IORESOURCE_MEM,
190 },
191};
192
193struct platform_device apq8064_device_uart_gsbi3 = {
194 .name = "msm_serial_hsl",
195 .id = 0,
196 .num_resources = ARRAY_SIZE(resources_uart_gsbi3),
197 .resource = resources_uart_gsbi3,
198};
199
Jing Lin04601f92012-02-05 15:36:07 -0800200static struct resource resources_qup_i2c_gsbi3[] = {
201 {
202 .name = "gsbi_qup_i2c_addr",
203 .start = MSM_GSBI3_PHYS,
204 .end = MSM_GSBI3_PHYS + 4 - 1,
205 .flags = IORESOURCE_MEM,
206 },
207 {
208 .name = "qup_phys_addr",
209 .start = MSM_GSBI3_QUP_PHYS,
210 .end = MSM_GSBI3_QUP_PHYS + MSM_QUP_SIZE - 1,
211 .flags = IORESOURCE_MEM,
212 },
213 {
214 .name = "qup_err_intr",
215 .start = GSBI3_QUP_IRQ,
216 .end = GSBI3_QUP_IRQ,
217 .flags = IORESOURCE_IRQ,
218 },
219 {
220 .name = "i2c_clk",
221 .start = 9,
222 .end = 9,
223 .flags = IORESOURCE_IO,
224 },
225 {
226 .name = "i2c_sda",
227 .start = 8,
228 .end = 8,
229 .flags = IORESOURCE_IO,
230 },
231};
232
David Keitel3c40fc52012-02-09 17:53:52 -0800233static struct resource resources_qup_i2c_gsbi1[] = {
234 {
235 .name = "gsbi_qup_i2c_addr",
236 .start = MSM_GSBI1_PHYS,
237 .end = MSM_GSBI1_PHYS + 4 - 1,
238 .flags = IORESOURCE_MEM,
239 },
240 {
241 .name = "qup_phys_addr",
242 .start = MSM_GSBI1_QUP_PHYS,
243 .end = MSM_GSBI1_QUP_PHYS + MSM_QUP_SIZE - 1,
244 .flags = IORESOURCE_MEM,
245 },
246 {
247 .name = "qup_err_intr",
248 .start = APQ8064_GSBI1_QUP_IRQ,
249 .end = APQ8064_GSBI1_QUP_IRQ,
250 .flags = IORESOURCE_IRQ,
251 },
252 {
253 .name = "i2c_clk",
254 .start = 21,
255 .end = 21,
256 .flags = IORESOURCE_IO,
257 },
258 {
259 .name = "i2c_sda",
260 .start = 20,
261 .end = 20,
262 .flags = IORESOURCE_IO,
263 },
264};
265
266struct platform_device apq8064_device_qup_i2c_gsbi1 = {
267 .name = "qup_i2c",
268 .id = 0,
269 .num_resources = ARRAY_SIZE(resources_qup_i2c_gsbi1),
270 .resource = resources_qup_i2c_gsbi1,
271};
272
Jing Lin04601f92012-02-05 15:36:07 -0800273struct platform_device apq8064_device_qup_i2c_gsbi3 = {
274 .name = "qup_i2c",
275 .id = 3,
276 .num_resources = ARRAY_SIZE(resources_qup_i2c_gsbi3),
277 .resource = resources_qup_i2c_gsbi3,
278};
279
Devin Kima3085422012-06-14 18:23:41 -0700280static struct resource resources_uart_gsbi4[] = {
281 {
282 .start = GSBI4_UARTDM_IRQ,
283 .end = GSBI4_UARTDM_IRQ,
284 .flags = IORESOURCE_IRQ,
285 },
286 {
287 .start = MSM_UART4DM_PHYS,
288 .end = MSM_UART4DM_PHYS + PAGE_SIZE - 1,
289 .name = "uartdm_resource",
290 .flags = IORESOURCE_MEM,
291 },
292 {
293 .start = MSM_GSBI4_PHYS,
294 .end = MSM_GSBI4_PHYS + PAGE_SIZE - 1,
295 .name = "gsbi_resource",
296 .flags = IORESOURCE_MEM,
297 },
298};
299
300struct platform_device apq8064_device_uart_gsbi4 = {
301 .name = "msm_serial_hsl",
302 .id = 0,
303 .num_resources = ARRAY_SIZE(resources_uart_gsbi4),
304 .resource = resources_uart_gsbi4,
305};
306
Kenneth Heitke748593a2011-07-15 15:45:11 -0600307static struct resource resources_qup_i2c_gsbi4[] = {
308 {
309 .name = "gsbi_qup_i2c_addr",
310 .start = MSM_GSBI4_PHYS,
Harini Jayaramane1554a92011-09-15 14:43:02 -0600311 .end = MSM_GSBI4_PHYS + 4 - 1,
Kenneth Heitke748593a2011-07-15 15:45:11 -0600312 .flags = IORESOURCE_MEM,
313 },
314 {
315 .name = "qup_phys_addr",
316 .start = MSM_GSBI4_QUP_PHYS,
Harini Jayaramane1554a92011-09-15 14:43:02 -0600317 .end = MSM_GSBI4_QUP_PHYS + MSM_QUP_SIZE - 1,
Kenneth Heitke748593a2011-07-15 15:45:11 -0600318 .flags = IORESOURCE_MEM,
319 },
320 {
321 .name = "qup_err_intr",
322 .start = GSBI4_QUP_IRQ,
323 .end = GSBI4_QUP_IRQ,
324 .flags = IORESOURCE_IRQ,
325 },
Kevin Chand07220e2012-02-13 15:52:22 -0800326 {
327 .name = "i2c_clk",
328 .start = 11,
329 .end = 11,
330 .flags = IORESOURCE_IO,
331 },
332 {
333 .name = "i2c_sda",
334 .start = 10,
335 .end = 10,
336 .flags = IORESOURCE_IO,
337 },
Kenneth Heitke748593a2011-07-15 15:45:11 -0600338};
339
340struct platform_device apq8064_device_qup_i2c_gsbi4 = {
341 .name = "qup_i2c",
342 .id = 4,
343 .num_resources = ARRAY_SIZE(resources_qup_i2c_gsbi4),
344 .resource = resources_qup_i2c_gsbi4,
345};
346
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700347static struct resource resources_qup_spi_gsbi5[] = {
348 {
349 .name = "spi_base",
350 .start = MSM_GSBI5_QUP_PHYS,
351 .end = MSM_GSBI5_QUP_PHYS + SZ_4K - 1,
352 .flags = IORESOURCE_MEM,
353 },
354 {
355 .name = "gsbi_base",
356 .start = MSM_GSBI5_PHYS,
357 .end = MSM_GSBI5_PHYS + 4 - 1,
358 .flags = IORESOURCE_MEM,
359 },
360 {
361 .name = "spi_irq_in",
362 .start = GSBI5_QUP_IRQ,
363 .end = GSBI5_QUP_IRQ,
364 .flags = IORESOURCE_IRQ,
365 },
366};
367
368struct platform_device apq8064_device_qup_spi_gsbi5 = {
369 .name = "spi_qsd",
370 .id = 0,
371 .num_resources = ARRAY_SIZE(resources_qup_spi_gsbi5),
372 .resource = resources_qup_spi_gsbi5,
373};
374
Joel King8f839b92012-04-01 14:37:46 -0700375static struct resource resources_qup_i2c_gsbi5[] = {
376 {
377 .name = "gsbi_qup_i2c_addr",
378 .start = MSM_GSBI5_PHYS,
379 .end = MSM_GSBI5_PHYS + 4 - 1,
380 .flags = IORESOURCE_MEM,
381 },
382 {
383 .name = "qup_phys_addr",
384 .start = MSM_GSBI5_QUP_PHYS,
385 .end = MSM_GSBI5_QUP_PHYS + MSM_QUP_SIZE - 1,
386 .flags = IORESOURCE_MEM,
387 },
388 {
389 .name = "qup_err_intr",
390 .start = GSBI5_QUP_IRQ,
391 .end = GSBI5_QUP_IRQ,
392 .flags = IORESOURCE_IRQ,
393 },
394 {
395 .name = "i2c_clk",
396 .start = 54,
397 .end = 54,
398 .flags = IORESOURCE_IO,
399 },
400 {
401 .name = "i2c_sda",
402 .start = 53,
403 .end = 53,
404 .flags = IORESOURCE_IO,
405 },
406};
407
408struct platform_device mpq8064_device_qup_i2c_gsbi5 = {
409 .name = "qup_i2c",
410 .id = 5,
411 .num_resources = ARRAY_SIZE(resources_qup_i2c_gsbi5),
412 .resource = resources_qup_i2c_gsbi5,
413};
414
Jin Hong4bbbfba2012-02-02 21:48:07 -0800415static struct resource resources_uart_gsbi7[] = {
416 {
417 .start = GSBI7_UARTDM_IRQ,
418 .end = GSBI7_UARTDM_IRQ,
419 .flags = IORESOURCE_IRQ,
420 },
421 {
422 .start = MSM_UART7DM_PHYS,
423 .end = MSM_UART7DM_PHYS + PAGE_SIZE - 1,
424 .name = "uartdm_resource",
425 .flags = IORESOURCE_MEM,
426 },
427 {
428 .start = MSM_GSBI7_PHYS,
429 .end = MSM_GSBI7_PHYS + PAGE_SIZE - 1,
430 .name = "gsbi_resource",
431 .flags = IORESOURCE_MEM,
432 },
433};
434
435struct platform_device apq8064_device_uart_gsbi7 = {
436 .name = "msm_serial_hsl",
437 .id = 0,
438 .num_resources = ARRAY_SIZE(resources_uart_gsbi7),
439 .resource = resources_uart_gsbi7,
440};
441
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800442struct platform_device apq_pcm = {
443 .name = "msm-pcm-dsp",
444 .id = -1,
445};
446
447struct platform_device apq_pcm_routing = {
448 .name = "msm-pcm-routing",
449 .id = -1,
450};
451
452struct platform_device apq_cpudai0 = {
453 .name = "msm-dai-q6",
454 .id = 0x4000,
455};
456
457struct platform_device apq_cpudai1 = {
458 .name = "msm-dai-q6",
459 .id = 0x4001,
460};
Santosh Mardieff9a742012-04-09 23:23:39 +0530461struct platform_device mpq_cpudai_sec_i2s_rx = {
462 .name = "msm-dai-q6",
463 .id = 4,
464};
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800465struct platform_device apq_cpudai_hdmi_rx = {
Swaminathan Sathappanfd9dbad2012-02-15 16:56:44 -0800466 .name = "msm-dai-q6-hdmi",
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800467 .id = 8,
468};
469
470struct platform_device apq_cpudai_bt_rx = {
471 .name = "msm-dai-q6",
472 .id = 0x3000,
473};
474
475struct platform_device apq_cpudai_bt_tx = {
476 .name = "msm-dai-q6",
477 .id = 0x3001,
478};
479
480struct platform_device apq_cpudai_fm_rx = {
481 .name = "msm-dai-q6",
482 .id = 0x3004,
483};
484
485struct platform_device apq_cpudai_fm_tx = {
486 .name = "msm-dai-q6",
487 .id = 0x3005,
488};
489
Helen Zeng8f925502012-03-05 16:50:17 -0800490struct platform_device apq_cpudai_slim_4_rx = {
491 .name = "msm-dai-q6",
492 .id = 0x4008,
493};
494
495struct platform_device apq_cpudai_slim_4_tx = {
496 .name = "msm-dai-q6",
497 .id = 0x4009,
498};
499
Joel Nidere5de00e2012-07-03 10:58:10 +0300500#define MSM_TSIF0_PHYS (0x18200000)
501#define MSM_TSIF1_PHYS (0x18201000)
502#define MSM_TSIF_SIZE (0x200)
503
504#define TSIF_0_CLK GPIO_CFG(55, 1, GPIO_CFG_INPUT, \
505 GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA)
506#define TSIF_0_EN GPIO_CFG(56, 1, GPIO_CFG_INPUT, \
507 GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA)
508#define TSIF_0_DATA GPIO_CFG(57, 1, GPIO_CFG_INPUT, \
509 GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA)
510#define TSIF_0_SYNC GPIO_CFG(62, 1, GPIO_CFG_INPUT, \
511 GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA)
512#define TSIF_1_CLK GPIO_CFG(59, 1, GPIO_CFG_INPUT, \
513 GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA)
514#define TSIF_1_EN GPIO_CFG(60, 1, GPIO_CFG_INPUT, \
515 GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA)
516#define TSIF_1_DATA GPIO_CFG(61, 1, GPIO_CFG_INPUT, \
517 GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA)
518#define TSIF_1_SYNC GPIO_CFG(58, 1, GPIO_CFG_INPUT, \
519 GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA)
520
521static const struct msm_gpio tsif0_gpios[] = {
522 { .gpio_cfg = TSIF_0_CLK, .label = "tsif_clk", },
523 { .gpio_cfg = TSIF_0_EN, .label = "tsif_en", },
524 { .gpio_cfg = TSIF_0_DATA, .label = "tsif_data", },
525 { .gpio_cfg = TSIF_0_SYNC, .label = "tsif_sync", },
526};
527
528static const struct msm_gpio tsif1_gpios[] = {
529 { .gpio_cfg = TSIF_1_CLK, .label = "tsif_clk", },
530 { .gpio_cfg = TSIF_1_EN, .label = "tsif_en", },
531 { .gpio_cfg = TSIF_1_DATA, .label = "tsif_data", },
532 { .gpio_cfg = TSIF_1_SYNC, .label = "tsif_sync", },
533};
534
535struct msm_tsif_platform_data tsif1_8064_platform_data = {
536 .num_gpios = ARRAY_SIZE(tsif1_gpios),
537 .gpios = tsif1_gpios,
538 .tsif_pclk = "iface_clk",
539 .tsif_ref_clk = "ref_clk",
540};
541
542struct resource tsif1_8064_resources[] = {
543 [0] = {
544 .flags = IORESOURCE_IRQ,
545 .start = TSIF2_IRQ,
546 .end = TSIF2_IRQ,
547 },
548 [1] = {
549 .flags = IORESOURCE_MEM,
550 .start = MSM_TSIF1_PHYS,
551 .end = MSM_TSIF1_PHYS + MSM_TSIF_SIZE - 1,
552 },
553 [2] = {
554 .flags = IORESOURCE_DMA,
555 .start = DMOV8064_TSIF_CHAN,
556 .end = DMOV8064_TSIF_CRCI,
557 },
558};
559
560struct msm_tsif_platform_data tsif0_8064_platform_data = {
561 .num_gpios = ARRAY_SIZE(tsif0_gpios),
562 .gpios = tsif0_gpios,
563 .tsif_pclk = "iface_clk",
564 .tsif_ref_clk = "ref_clk",
565};
566
567struct resource tsif0_8064_resources[] = {
568 [0] = {
569 .flags = IORESOURCE_IRQ,
570 .start = TSIF1_IRQ,
571 .end = TSIF1_IRQ,
572 },
573 [1] = {
574 .flags = IORESOURCE_MEM,
575 .start = MSM_TSIF0_PHYS,
576 .end = MSM_TSIF0_PHYS + MSM_TSIF_SIZE - 1,
577 },
578 [2] = {
579 .flags = IORESOURCE_DMA,
580 .start = DMOV_TSIF_CHAN,
581 .end = DMOV_TSIF_CRCI,
582 },
583};
584
585struct platform_device msm_8064_device_tsif[2] = {
586 {
587 .name = "msm_tsif",
588 .id = 0,
589 .num_resources = ARRAY_SIZE(tsif0_8064_resources),
590 .resource = tsif0_8064_resources,
591 .dev = {
592 .platform_data = &tsif0_8064_platform_data
593 },
594 },
595 {
596 .name = "msm_tsif",
597 .id = 1,
598 .num_resources = ARRAY_SIZE(tsif1_8064_resources),
599 .resource = tsif1_8064_resources,
600 .dev = {
601 .platform_data = &tsif1_8064_platform_data
602 },
603 }
604};
605
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800606/*
607 * Machine specific data for AUX PCM Interface
608 * which the driver will be unware of.
609 */
Kiran Kandi5f4ab692012-02-23 11:23:56 -0800610struct msm_dai_auxpcm_pdata apq_auxpcm_pdata = {
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800611 .clk = "pcm_clk",
Kuirong Wang547a9982012-05-04 18:29:11 -0700612 .mode_8k = {
613 .mode = AFE_PCM_CFG_MODE_PCM,
614 .sync = AFE_PCM_CFG_SYNC_INT,
615 .frame = AFE_PCM_CFG_FRM_256BPF,
616 .quant = AFE_PCM_CFG_QUANT_LINEAR_NOPAD,
617 .slot = 0,
618 .data = AFE_PCM_CFG_CDATAOE_MASTER,
619 .pcm_clk_rate = 2048000,
620 },
621 .mode_16k = {
622 .mode = AFE_PCM_CFG_MODE_PCM,
623 .sync = AFE_PCM_CFG_SYNC_INT,
624 .frame = AFE_PCM_CFG_FRM_256BPF,
625 .quant = AFE_PCM_CFG_QUANT_LINEAR_NOPAD,
626 .slot = 0,
627 .data = AFE_PCM_CFG_CDATAOE_MASTER,
628 .pcm_clk_rate = 4096000,
629 }
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800630};
631
632struct platform_device apq_cpudai_auxpcm_rx = {
633 .name = "msm-dai-q6",
634 .id = 2,
635 .dev = {
Kiran Kandi5f4ab692012-02-23 11:23:56 -0800636 .platform_data = &apq_auxpcm_pdata,
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800637 },
638};
639
640struct platform_device apq_cpudai_auxpcm_tx = {
641 .name = "msm-dai-q6",
642 .id = 3,
Kiran Kandi5f4ab692012-02-23 11:23:56 -0800643 .dev = {
644 .platform_data = &apq_auxpcm_pdata,
645 },
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800646};
647
Patrick Lai04baee942012-05-01 14:38:47 -0700648struct msm_mi2s_pdata mpq_mi2s_tx_data = {
649 .rx_sd_lines = 0,
650 .tx_sd_lines = MSM_MI2S_SD0 | MSM_MI2S_SD1 | MSM_MI2S_SD2 |
651 MSM_MI2S_SD3,
Kuirong Wangf23f8c52012-03-31 12:34:51 -0700652};
653
654struct platform_device mpq_cpudai_mi2s_tx = {
Patrick Lai04baee942012-05-01 14:38:47 -0700655 .name = "msm-dai-q6-mi2s",
656 .id = -1, /*MI2S_TX */
Kuirong Wangf23f8c52012-03-31 12:34:51 -0700657 .dev = {
658 .platform_data = &mpq_mi2s_tx_data,
659 },
660};
661
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800662struct platform_device apq_cpu_fe = {
663 .name = "msm-dai-fe",
664 .id = -1,
665};
666
667struct platform_device apq_stub_codec = {
668 .name = "msm-stub-codec",
669 .id = 1,
670};
671
672struct platform_device apq_voice = {
673 .name = "msm-pcm-voice",
674 .id = -1,
675};
676
677struct platform_device apq_voip = {
678 .name = "msm-voip-dsp",
679 .id = -1,
680};
681
682struct platform_device apq_lpa_pcm = {
683 .name = "msm-pcm-lpa",
684 .id = -1,
685};
686
Krishnankutty Kolathappilly4374e332012-03-18 22:27:30 -0700687struct platform_device apq_compr_dsp = {
688 .name = "msm-compr-dsp",
689 .id = -1,
690};
691
692struct platform_device apq_multi_ch_pcm = {
693 .name = "msm-multi-ch-pcm-dsp",
694 .id = -1,
695};
696
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800697struct platform_device apq_pcm_hostless = {
698 .name = "msm-pcm-hostless",
699 .id = -1,
700};
701
702struct platform_device apq_cpudai_afe_01_rx = {
703 .name = "msm-dai-q6",
704 .id = 0xE0,
705};
706
707struct platform_device apq_cpudai_afe_01_tx = {
708 .name = "msm-dai-q6",
709 .id = 0xF0,
710};
711
712struct platform_device apq_cpudai_afe_02_rx = {
713 .name = "msm-dai-q6",
714 .id = 0xF1,
715};
716
717struct platform_device apq_cpudai_afe_02_tx = {
718 .name = "msm-dai-q6",
719 .id = 0xE1,
720};
721
722struct platform_device apq_pcm_afe = {
723 .name = "msm-pcm-afe",
724 .id = -1,
725};
726
Neema Shetty8427c262012-02-16 11:23:43 -0800727struct platform_device apq_cpudai_stub = {
728 .name = "msm-dai-stub",
729 .id = -1,
730};
731
Neema Shetty3c9d2862012-03-11 01:25:32 -0800732struct platform_device apq_cpudai_slimbus_1_rx = {
733 .name = "msm-dai-q6",
734 .id = 0x4002,
735};
736
737struct platform_device apq_cpudai_slimbus_1_tx = {
738 .name = "msm-dai-q6",
739 .id = 0x4003,
740};
741
Kiran Kandi97fe19d2012-05-20 22:34:04 -0700742struct platform_device apq_cpudai_slimbus_2_rx = {
743 .name = "msm-dai-q6",
744 .id = 0x4004,
745};
746
Kiran Kandi1e6371d2012-03-29 11:48:57 -0700747struct platform_device apq_cpudai_slimbus_2_tx = {
748 .name = "msm-dai-q6",
749 .id = 0x4005,
750};
751
Neema Shettyc9d86c32012-05-09 12:01:39 -0700752struct platform_device apq_cpudai_slimbus_3_rx = {
753 .name = "msm-dai-q6",
754 .id = 0x4006,
755};
756
ehgrace.kim9b771372012-08-13 15:08:56 -0700757struct platform_device apq_cpudai_slimbus_3_tx = {
758 .name = "msm-dai-q6",
759 .id = 0x4007,
760};
761
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700762static struct resource resources_ssbi_pmic1[] = {
763 {
764 .start = MSM_PMIC1_SSBI_CMD_PHYS,
765 .end = MSM_PMIC1_SSBI_CMD_PHYS + MSM_PMIC_SSBI_SIZE - 1,
766 .flags = IORESOURCE_MEM,
767 },
768};
769
Sagar Dharia8bdcdaf2011-09-16 16:01:15 -0600770#define LPASS_SLIMBUS_PHYS 0x28080000
771#define LPASS_SLIMBUS_BAM_PHYS 0x28084000
Swaminathan Sathappan2316e082012-02-03 14:07:17 -0800772#define LPASS_SLIMBUS_SLEW (MSM8960_TLMM_PHYS + 0x207C)
Sagar Dharia8bdcdaf2011-09-16 16:01:15 -0600773/* Board info for the slimbus slave device */
774static struct resource slimbus_res[] = {
775 {
776 .start = LPASS_SLIMBUS_PHYS,
777 .end = LPASS_SLIMBUS_PHYS + 8191,
778 .flags = IORESOURCE_MEM,
779 .name = "slimbus_physical",
780 },
781 {
782 .start = LPASS_SLIMBUS_BAM_PHYS,
783 .end = LPASS_SLIMBUS_BAM_PHYS + 8191,
784 .flags = IORESOURCE_MEM,
785 .name = "slimbus_bam_physical",
786 },
787 {
Swaminathan Sathappan2316e082012-02-03 14:07:17 -0800788 .start = LPASS_SLIMBUS_SLEW,
789 .end = LPASS_SLIMBUS_SLEW + 4 - 1,
790 .flags = IORESOURCE_MEM,
791 .name = "slimbus_slew_reg",
792 },
793 {
Sagar Dharia8bdcdaf2011-09-16 16:01:15 -0600794 .start = SLIMBUS0_CORE_EE1_IRQ,
795 .end = SLIMBUS0_CORE_EE1_IRQ,
796 .flags = IORESOURCE_IRQ,
797 .name = "slimbus_irq",
798 },
799 {
800 .start = SLIMBUS0_BAM_EE1_IRQ,
801 .end = SLIMBUS0_BAM_EE1_IRQ,
802 .flags = IORESOURCE_IRQ,
803 .name = "slimbus_bam_irq",
804 },
805};
806
807struct platform_device apq8064_slim_ctrl = {
808 .name = "msm_slim_ctrl",
809 .id = 1,
810 .num_resources = ARRAY_SIZE(slimbus_res),
811 .resource = slimbus_res,
812 .dev = {
813 .coherent_dma_mask = 0xffffffffULL,
814 },
815};
816
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700817struct platform_device apq8064_device_ssbi_pmic1 = {
818 .name = "msm_ssbi",
819 .id = 0,
820 .resource = resources_ssbi_pmic1,
821 .num_resources = ARRAY_SIZE(resources_ssbi_pmic1),
822};
823
824static struct resource resources_ssbi_pmic2[] = {
825 {
826 .start = MSM_PMIC2_SSBI_CMD_PHYS,
827 .end = MSM_PMIC2_SSBI_CMD_PHYS + MSM_PMIC_SSBI_SIZE - 1,
828 .flags = IORESOURCE_MEM,
829 },
830};
831
832struct platform_device apq8064_device_ssbi_pmic2 = {
833 .name = "msm_ssbi",
834 .id = 1,
835 .resource = resources_ssbi_pmic2,
836 .num_resources = ARRAY_SIZE(resources_ssbi_pmic2),
837};
838
839static struct resource resources_otg[] = {
840 {
Hemant Kumard86c4882012-01-24 19:39:37 -0800841 .start = MSM_HSUSB1_PHYS,
842 .end = MSM_HSUSB1_PHYS + MSM_HSUSB1_SIZE - 1,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700843 .flags = IORESOURCE_MEM,
844 },
845 {
846 .start = USB1_HS_IRQ,
847 .end = USB1_HS_IRQ,
848 .flags = IORESOURCE_IRQ,
849 },
850};
851
Stepan Moskovchenko14aa6492011-08-08 15:15:01 -0700852struct platform_device apq8064_device_otg = {
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700853 .name = "msm_otg",
854 .id = -1,
855 .num_resources = ARRAY_SIZE(resources_otg),
856 .resource = resources_otg,
857 .dev = {
858 .coherent_dma_mask = 0xffffffff,
859 },
860};
861
862static struct resource resources_hsusb[] = {
863 {
Hemant Kumard86c4882012-01-24 19:39:37 -0800864 .start = MSM_HSUSB1_PHYS,
865 .end = MSM_HSUSB1_PHYS + MSM_HSUSB1_SIZE - 1,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700866 .flags = IORESOURCE_MEM,
867 },
868 {
869 .start = USB1_HS_IRQ,
870 .end = USB1_HS_IRQ,
871 .flags = IORESOURCE_IRQ,
872 },
873};
874
Stepan Moskovchenko14aa6492011-08-08 15:15:01 -0700875struct platform_device apq8064_device_gadget_peripheral = {
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700876 .name = "msm_hsusb",
877 .id = -1,
878 .num_resources = ARRAY_SIZE(resources_hsusb),
879 .resource = resources_hsusb,
880 .dev = {
881 .coherent_dma_mask = 0xffffffff,
882 },
883};
884
Hemant Kumard86c4882012-01-24 19:39:37 -0800885static struct resource resources_hsusb_host[] = {
886 {
887 .start = MSM_HSUSB1_PHYS,
888 .end = MSM_HSUSB1_PHYS + MSM_HSUSB1_SIZE - 1,
889 .flags = IORESOURCE_MEM,
890 },
891 {
892 .start = USB1_HS_IRQ,
893 .end = USB1_HS_IRQ,
894 .flags = IORESOURCE_IRQ,
895 },
896};
897
Hemant Kumara945b472012-01-25 15:08:06 -0800898static struct resource resources_hsic_host[] = {
899 {
900 .start = 0x12510000,
901 .end = 0x12510000 + SZ_4K - 1,
902 .flags = IORESOURCE_MEM,
903 },
904 {
905 .start = USB2_HSIC_IRQ,
906 .end = USB2_HSIC_IRQ,
907 .flags = IORESOURCE_IRQ,
908 },
909 {
910 .start = MSM_GPIO_TO_INT(49),
911 .end = MSM_GPIO_TO_INT(49),
912 .name = "peripheral_status_irq",
913 .flags = IORESOURCE_IRQ,
914 },
Vamsi Krishna6921cbe2012-02-21 18:34:43 -0800915 {
Hemant Kumar6fd65032012-05-23 13:02:24 -0700916 .start = 47,
917 .end = 47,
918 .name = "wakeup",
919 .flags = IORESOURCE_IO,
Vamsi Krishna6921cbe2012-02-21 18:34:43 -0800920 },
Hemant Kumara945b472012-01-25 15:08:06 -0800921};
922
Hemant Kumard86c4882012-01-24 19:39:37 -0800923static u64 dma_mask = DMA_BIT_MASK(32);
924struct platform_device apq8064_device_hsusb_host = {
925 .name = "msm_hsusb_host",
926 .id = -1,
927 .num_resources = ARRAY_SIZE(resources_hsusb_host),
928 .resource = resources_hsusb_host,
929 .dev = {
930 .dma_mask = &dma_mask,
931 .coherent_dma_mask = 0xffffffff,
932 },
933};
934
Hemant Kumara945b472012-01-25 15:08:06 -0800935struct platform_device apq8064_device_hsic_host = {
936 .name = "msm_hsic_host",
937 .id = -1,
938 .num_resources = ARRAY_SIZE(resources_hsic_host),
939 .resource = resources_hsic_host,
940 .dev = {
941 .dma_mask = &dma_mask,
942 .coherent_dma_mask = DMA_BIT_MASK(32),
943 },
944};
945
Manu Gautam91223e02011-11-08 15:27:22 +0530946static struct resource resources_ehci_host3[] = {
947{
948 .start = MSM_HSUSB3_PHYS,
949 .end = MSM_HSUSB3_PHYS + MSM_HSUSB3_SIZE - 1,
950 .flags = IORESOURCE_MEM,
951 },
952 {
953 .start = USB3_HS_IRQ,
954 .end = USB3_HS_IRQ,
955 .flags = IORESOURCE_IRQ,
956 },
957};
958
959struct platform_device apq8064_device_ehci_host3 = {
960 .name = "msm_ehci_host",
961 .id = 0,
962 .num_resources = ARRAY_SIZE(resources_ehci_host3),
963 .resource = resources_ehci_host3,
964 .dev = {
965 .dma_mask = &dma_mask,
966 .coherent_dma_mask = 0xffffffff,
967 },
968};
969
Hemant Kumar1d66e1c2012-02-13 15:24:59 -0800970static struct resource resources_ehci_host4[] = {
971{
972 .start = MSM_HSUSB4_PHYS,
973 .end = MSM_HSUSB4_PHYS + MSM_HSUSB4_SIZE - 1,
974 .flags = IORESOURCE_MEM,
975 },
976 {
977 .start = USB4_HS_IRQ,
978 .end = USB4_HS_IRQ,
979 .flags = IORESOURCE_IRQ,
980 },
981};
982
983struct platform_device apq8064_device_ehci_host4 = {
984 .name = "msm_ehci_host",
985 .id = 1,
986 .num_resources = ARRAY_SIZE(resources_ehci_host4),
987 .resource = resources_ehci_host4,
988 .dev = {
989 .dma_mask = &dma_mask,
990 .coherent_dma_mask = 0xffffffff,
991 },
992};
993
Matt Wagantallf5cc3892012-06-07 19:47:02 -0700994struct platform_device apq8064_device_acpuclk = {
995 .name = "acpuclk-8064",
996 .id = -1,
997};
998
Ramesh Masavarapuf31ff242012-05-10 18:55:21 -0700999#define SHARED_IMEM_TZ_BASE 0x2a03f720
1000static struct resource tzlog_resources[] = {
1001 {
1002 .start = SHARED_IMEM_TZ_BASE,
1003 .end = SHARED_IMEM_TZ_BASE + SZ_4K - 1,
1004 .flags = IORESOURCE_MEM,
1005 },
1006};
1007
1008struct platform_device apq_device_tz_log = {
1009 .name = "tz_log",
1010 .id = 0,
1011 .num_resources = ARRAY_SIZE(tzlog_resources),
1012 .resource = tzlog_resources,
1013};
1014
Mohan Kumar Gubbihalli Lachma Naik7f72edd2012-02-06 17:26:47 -08001015/* MSM Video core device */
1016#ifdef CONFIG_MSM_BUS_SCALING
1017static struct msm_bus_vectors vidc_init_vectors[] = {
1018 {
1019 .src = MSM_BUS_MASTER_VIDEO_ENC,
1020 .dst = MSM_BUS_SLAVE_EBI_CH0,
1021 .ab = 0,
1022 .ib = 0,
1023 },
1024 {
1025 .src = MSM_BUS_MASTER_VIDEO_DEC,
1026 .dst = MSM_BUS_SLAVE_EBI_CH0,
1027 .ab = 0,
1028 .ib = 0,
1029 },
1030 {
1031 .src = MSM_BUS_MASTER_AMPSS_M0,
1032 .dst = MSM_BUS_SLAVE_EBI_CH0,
1033 .ab = 0,
1034 .ib = 0,
1035 },
1036 {
1037 .src = MSM_BUS_MASTER_AMPSS_M0,
1038 .dst = MSM_BUS_SLAVE_EBI_CH0,
1039 .ab = 0,
1040 .ib = 0,
1041 },
1042};
1043static struct msm_bus_vectors vidc_venc_vga_vectors[] = {
1044 {
1045 .src = MSM_BUS_MASTER_VIDEO_ENC,
1046 .dst = MSM_BUS_SLAVE_EBI_CH0,
1047 .ab = 54525952,
1048 .ib = 436207616,
1049 },
1050 {
1051 .src = MSM_BUS_MASTER_VIDEO_DEC,
1052 .dst = MSM_BUS_SLAVE_EBI_CH0,
1053 .ab = 72351744,
1054 .ib = 289406976,
1055 },
1056 {
1057 .src = MSM_BUS_MASTER_AMPSS_M0,
1058 .dst = MSM_BUS_SLAVE_EBI_CH0,
1059 .ab = 500000,
1060 .ib = 1000000,
1061 },
1062 {
1063 .src = MSM_BUS_MASTER_AMPSS_M0,
1064 .dst = MSM_BUS_SLAVE_EBI_CH0,
1065 .ab = 500000,
1066 .ib = 1000000,
1067 },
1068};
1069static struct msm_bus_vectors vidc_vdec_vga_vectors[] = {
1070 {
1071 .src = MSM_BUS_MASTER_VIDEO_ENC,
1072 .dst = MSM_BUS_SLAVE_EBI_CH0,
1073 .ab = 40894464,
1074 .ib = 327155712,
1075 },
1076 {
1077 .src = MSM_BUS_MASTER_VIDEO_DEC,
1078 .dst = MSM_BUS_SLAVE_EBI_CH0,
1079 .ab = 48234496,
1080 .ib = 192937984,
1081 },
1082 {
1083 .src = MSM_BUS_MASTER_AMPSS_M0,
1084 .dst = MSM_BUS_SLAVE_EBI_CH0,
1085 .ab = 500000,
1086 .ib = 2000000,
1087 },
1088 {
1089 .src = MSM_BUS_MASTER_AMPSS_M0,
1090 .dst = MSM_BUS_SLAVE_EBI_CH0,
1091 .ab = 500000,
1092 .ib = 2000000,
1093 },
1094};
1095static struct msm_bus_vectors vidc_venc_720p_vectors[] = {
1096 {
1097 .src = MSM_BUS_MASTER_VIDEO_ENC,
1098 .dst = MSM_BUS_SLAVE_EBI_CH0,
1099 .ab = 163577856,
1100 .ib = 1308622848,
1101 },
1102 {
1103 .src = MSM_BUS_MASTER_VIDEO_DEC,
1104 .dst = MSM_BUS_SLAVE_EBI_CH0,
1105 .ab = 219152384,
1106 .ib = 876609536,
1107 },
1108 {
1109 .src = MSM_BUS_MASTER_AMPSS_M0,
1110 .dst = MSM_BUS_SLAVE_EBI_CH0,
1111 .ab = 1750000,
1112 .ib = 3500000,
1113 },
1114 {
1115 .src = MSM_BUS_MASTER_AMPSS_M0,
1116 .dst = MSM_BUS_SLAVE_EBI_CH0,
1117 .ab = 1750000,
1118 .ib = 3500000,
1119 },
1120};
1121static struct msm_bus_vectors vidc_vdec_720p_vectors[] = {
1122 {
1123 .src = MSM_BUS_MASTER_VIDEO_ENC,
1124 .dst = MSM_BUS_SLAVE_EBI_CH0,
1125 .ab = 121634816,
1126 .ib = 973078528,
1127 },
1128 {
1129 .src = MSM_BUS_MASTER_VIDEO_DEC,
1130 .dst = MSM_BUS_SLAVE_EBI_CH0,
1131 .ab = 155189248,
1132 .ib = 620756992,
1133 },
1134 {
1135 .src = MSM_BUS_MASTER_AMPSS_M0,
1136 .dst = MSM_BUS_SLAVE_EBI_CH0,
1137 .ab = 1750000,
1138 .ib = 7000000,
1139 },
1140 {
1141 .src = MSM_BUS_MASTER_AMPSS_M0,
1142 .dst = MSM_BUS_SLAVE_EBI_CH0,
1143 .ab = 1750000,
1144 .ib = 7000000,
1145 },
1146};
1147static struct msm_bus_vectors vidc_venc_1080p_vectors[] = {
1148 {
1149 .src = MSM_BUS_MASTER_VIDEO_ENC,
1150 .dst = MSM_BUS_SLAVE_EBI_CH0,
1151 .ab = 372244480,
1152 .ib = 2560000000U,
1153 },
1154 {
1155 .src = MSM_BUS_MASTER_VIDEO_DEC,
1156 .dst = MSM_BUS_SLAVE_EBI_CH0,
1157 .ab = 501219328,
1158 .ib = 2560000000U,
1159 },
1160 {
1161 .src = MSM_BUS_MASTER_AMPSS_M0,
1162 .dst = MSM_BUS_SLAVE_EBI_CH0,
1163 .ab = 2500000,
1164 .ib = 5000000,
1165 },
1166 {
1167 .src = MSM_BUS_MASTER_AMPSS_M0,
1168 .dst = MSM_BUS_SLAVE_EBI_CH0,
1169 .ab = 2500000,
1170 .ib = 5000000,
1171 },
1172};
1173static struct msm_bus_vectors vidc_vdec_1080p_vectors[] = {
1174 {
1175 .src = MSM_BUS_MASTER_VIDEO_ENC,
1176 .dst = MSM_BUS_SLAVE_EBI_CH0,
1177 .ab = 222298112,
1178 .ib = 2560000000U,
1179 },
1180 {
1181 .src = MSM_BUS_MASTER_VIDEO_DEC,
1182 .dst = MSM_BUS_SLAVE_EBI_CH0,
1183 .ab = 330301440,
1184 .ib = 2560000000U,
1185 },
1186 {
1187 .src = MSM_BUS_MASTER_AMPSS_M0,
1188 .dst = MSM_BUS_SLAVE_EBI_CH0,
1189 .ab = 2500000,
1190 .ib = 700000000,
1191 },
1192 {
1193 .src = MSM_BUS_MASTER_AMPSS_M0,
1194 .dst = MSM_BUS_SLAVE_EBI_CH0,
1195 .ab = 2500000,
1196 .ib = 10000000,
1197 },
1198};
1199
Arun Menon152c3c72012-06-20 11:50:08 -07001200static struct msm_bus_vectors vidc_venc_1080p_turbo_vectors[] = {
1201 {
1202 .src = MSM_BUS_MASTER_VIDEO_ENC,
1203 .dst = MSM_BUS_SLAVE_EBI_CH0,
1204 .ab = 222298112,
1205 .ib = 3522000000U,
1206 },
1207 {
1208 .src = MSM_BUS_MASTER_VIDEO_DEC,
1209 .dst = MSM_BUS_SLAVE_EBI_CH0,
1210 .ab = 330301440,
1211 .ib = 3522000000U,
1212 },
1213 {
1214 .src = MSM_BUS_MASTER_AMPSS_M0,
1215 .dst = MSM_BUS_SLAVE_EBI_CH0,
1216 .ab = 2500000,
1217 .ib = 700000000,
1218 },
1219 {
1220 .src = MSM_BUS_MASTER_AMPSS_M0,
1221 .dst = MSM_BUS_SLAVE_EBI_CH0,
1222 .ab = 2500000,
1223 .ib = 10000000,
1224 },
1225};
1226static struct msm_bus_vectors vidc_vdec_1080p_turbo_vectors[] = {
1227 {
1228 .src = MSM_BUS_MASTER_VIDEO_ENC,
1229 .dst = MSM_BUS_SLAVE_EBI_CH0,
1230 .ab = 222298112,
1231 .ib = 3522000000U,
1232 },
1233 {
1234 .src = MSM_BUS_MASTER_VIDEO_DEC,
1235 .dst = MSM_BUS_SLAVE_EBI_CH0,
1236 .ab = 330301440,
1237 .ib = 3522000000U,
1238 },
1239 {
1240 .src = MSM_BUS_MASTER_AMPSS_M0,
1241 .dst = MSM_BUS_SLAVE_EBI_CH0,
1242 .ab = 2500000,
1243 .ib = 700000000,
1244 },
1245 {
1246 .src = MSM_BUS_MASTER_AMPSS_M0,
1247 .dst = MSM_BUS_SLAVE_EBI_CH0,
1248 .ab = 2500000,
1249 .ib = 10000000,
1250 },
1251};
1252
Mohan Kumar Gubbihalli Lachma Naik7f72edd2012-02-06 17:26:47 -08001253static struct msm_bus_paths vidc_bus_client_config[] = {
1254 {
1255 ARRAY_SIZE(vidc_init_vectors),
1256 vidc_init_vectors,
1257 },
1258 {
1259 ARRAY_SIZE(vidc_venc_vga_vectors),
1260 vidc_venc_vga_vectors,
1261 },
1262 {
1263 ARRAY_SIZE(vidc_vdec_vga_vectors),
1264 vidc_vdec_vga_vectors,
1265 },
1266 {
1267 ARRAY_SIZE(vidc_venc_720p_vectors),
1268 vidc_venc_720p_vectors,
1269 },
1270 {
1271 ARRAY_SIZE(vidc_vdec_720p_vectors),
1272 vidc_vdec_720p_vectors,
1273 },
1274 {
1275 ARRAY_SIZE(vidc_venc_1080p_vectors),
1276 vidc_venc_1080p_vectors,
1277 },
1278 {
1279 ARRAY_SIZE(vidc_vdec_1080p_vectors),
1280 vidc_vdec_1080p_vectors,
1281 },
Arun Menon152c3c72012-06-20 11:50:08 -07001282 {
1283 ARRAY_SIZE(vidc_venc_1080p_turbo_vectors),
1284 vidc_venc_1080p_turbo_vectors,
1285 },
1286 {
1287 ARRAY_SIZE(vidc_vdec_1080p_turbo_vectors),
1288 vidc_vdec_1080p_turbo_vectors,
1289 },
Mohan Kumar Gubbihalli Lachma Naik7f72edd2012-02-06 17:26:47 -08001290};
1291
1292static struct msm_bus_scale_pdata vidc_bus_client_data = {
1293 vidc_bus_client_config,
1294 ARRAY_SIZE(vidc_bus_client_config),
1295 .name = "vidc",
1296};
1297#endif
1298
1299
1300#define APQ8064_VIDC_BASE_PHYS 0x04400000
1301#define APQ8064_VIDC_BASE_SIZE 0x00100000
1302
1303static struct resource apq8064_device_vidc_resources[] = {
1304 {
1305 .start = APQ8064_VIDC_BASE_PHYS,
1306 .end = APQ8064_VIDC_BASE_PHYS + APQ8064_VIDC_BASE_SIZE - 1,
1307 .flags = IORESOURCE_MEM,
1308 },
1309 {
1310 .start = VCODEC_IRQ,
1311 .end = VCODEC_IRQ,
1312 .flags = IORESOURCE_IRQ,
1313 },
1314};
1315
1316struct msm_vidc_platform_data apq8064_vidc_platform_data = {
1317#ifdef CONFIG_MSM_BUS_SCALING
1318 .vidc_bus_client_pdata = &vidc_bus_client_data,
1319#endif
1320#ifdef CONFIG_MSM_MULTIMEDIA_USE_ION
1321 .memtype = ION_CP_MM_HEAP_ID,
1322 .enable_ion = 1,
Deepak kotureda295a2012-05-10 19:49:46 -07001323 .cp_enabled = 1,
Mohan Kumar Gubbihalli Lachma Naik7f72edd2012-02-06 17:26:47 -08001324#else
1325 .memtype = MEMTYPE_EBI1,
1326 .enable_ion = 0,
1327#endif
1328 .disable_dmx = 0,
1329 .disable_fullhd = 0,
Mohan Kumar Gubbihalli Lachma Naiked9dc912012-03-01 19:11:14 -08001330 .cont_mode_dpb_count = 18,
Riaz Rahaman84f8c682012-05-30 13:32:10 +05301331 .fw_addr = 0x9fe00000,
Mohan Kumar Gubbihalli Lachma Naik7f72edd2012-02-06 17:26:47 -08001332};
1333
1334struct platform_device apq8064_msm_device_vidc = {
1335 .name = "msm_vidc",
1336 .id = 0,
1337 .num_resources = ARRAY_SIZE(apq8064_device_vidc_resources),
1338 .resource = apq8064_device_vidc_resources,
1339 .dev = {
1340 .platform_data = &apq8064_vidc_platform_data,
1341 },
1342};
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001343#define MSM_SDC1_BASE 0x12400000
1344#define MSM_SDC1_DML_BASE (MSM_SDC1_BASE + 0x800)
1345#define MSM_SDC1_BAM_BASE (MSM_SDC1_BASE + 0x2000)
1346#define MSM_SDC2_BASE 0x12140000
1347#define MSM_SDC2_DML_BASE (MSM_SDC2_BASE + 0x800)
1348#define MSM_SDC2_BAM_BASE (MSM_SDC2_BASE + 0x2000)
1349#define MSM_SDC3_BASE 0x12180000
1350#define MSM_SDC3_DML_BASE (MSM_SDC3_BASE + 0x800)
1351#define MSM_SDC3_BAM_BASE (MSM_SDC3_BASE + 0x2000)
1352#define MSM_SDC4_BASE 0x121C0000
1353#define MSM_SDC4_DML_BASE (MSM_SDC4_BASE + 0x800)
1354#define MSM_SDC4_BAM_BASE (MSM_SDC4_BASE + 0x2000)
1355
1356static struct resource resources_sdc1[] = {
1357 {
1358 .name = "core_mem",
1359 .flags = IORESOURCE_MEM,
1360 .start = MSM_SDC1_BASE,
1361 .end = MSM_SDC1_DML_BASE - 1,
1362 },
1363 {
1364 .name = "core_irq",
1365 .flags = IORESOURCE_IRQ,
1366 .start = SDC1_IRQ_0,
1367 .end = SDC1_IRQ_0
1368 },
1369#ifdef CONFIG_MMC_MSM_SPS_SUPPORT
1370 {
1371 .name = "sdcc_dml_addr",
1372 .start = MSM_SDC1_DML_BASE,
1373 .end = MSM_SDC1_BAM_BASE - 1,
1374 .flags = IORESOURCE_MEM,
1375 },
1376 {
1377 .name = "sdcc_bam_addr",
1378 .start = MSM_SDC1_BAM_BASE,
1379 .end = MSM_SDC1_BAM_BASE + (2 * SZ_4K) - 1,
1380 .flags = IORESOURCE_MEM,
1381 },
1382 {
1383 .name = "sdcc_bam_irq",
1384 .start = SDC1_BAM_IRQ,
1385 .end = SDC1_BAM_IRQ,
1386 .flags = IORESOURCE_IRQ,
1387 },
1388#endif
1389};
1390
1391static struct resource resources_sdc2[] = {
1392 {
1393 .name = "core_mem",
1394 .flags = IORESOURCE_MEM,
1395 .start = MSM_SDC2_BASE,
1396 .end = MSM_SDC2_DML_BASE - 1,
1397 },
1398 {
1399 .name = "core_irq",
1400 .flags = IORESOURCE_IRQ,
1401 .start = SDC2_IRQ_0,
1402 .end = SDC2_IRQ_0
1403 },
1404#ifdef CONFIG_MMC_MSM_SPS_SUPPORT
1405 {
1406 .name = "sdcc_dml_addr",
1407 .start = MSM_SDC2_DML_BASE,
1408 .end = MSM_SDC2_BAM_BASE - 1,
1409 .flags = IORESOURCE_MEM,
1410 },
1411 {
1412 .name = "sdcc_bam_addr",
1413 .start = MSM_SDC2_BAM_BASE,
1414 .end = MSM_SDC2_BAM_BASE + (2 * SZ_4K) - 1,
1415 .flags = IORESOURCE_MEM,
1416 },
1417 {
1418 .name = "sdcc_bam_irq",
1419 .start = SDC2_BAM_IRQ,
1420 .end = SDC2_BAM_IRQ,
1421 .flags = IORESOURCE_IRQ,
1422 },
1423#endif
1424};
1425
1426static struct resource resources_sdc3[] = {
1427 {
1428 .name = "core_mem",
1429 .flags = IORESOURCE_MEM,
1430 .start = MSM_SDC3_BASE,
1431 .end = MSM_SDC3_DML_BASE - 1,
1432 },
1433 {
1434 .name = "core_irq",
1435 .flags = IORESOURCE_IRQ,
1436 .start = SDC3_IRQ_0,
1437 .end = SDC3_IRQ_0
1438 },
1439#ifdef CONFIG_MMC_MSM_SPS_SUPPORT
1440 {
1441 .name = "sdcc_dml_addr",
1442 .start = MSM_SDC3_DML_BASE,
1443 .end = MSM_SDC3_BAM_BASE - 1,
1444 .flags = IORESOURCE_MEM,
1445 },
1446 {
1447 .name = "sdcc_bam_addr",
1448 .start = MSM_SDC3_BAM_BASE,
1449 .end = MSM_SDC3_BAM_BASE + (2 * SZ_4K) - 1,
1450 .flags = IORESOURCE_MEM,
1451 },
1452 {
1453 .name = "sdcc_bam_irq",
1454 .start = SDC3_BAM_IRQ,
1455 .end = SDC3_BAM_IRQ,
1456 .flags = IORESOURCE_IRQ,
1457 },
1458#endif
1459};
1460
1461static struct resource resources_sdc4[] = {
1462 {
1463 .name = "core_mem",
1464 .flags = IORESOURCE_MEM,
1465 .start = MSM_SDC4_BASE,
1466 .end = MSM_SDC4_DML_BASE - 1,
1467 },
1468 {
1469 .name = "core_irq",
1470 .flags = IORESOURCE_IRQ,
1471 .start = SDC4_IRQ_0,
1472 .end = SDC4_IRQ_0
1473 },
1474#ifdef CONFIG_MMC_MSM_SPS_SUPPORT
1475 {
1476 .name = "sdcc_dml_addr",
1477 .start = MSM_SDC4_DML_BASE,
1478 .end = MSM_SDC4_BAM_BASE - 1,
1479 .flags = IORESOURCE_MEM,
1480 },
1481 {
1482 .name = "sdcc_bam_addr",
1483 .start = MSM_SDC4_BAM_BASE,
1484 .end = MSM_SDC4_BAM_BASE + (2 * SZ_4K) - 1,
1485 .flags = IORESOURCE_MEM,
1486 },
1487 {
1488 .name = "sdcc_bam_irq",
1489 .start = SDC4_BAM_IRQ,
1490 .end = SDC4_BAM_IRQ,
1491 .flags = IORESOURCE_IRQ,
1492 },
1493#endif
1494};
1495
1496struct platform_device apq8064_device_sdc1 = {
1497 .name = "msm_sdcc",
1498 .id = 1,
1499 .num_resources = ARRAY_SIZE(resources_sdc1),
1500 .resource = resources_sdc1,
1501 .dev = {
1502 .coherent_dma_mask = 0xffffffff,
1503 },
1504};
1505
1506struct platform_device apq8064_device_sdc2 = {
1507 .name = "msm_sdcc",
1508 .id = 2,
1509 .num_resources = ARRAY_SIZE(resources_sdc2),
1510 .resource = resources_sdc2,
1511 .dev = {
1512 .coherent_dma_mask = 0xffffffff,
1513 },
1514};
1515
1516struct platform_device apq8064_device_sdc3 = {
1517 .name = "msm_sdcc",
1518 .id = 3,
1519 .num_resources = ARRAY_SIZE(resources_sdc3),
1520 .resource = resources_sdc3,
1521 .dev = {
1522 .coherent_dma_mask = 0xffffffff,
1523 },
1524};
1525
1526struct platform_device apq8064_device_sdc4 = {
1527 .name = "msm_sdcc",
1528 .id = 4,
1529 .num_resources = ARRAY_SIZE(resources_sdc4),
1530 .resource = resources_sdc4,
1531 .dev = {
1532 .coherent_dma_mask = 0xffffffff,
1533 },
1534};
1535
1536static struct platform_device *apq8064_sdcc_devices[] __initdata = {
1537 &apq8064_device_sdc1,
1538 &apq8064_device_sdc2,
1539 &apq8064_device_sdc3,
1540 &apq8064_device_sdc4,
1541};
1542
1543int __init apq8064_add_sdcc(unsigned int controller,
1544 struct mmc_platform_data *plat)
1545{
1546 struct platform_device *pdev;
1547
1548 if (!plat)
1549 return 0;
1550 if (controller < 1 || controller > 4)
1551 return -EINVAL;
1552
1553 pdev = apq8064_sdcc_devices[controller-1];
1554 pdev->dev.platform_data = plat;
1555 return platform_device_register(pdev);
1556}
1557
Yan He06913ce2011-08-26 16:33:46 -07001558static struct resource resources_sps[] = {
1559 {
1560 .name = "pipe_mem",
1561 .start = 0x12800000,
1562 .end = 0x12800000 + 0x4000 - 1,
1563 .flags = IORESOURCE_MEM,
1564 },
1565 {
1566 .name = "bamdma_dma",
1567 .start = 0x12240000,
1568 .end = 0x12240000 + 0x1000 - 1,
1569 .flags = IORESOURCE_MEM,
1570 },
1571 {
1572 .name = "bamdma_bam",
1573 .start = 0x12244000,
1574 .end = 0x12244000 + 0x4000 - 1,
1575 .flags = IORESOURCE_MEM,
1576 },
1577 {
1578 .name = "bamdma_irq",
1579 .start = SPS_BAM_DMA_IRQ,
1580 .end = SPS_BAM_DMA_IRQ,
1581 .flags = IORESOURCE_IRQ,
1582 },
1583};
1584
Gagan Mac8a7a5d32011-11-11 16:43:06 -07001585struct platform_device msm_bus_8064_sys_fabric = {
1586 .name = "msm_bus_fabric",
1587 .id = MSM_BUS_FAB_SYSTEM,
1588};
1589struct platform_device msm_bus_8064_apps_fabric = {
1590 .name = "msm_bus_fabric",
1591 .id = MSM_BUS_FAB_APPSS,
1592};
1593struct platform_device msm_bus_8064_mm_fabric = {
1594 .name = "msm_bus_fabric",
1595 .id = MSM_BUS_FAB_MMSS,
1596};
1597struct platform_device msm_bus_8064_sys_fpb = {
1598 .name = "msm_bus_fabric",
1599 .id = MSM_BUS_FAB_SYSTEM_FPB,
1600};
1601struct platform_device msm_bus_8064_cpss_fpb = {
1602 .name = "msm_bus_fabric",
1603 .id = MSM_BUS_FAB_CPSS_FPB,
1604};
1605
Yan He06913ce2011-08-26 16:33:46 -07001606static struct msm_sps_platform_data msm_sps_pdata = {
1607 .bamdma_restricted_pipes = 0x06,
1608};
1609
1610struct platform_device msm_device_sps_apq8064 = {
1611 .name = "msm_sps",
1612 .id = -1,
1613 .num_resources = ARRAY_SIZE(resources_sps),
1614 .resource = resources_sps,
1615 .dev.platform_data = &msm_sps_pdata,
1616};
1617
Eric Holmberg023d25c2012-03-01 12:27:55 -07001618static struct resource smd_resource[] = {
1619 {
1620 .name = "a9_m2a_0",
1621 .start = INT_A9_M2A_0,
1622 .flags = IORESOURCE_IRQ,
1623 },
1624 {
1625 .name = "a9_m2a_5",
1626 .start = INT_A9_M2A_5,
1627 .flags = IORESOURCE_IRQ,
1628 },
1629 {
1630 .name = "adsp_a11",
1631 .start = INT_ADSP_A11,
1632 .flags = IORESOURCE_IRQ,
1633 },
1634 {
1635 .name = "adsp_a11_smsm",
1636 .start = INT_ADSP_A11_SMSM,
1637 .flags = IORESOURCE_IRQ,
1638 },
1639 {
1640 .name = "dsps_a11",
1641 .start = INT_DSPS_A11,
1642 .flags = IORESOURCE_IRQ,
1643 },
1644 {
1645 .name = "dsps_a11_smsm",
1646 .start = INT_DSPS_A11_SMSM,
1647 .flags = IORESOURCE_IRQ,
1648 },
1649 {
1650 .name = "wcnss_a11",
1651 .start = INT_WCNSS_A11,
1652 .flags = IORESOURCE_IRQ,
1653 },
1654 {
1655 .name = "wcnss_a11_smsm",
1656 .start = INT_WCNSS_A11_SMSM,
1657 .flags = IORESOURCE_IRQ,
1658 },
1659};
1660
1661static struct smd_subsystem_config smd_config_list[] = {
1662 {
1663 .irq_config_id = SMD_MODEM,
1664 .subsys_name = "gss",
1665 .edge = SMD_APPS_MODEM,
1666
1667 .smd_int.irq_name = "a9_m2a_0",
1668 .smd_int.flags = IRQF_TRIGGER_RISING,
1669 .smd_int.irq_id = -1,
1670 .smd_int.device_name = "smd_dev",
1671 .smd_int.dev_id = 0,
1672 .smd_int.out_bit_pos = 1 << 3,
1673 .smd_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1674 .smd_int.out_offset = 0x8,
1675
1676 .smsm_int.irq_name = "a9_m2a_5",
1677 .smsm_int.flags = IRQF_TRIGGER_RISING,
1678 .smsm_int.irq_id = -1,
1679 .smsm_int.device_name = "smd_smsm",
1680 .smsm_int.dev_id = 0,
1681 .smsm_int.out_bit_pos = 1 << 4,
1682 .smsm_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1683 .smsm_int.out_offset = 0x8,
1684 },
1685 {
1686 .irq_config_id = SMD_Q6,
1687 .subsys_name = "q6",
1688 .edge = SMD_APPS_QDSP,
1689
1690 .smd_int.irq_name = "adsp_a11",
1691 .smd_int.flags = IRQF_TRIGGER_RISING,
1692 .smd_int.irq_id = -1,
1693 .smd_int.device_name = "smd_dev",
1694 .smd_int.dev_id = 0,
1695 .smd_int.out_bit_pos = 1 << 15,
1696 .smd_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1697 .smd_int.out_offset = 0x8,
1698
1699 .smsm_int.irq_name = "adsp_a11_smsm",
1700 .smsm_int.flags = IRQF_TRIGGER_RISING,
1701 .smsm_int.irq_id = -1,
1702 .smsm_int.device_name = "smd_smsm",
1703 .smsm_int.dev_id = 0,
1704 .smsm_int.out_bit_pos = 1 << 14,
1705 .smsm_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1706 .smsm_int.out_offset = 0x8,
1707 },
1708 {
1709 .irq_config_id = SMD_DSPS,
1710 .subsys_name = "dsps",
1711 .edge = SMD_APPS_DSPS,
1712
1713 .smd_int.irq_name = "dsps_a11",
1714 .smd_int.flags = IRQF_TRIGGER_RISING,
1715 .smd_int.irq_id = -1,
1716 .smd_int.device_name = "smd_dev",
1717 .smd_int.dev_id = 0,
1718 .smd_int.out_bit_pos = 1,
1719 .smd_int.out_base = (void __iomem *)MSM_SIC_NON_SECURE_BASE,
1720 .smd_int.out_offset = 0x4080,
1721
1722 .smsm_int.irq_name = "dsps_a11_smsm",
1723 .smsm_int.flags = IRQF_TRIGGER_RISING,
1724 .smsm_int.irq_id = -1,
1725 .smsm_int.device_name = "smd_smsm",
1726 .smsm_int.dev_id = 0,
1727 .smsm_int.out_bit_pos = 1,
1728 .smsm_int.out_base = (void __iomem *)MSM_SIC_NON_SECURE_BASE,
1729 .smsm_int.out_offset = 0x4094,
1730 },
1731 {
1732 .irq_config_id = SMD_WCNSS,
1733 .subsys_name = "wcnss",
1734 .edge = SMD_APPS_WCNSS,
1735
1736 .smd_int.irq_name = "wcnss_a11",
1737 .smd_int.flags = IRQF_TRIGGER_RISING,
1738 .smd_int.irq_id = -1,
1739 .smd_int.device_name = "smd_dev",
1740 .smd_int.dev_id = 0,
1741 .smd_int.out_bit_pos = 1 << 25,
1742 .smd_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1743 .smd_int.out_offset = 0x8,
1744
1745 .smsm_int.irq_name = "wcnss_a11_smsm",
1746 .smsm_int.flags = IRQF_TRIGGER_RISING,
1747 .smsm_int.irq_id = -1,
1748 .smsm_int.device_name = "smd_smsm",
1749 .smsm_int.dev_id = 0,
1750 .smsm_int.out_bit_pos = 1 << 23,
1751 .smsm_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1752 .smsm_int.out_offset = 0x8,
1753 },
1754};
1755
Eric Holmberg2bb6ccd2012-03-13 13:05:14 -06001756static struct smd_subsystem_restart_config smd_ssr_config = {
1757 .disable_smsm_reset_handshake = 1,
1758};
1759
Eric Holmberg023d25c2012-03-01 12:27:55 -07001760static struct smd_platform smd_platform_data = {
1761 .num_ss_configs = ARRAY_SIZE(smd_config_list),
1762 .smd_ss_configs = smd_config_list,
Eric Holmberg2bb6ccd2012-03-13 13:05:14 -06001763 .smd_ssr_config = &smd_ssr_config,
Eric Holmberg023d25c2012-03-01 12:27:55 -07001764};
1765
Jeff Hugo0c0f5e92011-09-28 13:55:45 -06001766struct platform_device msm_device_smd_apq8064 = {
1767 .name = "msm_smd",
1768 .id = -1,
Eric Holmberg023d25c2012-03-01 12:27:55 -07001769 .resource = smd_resource,
1770 .num_resources = ARRAY_SIZE(smd_resource),
1771 .dev = {
1772 .platform_data = &smd_platform_data,
1773 },
Jeff Hugo0c0f5e92011-09-28 13:55:45 -06001774};
1775
Niranjana Vishwanathapura06f89332012-05-03 17:11:13 -06001776static struct resource resources_msm_pcie[] = {
1777 {
Niranjana Vishwanathapura68210ff2012-06-24 18:03:49 -06001778 .name = "pcie_parf",
Niranjana Vishwanathapura06f89332012-05-03 17:11:13 -06001779 .start = PCIE20_PARF_PHYS,
1780 .end = PCIE20_PARF_PHYS + PCIE20_PARF_SIZE - 1,
1781 .flags = IORESOURCE_MEM,
1782 },
1783 {
Niranjana Vishwanathapura68210ff2012-06-24 18:03:49 -06001784 .name = "pcie_elbi",
Niranjana Vishwanathapura06f89332012-05-03 17:11:13 -06001785 .start = PCIE20_ELBI_PHYS,
1786 .end = PCIE20_ELBI_PHYS + PCIE20_ELBI_SIZE - 1,
1787 .flags = IORESOURCE_MEM,
1788 },
1789 {
1790 .name = "pcie20",
1791 .start = PCIE20_PHYS,
1792 .end = PCIE20_PHYS + PCIE20_SIZE - 1,
1793 .flags = IORESOURCE_MEM,
1794 },
Niranjana Vishwanathapura06f89332012-05-03 17:11:13 -06001795};
1796
1797struct platform_device msm_device_pcie = {
1798 .name = "msm_pcie",
1799 .id = -1,
1800 .num_resources = ARRAY_SIZE(resources_msm_pcie),
1801 .resource = resources_msm_pcie,
1802};
1803
Ramesh Masavarapuf46be1b2011-11-03 11:13:41 -07001804#ifdef CONFIG_HW_RANDOM_MSM
1805/* PRNG device */
1806#define MSM_PRNG_PHYS 0x1A500000
1807static struct resource rng_resources = {
1808 .flags = IORESOURCE_MEM,
1809 .start = MSM_PRNG_PHYS,
1810 .end = MSM_PRNG_PHYS + SZ_512 - 1,
1811};
1812
1813struct platform_device apq8064_device_rng = {
1814 .name = "msm_rng",
1815 .id = 0,
1816 .num_resources = 1,
1817 .resource = &rng_resources,
1818};
1819#endif
1820
Matt Wagantall292aace2012-01-26 19:12:34 -08001821static struct resource msm_gss_resources[] = {
1822 {
1823 .start = 0x10000000,
1824 .end = 0x10000000 + SZ_256 - 1,
1825 .flags = IORESOURCE_MEM,
1826 },
Matt Wagantall19ac4fd2012-02-03 20:18:23 -08001827 {
1828 .start = 0x10008000,
1829 .end = 0x10008000 + SZ_256 - 1,
1830 .flags = IORESOURCE_MEM,
1831 },
Matt Wagantall292aace2012-01-26 19:12:34 -08001832};
1833
1834struct platform_device msm_gss = {
1835 .name = "pil_gss",
1836 .id = -1,
1837 .num_resources = ARRAY_SIZE(msm_gss_resources),
1838 .resource = msm_gss_resources,
1839};
1840
Matt Wagantall1f65d9d2012-04-25 14:24:20 -07001841static struct fs_driver_data gfx3d_fs_data = {
1842 .clks = (struct fs_clk_data[]){
1843 { .name = "core_clk", .reset_rate = 27000000 },
1844 { .name = "iface_clk" },
1845 { .name = "bus_clk" },
1846 { 0 }
1847 },
1848 .bus_port0 = MSM_BUS_MASTER_GRAPHICS_3D,
1849 .bus_port1 = MSM_BUS_MASTER_GRAPHICS_3D_PORT1,
Matt Wagantall1875d322012-02-22 16:11:33 -08001850};
Matt Wagantall1f65d9d2012-04-25 14:24:20 -07001851
1852static struct fs_driver_data ijpeg_fs_data = {
1853 .clks = (struct fs_clk_data[]){
1854 { .name = "core_clk" },
1855 { .name = "iface_clk" },
1856 { .name = "bus_clk" },
1857 { 0 }
1858 },
1859 .bus_port0 = MSM_BUS_MASTER_JPEG_ENC,
1860};
1861
Nagamalleswararao Ganji6db8c512012-05-24 20:26:23 -07001862static struct fs_driver_data mdp_fs_data = {
1863 .clks = (struct fs_clk_data[]){
1864 { .name = "core_clk" },
1865 { .name = "iface_clk" },
1866 { .name = "bus_clk" },
1867 { .name = "vsync_clk" },
1868 { .name = "lut_clk" },
1869 { .name = "tv_src_clk" },
1870 { .name = "tv_clk" },
1871 { 0 }
1872 },
1873 .bus_port0 = MSM_BUS_MASTER_MDP_PORT0,
1874 .bus_port1 = MSM_BUS_MASTER_MDP_PORT1,
1875};
1876
Matt Wagantall1f65d9d2012-04-25 14:24:20 -07001877static struct fs_driver_data rot_fs_data = {
1878 .clks = (struct fs_clk_data[]){
1879 { .name = "core_clk" },
1880 { .name = "iface_clk" },
1881 { .name = "bus_clk" },
1882 { 0 }
1883 },
1884 .bus_port0 = MSM_BUS_MASTER_ROTATOR,
1885};
1886
1887static struct fs_driver_data ved_fs_data = {
1888 .clks = (struct fs_clk_data[]){
1889 { .name = "core_clk" },
1890 { .name = "iface_clk" },
1891 { .name = "bus_clk" },
1892 { 0 }
1893 },
1894 .bus_port0 = MSM_BUS_MASTER_VIDEO_ENC,
1895 .bus_port1 = MSM_BUS_MASTER_VIDEO_DEC,
1896};
1897
1898static struct fs_driver_data vfe_fs_data = {
1899 .clks = (struct fs_clk_data[]){
1900 { .name = "core_clk" },
1901 { .name = "iface_clk" },
1902 { .name = "bus_clk" },
1903 { 0 }
1904 },
1905 .bus_port0 = MSM_BUS_MASTER_VFE,
1906};
1907
1908static struct fs_driver_data vpe_fs_data = {
1909 .clks = (struct fs_clk_data[]){
1910 { .name = "core_clk" },
1911 { .name = "iface_clk" },
1912 { .name = "bus_clk" },
1913 { 0 }
1914 },
1915 .bus_port0 = MSM_BUS_MASTER_VPE,
1916};
1917
1918static struct fs_driver_data vcap_fs_data = {
1919 .clks = (struct fs_clk_data[]){
1920 { .name = "core_clk" },
1921 { .name = "iface_clk" },
1922 { .name = "bus_clk" },
1923 { 0 },
1924 },
1925 .bus_port0 = MSM_BUS_MASTER_VIDEO_CAP,
1926};
1927
1928struct platform_device *apq8064_footswitch[] __initdata = {
Nagamalleswararao Ganji6db8c512012-05-24 20:26:23 -07001929 FS_8X60(FS_MDP, "vdd", "mdp.0", &mdp_fs_data),
Matt Wagantall316f2fc2012-05-03 20:41:42 -07001930 FS_8X60(FS_ROT, "vdd", "msm_rotator.0", &rot_fs_data),
Matt Wagantalle4454b82012-05-03 20:48:01 -07001931 FS_8X60(FS_IJPEG, "vdd", "msm_gemini.0", &ijpeg_fs_data),
Kiran Kumar H Nfa18a032012-06-25 14:34:18 -07001932 FS_8X60(FS_VFE, "vdd", "msm_vfe.0", &vfe_fs_data),
1933 FS_8X60(FS_VPE, "vdd", "msm_vpe.0", &vpe_fs_data),
Matt Wagantalld6fbf232012-05-03 20:09:28 -07001934 FS_8X60(FS_GFX3D, "vdd", "kgsl-3d0.0", &gfx3d_fs_data),
Matt Wagantall5e46aac2012-05-03 20:20:18 -07001935 FS_8X60(FS_VED, "vdd", "msm_vidc.0", &ved_fs_data),
Matt Wagantall3cd5b3d2012-05-03 20:35:20 -07001936 FS_8X60(FS_VCAP, "vdd", "msm_vcap.0", &vcap_fs_data),
Matt Wagantall1f65d9d2012-04-25 14:24:20 -07001937};
1938unsigned apq8064_num_footswitch __initdata = ARRAY_SIZE(apq8064_footswitch);
Matt Wagantall1875d322012-02-22 16:11:33 -08001939
Praveen Chidambaram78499012011-11-01 17:15:17 -06001940struct msm_rpm_platform_data apq8064_rpm_data __initdata = {
1941 .reg_base_addrs = {
1942 [MSM_RPM_PAGE_STATUS] = MSM_RPM_BASE,
1943 [MSM_RPM_PAGE_CTRL] = MSM_RPM_BASE + 0x400,
1944 [MSM_RPM_PAGE_REQ] = MSM_RPM_BASE + 0x600,
1945 [MSM_RPM_PAGE_ACK] = MSM_RPM_BASE + 0xa00,
1946 },
1947 .irq_ack = RPM_APCC_CPU0_GP_HIGH_IRQ,
Stephen Boydf61255e2012-02-24 14:31:09 -08001948 .irq_err = RPM_APCC_CPU0_GP_LOW_IRQ,
Praveen Chidambarame396ce62012-03-30 11:15:57 -06001949 .irq_wakeup = RPM_APCC_CPU0_WAKE_UP_IRQ,
Praveen Chidambaram78499012011-11-01 17:15:17 -06001950 .ipc_rpm_reg = MSM_APCS_GCC_BASE + 0x008,
1951 .ipc_rpm_val = 4,
1952 .target_id = {
1953 MSM_RPM_MAP(8064, NOTIFICATION_CONFIGURED_0, NOTIFICATION, 4),
1954 MSM_RPM_MAP(8064, NOTIFICATION_REGISTERED_0, NOTIFICATION, 4),
1955 MSM_RPM_MAP(8064, INVALIDATE_0, INVALIDATE, 8),
1956 MSM_RPM_MAP(8064, TRIGGER_TIMED_TO, TRIGGER_TIMED, 1),
1957 MSM_RPM_MAP(8064, TRIGGER_TIMED_SCLK_COUNT, TRIGGER_TIMED, 1),
1958 MSM_RPM_MAP(8064, RPM_CTL, RPM_CTL, 1),
1959 MSM_RPM_MAP(8064, CXO_CLK, CXO_CLK, 1),
1960 MSM_RPM_MAP(8064, PXO_CLK, PXO_CLK, 1),
1961 MSM_RPM_MAP(8064, APPS_FABRIC_CLK, APPS_FABRIC_CLK, 1),
1962 MSM_RPM_MAP(8064, SYSTEM_FABRIC_CLK, SYSTEM_FABRIC_CLK, 1),
1963 MSM_RPM_MAP(8064, MM_FABRIC_CLK, MM_FABRIC_CLK, 1),
1964 MSM_RPM_MAP(8064, DAYTONA_FABRIC_CLK, DAYTONA_FABRIC_CLK, 1),
1965 MSM_RPM_MAP(8064, SFPB_CLK, SFPB_CLK, 1),
1966 MSM_RPM_MAP(8064, CFPB_CLK, CFPB_CLK, 1),
1967 MSM_RPM_MAP(8064, MMFPB_CLK, MMFPB_CLK, 1),
1968 MSM_RPM_MAP(8064, EBI1_CLK, EBI1_CLK, 1),
1969 MSM_RPM_MAP(8064, APPS_FABRIC_CFG_HALT_0,
1970 APPS_FABRIC_CFG_HALT, 2),
1971 MSM_RPM_MAP(8064, APPS_FABRIC_CFG_CLKMOD_0,
1972 APPS_FABRIC_CFG_CLKMOD, 3),
1973 MSM_RPM_MAP(8064, APPS_FABRIC_CFG_IOCTL,
1974 APPS_FABRIC_CFG_IOCTL, 1),
1975 MSM_RPM_MAP(8064, APPS_FABRIC_ARB_0, APPS_FABRIC_ARB, 12),
1976 MSM_RPM_MAP(8064, SYS_FABRIC_CFG_HALT_0,
1977 SYS_FABRIC_CFG_HALT, 2),
1978 MSM_RPM_MAP(8064, SYS_FABRIC_CFG_CLKMOD_0,
1979 SYS_FABRIC_CFG_CLKMOD, 3),
1980 MSM_RPM_MAP(8064, SYS_FABRIC_CFG_IOCTL,
1981 SYS_FABRIC_CFG_IOCTL, 1),
1982 MSM_RPM_MAP(8064, SYSTEM_FABRIC_ARB_0, SYSTEM_FABRIC_ARB, 30),
1983 MSM_RPM_MAP(8064, MMSS_FABRIC_CFG_HALT_0,
1984 MMSS_FABRIC_CFG_HALT, 2),
1985 MSM_RPM_MAP(8064, MMSS_FABRIC_CFG_CLKMOD_0,
1986 MMSS_FABRIC_CFG_CLKMOD, 3),
1987 MSM_RPM_MAP(8064, MMSS_FABRIC_CFG_IOCTL,
1988 MMSS_FABRIC_CFG_IOCTL, 1),
1989 MSM_RPM_MAP(8064, MM_FABRIC_ARB_0, MM_FABRIC_ARB, 21),
1990 MSM_RPM_MAP(8064, PM8921_S1_0, PM8921_S1, 2),
1991 MSM_RPM_MAP(8064, PM8921_S2_0, PM8921_S2, 2),
1992 MSM_RPM_MAP(8064, PM8921_S3_0, PM8921_S3, 2),
1993 MSM_RPM_MAP(8064, PM8921_S4_0, PM8921_S4, 2),
1994 MSM_RPM_MAP(8064, PM8921_S5_0, PM8921_S5, 2),
1995 MSM_RPM_MAP(8064, PM8921_S6_0, PM8921_S6, 2),
1996 MSM_RPM_MAP(8064, PM8921_S7_0, PM8921_S7, 2),
1997 MSM_RPM_MAP(8064, PM8921_S8_0, PM8921_S8, 2),
1998 MSM_RPM_MAP(8064, PM8921_L1_0, PM8921_L1, 2),
1999 MSM_RPM_MAP(8064, PM8921_L2_0, PM8921_L2, 2),
2000 MSM_RPM_MAP(8064, PM8921_L3_0, PM8921_L3, 2),
2001 MSM_RPM_MAP(8064, PM8921_L4_0, PM8921_L4, 2),
2002 MSM_RPM_MAP(8064, PM8921_L5_0, PM8921_L5, 2),
2003 MSM_RPM_MAP(8064, PM8921_L6_0, PM8921_L6, 2),
2004 MSM_RPM_MAP(8064, PM8921_L7_0, PM8921_L7, 2),
2005 MSM_RPM_MAP(8064, PM8921_L8_0, PM8921_L8, 2),
2006 MSM_RPM_MAP(8064, PM8921_L9_0, PM8921_L9, 2),
2007 MSM_RPM_MAP(8064, PM8921_L10_0, PM8921_L10, 2),
2008 MSM_RPM_MAP(8064, PM8921_L11_0, PM8921_L11, 2),
2009 MSM_RPM_MAP(8064, PM8921_L12_0, PM8921_L12, 2),
2010 MSM_RPM_MAP(8064, PM8921_L13_0, PM8921_L13, 2),
2011 MSM_RPM_MAP(8064, PM8921_L14_0, PM8921_L14, 2),
2012 MSM_RPM_MAP(8064, PM8921_L15_0, PM8921_L15, 2),
2013 MSM_RPM_MAP(8064, PM8921_L16_0, PM8921_L16, 2),
2014 MSM_RPM_MAP(8064, PM8921_L17_0, PM8921_L17, 2),
2015 MSM_RPM_MAP(8064, PM8921_L18_0, PM8921_L18, 2),
2016 MSM_RPM_MAP(8064, PM8921_L19_0, PM8921_L19, 2),
2017 MSM_RPM_MAP(8064, PM8921_L20_0, PM8921_L20, 2),
2018 MSM_RPM_MAP(8064, PM8921_L21_0, PM8921_L21, 2),
2019 MSM_RPM_MAP(8064, PM8921_L22_0, PM8921_L22, 2),
2020 MSM_RPM_MAP(8064, PM8921_L23_0, PM8921_L23, 2),
2021 MSM_RPM_MAP(8064, PM8921_L24_0, PM8921_L24, 2),
2022 MSM_RPM_MAP(8064, PM8921_L25_0, PM8921_L25, 2),
2023 MSM_RPM_MAP(8064, PM8921_L26_0, PM8921_L26, 2),
2024 MSM_RPM_MAP(8064, PM8921_L27_0, PM8921_L27, 2),
2025 MSM_RPM_MAP(8064, PM8921_L28_0, PM8921_L28, 2),
2026 MSM_RPM_MAP(8064, PM8921_L29_0, PM8921_L29, 2),
2027 MSM_RPM_MAP(8064, PM8921_CLK1_0, PM8921_CLK1, 2),
2028 MSM_RPM_MAP(8064, PM8921_CLK2_0, PM8921_CLK2, 2),
2029 MSM_RPM_MAP(8064, PM8921_LVS1, PM8921_LVS1, 1),
2030 MSM_RPM_MAP(8064, PM8921_LVS2, PM8921_LVS2, 1),
2031 MSM_RPM_MAP(8064, PM8921_LVS3, PM8921_LVS3, 1),
2032 MSM_RPM_MAP(8064, PM8921_LVS4, PM8921_LVS4, 1),
2033 MSM_RPM_MAP(8064, PM8921_LVS5, PM8921_LVS5, 1),
2034 MSM_RPM_MAP(8064, PM8921_LVS6, PM8921_LVS6, 1),
2035 MSM_RPM_MAP(8064, PM8921_LVS7, PM8921_LVS7, 1),
2036 MSM_RPM_MAP(8064, PM8821_S1_0, PM8821_S1, 2),
2037 MSM_RPM_MAP(8064, PM8821_S2_0, PM8821_S2, 2),
2038 MSM_RPM_MAP(8064, PM8821_L1_0, PM8821_L1, 2),
2039 MSM_RPM_MAP(8064, NCP_0, NCP, 2),
2040 MSM_RPM_MAP(8064, CXO_BUFFERS, CXO_BUFFERS, 1),
2041 MSM_RPM_MAP(8064, USB_OTG_SWITCH, USB_OTG_SWITCH, 1),
2042 MSM_RPM_MAP(8064, HDMI_SWITCH, HDMI_SWITCH, 1),
2043 MSM_RPM_MAP(8064, DDR_DMM_0, DDR_DMM, 2),
2044 MSM_RPM_MAP(8064, QDSS_CLK, QDSS_CLK, 1),
Joel Kingef390842012-05-23 16:42:48 -07002045 MSM_RPM_MAP(8064, VDDMIN_GPIO, VDDMIN_GPIO, 1),
Praveen Chidambaram78499012011-11-01 17:15:17 -06002046 },
2047 .target_status = {
2048 MSM_RPM_STATUS_ID_MAP(8064, VERSION_MAJOR),
2049 MSM_RPM_STATUS_ID_MAP(8064, VERSION_MINOR),
2050 MSM_RPM_STATUS_ID_MAP(8064, VERSION_BUILD),
2051 MSM_RPM_STATUS_ID_MAP(8064, SUPPORTED_RESOURCES_0),
2052 MSM_RPM_STATUS_ID_MAP(8064, SUPPORTED_RESOURCES_1),
2053 MSM_RPM_STATUS_ID_MAP(8064, SUPPORTED_RESOURCES_2),
2054 MSM_RPM_STATUS_ID_MAP(8064, RESERVED_SUPPORTED_RESOURCES_0),
2055 MSM_RPM_STATUS_ID_MAP(8064, SEQUENCE),
2056 MSM_RPM_STATUS_ID_MAP(8064, RPM_CTL),
2057 MSM_RPM_STATUS_ID_MAP(8064, CXO_CLK),
2058 MSM_RPM_STATUS_ID_MAP(8064, PXO_CLK),
2059 MSM_RPM_STATUS_ID_MAP(8064, APPS_FABRIC_CLK),
2060 MSM_RPM_STATUS_ID_MAP(8064, SYSTEM_FABRIC_CLK),
2061 MSM_RPM_STATUS_ID_MAP(8064, MM_FABRIC_CLK),
2062 MSM_RPM_STATUS_ID_MAP(8064, DAYTONA_FABRIC_CLK),
2063 MSM_RPM_STATUS_ID_MAP(8064, SFPB_CLK),
2064 MSM_RPM_STATUS_ID_MAP(8064, CFPB_CLK),
2065 MSM_RPM_STATUS_ID_MAP(8064, MMFPB_CLK),
2066 MSM_RPM_STATUS_ID_MAP(8064, EBI1_CLK),
2067 MSM_RPM_STATUS_ID_MAP(8064, APPS_FABRIC_CFG_HALT),
2068 MSM_RPM_STATUS_ID_MAP(8064, APPS_FABRIC_CFG_CLKMOD),
2069 MSM_RPM_STATUS_ID_MAP(8064, APPS_FABRIC_CFG_IOCTL),
2070 MSM_RPM_STATUS_ID_MAP(8064, APPS_FABRIC_ARB),
2071 MSM_RPM_STATUS_ID_MAP(8064, SYS_FABRIC_CFG_HALT),
2072 MSM_RPM_STATUS_ID_MAP(8064, SYS_FABRIC_CFG_CLKMOD),
2073 MSM_RPM_STATUS_ID_MAP(8064, SYS_FABRIC_CFG_IOCTL),
2074 MSM_RPM_STATUS_ID_MAP(8064, SYSTEM_FABRIC_ARB),
2075 MSM_RPM_STATUS_ID_MAP(8064, MMSS_FABRIC_CFG_HALT),
2076 MSM_RPM_STATUS_ID_MAP(8064, MMSS_FABRIC_CFG_CLKMOD),
2077 MSM_RPM_STATUS_ID_MAP(8064, MMSS_FABRIC_CFG_IOCTL),
2078 MSM_RPM_STATUS_ID_MAP(8064, MM_FABRIC_ARB),
2079 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S1_0),
2080 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S1_1),
2081 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S2_0),
2082 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S2_1),
2083 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S3_0),
2084 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S3_1),
2085 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S4_0),
2086 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S4_1),
2087 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S5_0),
2088 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S5_1),
2089 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S6_0),
2090 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S6_1),
2091 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S7_0),
2092 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S7_1),
2093 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S8_0),
2094 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S8_1),
2095 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L1_0),
2096 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L1_1),
2097 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L2_0),
2098 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L2_1),
2099 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L3_0),
2100 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L3_1),
2101 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L4_0),
2102 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L4_1),
2103 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L5_0),
2104 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L5_1),
2105 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L6_0),
2106 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L6_1),
2107 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L7_0),
2108 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L7_1),
2109 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L8_0),
2110 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L8_1),
2111 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L9_0),
2112 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L9_1),
2113 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L10_0),
2114 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L10_1),
2115 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L11_0),
2116 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L11_1),
2117 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L12_0),
2118 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L12_1),
2119 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L13_0),
2120 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L13_1),
2121 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L14_0),
2122 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L14_1),
2123 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L15_0),
2124 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L15_1),
2125 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L16_0),
2126 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L16_1),
2127 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L17_0),
2128 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L17_1),
2129 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L18_0),
2130 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L18_1),
2131 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L19_0),
2132 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L19_1),
2133 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L20_0),
2134 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L20_1),
2135 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L21_0),
2136 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L21_1),
2137 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L22_0),
2138 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L22_1),
2139 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L23_0),
2140 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L23_1),
2141 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L24_0),
2142 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L24_1),
2143 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L25_0),
2144 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L25_1),
2145 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L26_0),
2146 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L26_1),
2147 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L27_0),
2148 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L27_1),
2149 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L28_0),
2150 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L28_1),
2151 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L29_0),
2152 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L29_1),
2153 MSM_RPM_STATUS_ID_MAP(8064, PM8921_CLK1_0),
2154 MSM_RPM_STATUS_ID_MAP(8064, PM8921_CLK1_1),
2155 MSM_RPM_STATUS_ID_MAP(8064, PM8921_CLK2_0),
2156 MSM_RPM_STATUS_ID_MAP(8064, PM8921_CLK2_1),
2157 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS1),
2158 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS2),
2159 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS3),
2160 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS4),
2161 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS5),
2162 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS6),
2163 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS7),
2164 MSM_RPM_STATUS_ID_MAP(8064, NCP_0),
2165 MSM_RPM_STATUS_ID_MAP(8064, NCP_1),
2166 MSM_RPM_STATUS_ID_MAP(8064, CXO_BUFFERS),
2167 MSM_RPM_STATUS_ID_MAP(8064, USB_OTG_SWITCH),
2168 MSM_RPM_STATUS_ID_MAP(8064, HDMI_SWITCH),
2169 MSM_RPM_STATUS_ID_MAP(8064, DDR_DMM_0),
2170 MSM_RPM_STATUS_ID_MAP(8064, DDR_DMM_1),
2171 MSM_RPM_STATUS_ID_MAP(8064, EBI1_CH0_RANGE),
2172 MSM_RPM_STATUS_ID_MAP(8064, EBI1_CH1_RANGE),
2173 MSM_RPM_STATUS_ID_MAP(8064, PM8821_S1_0),
2174 MSM_RPM_STATUS_ID_MAP(8064, PM8821_S1_1),
2175 MSM_RPM_STATUS_ID_MAP(8064, PM8821_S2_0),
2176 MSM_RPM_STATUS_ID_MAP(8064, PM8821_S2_1),
2177 MSM_RPM_STATUS_ID_MAP(8064, PM8821_L1_0),
2178 MSM_RPM_STATUS_ID_MAP(8064, PM8821_L1_1),
Joel Kingef390842012-05-23 16:42:48 -07002179 MSM_RPM_STATUS_ID_MAP(8064, VDDMIN_GPIO),
Praveen Chidambaram78499012011-11-01 17:15:17 -06002180 },
2181 .target_ctrl_id = {
2182 MSM_RPM_CTRL_MAP(8064, VERSION_MAJOR),
2183 MSM_RPM_CTRL_MAP(8064, VERSION_MINOR),
2184 MSM_RPM_CTRL_MAP(8064, VERSION_BUILD),
2185 MSM_RPM_CTRL_MAP(8064, REQ_CTX_0),
2186 MSM_RPM_CTRL_MAP(8064, REQ_SEL_0),
2187 MSM_RPM_CTRL_MAP(8064, ACK_CTX_0),
2188 MSM_RPM_CTRL_MAP(8064, ACK_SEL_0),
2189 },
2190 .sel_invalidate = MSM_RPM_8064_SEL_INVALIDATE,
2191 .sel_notification = MSM_RPM_8064_SEL_NOTIFICATION,
2192 .sel_last = MSM_RPM_8064_SEL_LAST,
2193 .ver = {3, 0, 0},
2194};
2195
2196struct platform_device apq8064_rpm_device = {
2197 .name = "msm_rpm",
2198 .id = -1,
2199};
2200
2201static struct msm_rpmstats_platform_data msm_rpm_stat_pdata = {
2202 .phys_addr_base = 0x0010D204,
2203 .phys_size = SZ_8K,
2204};
2205
2206struct platform_device apq8064_rpm_stat_device = {
2207 .name = "msm_rpm_stat",
2208 .id = -1,
2209 .dev = {
2210 .platform_data = &msm_rpm_stat_pdata,
2211 },
2212};
2213
2214static struct msm_rpm_log_platform_data msm_rpm_log_pdata = {
2215 .phys_addr_base = 0x0010C000,
2216 .reg_offsets = {
2217 [MSM_RPM_LOG_PAGE_INDICES] = 0x00000080,
2218 [MSM_RPM_LOG_PAGE_BUFFER] = 0x000000A0,
2219 },
2220 .phys_size = SZ_8K,
2221 .log_len = 4096, /* log's buffer length in bytes */
2222 .log_len_mask = (4096 >> 2) - 1, /* length mask in units of u32 */
2223};
2224
2225struct platform_device apq8064_rpm_log_device = {
2226 .name = "msm_rpm_log",
2227 .id = -1,
2228 .dev = {
2229 .platform_data = &msm_rpm_log_pdata,
2230 },
2231};
2232
Jin Hongd3024e62012-02-09 16:13:32 -08002233/* Sensors DSPS platform data */
2234
karthik karuppasamy1a1c6b02012-05-29 15:16:32 -07002235#define PPSS_DSPS_TCM_CODE_BASE 0x12000000
2236#define PPSS_DSPS_TCM_CODE_SIZE 0x28000
2237#define PPSS_DSPS_TCM_BUF_BASE 0x12040000
2238#define PPSS_DSPS_TCM_BUF_SIZE 0x4000
2239#define PPSS_DSPS_PIPE_BASE 0x12800000
2240#define PPSS_DSPS_PIPE_SIZE 0x4000
2241#define PPSS_DSPS_DDR_BASE 0x8fe00000
2242#define PPSS_DSPS_DDR_SIZE 0x100000
2243#define PPSS_SMEM_BASE 0x80000000
2244#define PPSS_SMEM_SIZE 0x200000
Jin Hongd3024e62012-02-09 16:13:32 -08002245#define PPSS_REG_PHYS_BASE 0x12080000
2246
2247static struct dsps_clk_info dsps_clks[] = {};
2248static struct dsps_regulator_info dsps_regs[] = {};
2249
2250/*
2251 * Note: GPIOs field is intialized in run-time at the function
2252 * apq8064_init_dsps().
2253 */
2254
2255struct msm_dsps_platform_data msm_dsps_pdata_8064 = {
2256 .clks = dsps_clks,
2257 .clks_num = ARRAY_SIZE(dsps_clks),
2258 .gpios = NULL,
2259 .gpios_num = 0,
2260 .regs = dsps_regs,
2261 .regs_num = ARRAY_SIZE(dsps_regs),
2262 .dsps_pwr_ctl_en = 1,
karthik karuppasamy1a1c6b02012-05-29 15:16:32 -07002263 .tcm_code_start = PPSS_DSPS_TCM_CODE_BASE,
2264 .tcm_code_size = PPSS_DSPS_TCM_CODE_SIZE,
2265 .tcm_buf_start = PPSS_DSPS_TCM_BUF_BASE,
2266 .tcm_buf_size = PPSS_DSPS_TCM_BUF_SIZE,
2267 .pipe_start = PPSS_DSPS_PIPE_BASE,
2268 .pipe_size = PPSS_DSPS_PIPE_SIZE,
2269 .ddr_start = PPSS_DSPS_DDR_BASE,
2270 .ddr_size = PPSS_DSPS_DDR_SIZE,
2271 .smem_start = PPSS_SMEM_BASE,
2272 .smem_size = PPSS_SMEM_SIZE,
Jin Hongd3024e62012-02-09 16:13:32 -08002273 .signature = DSPS_SIGNATURE,
2274};
2275
2276static struct resource msm_dsps_resources[] = {
2277 {
2278 .start = PPSS_REG_PHYS_BASE,
2279 .end = PPSS_REG_PHYS_BASE + SZ_8K - 1,
2280 .name = "ppss_reg",
2281 .flags = IORESOURCE_MEM,
2282 },
2283
2284 {
2285 .start = PPSS_WDOG_TIMER_IRQ,
2286 .end = PPSS_WDOG_TIMER_IRQ,
2287 .name = "ppss_wdog",
2288 .flags = IORESOURCE_IRQ,
2289 },
2290};
2291
2292struct platform_device msm_dsps_device_8064 = {
2293 .name = "msm_dsps",
2294 .id = 0,
2295 .num_resources = ARRAY_SIZE(msm_dsps_resources),
2296 .resource = msm_dsps_resources,
2297 .dev.platform_data = &msm_dsps_pdata_8064,
2298};
2299
Praveen Chidambaram78499012011-11-01 17:15:17 -06002300#ifdef CONFIG_MSM_MPM
2301static uint16_t msm_mpm_irqs_m2a[MSM_MPM_NR_MPM_IRQS] __initdata = {
2302 [1] = MSM_GPIO_TO_INT(26),
2303 [2] = MSM_GPIO_TO_INT(88),
2304 [4] = MSM_GPIO_TO_INT(73),
2305 [5] = MSM_GPIO_TO_INT(74),
2306 [6] = MSM_GPIO_TO_INT(75),
2307 [7] = MSM_GPIO_TO_INT(76),
2308 [8] = MSM_GPIO_TO_INT(77),
2309 [9] = MSM_GPIO_TO_INT(36),
2310 [10] = MSM_GPIO_TO_INT(84),
2311 [11] = MSM_GPIO_TO_INT(7),
2312 [12] = MSM_GPIO_TO_INT(11),
2313 [13] = MSM_GPIO_TO_INT(52),
2314 [14] = MSM_GPIO_TO_INT(15),
2315 [15] = MSM_GPIO_TO_INT(83),
2316 [16] = USB3_HS_IRQ,
2317 [19] = MSM_GPIO_TO_INT(61),
2318 [20] = MSM_GPIO_TO_INT(58),
2319 [23] = MSM_GPIO_TO_INT(65),
2320 [24] = MSM_GPIO_TO_INT(63),
2321 [25] = USB1_HS_IRQ,
2322 [27] = HDMI_IRQ,
2323 [29] = MSM_GPIO_TO_INT(22),
2324 [30] = MSM_GPIO_TO_INT(72),
2325 [31] = USB4_HS_IRQ,
2326 [33] = MSM_GPIO_TO_INT(44),
2327 [34] = MSM_GPIO_TO_INT(39),
2328 [35] = MSM_GPIO_TO_INT(19),
2329 [36] = MSM_GPIO_TO_INT(23),
2330 [37] = MSM_GPIO_TO_INT(41),
2331 [38] = MSM_GPIO_TO_INT(30),
2332 [41] = MSM_GPIO_TO_INT(42),
2333 [42] = MSM_GPIO_TO_INT(56),
2334 [43] = MSM_GPIO_TO_INT(55),
2335 [44] = MSM_GPIO_TO_INT(50),
2336 [45] = MSM_GPIO_TO_INT(49),
2337 [46] = MSM_GPIO_TO_INT(47),
2338 [47] = MSM_GPIO_TO_INT(45),
2339 [48] = MSM_GPIO_TO_INT(38),
2340 [49] = MSM_GPIO_TO_INT(34),
2341 [50] = MSM_GPIO_TO_INT(32),
2342 [51] = MSM_GPIO_TO_INT(29),
2343 [52] = MSM_GPIO_TO_INT(18),
2344 [53] = MSM_GPIO_TO_INT(10),
2345 [54] = MSM_GPIO_TO_INT(81),
2346 [55] = MSM_GPIO_TO_INT(6),
Jaeseong GIMe630a592012-07-09 18:28:39 -07002347 [56] = MSM_GPIO_TO_INT(82),
Praveen Chidambaram78499012011-11-01 17:15:17 -06002348};
2349
2350static uint16_t msm_mpm_bypassed_apps_irqs[] __initdata = {
2351 TLMM_MSM_SUMMARY_IRQ,
2352 RPM_APCC_CPU0_GP_HIGH_IRQ,
2353 RPM_APCC_CPU0_GP_MEDIUM_IRQ,
2354 RPM_APCC_CPU0_GP_LOW_IRQ,
2355 RPM_APCC_CPU0_WAKE_UP_IRQ,
2356 RPM_APCC_CPU1_GP_HIGH_IRQ,
2357 RPM_APCC_CPU1_GP_MEDIUM_IRQ,
2358 RPM_APCC_CPU1_GP_LOW_IRQ,
2359 RPM_APCC_CPU1_WAKE_UP_IRQ,
2360 MSS_TO_APPS_IRQ_0,
2361 MSS_TO_APPS_IRQ_1,
2362 MSS_TO_APPS_IRQ_2,
2363 MSS_TO_APPS_IRQ_3,
2364 MSS_TO_APPS_IRQ_4,
2365 MSS_TO_APPS_IRQ_5,
2366 MSS_TO_APPS_IRQ_6,
2367 MSS_TO_APPS_IRQ_7,
2368 MSS_TO_APPS_IRQ_8,
2369 MSS_TO_APPS_IRQ_9,
2370 LPASS_SCSS_GP_LOW_IRQ,
2371 LPASS_SCSS_GP_MEDIUM_IRQ,
2372 LPASS_SCSS_GP_HIGH_IRQ,
2373 SPS_MTI_30,
2374 SPS_MTI_31,
2375 RIVA_APSS_SPARE_IRQ,
2376 RIVA_APPS_WLAN_SMSM_IRQ,
2377 RIVA_APPS_WLAN_RX_DATA_AVAIL_IRQ,
2378 RIVA_APPS_WLAN_DATA_XFER_DONE_IRQ,
Chandra Ramachandran59851722012-07-23 11:19:48 -07002379 PM8821_SEC_IRQ_N,
Praveen Chidambaram78499012011-11-01 17:15:17 -06002380};
2381
2382struct msm_mpm_device_data apq8064_mpm_dev_data __initdata = {
2383 .irqs_m2a = msm_mpm_irqs_m2a,
2384 .irqs_m2a_size = ARRAY_SIZE(msm_mpm_irqs_m2a),
2385 .bypassed_apps_irqs = msm_mpm_bypassed_apps_irqs,
2386 .bypassed_apps_irqs_size = ARRAY_SIZE(msm_mpm_bypassed_apps_irqs),
2387 .mpm_request_reg_base = MSM_RPM_BASE + 0x9d8,
2388 .mpm_status_reg_base = MSM_RPM_BASE + 0xdf8,
2389 .mpm_apps_ipc_reg = MSM_APCS_GCC_BASE + 0x008,
2390 .mpm_apps_ipc_val = BIT(1),
2391 .mpm_ipc_irq = RPM_APCC_CPU0_GP_MEDIUM_IRQ,
2392
2393};
2394#endif
Joel Kingdacbc822012-01-25 13:30:57 -08002395
Joel King14fe7fa2012-05-27 14:26:11 -07002396/* AP2MDM_SOFT_RESET is implemented by the PON_RESET_N gpio */
Joel Kingdacbc822012-01-25 13:30:57 -08002397#define MDM2AP_ERRFATAL 19
2398#define AP2MDM_ERRFATAL 18
2399#define MDM2AP_STATUS 49
2400#define AP2MDM_STATUS 48
Joel King14fe7fa2012-05-27 14:26:11 -07002401#define AP2MDM_SOFT_RESET 27
Vamsi Krishna9e307cd2012-04-11 13:15:36 -07002402#define AP2MDM_WAKEUP 35
Vamsi Krishnac6dcd5e2012-05-09 15:38:01 -07002403#define MDM2AP_PBLRDY 46
Joel Kingdacbc822012-01-25 13:30:57 -08002404
2405static struct resource mdm_resources[] = {
2406 {
2407 .start = MDM2AP_ERRFATAL,
2408 .end = MDM2AP_ERRFATAL,
2409 .name = "MDM2AP_ERRFATAL",
2410 .flags = IORESOURCE_IO,
2411 },
2412 {
2413 .start = AP2MDM_ERRFATAL,
2414 .end = AP2MDM_ERRFATAL,
2415 .name = "AP2MDM_ERRFATAL",
2416 .flags = IORESOURCE_IO,
2417 },
2418 {
2419 .start = MDM2AP_STATUS,
2420 .end = MDM2AP_STATUS,
2421 .name = "MDM2AP_STATUS",
2422 .flags = IORESOURCE_IO,
2423 },
2424 {
2425 .start = AP2MDM_STATUS,
2426 .end = AP2MDM_STATUS,
2427 .name = "AP2MDM_STATUS",
2428 .flags = IORESOURCE_IO,
2429 },
2430 {
Joel King14fe7fa2012-05-27 14:26:11 -07002431 .start = AP2MDM_SOFT_RESET,
2432 .end = AP2MDM_SOFT_RESET,
2433 .name = "AP2MDM_SOFT_RESET",
Joel Kingdacbc822012-01-25 13:30:57 -08002434 .flags = IORESOURCE_IO,
2435 },
Vamsi Krishna9e307cd2012-04-11 13:15:36 -07002436 {
2437 .start = AP2MDM_WAKEUP,
2438 .end = AP2MDM_WAKEUP,
2439 .name = "AP2MDM_WAKEUP",
2440 .flags = IORESOURCE_IO,
2441 },
Vamsi Krishnac6dcd5e2012-05-09 15:38:01 -07002442 {
2443 .start = MDM2AP_PBLRDY,
2444 .end = MDM2AP_PBLRDY,
2445 .name = "MDM2AP_PBLRDY",
2446 .flags = IORESOURCE_IO,
2447 },
Joel Kingdacbc822012-01-25 13:30:57 -08002448};
2449
2450struct platform_device mdm_8064_device = {
2451 .name = "mdm2_modem",
2452 .id = -1,
2453 .num_resources = ARRAY_SIZE(mdm_resources),
2454 .resource = mdm_resources,
2455};
Praveen Chidambaram8ea3dcd2011-12-07 14:46:31 -07002456
2457static int apq8064_LPM_latency = 1000; /* >100 usec for WFI */
2458
2459struct platform_device apq8064_cpu_idle_device = {
2460 .name = "msm_cpu_idle",
2461 .id = -1,
2462 .dev = {
2463 .platform_data = &apq8064_LPM_latency,
2464 },
2465};
Praveen Chidambaram5c8adf22012-02-23 18:44:37 -07002466
2467static struct msm_dcvs_freq_entry apq8064_freq[] = {
2468 { 384000, 166981, 345600},
2469 { 702000, 213049, 632502},
2470 {1026000, 285712, 925613},
2471 {1242000, 383945, 1176550},
2472 {1458000, 419729, 1465478},
2473 {1512000, 434116, 1546674},
2474
2475};
2476
2477static struct msm_dcvs_core_info apq8064_core_info = {
2478 .freq_tbl = &apq8064_freq[0],
2479 .core_param = {
2480 .max_time_us = 100000,
2481 .num_freq = ARRAY_SIZE(apq8064_freq),
2482 },
2483 .algo_param = {
2484 .slack_time_us = 58000,
2485 .scale_slack_time = 0,
2486 .scale_slack_time_pct = 0,
2487 .disable_pc_threshold = 1458000,
2488 .em_window_size = 100000,
2489 .em_max_util_pct = 97,
2490 .ss_window_size = 1000000,
2491 .ss_util_pct = 95,
2492 .ss_iobusy_conv = 100,
2493 },
2494};
2495
2496struct platform_device apq8064_msm_gov_device = {
2497 .name = "msm_dcvs_gov",
2498 .id = -1,
2499 .dev = {
2500 .platform_data = &apq8064_core_info,
2501 },
2502};
Stepan Moskovchenko28662c52012-03-01 12:48:45 -08002503
Terence Hampson2e1705f2012-04-11 19:55:29 -04002504#ifdef CONFIG_MSM_VCAP
2505#define VCAP_HW_BASE 0x05900000
2506
2507static struct msm_bus_vectors vcap_init_vectors[] = {
2508 {
2509 .src = MSM_BUS_MASTER_VIDEO_CAP,
2510 .dst = MSM_BUS_SLAVE_EBI_CH0,
2511 .ab = 0,
2512 .ib = 0,
2513 },
2514};
2515
Terence Hampson2e1705f2012-04-11 19:55:29 -04002516static struct msm_bus_vectors vcap_480_vectors[] = {
2517 {
2518 .src = MSM_BUS_MASTER_VIDEO_CAP,
2519 .dst = MSM_BUS_SLAVE_EBI_CH0,
Terence Hampson779dc762012-06-07 15:59:27 -04002520 .ab = 480 * 720 * 3 * 60,
2521 .ib = 480 * 720 * 3 * 60 * 1.5,
2522 },
2523};
2524
2525static struct msm_bus_vectors vcap_576_vectors[] = {
2526 {
2527 .src = MSM_BUS_MASTER_VIDEO_CAP,
2528 .dst = MSM_BUS_SLAVE_EBI_CH0,
2529 .ab = 576 * 720 * 3 * 60,
2530 .ib = 576 * 720 * 3 * 60 * 1.5,
Terence Hampson2e1705f2012-04-11 19:55:29 -04002531 },
2532};
2533
2534static struct msm_bus_vectors vcap_720_vectors[] = {
2535 {
2536 .src = MSM_BUS_MASTER_VIDEO_CAP,
2537 .dst = MSM_BUS_SLAVE_EBI_CH0,
Terence Hampson35a1ff02012-04-25 17:07:18 -04002538 .ab = 1280 * 720 * 3 * 60,
2539 .ib = 1280 * 720 * 3 * 60 * 1.5,
Terence Hampson2e1705f2012-04-11 19:55:29 -04002540 },
2541};
2542
2543static struct msm_bus_vectors vcap_1080_vectors[] = {
2544 {
2545 .src = MSM_BUS_MASTER_VIDEO_CAP,
2546 .dst = MSM_BUS_SLAVE_EBI_CH0,
Terence Hampson35a1ff02012-04-25 17:07:18 -04002547 .ab = 1920 * 1080 * 3 * 60,
2548 .ib = 1920 * 1080 * 3 * 60 * 1.5,
Terence Hampson2e1705f2012-04-11 19:55:29 -04002549 },
2550};
2551
2552static struct msm_bus_paths vcap_bus_usecases[] = {
2553 {
2554 ARRAY_SIZE(vcap_init_vectors),
2555 vcap_init_vectors,
2556 },
2557 {
2558 ARRAY_SIZE(vcap_480_vectors),
2559 vcap_480_vectors,
2560 },
2561 {
Terence Hampson779dc762012-06-07 15:59:27 -04002562 ARRAY_SIZE(vcap_576_vectors),
2563 vcap_576_vectors,
2564 },
2565 {
Terence Hampson2e1705f2012-04-11 19:55:29 -04002566 ARRAY_SIZE(vcap_720_vectors),
2567 vcap_720_vectors,
2568 },
2569 {
2570 ARRAY_SIZE(vcap_1080_vectors),
2571 vcap_1080_vectors,
2572 },
2573};
2574
2575static struct msm_bus_scale_pdata vcap_axi_client_pdata = {
2576 vcap_bus_usecases,
2577 ARRAY_SIZE(vcap_bus_usecases),
2578};
2579
2580static struct resource msm_vcap_resources[] = {
2581 {
2582 .name = "vcap",
2583 .start = VCAP_HW_BASE,
2584 .end = VCAP_HW_BASE + SZ_1M - 1,
2585 .flags = IORESOURCE_MEM,
2586 },
2587 {
Terence Hampsonaeb793e2012-05-11 11:41:16 -04002588 .name = "vc_irq",
Terence Hampson2e1705f2012-04-11 19:55:29 -04002589 .start = VCAP_VC,
2590 .end = VCAP_VC,
2591 .flags = IORESOURCE_IRQ,
2592 },
Terence Hampsonaeb793e2012-05-11 11:41:16 -04002593 {
2594 .name = "vp_irq",
2595 .start = VCAP_VP,
2596 .end = VCAP_VP,
2597 .flags = IORESOURCE_IRQ,
2598 },
Terence Hampson2e1705f2012-04-11 19:55:29 -04002599};
2600
2601static unsigned vcap_gpios[] = {
2602 2, 3, 4, 5, 6, 7, 8, 9, 10,
2603 11, 12, 13, 18, 19, 20, 21,
2604 22, 23, 24, 25, 26, 80, 82,
2605 83, 84, 85, 86, 87,
2606};
2607
2608static struct vcap_platform_data vcap_pdata = {
2609 .gpios = vcap_gpios,
2610 .num_gpios = ARRAY_SIZE(vcap_gpios),
2611 .bus_client_pdata = &vcap_axi_client_pdata
2612};
2613
2614struct platform_device msm8064_device_vcap = {
2615 .name = "msm_vcap",
2616 .id = 0,
2617 .resource = msm_vcap_resources,
2618 .num_resources = ARRAY_SIZE(msm_vcap_resources),
2619 .dev = {
2620 .platform_data = &vcap_pdata,
2621 },
2622};
2623#endif
2624
Stepan Moskovchenko28662c52012-03-01 12:48:45 -08002625static struct resource msm_cache_erp_resources[] = {
2626 {
2627 .name = "l1_irq",
2628 .start = SC_SICCPUXEXTFAULTIRPTREQ,
2629 .flags = IORESOURCE_IRQ,
2630 },
2631 {
2632 .name = "l2_irq",
2633 .start = APCC_QGICL2IRPTREQ,
2634 .flags = IORESOURCE_IRQ,
2635 }
2636};
2637
2638struct platform_device apq8064_device_cache_erp = {
2639 .name = "msm_cache_erp",
2640 .id = -1,
2641 .num_resources = ARRAY_SIZE(msm_cache_erp_resources),
2642 .resource = msm_cache_erp_resources,
2643};
Pratik Patel212ab362012-03-16 12:30:07 -07002644
2645#define MSM_QDSS_PHYS_BASE 0x01A00000
2646#define MSM_ETM_PHYS_BASE (MSM_QDSS_PHYS_BASE + 0x1C000)
2647
2648#define QDSS_SOURCE(src_name, fpm) { .name = src_name, .fport_mask = fpm, }
2649
2650static struct qdss_source msm_qdss_sources[] = {
2651 QDSS_SOURCE("msm_etm", 0x33),
2652 QDSS_SOURCE("msm_oxili", 0x80),
2653};
2654
2655static struct msm_qdss_platform_data qdss_pdata = {
2656 .src_table = msm_qdss_sources,
2657 .size = ARRAY_SIZE(msm_qdss_sources),
2658 .afamily = 1,
2659};
2660
2661struct platform_device apq8064_qdss_device = {
2662 .name = "msm_qdss",
2663 .id = -1,
2664 .dev = {
2665 .platform_data = &qdss_pdata,
2666 },
2667};
2668
2669static struct resource msm_etm_resources[] = {
2670 {
2671 .start = MSM_ETM_PHYS_BASE,
2672 .end = MSM_ETM_PHYS_BASE + (SZ_4K * 4) - 1,
2673 .flags = IORESOURCE_MEM,
2674 },
2675};
2676
2677struct platform_device apq8064_etm_device = {
2678 .name = "msm_etm",
2679 .id = 0,
2680 .num_resources = ARRAY_SIZE(msm_etm_resources),
2681 .resource = msm_etm_resources,
2682};
Laura Abbott0577d7b2012-04-17 11:14:30 -07002683
2684struct msm_iommu_domain_name apq8064_iommu_ctx_names[] = {
2685 /* Camera */
2686 {
2687 .name = "vpe_src",
2688 .domain = CAMERA_DOMAIN,
2689 },
2690 /* Camera */
2691 {
2692 .name = "vpe_dst",
2693 .domain = CAMERA_DOMAIN,
2694 },
2695 /* Camera */
2696 {
2697 .name = "vfe_imgwr",
2698 .domain = CAMERA_DOMAIN,
2699 },
2700 /* Camera */
2701 {
2702 .name = "vfe_misc",
2703 .domain = CAMERA_DOMAIN,
2704 },
2705 /* Camera */
2706 {
2707 .name = "ijpeg_src",
2708 .domain = CAMERA_DOMAIN,
2709 },
2710 /* Camera */
2711 {
2712 .name = "ijpeg_dst",
2713 .domain = CAMERA_DOMAIN,
2714 },
2715 /* Camera */
2716 {
2717 .name = "jpegd_src",
2718 .domain = CAMERA_DOMAIN,
2719 },
2720 /* Camera */
2721 {
2722 .name = "jpegd_dst",
2723 .domain = CAMERA_DOMAIN,
2724 },
Olav Hauganef95ae32012-05-15 09:50:30 -07002725 /* Rotator src*/
Laura Abbott0577d7b2012-04-17 11:14:30 -07002726 {
2727 .name = "rot_src",
Olav Hauganef95ae32012-05-15 09:50:30 -07002728 .domain = ROTATOR_SRC_DOMAIN,
Laura Abbott0577d7b2012-04-17 11:14:30 -07002729 },
Olav Hauganef95ae32012-05-15 09:50:30 -07002730 /* Rotator dst */
Laura Abbott0577d7b2012-04-17 11:14:30 -07002731 {
2732 .name = "rot_dst",
Olav Hauganef95ae32012-05-15 09:50:30 -07002733 .domain = ROTATOR_DST_DOMAIN,
Laura Abbott0577d7b2012-04-17 11:14:30 -07002734 },
2735 /* Video */
2736 {
2737 .name = "vcodec_a_mm1",
2738 .domain = VIDEO_DOMAIN,
2739 },
2740 /* Video */
2741 {
2742 .name = "vcodec_b_mm2",
2743 .domain = VIDEO_DOMAIN,
2744 },
2745 /* Video */
2746 {
2747 .name = "vcodec_a_stream",
2748 .domain = VIDEO_DOMAIN,
2749 },
2750};
2751
2752static struct mem_pool apq8064_video_pools[] = {
2753 /*
2754 * Video hardware has the following requirements:
2755 * 1. All video addresses used by the video hardware must be at a higher
2756 * address than video firmware address.
2757 * 2. Video hardware can only access a range of 256MB from the base of
2758 * the video firmware.
2759 */
2760 [VIDEO_FIRMWARE_POOL] =
2761 /* Low addresses, intended for video firmware */
2762 {
2763 .paddr = SZ_128K,
2764 .size = SZ_16M - SZ_128K,
2765 },
2766 [VIDEO_MAIN_POOL] =
2767 /* Main video pool */
2768 {
2769 .paddr = SZ_16M,
2770 .size = SZ_256M - SZ_16M,
2771 },
2772 [GEN_POOL] =
2773 /* Remaining address space up to 2G */
2774 {
2775 .paddr = SZ_256M,
2776 .size = SZ_2G - SZ_256M,
2777 },
2778};
2779
2780static struct mem_pool apq8064_camera_pools[] = {
2781 [GEN_POOL] =
2782 /* One address space for camera */
2783 {
2784 .paddr = SZ_128K,
2785 .size = SZ_2G - SZ_128K,
2786 },
2787};
2788
Olav Hauganef95ae32012-05-15 09:50:30 -07002789static struct mem_pool apq8064_display_read_pools[] = {
Laura Abbott0577d7b2012-04-17 11:14:30 -07002790 [GEN_POOL] =
Olav Hauganef95ae32012-05-15 09:50:30 -07002791 /* One address space for display reads */
Laura Abbott0577d7b2012-04-17 11:14:30 -07002792 {
2793 .paddr = SZ_128K,
2794 .size = SZ_2G - SZ_128K,
2795 },
2796};
2797
Olav Hauganef95ae32012-05-15 09:50:30 -07002798static struct mem_pool apq8064_display_write_pools[] = {
Laura Abbott0577d7b2012-04-17 11:14:30 -07002799 [GEN_POOL] =
Olav Hauganef95ae32012-05-15 09:50:30 -07002800 /* One address space for display writes */
2801 {
2802 .paddr = SZ_128K,
2803 .size = SZ_2G - SZ_128K,
2804 },
2805};
2806
2807static struct mem_pool apq8064_rotator_src_pools[] = {
2808 [GEN_POOL] =
2809 /* One address space for rotator src */
2810 {
2811 .paddr = SZ_128K,
2812 .size = SZ_2G - SZ_128K,
2813 },
2814};
2815
2816static struct mem_pool apq8064_rotator_dst_pools[] = {
2817 [GEN_POOL] =
2818 /* One address space for rotator dst */
Laura Abbott0577d7b2012-04-17 11:14:30 -07002819 {
2820 .paddr = SZ_128K,
2821 .size = SZ_2G - SZ_128K,
2822 },
2823};
2824
2825static struct msm_iommu_domain apq8064_iommu_domains[] = {
2826 [VIDEO_DOMAIN] = {
2827 .iova_pools = apq8064_video_pools,
2828 .npools = ARRAY_SIZE(apq8064_video_pools),
2829 },
2830 [CAMERA_DOMAIN] = {
2831 .iova_pools = apq8064_camera_pools,
2832 .npools = ARRAY_SIZE(apq8064_camera_pools),
2833 },
Olav Hauganef95ae32012-05-15 09:50:30 -07002834 [DISPLAY_READ_DOMAIN] = {
2835 .iova_pools = apq8064_display_read_pools,
2836 .npools = ARRAY_SIZE(apq8064_display_read_pools),
Laura Abbott0577d7b2012-04-17 11:14:30 -07002837 },
Olav Hauganef95ae32012-05-15 09:50:30 -07002838 [DISPLAY_WRITE_DOMAIN] = {
2839 .iova_pools = apq8064_display_write_pools,
2840 .npools = ARRAY_SIZE(apq8064_display_write_pools),
2841 },
2842 [ROTATOR_SRC_DOMAIN] = {
2843 .iova_pools = apq8064_rotator_src_pools,
2844 .npools = ARRAY_SIZE(apq8064_rotator_src_pools),
2845 },
2846 [ROTATOR_DST_DOMAIN] = {
2847 .iova_pools = apq8064_rotator_dst_pools,
2848 .npools = ARRAY_SIZE(apq8064_rotator_dst_pools),
Laura Abbott0577d7b2012-04-17 11:14:30 -07002849 },
2850};
2851
2852struct iommu_domains_pdata apq8064_iommu_domain_pdata = {
2853 .domains = apq8064_iommu_domains,
2854 .ndomains = ARRAY_SIZE(apq8064_iommu_domains),
2855 .domain_names = apq8064_iommu_ctx_names,
2856 .nnames = ARRAY_SIZE(apq8064_iommu_ctx_names),
2857 .domain_alloc_flags = 0,
2858};
2859
2860struct platform_device apq8064_iommu_domain_device = {
2861 .name = "iommu_domains",
2862 .id = -1,
2863 .dev = {
2864 .platform_data = &apq8064_iommu_domain_pdata,
Laura Abbott532b2df2012-04-12 10:53:48 -07002865 }
2866};
2867
2868struct msm_rtb_platform_data apq8064_rtb_pdata = {
2869 .size = SZ_1M,
2870};
2871
2872static int __init msm_rtb_set_buffer_size(char *p)
2873{
2874 int s;
2875
2876 s = memparse(p, NULL);
2877 apq8064_rtb_pdata.size = ALIGN(s, SZ_4K);
2878 return 0;
2879}
2880early_param("msm_rtb_size", msm_rtb_set_buffer_size);
2881
2882struct platform_device apq8064_rtb_device = {
2883 .name = "msm_rtb",
2884 .id = -1,
2885 .dev = {
2886 .platform_data = &apq8064_rtb_pdata,
Laura Abbott0577d7b2012-04-17 11:14:30 -07002887 },
2888};
Laura Abbott93a4a352012-05-25 09:26:35 -07002889
2890#define APQ8064_L1_SIZE SZ_1M
2891/*
2892 * The actual L2 size is smaller but we need a larger buffer
2893 * size to store other dump information
2894 */
2895#define APQ8064_L2_SIZE SZ_8M
2896
2897struct msm_cache_dump_platform_data apq8064_cache_dump_pdata = {
2898 .l2_size = APQ8064_L2_SIZE,
2899 .l1_size = APQ8064_L1_SIZE,
2900};
2901
2902struct platform_device apq8064_cache_dump_device = {
2903 .name = "msm_cache_dump",
2904 .id = -1,
2905 .dev = {
2906 .platform_data = &apq8064_cache_dump_pdata,
2907 },
2908};