blob: c1f7f6508fe0fcc80a0cd6ebfb804e80e8053f9b [file] [log] [blame]
Deepak Verma587c98e2013-02-01 22:47:49 +05301/* Copyright (c) 2011-2013, The Linux Foundation. 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>
Matt Wagantalld55b90f2012-02-23 23:27:44 -080029#include <mach/clk-provider.h>
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -080030#include <sound/msm-dai-q6.h>
31#include <sound/apr_audio.h>
Joel Nidere5de00e2012-07-03 10:58:10 +030032#include <mach/msm_tsif.h>
Joel Nider50b50fa2012-08-05 14:17:29 +030033#include <mach/msm_tspp.h>
Gagan Mac8a7a5d32011-11-11 16:43:06 -070034#include <mach/msm_bus_board.h>
Praveen Chidambaram78499012011-11-01 17:15:17 -060035#include <mach/rpm.h>
Joel Kingdacbc822012-01-25 13:30:57 -080036#include <mach/mdm2.h>
Eric Holmberg023d25c2012-03-01 12:27:55 -070037#include <mach/msm_smd.h>
Praveen Chidambaram5c8adf22012-02-23 18:44:37 -070038#include <mach/msm_dcvs.h>
Laura Abbott532b2df2012-04-12 10:53:48 -070039#include <mach/msm_rtb.h>
Mitchel Humpherys9d01c6d2012-09-06 11:35:39 -070040#include <linux/msm_ion.h>
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070041#include "clock.h"
42#include "devices.h"
Matt Wagantall1875d322012-02-22 16:11:33 -080043#include "footswitch.h"
Jeff Ohlstein7e668552011-10-06 16:17:25 -070044#include "msm_watchdog.h"
Praveen Chidambaram78499012011-11-01 17:15:17 -060045#include "rpm_stats.h"
46#include "rpm_log.h"
Subhash Jadavani909e04f2012-04-12 10:52:50 +053047#include <mach/mpm.h>
Laura Abbott0577d7b2012-04-17 11:14:30 -070048#include <mach/iommu_domains.h>
Laura Abbott93a4a352012-05-25 09:26:35 -070049#include <mach/msm_cache_dump.h>
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070050
51/* Address of GSBI blocks */
Stepan Moskovchenko2701a442011-08-19 13:47:22 -070052#define MSM_GSBI1_PHYS 0x12440000
Devin Kima3085422012-06-14 18:23:41 -070053#define MSM_GSBI2_PHYS 0x13440000
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070054#define MSM_GSBI3_PHYS 0x16200000
Harini Jayaramanc4c58692011-07-19 14:50:10 -060055#define MSM_GSBI4_PHYS 0x16300000
56#define MSM_GSBI5_PHYS 0x1A200000
57#define MSM_GSBI6_PHYS 0x16500000
58#define MSM_GSBI7_PHYS 0x16600000
59
Kenneth Heitke748593a2011-07-15 15:45:11 -060060/* GSBI UART devices */
Stepan Moskovchenko2701a442011-08-19 13:47:22 -070061#define MSM_UART1DM_PHYS (MSM_GSBI1_PHYS + 0x10000)
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070062#define MSM_UART3DM_PHYS (MSM_GSBI3_PHYS + 0x40000)
Devin Kima3085422012-06-14 18:23:41 -070063#define MSM_UART4DM_PHYS (MSM_GSBI4_PHYS + 0x40000)
64#define MSM_UART6DM_PHYS (MSM_GSBI6_PHYS + 0x40000)
Jin Hong4bbbfba2012-02-02 21:48:07 -080065#define MSM_UART7DM_PHYS (MSM_GSBI7_PHYS + 0x40000)
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070066
Harini Jayaramanc4c58692011-07-19 14:50:10 -060067/* GSBI QUP devices */
David Keitel3c40fc52012-02-09 17:53:52 -080068#define MSM_GSBI1_QUP_PHYS (MSM_GSBI1_PHYS + 0x20000)
Devin Kima3085422012-06-14 18:23:41 -070069#define MSM_GSBI2_QUP_PHYS (MSM_GSBI2_PHYS + 0x20000)
Harini Jayaramanc4c58692011-07-19 14:50:10 -060070#define MSM_GSBI3_QUP_PHYS (MSM_GSBI3_PHYS + 0x80000)
71#define MSM_GSBI4_QUP_PHYS (MSM_GSBI4_PHYS + 0x80000)
72#define MSM_GSBI5_QUP_PHYS (MSM_GSBI5_PHYS + 0x80000)
73#define MSM_GSBI6_QUP_PHYS (MSM_GSBI6_PHYS + 0x80000)
74#define MSM_GSBI7_QUP_PHYS (MSM_GSBI7_PHYS + 0x80000)
75#define MSM_QUP_SIZE SZ_4K
76
Kenneth Heitke36920d32011-07-20 16:44:30 -060077/* Address of SSBI CMD */
78#define MSM_PMIC1_SSBI_CMD_PHYS 0x00500000
79#define MSM_PMIC2_SSBI_CMD_PHYS 0x00C00000
80#define MSM_PMIC_SSBI_SIZE SZ_4K
Harini Jayaramanc4c58692011-07-19 14:50:10 -060081
Hemant Kumarcaa09092011-07-30 00:26:33 -070082/* Address of HS USBOTG1 */
Hemant Kumard86c4882012-01-24 19:39:37 -080083#define MSM_HSUSB1_PHYS 0x12500000
84#define MSM_HSUSB1_SIZE SZ_4K
Hemant Kumarcaa09092011-07-30 00:26:33 -070085
Manu Gautam91223e02011-11-08 15:27:22 +053086/* Address of HS USB3 */
87#define MSM_HSUSB3_PHYS 0x12520000
88#define MSM_HSUSB3_SIZE SZ_4K
89
Hemant Kumar1d66e1c2012-02-13 15:24:59 -080090/* Address of HS USB4 */
91#define MSM_HSUSB4_PHYS 0x12530000
92#define MSM_HSUSB4_SIZE SZ_4K
93
Niranjana Vishwanathapura06f89332012-05-03 17:11:13 -060094/* Address of PCIE20 PARF */
95#define PCIE20_PARF_PHYS 0x1b600000
96#define PCIE20_PARF_SIZE SZ_128
97
98/* Address of PCIE20 ELBI */
99#define PCIE20_ELBI_PHYS 0x1b502000
100#define PCIE20_ELBI_SIZE SZ_256
101
102/* Address of PCIE20 */
103#define PCIE20_PHYS 0x1b500000
104#define PCIE20_SIZE SZ_4K
Anji Jonnala2a8bd312012-11-01 13:11:42 +0530105#define MSM8064_RPM_MASTER_STATS_BASE 0x10BB00
Anji Jonnalae84292b2012-09-21 13:34:44 +0530106#define MSM8064_PC_CNTR_PHYS (APQ8064_IMEM_PHYS + 0x664)
107#define MSM8064_PC_CNTR_SIZE 0x40
108
109static struct resource msm8064_resources_pccntr[] = {
110 {
111 .start = MSM8064_PC_CNTR_PHYS,
112 .end = MSM8064_PC_CNTR_PHYS + MSM8064_PC_CNTR_SIZE,
113 .flags = IORESOURCE_MEM,
114 },
115};
116
117struct platform_device msm8064_pc_cntr = {
118 .name = "pc-cntr",
119 .id = -1,
120 .num_resources = ARRAY_SIZE(msm8064_resources_pccntr),
121 .resource = msm8064_resources_pccntr,
122};
Niranjana Vishwanathapura06f89332012-05-03 17:11:13 -0600123
Jeff Ohlstein7e668552011-10-06 16:17:25 -0700124static struct msm_watchdog_pdata msm_watchdog_pdata = {
125 .pet_time = 10000,
126 .bark_time = 11000,
127 .has_secure = true,
Joel Kinge7ca6f72012-02-09 20:51:25 -0800128 .needs_expired_enable = true,
Rohit Vaswanic77e4a62012-08-09 18:10:28 -0700129 .base = MSM_TMR0_BASE + WDT0_OFFSET,
130};
131
132static struct resource msm_watchdog_resources[] = {
133 {
134 .start = WDT0_ACCSCSSNBARK_INT,
135 .end = WDT0_ACCSCSSNBARK_INT,
136 .flags = IORESOURCE_IRQ,
137 },
Jeff Ohlstein7e668552011-10-06 16:17:25 -0700138};
139
140struct platform_device msm8064_device_watchdog = {
141 .name = "msm_watchdog",
142 .id = -1,
143 .dev = {
144 .platform_data = &msm_watchdog_pdata,
145 },
Rohit Vaswanic77e4a62012-08-09 18:10:28 -0700146 .num_resources = ARRAY_SIZE(msm_watchdog_resources),
147 .resource = msm_watchdog_resources,
Jeff Ohlstein7e668552011-10-06 16:17:25 -0700148};
149
Joel King0581896d2011-07-19 16:43:28 -0700150static struct resource msm_dmov_resource[] = {
151 {
Jeff Ohlstein4af72692011-11-07 15:59:17 -0800152 .start = ADM_0_SCSS_1_IRQ,
Joel King0581896d2011-07-19 16:43:28 -0700153 .flags = IORESOURCE_IRQ,
154 },
Jeff Ohlstein905f1ce2011-09-07 18:50:18 -0700155 {
Jeff Ohlstein4af72692011-11-07 15:59:17 -0800156 .start = 0x18320000,
157 .end = 0x18320000 + SZ_1M - 1,
Jeff Ohlstein905f1ce2011-09-07 18:50:18 -0700158 .flags = IORESOURCE_MEM,
159 },
160};
161
162static struct msm_dmov_pdata msm_dmov_pdata = {
Jeff Ohlstein4af72692011-11-07 15:59:17 -0800163 .sd = 1,
Jeff Ohlstein905f1ce2011-09-07 18:50:18 -0700164 .sd_size = 0x800,
Joel King0581896d2011-07-19 16:43:28 -0700165};
166
Stepan Moskovchenkodf13d342011-08-03 19:01:25 -0700167struct platform_device apq8064_device_dmov = {
Joel King0581896d2011-07-19 16:43:28 -0700168 .name = "msm_dmov",
169 .id = -1,
170 .resource = msm_dmov_resource,
171 .num_resources = ARRAY_SIZE(msm_dmov_resource),
Jeff Ohlstein905f1ce2011-09-07 18:50:18 -0700172 .dev = {
173 .platform_data = &msm_dmov_pdata,
174 },
Joel King0581896d2011-07-19 16:43:28 -0700175};
176
Stepan Moskovchenko2701a442011-08-19 13:47:22 -0700177static struct resource resources_uart_gsbi1[] = {
178 {
179 .start = APQ8064_GSBI1_UARTDM_IRQ,
180 .end = APQ8064_GSBI1_UARTDM_IRQ,
181 .flags = IORESOURCE_IRQ,
182 },
183 {
184 .start = MSM_UART1DM_PHYS,
185 .end = MSM_UART1DM_PHYS + PAGE_SIZE - 1,
186 .name = "uartdm_resource",
187 .flags = IORESOURCE_MEM,
188 },
189 {
190 .start = MSM_GSBI1_PHYS,
191 .end = MSM_GSBI1_PHYS + PAGE_SIZE - 1,
192 .name = "gsbi_resource",
193 .flags = IORESOURCE_MEM,
194 },
195};
196
197struct platform_device apq8064_device_uart_gsbi1 = {
198 .name = "msm_serial_hsl",
Jin Hong4bbbfba2012-02-02 21:48:07 -0800199 .id = 1,
Stepan Moskovchenko2701a442011-08-19 13:47:22 -0700200 .num_resources = ARRAY_SIZE(resources_uart_gsbi1),
201 .resource = resources_uart_gsbi1,
202};
203
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700204static struct resource resources_uart_gsbi3[] = {
205 {
206 .start = GSBI3_UARTDM_IRQ,
207 .end = GSBI3_UARTDM_IRQ,
208 .flags = IORESOURCE_IRQ,
209 },
210 {
211 .start = MSM_UART3DM_PHYS,
212 .end = MSM_UART3DM_PHYS + PAGE_SIZE - 1,
213 .name = "uartdm_resource",
214 .flags = IORESOURCE_MEM,
215 },
216 {
217 .start = MSM_GSBI3_PHYS,
218 .end = MSM_GSBI3_PHYS + PAGE_SIZE - 1,
219 .name = "gsbi_resource",
220 .flags = IORESOURCE_MEM,
221 },
222};
223
224struct platform_device apq8064_device_uart_gsbi3 = {
225 .name = "msm_serial_hsl",
226 .id = 0,
227 .num_resources = ARRAY_SIZE(resources_uart_gsbi3),
228 .resource = resources_uart_gsbi3,
229};
230
Jing Lin04601f92012-02-05 15:36:07 -0800231static struct resource resources_qup_i2c_gsbi3[] = {
232 {
233 .name = "gsbi_qup_i2c_addr",
234 .start = MSM_GSBI3_PHYS,
235 .end = MSM_GSBI3_PHYS + 4 - 1,
236 .flags = IORESOURCE_MEM,
237 },
238 {
239 .name = "qup_phys_addr",
240 .start = MSM_GSBI3_QUP_PHYS,
241 .end = MSM_GSBI3_QUP_PHYS + MSM_QUP_SIZE - 1,
242 .flags = IORESOURCE_MEM,
243 },
244 {
245 .name = "qup_err_intr",
246 .start = GSBI3_QUP_IRQ,
247 .end = GSBI3_QUP_IRQ,
248 .flags = IORESOURCE_IRQ,
249 },
250 {
251 .name = "i2c_clk",
252 .start = 9,
253 .end = 9,
254 .flags = IORESOURCE_IO,
255 },
256 {
257 .name = "i2c_sda",
258 .start = 8,
259 .end = 8,
260 .flags = IORESOURCE_IO,
261 },
262};
263
David Keitel3c40fc52012-02-09 17:53:52 -0800264static struct resource resources_qup_i2c_gsbi1[] = {
265 {
266 .name = "gsbi_qup_i2c_addr",
267 .start = MSM_GSBI1_PHYS,
268 .end = MSM_GSBI1_PHYS + 4 - 1,
269 .flags = IORESOURCE_MEM,
270 },
271 {
272 .name = "qup_phys_addr",
273 .start = MSM_GSBI1_QUP_PHYS,
274 .end = MSM_GSBI1_QUP_PHYS + MSM_QUP_SIZE - 1,
275 .flags = IORESOURCE_MEM,
276 },
277 {
278 .name = "qup_err_intr",
279 .start = APQ8064_GSBI1_QUP_IRQ,
280 .end = APQ8064_GSBI1_QUP_IRQ,
281 .flags = IORESOURCE_IRQ,
282 },
283 {
284 .name = "i2c_clk",
285 .start = 21,
286 .end = 21,
287 .flags = IORESOURCE_IO,
288 },
289 {
290 .name = "i2c_sda",
291 .start = 20,
292 .end = 20,
293 .flags = IORESOURCE_IO,
294 },
295};
296
297struct platform_device apq8064_device_qup_i2c_gsbi1 = {
298 .name = "qup_i2c",
299 .id = 0,
300 .num_resources = ARRAY_SIZE(resources_qup_i2c_gsbi1),
301 .resource = resources_qup_i2c_gsbi1,
302};
303
Jing Lin04601f92012-02-05 15:36:07 -0800304struct platform_device apq8064_device_qup_i2c_gsbi3 = {
305 .name = "qup_i2c",
306 .id = 3,
307 .num_resources = ARRAY_SIZE(resources_qup_i2c_gsbi3),
308 .resource = resources_qup_i2c_gsbi3,
309};
310
Devin Kima3085422012-06-14 18:23:41 -0700311static struct resource resources_uart_gsbi4[] = {
312 {
313 .start = GSBI4_UARTDM_IRQ,
314 .end = GSBI4_UARTDM_IRQ,
315 .flags = IORESOURCE_IRQ,
316 },
317 {
318 .start = MSM_UART4DM_PHYS,
319 .end = MSM_UART4DM_PHYS + PAGE_SIZE - 1,
320 .name = "uartdm_resource",
321 .flags = IORESOURCE_MEM,
322 },
323 {
324 .start = MSM_GSBI4_PHYS,
325 .end = MSM_GSBI4_PHYS + PAGE_SIZE - 1,
326 .name = "gsbi_resource",
327 .flags = IORESOURCE_MEM,
328 },
329};
330
331struct platform_device apq8064_device_uart_gsbi4 = {
332 .name = "msm_serial_hsl",
333 .id = 0,
334 .num_resources = ARRAY_SIZE(resources_uart_gsbi4),
335 .resource = resources_uart_gsbi4,
336};
337
Kenneth Heitke748593a2011-07-15 15:45:11 -0600338static struct resource resources_qup_i2c_gsbi4[] = {
339 {
340 .name = "gsbi_qup_i2c_addr",
341 .start = MSM_GSBI4_PHYS,
Harini Jayaramane1554a92011-09-15 14:43:02 -0600342 .end = MSM_GSBI4_PHYS + 4 - 1,
Kenneth Heitke748593a2011-07-15 15:45:11 -0600343 .flags = IORESOURCE_MEM,
344 },
345 {
346 .name = "qup_phys_addr",
347 .start = MSM_GSBI4_QUP_PHYS,
Harini Jayaramane1554a92011-09-15 14:43:02 -0600348 .end = MSM_GSBI4_QUP_PHYS + MSM_QUP_SIZE - 1,
Kenneth Heitke748593a2011-07-15 15:45:11 -0600349 .flags = IORESOURCE_MEM,
350 },
351 {
352 .name = "qup_err_intr",
353 .start = GSBI4_QUP_IRQ,
354 .end = GSBI4_QUP_IRQ,
355 .flags = IORESOURCE_IRQ,
356 },
Kevin Chand07220e2012-02-13 15:52:22 -0800357 {
358 .name = "i2c_clk",
359 .start = 11,
360 .end = 11,
361 .flags = IORESOURCE_IO,
362 },
363 {
364 .name = "i2c_sda",
365 .start = 10,
366 .end = 10,
367 .flags = IORESOURCE_IO,
368 },
Kenneth Heitke748593a2011-07-15 15:45:11 -0600369};
370
371struct platform_device apq8064_device_qup_i2c_gsbi4 = {
372 .name = "qup_i2c",
373 .id = 4,
374 .num_resources = ARRAY_SIZE(resources_qup_i2c_gsbi4),
375 .resource = resources_qup_i2c_gsbi4,
376};
377
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700378static struct resource resources_qup_spi_gsbi5[] = {
379 {
380 .name = "spi_base",
381 .start = MSM_GSBI5_QUP_PHYS,
382 .end = MSM_GSBI5_QUP_PHYS + SZ_4K - 1,
383 .flags = IORESOURCE_MEM,
384 },
385 {
386 .name = "gsbi_base",
387 .start = MSM_GSBI5_PHYS,
388 .end = MSM_GSBI5_PHYS + 4 - 1,
389 .flags = IORESOURCE_MEM,
390 },
391 {
392 .name = "spi_irq_in",
393 .start = GSBI5_QUP_IRQ,
394 .end = GSBI5_QUP_IRQ,
395 .flags = IORESOURCE_IRQ,
396 },
397};
398
399struct platform_device apq8064_device_qup_spi_gsbi5 = {
400 .name = "spi_qsd",
401 .id = 0,
402 .num_resources = ARRAY_SIZE(resources_qup_spi_gsbi5),
403 .resource = resources_qup_spi_gsbi5,
404};
405
Joel King8f839b92012-04-01 14:37:46 -0700406static struct resource resources_qup_i2c_gsbi5[] = {
407 {
408 .name = "gsbi_qup_i2c_addr",
409 .start = MSM_GSBI5_PHYS,
410 .end = MSM_GSBI5_PHYS + 4 - 1,
411 .flags = IORESOURCE_MEM,
412 },
413 {
414 .name = "qup_phys_addr",
415 .start = MSM_GSBI5_QUP_PHYS,
416 .end = MSM_GSBI5_QUP_PHYS + MSM_QUP_SIZE - 1,
417 .flags = IORESOURCE_MEM,
418 },
419 {
420 .name = "qup_err_intr",
421 .start = GSBI5_QUP_IRQ,
422 .end = GSBI5_QUP_IRQ,
423 .flags = IORESOURCE_IRQ,
424 },
425 {
426 .name = "i2c_clk",
427 .start = 54,
428 .end = 54,
429 .flags = IORESOURCE_IO,
430 },
431 {
432 .name = "i2c_sda",
433 .start = 53,
434 .end = 53,
435 .flags = IORESOURCE_IO,
436 },
437};
438
439struct platform_device mpq8064_device_qup_i2c_gsbi5 = {
440 .name = "qup_i2c",
441 .id = 5,
442 .num_resources = ARRAY_SIZE(resources_qup_i2c_gsbi5),
443 .resource = resources_qup_i2c_gsbi5,
444};
445
Jin Hong4bbbfba2012-02-02 21:48:07 -0800446static struct resource resources_uart_gsbi7[] = {
447 {
448 .start = GSBI7_UARTDM_IRQ,
449 .end = GSBI7_UARTDM_IRQ,
450 .flags = IORESOURCE_IRQ,
451 },
452 {
453 .start = MSM_UART7DM_PHYS,
454 .end = MSM_UART7DM_PHYS + PAGE_SIZE - 1,
455 .name = "uartdm_resource",
456 .flags = IORESOURCE_MEM,
457 },
458 {
459 .start = MSM_GSBI7_PHYS,
460 .end = MSM_GSBI7_PHYS + PAGE_SIZE - 1,
461 .name = "gsbi_resource",
462 .flags = IORESOURCE_MEM,
463 },
464};
465
466struct platform_device apq8064_device_uart_gsbi7 = {
467 .name = "msm_serial_hsl",
468 .id = 0,
469 .num_resources = ARRAY_SIZE(resources_uart_gsbi7),
470 .resource = resources_uart_gsbi7,
471};
472
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800473struct platform_device apq_pcm = {
474 .name = "msm-pcm-dsp",
475 .id = -1,
476};
477
478struct platform_device apq_pcm_routing = {
479 .name = "msm-pcm-routing",
480 .id = -1,
481};
482
483struct platform_device apq_cpudai0 = {
484 .name = "msm-dai-q6",
485 .id = 0x4000,
486};
487
488struct platform_device apq_cpudai1 = {
489 .name = "msm-dai-q6",
490 .id = 0x4001,
491};
Santosh Mardieff9a742012-04-09 23:23:39 +0530492struct platform_device mpq_cpudai_sec_i2s_rx = {
493 .name = "msm-dai-q6",
494 .id = 4,
495};
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800496struct platform_device apq_cpudai_hdmi_rx = {
Swaminathan Sathappanfd9dbad2012-02-15 16:56:44 -0800497 .name = "msm-dai-q6-hdmi",
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800498 .id = 8,
499};
500
501struct platform_device apq_cpudai_bt_rx = {
502 .name = "msm-dai-q6",
503 .id = 0x3000,
504};
505
506struct platform_device apq_cpudai_bt_tx = {
507 .name = "msm-dai-q6",
508 .id = 0x3001,
509};
510
511struct platform_device apq_cpudai_fm_rx = {
512 .name = "msm-dai-q6",
513 .id = 0x3004,
514};
515
516struct platform_device apq_cpudai_fm_tx = {
517 .name = "msm-dai-q6",
518 .id = 0x3005,
519};
520
Helen Zeng8f925502012-03-05 16:50:17 -0800521struct platform_device apq_cpudai_slim_4_rx = {
522 .name = "msm-dai-q6",
523 .id = 0x4008,
524};
525
526struct platform_device apq_cpudai_slim_4_tx = {
527 .name = "msm-dai-q6",
528 .id = 0x4009,
529};
530
Joel Nidere5de00e2012-07-03 10:58:10 +0300531#define MSM_TSIF0_PHYS (0x18200000)
532#define MSM_TSIF1_PHYS (0x18201000)
533#define MSM_TSIF_SIZE (0x200)
534
535#define TSIF_0_CLK GPIO_CFG(55, 1, GPIO_CFG_INPUT, \
536 GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA)
537#define TSIF_0_EN GPIO_CFG(56, 1, GPIO_CFG_INPUT, \
538 GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA)
539#define TSIF_0_DATA GPIO_CFG(57, 1, GPIO_CFG_INPUT, \
540 GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA)
541#define TSIF_0_SYNC GPIO_CFG(62, 1, GPIO_CFG_INPUT, \
542 GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA)
543#define TSIF_1_CLK GPIO_CFG(59, 1, GPIO_CFG_INPUT, \
544 GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA)
545#define TSIF_1_EN GPIO_CFG(60, 1, GPIO_CFG_INPUT, \
546 GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA)
547#define TSIF_1_DATA GPIO_CFG(61, 1, GPIO_CFG_INPUT, \
548 GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA)
549#define TSIF_1_SYNC GPIO_CFG(58, 1, GPIO_CFG_INPUT, \
550 GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA)
551
552static const struct msm_gpio tsif0_gpios[] = {
553 { .gpio_cfg = TSIF_0_CLK, .label = "tsif_clk", },
554 { .gpio_cfg = TSIF_0_EN, .label = "tsif_en", },
555 { .gpio_cfg = TSIF_0_DATA, .label = "tsif_data", },
556 { .gpio_cfg = TSIF_0_SYNC, .label = "tsif_sync", },
557};
558
559static const struct msm_gpio tsif1_gpios[] = {
560 { .gpio_cfg = TSIF_1_CLK, .label = "tsif_clk", },
561 { .gpio_cfg = TSIF_1_EN, .label = "tsif_en", },
562 { .gpio_cfg = TSIF_1_DATA, .label = "tsif_data", },
563 { .gpio_cfg = TSIF_1_SYNC, .label = "tsif_sync", },
564};
565
566struct msm_tsif_platform_data tsif1_8064_platform_data = {
567 .num_gpios = ARRAY_SIZE(tsif1_gpios),
568 .gpios = tsif1_gpios,
569 .tsif_pclk = "iface_clk",
570 .tsif_ref_clk = "ref_clk",
571};
572
573struct resource tsif1_8064_resources[] = {
574 [0] = {
575 .flags = IORESOURCE_IRQ,
576 .start = TSIF2_IRQ,
577 .end = TSIF2_IRQ,
578 },
579 [1] = {
580 .flags = IORESOURCE_MEM,
581 .start = MSM_TSIF1_PHYS,
582 .end = MSM_TSIF1_PHYS + MSM_TSIF_SIZE - 1,
583 },
584 [2] = {
585 .flags = IORESOURCE_DMA,
586 .start = DMOV8064_TSIF_CHAN,
587 .end = DMOV8064_TSIF_CRCI,
588 },
589};
590
591struct msm_tsif_platform_data tsif0_8064_platform_data = {
592 .num_gpios = ARRAY_SIZE(tsif0_gpios),
593 .gpios = tsif0_gpios,
594 .tsif_pclk = "iface_clk",
595 .tsif_ref_clk = "ref_clk",
596};
597
598struct resource tsif0_8064_resources[] = {
599 [0] = {
600 .flags = IORESOURCE_IRQ,
601 .start = TSIF1_IRQ,
602 .end = TSIF1_IRQ,
603 },
604 [1] = {
605 .flags = IORESOURCE_MEM,
606 .start = MSM_TSIF0_PHYS,
607 .end = MSM_TSIF0_PHYS + MSM_TSIF_SIZE - 1,
608 },
609 [2] = {
610 .flags = IORESOURCE_DMA,
611 .start = DMOV_TSIF_CHAN,
612 .end = DMOV_TSIF_CRCI,
613 },
614};
615
616struct platform_device msm_8064_device_tsif[2] = {
617 {
618 .name = "msm_tsif",
619 .id = 0,
620 .num_resources = ARRAY_SIZE(tsif0_8064_resources),
621 .resource = tsif0_8064_resources,
622 .dev = {
623 .platform_data = &tsif0_8064_platform_data
624 },
625 },
626 {
627 .name = "msm_tsif",
628 .id = 1,
629 .num_resources = ARRAY_SIZE(tsif1_8064_resources),
630 .resource = tsif1_8064_resources,
631 .dev = {
632 .platform_data = &tsif1_8064_platform_data
633 },
634 }
635};
636
Joel Nider50b50fa2012-08-05 14:17:29 +0300637#define MSM_TSPP_PHYS (0x18202000)
638#define MSM_TSPP_SIZE (0x1000)
639#define MSM_TSPP_BAM_PHYS (0x18204000)
640#define MSM_TSPP_BAM_SIZE (0x2000)
641
642static const struct msm_gpio tspp_gpios[] = {
643 { .gpio_cfg = TSIF_0_CLK, .label = "tsif_clk", },
644 { .gpio_cfg = TSIF_0_EN, .label = "tsif_en", },
645 { .gpio_cfg = TSIF_0_DATA, .label = "tsif_data", },
646 { .gpio_cfg = TSIF_0_SYNC, .label = "tsif_sync", },
647 { .gpio_cfg = TSIF_1_CLK, .label = "tsif_clk", },
648 { .gpio_cfg = TSIF_1_EN, .label = "tsif_en", },
649 { .gpio_cfg = TSIF_1_DATA, .label = "tsif_data", },
650 { .gpio_cfg = TSIF_1_SYNC, .label = "tsif_sync", },
651};
652
653static struct resource tspp_resources[] = {
654 [0] = {
655 .flags = IORESOURCE_IRQ,
656 .start = TSIF_TSPP_IRQ,
657 .end = TSIF1_IRQ,
658 },
659 [1] = {
660 .flags = IORESOURCE_MEM,
661 .start = MSM_TSIF0_PHYS,
662 .end = MSM_TSIF0_PHYS + MSM_TSIF_SIZE - 1,
663 },
664 [2] = {
665 .flags = IORESOURCE_MEM,
666 .start = MSM_TSIF1_PHYS,
667 .end = MSM_TSIF1_PHYS + MSM_TSIF_SIZE - 1,
668 },
669 [3] = {
670 .flags = IORESOURCE_MEM,
671 .start = MSM_TSPP_PHYS,
672 .end = MSM_TSPP_PHYS + MSM_TSPP_SIZE - 1,
673 },
674 [4] = {
675 .flags = IORESOURCE_MEM,
676 .start = MSM_TSPP_BAM_PHYS,
677 .end = MSM_TSPP_BAM_PHYS + MSM_TSPP_BAM_SIZE - 1,
678 },
679};
680
681static struct msm_tspp_platform_data tspp_platform_data = {
682 .num_gpios = ARRAY_SIZE(tspp_gpios),
683 .gpios = tspp_gpios,
684 .tsif_pclk = "iface_clk",
685 .tsif_ref_clk = "ref_clk",
686};
687
688struct platform_device msm_8064_device_tspp = {
689 .name = "msm_tspp",
690 .id = 0,
691 .num_resources = ARRAY_SIZE(tspp_resources),
692 .resource = tspp_resources,
693 .dev = {
694 .platform_data = &tspp_platform_data
695 },
696};
697
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800698/*
699 * Machine specific data for AUX PCM Interface
700 * which the driver will be unware of.
701 */
Kiran Kandi5f4ab692012-02-23 11:23:56 -0800702struct msm_dai_auxpcm_pdata apq_auxpcm_pdata = {
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800703 .clk = "pcm_clk",
Kuirong Wang547a9982012-05-04 18:29:11 -0700704 .mode_8k = {
705 .mode = AFE_PCM_CFG_MODE_PCM,
706 .sync = AFE_PCM_CFG_SYNC_INT,
707 .frame = AFE_PCM_CFG_FRM_256BPF,
708 .quant = AFE_PCM_CFG_QUANT_LINEAR_NOPAD,
709 .slot = 0,
710 .data = AFE_PCM_CFG_CDATAOE_MASTER,
711 .pcm_clk_rate = 2048000,
712 },
713 .mode_16k = {
714 .mode = AFE_PCM_CFG_MODE_PCM,
715 .sync = AFE_PCM_CFG_SYNC_INT,
716 .frame = AFE_PCM_CFG_FRM_256BPF,
717 .quant = AFE_PCM_CFG_QUANT_LINEAR_NOPAD,
718 .slot = 0,
719 .data = AFE_PCM_CFG_CDATAOE_MASTER,
720 .pcm_clk_rate = 4096000,
721 }
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800722};
723
724struct platform_device apq_cpudai_auxpcm_rx = {
725 .name = "msm-dai-q6",
726 .id = 2,
727 .dev = {
Kiran Kandi5f4ab692012-02-23 11:23:56 -0800728 .platform_data = &apq_auxpcm_pdata,
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800729 },
730};
731
732struct platform_device apq_cpudai_auxpcm_tx = {
733 .name = "msm-dai-q6",
734 .id = 3,
Kiran Kandi5f4ab692012-02-23 11:23:56 -0800735 .dev = {
736 .platform_data = &apq_auxpcm_pdata,
737 },
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800738};
739
Patrick Lai04baee942012-05-01 14:38:47 -0700740struct msm_mi2s_pdata mpq_mi2s_tx_data = {
741 .rx_sd_lines = 0,
742 .tx_sd_lines = MSM_MI2S_SD0 | MSM_MI2S_SD1 | MSM_MI2S_SD2 |
743 MSM_MI2S_SD3,
Kuirong Wangf23f8c52012-03-31 12:34:51 -0700744};
745
746struct platform_device mpq_cpudai_mi2s_tx = {
Patrick Lai04baee942012-05-01 14:38:47 -0700747 .name = "msm-dai-q6-mi2s",
748 .id = -1, /*MI2S_TX */
Kuirong Wangf23f8c52012-03-31 12:34:51 -0700749 .dev = {
750 .platform_data = &mpq_mi2s_tx_data,
751 },
752};
753
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800754struct platform_device apq_cpu_fe = {
755 .name = "msm-dai-fe",
756 .id = -1,
757};
758
759struct platform_device apq_stub_codec = {
760 .name = "msm-stub-codec",
761 .id = 1,
762};
763
764struct platform_device apq_voice = {
765 .name = "msm-pcm-voice",
766 .id = -1,
767};
768
769struct platform_device apq_voip = {
770 .name = "msm-voip-dsp",
771 .id = -1,
772};
773
774struct platform_device apq_lpa_pcm = {
775 .name = "msm-pcm-lpa",
776 .id = -1,
777};
778
Krishnankutty Kolathappilly4374e332012-03-18 22:27:30 -0700779struct platform_device apq_compr_dsp = {
780 .name = "msm-compr-dsp",
781 .id = -1,
782};
783
784struct platform_device apq_multi_ch_pcm = {
785 .name = "msm-multi-ch-pcm-dsp",
786 .id = -1,
787};
788
Jayasena Sangaraboina99bf09c2012-07-17 12:03:08 -0700789struct platform_device apq_lowlatency_pcm = {
790 .name = "msm-lowlatency-pcm-dsp",
791 .id = -1,
792};
793
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800794struct platform_device apq_pcm_hostless = {
795 .name = "msm-pcm-hostless",
796 .id = -1,
797};
798
799struct platform_device apq_cpudai_afe_01_rx = {
800 .name = "msm-dai-q6",
801 .id = 0xE0,
802};
803
804struct platform_device apq_cpudai_afe_01_tx = {
805 .name = "msm-dai-q6",
806 .id = 0xF0,
807};
808
809struct platform_device apq_cpudai_afe_02_rx = {
810 .name = "msm-dai-q6",
811 .id = 0xF1,
812};
813
814struct platform_device apq_cpudai_afe_02_tx = {
815 .name = "msm-dai-q6",
816 .id = 0xE1,
817};
818
819struct platform_device apq_pcm_afe = {
820 .name = "msm-pcm-afe",
821 .id = -1,
822};
823
Neema Shetty8427c262012-02-16 11:23:43 -0800824struct platform_device apq_cpudai_stub = {
825 .name = "msm-dai-stub",
826 .id = -1,
827};
828
Neema Shetty3c9d2862012-03-11 01:25:32 -0800829struct platform_device apq_cpudai_slimbus_1_rx = {
830 .name = "msm-dai-q6",
831 .id = 0x4002,
832};
833
834struct platform_device apq_cpudai_slimbus_1_tx = {
835 .name = "msm-dai-q6",
836 .id = 0x4003,
837};
838
Kiran Kandi97fe19d2012-05-20 22:34:04 -0700839struct platform_device apq_cpudai_slimbus_2_rx = {
840 .name = "msm-dai-q6",
841 .id = 0x4004,
842};
843
Kiran Kandi1e6371d2012-03-29 11:48:57 -0700844struct platform_device apq_cpudai_slimbus_2_tx = {
845 .name = "msm-dai-q6",
846 .id = 0x4005,
847};
848
Neema Shettyc9d86c32012-05-09 12:01:39 -0700849struct platform_device apq_cpudai_slimbus_3_rx = {
850 .name = "msm-dai-q6",
851 .id = 0x4006,
852};
853
ehgrace.kim9b771372012-08-13 15:08:56 -0700854struct platform_device apq_cpudai_slimbus_3_tx = {
855 .name = "msm-dai-q6",
856 .id = 0x4007,
857};
858
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700859static struct resource resources_ssbi_pmic1[] = {
860 {
861 .start = MSM_PMIC1_SSBI_CMD_PHYS,
862 .end = MSM_PMIC1_SSBI_CMD_PHYS + MSM_PMIC_SSBI_SIZE - 1,
863 .flags = IORESOURCE_MEM,
864 },
865};
866
Sagar Dharia8bdcdaf2011-09-16 16:01:15 -0600867#define LPASS_SLIMBUS_PHYS 0x28080000
868#define LPASS_SLIMBUS_BAM_PHYS 0x28084000
Swaminathan Sathappan2316e082012-02-03 14:07:17 -0800869#define LPASS_SLIMBUS_SLEW (MSM8960_TLMM_PHYS + 0x207C)
Sagar Dharia8bdcdaf2011-09-16 16:01:15 -0600870/* Board info for the slimbus slave device */
871static struct resource slimbus_res[] = {
872 {
873 .start = LPASS_SLIMBUS_PHYS,
874 .end = LPASS_SLIMBUS_PHYS + 8191,
875 .flags = IORESOURCE_MEM,
876 .name = "slimbus_physical",
877 },
878 {
879 .start = LPASS_SLIMBUS_BAM_PHYS,
880 .end = LPASS_SLIMBUS_BAM_PHYS + 8191,
881 .flags = IORESOURCE_MEM,
882 .name = "slimbus_bam_physical",
883 },
884 {
Swaminathan Sathappan2316e082012-02-03 14:07:17 -0800885 .start = LPASS_SLIMBUS_SLEW,
886 .end = LPASS_SLIMBUS_SLEW + 4 - 1,
887 .flags = IORESOURCE_MEM,
888 .name = "slimbus_slew_reg",
889 },
890 {
Sagar Dharia8bdcdaf2011-09-16 16:01:15 -0600891 .start = SLIMBUS0_CORE_EE1_IRQ,
892 .end = SLIMBUS0_CORE_EE1_IRQ,
893 .flags = IORESOURCE_IRQ,
894 .name = "slimbus_irq",
895 },
896 {
897 .start = SLIMBUS0_BAM_EE1_IRQ,
898 .end = SLIMBUS0_BAM_EE1_IRQ,
899 .flags = IORESOURCE_IRQ,
900 .name = "slimbus_bam_irq",
901 },
902};
903
904struct platform_device apq8064_slim_ctrl = {
905 .name = "msm_slim_ctrl",
906 .id = 1,
907 .num_resources = ARRAY_SIZE(slimbus_res),
908 .resource = slimbus_res,
909 .dev = {
910 .coherent_dma_mask = 0xffffffffULL,
911 },
912};
913
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700914struct platform_device apq8064_device_ssbi_pmic1 = {
915 .name = "msm_ssbi",
916 .id = 0,
917 .resource = resources_ssbi_pmic1,
918 .num_resources = ARRAY_SIZE(resources_ssbi_pmic1),
919};
920
921static struct resource resources_ssbi_pmic2[] = {
922 {
923 .start = MSM_PMIC2_SSBI_CMD_PHYS,
924 .end = MSM_PMIC2_SSBI_CMD_PHYS + MSM_PMIC_SSBI_SIZE - 1,
925 .flags = IORESOURCE_MEM,
926 },
927};
928
929struct platform_device apq8064_device_ssbi_pmic2 = {
930 .name = "msm_ssbi",
931 .id = 1,
932 .resource = resources_ssbi_pmic2,
933 .num_resources = ARRAY_SIZE(resources_ssbi_pmic2),
934};
935
936static struct resource resources_otg[] = {
937 {
Hemant Kumard86c4882012-01-24 19:39:37 -0800938 .start = MSM_HSUSB1_PHYS,
939 .end = MSM_HSUSB1_PHYS + MSM_HSUSB1_SIZE - 1,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700940 .flags = IORESOURCE_MEM,
941 },
942 {
943 .start = USB1_HS_IRQ,
944 .end = USB1_HS_IRQ,
945 .flags = IORESOURCE_IRQ,
946 },
947};
948
Stepan Moskovchenko14aa6492011-08-08 15:15:01 -0700949struct platform_device apq8064_device_otg = {
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700950 .name = "msm_otg",
951 .id = -1,
952 .num_resources = ARRAY_SIZE(resources_otg),
953 .resource = resources_otg,
954 .dev = {
955 .coherent_dma_mask = 0xffffffff,
956 },
957};
958
959static struct resource resources_hsusb[] = {
960 {
Hemant Kumard86c4882012-01-24 19:39:37 -0800961 .start = MSM_HSUSB1_PHYS,
962 .end = MSM_HSUSB1_PHYS + MSM_HSUSB1_SIZE - 1,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700963 .flags = IORESOURCE_MEM,
964 },
965 {
966 .start = USB1_HS_IRQ,
967 .end = USB1_HS_IRQ,
968 .flags = IORESOURCE_IRQ,
969 },
970};
971
Stepan Moskovchenko14aa6492011-08-08 15:15:01 -0700972struct platform_device apq8064_device_gadget_peripheral = {
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700973 .name = "msm_hsusb",
974 .id = -1,
975 .num_resources = ARRAY_SIZE(resources_hsusb),
976 .resource = resources_hsusb,
977 .dev = {
978 .coherent_dma_mask = 0xffffffff,
979 },
980};
981
Hemant Kumard86c4882012-01-24 19:39:37 -0800982static struct resource resources_hsusb_host[] = {
983 {
984 .start = MSM_HSUSB1_PHYS,
985 .end = MSM_HSUSB1_PHYS + MSM_HSUSB1_SIZE - 1,
986 .flags = IORESOURCE_MEM,
987 },
988 {
989 .start = USB1_HS_IRQ,
990 .end = USB1_HS_IRQ,
991 .flags = IORESOURCE_IRQ,
992 },
993};
994
Hemant Kumara945b472012-01-25 15:08:06 -0800995static struct resource resources_hsic_host[] = {
996 {
997 .start = 0x12510000,
998 .end = 0x12510000 + SZ_4K - 1,
999 .flags = IORESOURCE_MEM,
1000 },
1001 {
1002 .start = USB2_HSIC_IRQ,
1003 .end = USB2_HSIC_IRQ,
1004 .flags = IORESOURCE_IRQ,
1005 },
1006 {
1007 .start = MSM_GPIO_TO_INT(49),
1008 .end = MSM_GPIO_TO_INT(49),
1009 .name = "peripheral_status_irq",
1010 .flags = IORESOURCE_IRQ,
1011 },
Vamsi Krishna6921cbe2012-02-21 18:34:43 -08001012 {
Hemant Kumar6fd65032012-05-23 13:02:24 -07001013 .start = 47,
1014 .end = 47,
1015 .name = "wakeup",
1016 .flags = IORESOURCE_IO,
Vamsi Krishna6921cbe2012-02-21 18:34:43 -08001017 },
Hemant Kumara945b472012-01-25 15:08:06 -08001018};
1019
Hemant Kumard86c4882012-01-24 19:39:37 -08001020static u64 dma_mask = DMA_BIT_MASK(32);
1021struct platform_device apq8064_device_hsusb_host = {
1022 .name = "msm_hsusb_host",
1023 .id = -1,
1024 .num_resources = ARRAY_SIZE(resources_hsusb_host),
1025 .resource = resources_hsusb_host,
1026 .dev = {
1027 .dma_mask = &dma_mask,
1028 .coherent_dma_mask = 0xffffffff,
1029 },
1030};
1031
Hemant Kumara945b472012-01-25 15:08:06 -08001032struct platform_device apq8064_device_hsic_host = {
1033 .name = "msm_hsic_host",
1034 .id = -1,
1035 .num_resources = ARRAY_SIZE(resources_hsic_host),
1036 .resource = resources_hsic_host,
1037 .dev = {
1038 .dma_mask = &dma_mask,
1039 .coherent_dma_mask = DMA_BIT_MASK(32),
1040 },
1041};
1042
Manu Gautam91223e02011-11-08 15:27:22 +05301043static struct resource resources_ehci_host3[] = {
1044{
1045 .start = MSM_HSUSB3_PHYS,
1046 .end = MSM_HSUSB3_PHYS + MSM_HSUSB3_SIZE - 1,
1047 .flags = IORESOURCE_MEM,
1048 },
1049 {
1050 .start = USB3_HS_IRQ,
1051 .end = USB3_HS_IRQ,
1052 .flags = IORESOURCE_IRQ,
1053 },
1054};
1055
1056struct platform_device apq8064_device_ehci_host3 = {
1057 .name = "msm_ehci_host",
1058 .id = 0,
1059 .num_resources = ARRAY_SIZE(resources_ehci_host3),
1060 .resource = resources_ehci_host3,
1061 .dev = {
1062 .dma_mask = &dma_mask,
1063 .coherent_dma_mask = 0xffffffff,
1064 },
1065};
1066
Hemant Kumar1d66e1c2012-02-13 15:24:59 -08001067static struct resource resources_ehci_host4[] = {
1068{
1069 .start = MSM_HSUSB4_PHYS,
1070 .end = MSM_HSUSB4_PHYS + MSM_HSUSB4_SIZE - 1,
1071 .flags = IORESOURCE_MEM,
1072 },
1073 {
1074 .start = USB4_HS_IRQ,
1075 .end = USB4_HS_IRQ,
1076 .flags = IORESOURCE_IRQ,
1077 },
1078};
1079
1080struct platform_device apq8064_device_ehci_host4 = {
1081 .name = "msm_ehci_host",
1082 .id = 1,
1083 .num_resources = ARRAY_SIZE(resources_ehci_host4),
1084 .resource = resources_ehci_host4,
1085 .dev = {
1086 .dma_mask = &dma_mask,
1087 .coherent_dma_mask = 0xffffffff,
1088 },
1089};
1090
Matt Wagantallf5cc3892012-06-07 19:47:02 -07001091struct platform_device apq8064_device_acpuclk = {
1092 .name = "acpuclk-8064",
1093 .id = -1,
1094};
1095
Ramesh Masavarapuf31ff242012-05-10 18:55:21 -07001096#define SHARED_IMEM_TZ_BASE 0x2a03f720
1097static struct resource tzlog_resources[] = {
1098 {
1099 .start = SHARED_IMEM_TZ_BASE,
1100 .end = SHARED_IMEM_TZ_BASE + SZ_4K - 1,
1101 .flags = IORESOURCE_MEM,
1102 },
1103};
1104
1105struct platform_device apq_device_tz_log = {
1106 .name = "tz_log",
1107 .id = 0,
1108 .num_resources = ARRAY_SIZE(tzlog_resources),
1109 .resource = tzlog_resources,
1110};
1111
Mohan Kumar Gubbihalli Lachma Naik7f72edd2012-02-06 17:26:47 -08001112/* MSM Video core device */
1113#ifdef CONFIG_MSM_BUS_SCALING
1114static struct msm_bus_vectors vidc_init_vectors[] = {
1115 {
1116 .src = MSM_BUS_MASTER_VIDEO_ENC,
1117 .dst = MSM_BUS_SLAVE_EBI_CH0,
1118 .ab = 0,
1119 .ib = 0,
1120 },
1121 {
1122 .src = MSM_BUS_MASTER_VIDEO_DEC,
1123 .dst = MSM_BUS_SLAVE_EBI_CH0,
1124 .ab = 0,
1125 .ib = 0,
1126 },
1127 {
1128 .src = MSM_BUS_MASTER_AMPSS_M0,
1129 .dst = MSM_BUS_SLAVE_EBI_CH0,
1130 .ab = 0,
1131 .ib = 0,
1132 },
1133 {
1134 .src = MSM_BUS_MASTER_AMPSS_M0,
1135 .dst = MSM_BUS_SLAVE_EBI_CH0,
1136 .ab = 0,
1137 .ib = 0,
1138 },
1139};
1140static struct msm_bus_vectors vidc_venc_vga_vectors[] = {
1141 {
1142 .src = MSM_BUS_MASTER_VIDEO_ENC,
1143 .dst = MSM_BUS_SLAVE_EBI_CH0,
1144 .ab = 54525952,
1145 .ib = 436207616,
1146 },
1147 {
1148 .src = MSM_BUS_MASTER_VIDEO_DEC,
1149 .dst = MSM_BUS_SLAVE_EBI_CH0,
1150 .ab = 72351744,
1151 .ib = 289406976,
1152 },
1153 {
1154 .src = MSM_BUS_MASTER_AMPSS_M0,
1155 .dst = MSM_BUS_SLAVE_EBI_CH0,
1156 .ab = 500000,
1157 .ib = 1000000,
1158 },
1159 {
1160 .src = MSM_BUS_MASTER_AMPSS_M0,
1161 .dst = MSM_BUS_SLAVE_EBI_CH0,
1162 .ab = 500000,
1163 .ib = 1000000,
1164 },
1165};
1166static struct msm_bus_vectors vidc_vdec_vga_vectors[] = {
1167 {
1168 .src = MSM_BUS_MASTER_VIDEO_ENC,
1169 .dst = MSM_BUS_SLAVE_EBI_CH0,
1170 .ab = 40894464,
1171 .ib = 327155712,
1172 },
1173 {
1174 .src = MSM_BUS_MASTER_VIDEO_DEC,
1175 .dst = MSM_BUS_SLAVE_EBI_CH0,
1176 .ab = 48234496,
1177 .ib = 192937984,
1178 },
1179 {
1180 .src = MSM_BUS_MASTER_AMPSS_M0,
1181 .dst = MSM_BUS_SLAVE_EBI_CH0,
1182 .ab = 500000,
1183 .ib = 2000000,
1184 },
1185 {
1186 .src = MSM_BUS_MASTER_AMPSS_M0,
1187 .dst = MSM_BUS_SLAVE_EBI_CH0,
1188 .ab = 500000,
1189 .ib = 2000000,
1190 },
1191};
1192static struct msm_bus_vectors vidc_venc_720p_vectors[] = {
1193 {
1194 .src = MSM_BUS_MASTER_VIDEO_ENC,
1195 .dst = MSM_BUS_SLAVE_EBI_CH0,
1196 .ab = 163577856,
1197 .ib = 1308622848,
1198 },
1199 {
1200 .src = MSM_BUS_MASTER_VIDEO_DEC,
1201 .dst = MSM_BUS_SLAVE_EBI_CH0,
1202 .ab = 219152384,
1203 .ib = 876609536,
1204 },
1205 {
1206 .src = MSM_BUS_MASTER_AMPSS_M0,
1207 .dst = MSM_BUS_SLAVE_EBI_CH0,
1208 .ab = 1750000,
1209 .ib = 3500000,
1210 },
1211 {
1212 .src = MSM_BUS_MASTER_AMPSS_M0,
1213 .dst = MSM_BUS_SLAVE_EBI_CH0,
1214 .ab = 1750000,
1215 .ib = 3500000,
1216 },
1217};
1218static struct msm_bus_vectors vidc_vdec_720p_vectors[] = {
1219 {
1220 .src = MSM_BUS_MASTER_VIDEO_ENC,
1221 .dst = MSM_BUS_SLAVE_EBI_CH0,
1222 .ab = 121634816,
1223 .ib = 973078528,
1224 },
1225 {
1226 .src = MSM_BUS_MASTER_VIDEO_DEC,
1227 .dst = MSM_BUS_SLAVE_EBI_CH0,
1228 .ab = 155189248,
1229 .ib = 620756992,
1230 },
1231 {
1232 .src = MSM_BUS_MASTER_AMPSS_M0,
1233 .dst = MSM_BUS_SLAVE_EBI_CH0,
1234 .ab = 1750000,
1235 .ib = 7000000,
1236 },
1237 {
1238 .src = MSM_BUS_MASTER_AMPSS_M0,
1239 .dst = MSM_BUS_SLAVE_EBI_CH0,
1240 .ab = 1750000,
1241 .ib = 7000000,
1242 },
1243};
1244static struct msm_bus_vectors vidc_venc_1080p_vectors[] = {
1245 {
1246 .src = MSM_BUS_MASTER_VIDEO_ENC,
1247 .dst = MSM_BUS_SLAVE_EBI_CH0,
1248 .ab = 372244480,
1249 .ib = 2560000000U,
1250 },
1251 {
1252 .src = MSM_BUS_MASTER_VIDEO_DEC,
1253 .dst = MSM_BUS_SLAVE_EBI_CH0,
1254 .ab = 501219328,
1255 .ib = 2560000000U,
1256 },
1257 {
1258 .src = MSM_BUS_MASTER_AMPSS_M0,
1259 .dst = MSM_BUS_SLAVE_EBI_CH0,
1260 .ab = 2500000,
1261 .ib = 5000000,
1262 },
1263 {
1264 .src = MSM_BUS_MASTER_AMPSS_M0,
1265 .dst = MSM_BUS_SLAVE_EBI_CH0,
1266 .ab = 2500000,
1267 .ib = 5000000,
1268 },
1269};
1270static struct msm_bus_vectors vidc_vdec_1080p_vectors[] = {
1271 {
1272 .src = MSM_BUS_MASTER_VIDEO_ENC,
1273 .dst = MSM_BUS_SLAVE_EBI_CH0,
1274 .ab = 222298112,
1275 .ib = 2560000000U,
1276 },
1277 {
1278 .src = MSM_BUS_MASTER_VIDEO_DEC,
1279 .dst = MSM_BUS_SLAVE_EBI_CH0,
1280 .ab = 330301440,
1281 .ib = 2560000000U,
1282 },
1283 {
1284 .src = MSM_BUS_MASTER_AMPSS_M0,
1285 .dst = MSM_BUS_SLAVE_EBI_CH0,
1286 .ab = 2500000,
1287 .ib = 700000000,
1288 },
1289 {
1290 .src = MSM_BUS_MASTER_AMPSS_M0,
1291 .dst = MSM_BUS_SLAVE_EBI_CH0,
1292 .ab = 2500000,
1293 .ib = 10000000,
1294 },
1295};
1296
Arun Menon152c3c72012-06-20 11:50:08 -07001297static struct msm_bus_vectors vidc_venc_1080p_turbo_vectors[] = {
1298 {
1299 .src = MSM_BUS_MASTER_VIDEO_ENC,
1300 .dst = MSM_BUS_SLAVE_EBI_CH0,
1301 .ab = 222298112,
1302 .ib = 3522000000U,
1303 },
1304 {
1305 .src = MSM_BUS_MASTER_VIDEO_DEC,
1306 .dst = MSM_BUS_SLAVE_EBI_CH0,
1307 .ab = 330301440,
1308 .ib = 3522000000U,
1309 },
1310 {
1311 .src = MSM_BUS_MASTER_AMPSS_M0,
1312 .dst = MSM_BUS_SLAVE_EBI_CH0,
1313 .ab = 2500000,
1314 .ib = 700000000,
1315 },
1316 {
1317 .src = MSM_BUS_MASTER_AMPSS_M0,
1318 .dst = MSM_BUS_SLAVE_EBI_CH0,
1319 .ab = 2500000,
1320 .ib = 10000000,
1321 },
1322};
1323static struct msm_bus_vectors vidc_vdec_1080p_turbo_vectors[] = {
1324 {
1325 .src = MSM_BUS_MASTER_VIDEO_ENC,
1326 .dst = MSM_BUS_SLAVE_EBI_CH0,
1327 .ab = 222298112,
1328 .ib = 3522000000U,
1329 },
1330 {
1331 .src = MSM_BUS_MASTER_VIDEO_DEC,
1332 .dst = MSM_BUS_SLAVE_EBI_CH0,
1333 .ab = 330301440,
1334 .ib = 3522000000U,
1335 },
1336 {
1337 .src = MSM_BUS_MASTER_AMPSS_M0,
1338 .dst = MSM_BUS_SLAVE_EBI_CH0,
1339 .ab = 2500000,
1340 .ib = 700000000,
1341 },
1342 {
1343 .src = MSM_BUS_MASTER_AMPSS_M0,
1344 .dst = MSM_BUS_SLAVE_EBI_CH0,
1345 .ab = 2500000,
1346 .ib = 10000000,
1347 },
1348};
1349
Mohan Kumar Gubbihalli Lachma Naik7f72edd2012-02-06 17:26:47 -08001350static struct msm_bus_paths vidc_bus_client_config[] = {
1351 {
1352 ARRAY_SIZE(vidc_init_vectors),
1353 vidc_init_vectors,
1354 },
1355 {
1356 ARRAY_SIZE(vidc_venc_vga_vectors),
1357 vidc_venc_vga_vectors,
1358 },
1359 {
1360 ARRAY_SIZE(vidc_vdec_vga_vectors),
1361 vidc_vdec_vga_vectors,
1362 },
1363 {
1364 ARRAY_SIZE(vidc_venc_720p_vectors),
1365 vidc_venc_720p_vectors,
1366 },
1367 {
1368 ARRAY_SIZE(vidc_vdec_720p_vectors),
1369 vidc_vdec_720p_vectors,
1370 },
1371 {
1372 ARRAY_SIZE(vidc_venc_1080p_vectors),
1373 vidc_venc_1080p_vectors,
1374 },
1375 {
1376 ARRAY_SIZE(vidc_vdec_1080p_vectors),
1377 vidc_vdec_1080p_vectors,
1378 },
Arun Menon152c3c72012-06-20 11:50:08 -07001379 {
1380 ARRAY_SIZE(vidc_venc_1080p_turbo_vectors),
1381 vidc_venc_1080p_turbo_vectors,
1382 },
1383 {
1384 ARRAY_SIZE(vidc_vdec_1080p_turbo_vectors),
1385 vidc_vdec_1080p_turbo_vectors,
1386 },
Mohan Kumar Gubbihalli Lachma Naik7f72edd2012-02-06 17:26:47 -08001387};
1388
1389static struct msm_bus_scale_pdata vidc_bus_client_data = {
1390 vidc_bus_client_config,
1391 ARRAY_SIZE(vidc_bus_client_config),
1392 .name = "vidc",
1393};
1394#endif
1395
1396
1397#define APQ8064_VIDC_BASE_PHYS 0x04400000
1398#define APQ8064_VIDC_BASE_SIZE 0x00100000
1399
1400static struct resource apq8064_device_vidc_resources[] = {
1401 {
1402 .start = APQ8064_VIDC_BASE_PHYS,
1403 .end = APQ8064_VIDC_BASE_PHYS + APQ8064_VIDC_BASE_SIZE - 1,
1404 .flags = IORESOURCE_MEM,
1405 },
1406 {
1407 .start = VCODEC_IRQ,
1408 .end = VCODEC_IRQ,
1409 .flags = IORESOURCE_IRQ,
1410 },
1411};
1412
1413struct msm_vidc_platform_data apq8064_vidc_platform_data = {
1414#ifdef CONFIG_MSM_BUS_SCALING
1415 .vidc_bus_client_pdata = &vidc_bus_client_data,
1416#endif
1417#ifdef CONFIG_MSM_MULTIMEDIA_USE_ION
1418 .memtype = ION_CP_MM_HEAP_ID,
1419 .enable_ion = 1,
Deepak kotureda295a2012-05-10 19:49:46 -07001420 .cp_enabled = 1,
Mohan Kumar Gubbihalli Lachma Naik7f72edd2012-02-06 17:26:47 -08001421#else
1422 .memtype = MEMTYPE_EBI1,
1423 .enable_ion = 0,
1424#endif
1425 .disable_dmx = 0,
1426 .disable_fullhd = 0,
Mohan Kumar Gubbihalli Lachma Naiked9dc912012-03-01 19:11:14 -08001427 .cont_mode_dpb_count = 18,
Riaz Rahaman84f8c682012-05-30 13:32:10 +05301428 .fw_addr = 0x9fe00000,
Deepak Verma587c98e2013-02-01 22:47:49 +05301429 .enable_sec_metadata = 1,
Mohan Kumar Gubbihalli Lachma Naik7f72edd2012-02-06 17:26:47 -08001430};
1431
1432struct platform_device apq8064_msm_device_vidc = {
1433 .name = "msm_vidc",
1434 .id = 0,
1435 .num_resources = ARRAY_SIZE(apq8064_device_vidc_resources),
1436 .resource = apq8064_device_vidc_resources,
1437 .dev = {
1438 .platform_data = &apq8064_vidc_platform_data,
1439 },
1440};
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001441#define MSM_SDC1_BASE 0x12400000
1442#define MSM_SDC1_DML_BASE (MSM_SDC1_BASE + 0x800)
1443#define MSM_SDC1_BAM_BASE (MSM_SDC1_BASE + 0x2000)
1444#define MSM_SDC2_BASE 0x12140000
1445#define MSM_SDC2_DML_BASE (MSM_SDC2_BASE + 0x800)
1446#define MSM_SDC2_BAM_BASE (MSM_SDC2_BASE + 0x2000)
1447#define MSM_SDC3_BASE 0x12180000
1448#define MSM_SDC3_DML_BASE (MSM_SDC3_BASE + 0x800)
1449#define MSM_SDC3_BAM_BASE (MSM_SDC3_BASE + 0x2000)
1450#define MSM_SDC4_BASE 0x121C0000
1451#define MSM_SDC4_DML_BASE (MSM_SDC4_BASE + 0x800)
1452#define MSM_SDC4_BAM_BASE (MSM_SDC4_BASE + 0x2000)
1453
1454static struct resource resources_sdc1[] = {
1455 {
1456 .name = "core_mem",
1457 .flags = IORESOURCE_MEM,
1458 .start = MSM_SDC1_BASE,
1459 .end = MSM_SDC1_DML_BASE - 1,
1460 },
1461 {
1462 .name = "core_irq",
1463 .flags = IORESOURCE_IRQ,
1464 .start = SDC1_IRQ_0,
1465 .end = SDC1_IRQ_0
1466 },
1467#ifdef CONFIG_MMC_MSM_SPS_SUPPORT
1468 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301469 .name = "dml_mem",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001470 .start = MSM_SDC1_DML_BASE,
1471 .end = MSM_SDC1_BAM_BASE - 1,
1472 .flags = IORESOURCE_MEM,
1473 },
1474 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301475 .name = "bam_mem",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001476 .start = MSM_SDC1_BAM_BASE,
1477 .end = MSM_SDC1_BAM_BASE + (2 * SZ_4K) - 1,
1478 .flags = IORESOURCE_MEM,
1479 },
1480 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301481 .name = "bam_irq",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001482 .start = SDC1_BAM_IRQ,
1483 .end = SDC1_BAM_IRQ,
1484 .flags = IORESOURCE_IRQ,
1485 },
1486#endif
1487};
1488
1489static struct resource resources_sdc2[] = {
1490 {
1491 .name = "core_mem",
1492 .flags = IORESOURCE_MEM,
1493 .start = MSM_SDC2_BASE,
1494 .end = MSM_SDC2_DML_BASE - 1,
1495 },
1496 {
1497 .name = "core_irq",
1498 .flags = IORESOURCE_IRQ,
1499 .start = SDC2_IRQ_0,
1500 .end = SDC2_IRQ_0
1501 },
1502#ifdef CONFIG_MMC_MSM_SPS_SUPPORT
1503 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301504 .name = "dml_mem",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001505 .start = MSM_SDC2_DML_BASE,
1506 .end = MSM_SDC2_BAM_BASE - 1,
1507 .flags = IORESOURCE_MEM,
1508 },
1509 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301510 .name = "bam_mem",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001511 .start = MSM_SDC2_BAM_BASE,
1512 .end = MSM_SDC2_BAM_BASE + (2 * SZ_4K) - 1,
1513 .flags = IORESOURCE_MEM,
1514 },
1515 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301516 .name = "bam_irq",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001517 .start = SDC2_BAM_IRQ,
1518 .end = SDC2_BAM_IRQ,
1519 .flags = IORESOURCE_IRQ,
1520 },
1521#endif
1522};
1523
1524static struct resource resources_sdc3[] = {
1525 {
1526 .name = "core_mem",
1527 .flags = IORESOURCE_MEM,
1528 .start = MSM_SDC3_BASE,
1529 .end = MSM_SDC3_DML_BASE - 1,
1530 },
1531 {
1532 .name = "core_irq",
1533 .flags = IORESOURCE_IRQ,
1534 .start = SDC3_IRQ_0,
1535 .end = SDC3_IRQ_0
1536 },
1537#ifdef CONFIG_MMC_MSM_SPS_SUPPORT
1538 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301539 .name = "dml_mem",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001540 .start = MSM_SDC3_DML_BASE,
1541 .end = MSM_SDC3_BAM_BASE - 1,
1542 .flags = IORESOURCE_MEM,
1543 },
1544 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301545 .name = "bam_mem",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001546 .start = MSM_SDC3_BAM_BASE,
1547 .end = MSM_SDC3_BAM_BASE + (2 * SZ_4K) - 1,
1548 .flags = IORESOURCE_MEM,
1549 },
1550 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301551 .name = "bam_irq",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001552 .start = SDC3_BAM_IRQ,
1553 .end = SDC3_BAM_IRQ,
1554 .flags = IORESOURCE_IRQ,
1555 },
1556#endif
1557};
1558
1559static struct resource resources_sdc4[] = {
1560 {
1561 .name = "core_mem",
1562 .flags = IORESOURCE_MEM,
1563 .start = MSM_SDC4_BASE,
1564 .end = MSM_SDC4_DML_BASE - 1,
1565 },
1566 {
1567 .name = "core_irq",
1568 .flags = IORESOURCE_IRQ,
1569 .start = SDC4_IRQ_0,
1570 .end = SDC4_IRQ_0
1571 },
1572#ifdef CONFIG_MMC_MSM_SPS_SUPPORT
1573 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301574 .name = "dml_mem",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001575 .start = MSM_SDC4_DML_BASE,
1576 .end = MSM_SDC4_BAM_BASE - 1,
1577 .flags = IORESOURCE_MEM,
1578 },
1579 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301580 .name = "bam_mem",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001581 .start = MSM_SDC4_BAM_BASE,
1582 .end = MSM_SDC4_BAM_BASE + (2 * SZ_4K) - 1,
1583 .flags = IORESOURCE_MEM,
1584 },
1585 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301586 .name = "bam_irq",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001587 .start = SDC4_BAM_IRQ,
1588 .end = SDC4_BAM_IRQ,
1589 .flags = IORESOURCE_IRQ,
1590 },
1591#endif
1592};
1593
1594struct platform_device apq8064_device_sdc1 = {
1595 .name = "msm_sdcc",
1596 .id = 1,
1597 .num_resources = ARRAY_SIZE(resources_sdc1),
1598 .resource = resources_sdc1,
1599 .dev = {
1600 .coherent_dma_mask = 0xffffffff,
1601 },
1602};
1603
1604struct platform_device apq8064_device_sdc2 = {
1605 .name = "msm_sdcc",
1606 .id = 2,
1607 .num_resources = ARRAY_SIZE(resources_sdc2),
1608 .resource = resources_sdc2,
1609 .dev = {
1610 .coherent_dma_mask = 0xffffffff,
1611 },
1612};
1613
1614struct platform_device apq8064_device_sdc3 = {
1615 .name = "msm_sdcc",
1616 .id = 3,
1617 .num_resources = ARRAY_SIZE(resources_sdc3),
1618 .resource = resources_sdc3,
1619 .dev = {
1620 .coherent_dma_mask = 0xffffffff,
1621 },
1622};
1623
1624struct platform_device apq8064_device_sdc4 = {
1625 .name = "msm_sdcc",
1626 .id = 4,
1627 .num_resources = ARRAY_SIZE(resources_sdc4),
1628 .resource = resources_sdc4,
1629 .dev = {
1630 .coherent_dma_mask = 0xffffffff,
1631 },
1632};
1633
1634static struct platform_device *apq8064_sdcc_devices[] __initdata = {
1635 &apq8064_device_sdc1,
1636 &apq8064_device_sdc2,
1637 &apq8064_device_sdc3,
1638 &apq8064_device_sdc4,
1639};
1640
1641int __init apq8064_add_sdcc(unsigned int controller,
1642 struct mmc_platform_data *plat)
1643{
1644 struct platform_device *pdev;
1645
1646 if (!plat)
1647 return 0;
1648 if (controller < 1 || controller > 4)
1649 return -EINVAL;
1650
1651 pdev = apq8064_sdcc_devices[controller-1];
1652 pdev->dev.platform_data = plat;
1653 return platform_device_register(pdev);
1654}
1655
Yan He06913ce2011-08-26 16:33:46 -07001656static struct resource resources_sps[] = {
1657 {
1658 .name = "pipe_mem",
1659 .start = 0x12800000,
1660 .end = 0x12800000 + 0x4000 - 1,
1661 .flags = IORESOURCE_MEM,
1662 },
1663 {
1664 .name = "bamdma_dma",
1665 .start = 0x12240000,
1666 .end = 0x12240000 + 0x1000 - 1,
1667 .flags = IORESOURCE_MEM,
1668 },
1669 {
1670 .name = "bamdma_bam",
1671 .start = 0x12244000,
1672 .end = 0x12244000 + 0x4000 - 1,
1673 .flags = IORESOURCE_MEM,
1674 },
1675 {
1676 .name = "bamdma_irq",
1677 .start = SPS_BAM_DMA_IRQ,
1678 .end = SPS_BAM_DMA_IRQ,
1679 .flags = IORESOURCE_IRQ,
1680 },
1681};
1682
Gagan Mac8a7a5d32011-11-11 16:43:06 -07001683struct platform_device msm_bus_8064_sys_fabric = {
1684 .name = "msm_bus_fabric",
1685 .id = MSM_BUS_FAB_SYSTEM,
1686};
1687struct platform_device msm_bus_8064_apps_fabric = {
1688 .name = "msm_bus_fabric",
1689 .id = MSM_BUS_FAB_APPSS,
1690};
1691struct platform_device msm_bus_8064_mm_fabric = {
1692 .name = "msm_bus_fabric",
1693 .id = MSM_BUS_FAB_MMSS,
1694};
1695struct platform_device msm_bus_8064_sys_fpb = {
1696 .name = "msm_bus_fabric",
1697 .id = MSM_BUS_FAB_SYSTEM_FPB,
1698};
1699struct platform_device msm_bus_8064_cpss_fpb = {
1700 .name = "msm_bus_fabric",
1701 .id = MSM_BUS_FAB_CPSS_FPB,
1702};
1703
Yan He06913ce2011-08-26 16:33:46 -07001704static struct msm_sps_platform_data msm_sps_pdata = {
1705 .bamdma_restricted_pipes = 0x06,
1706};
1707
1708struct platform_device msm_device_sps_apq8064 = {
1709 .name = "msm_sps",
1710 .id = -1,
1711 .num_resources = ARRAY_SIZE(resources_sps),
1712 .resource = resources_sps,
1713 .dev.platform_data = &msm_sps_pdata,
1714};
1715
Eric Holmberg023d25c2012-03-01 12:27:55 -07001716static struct resource smd_resource[] = {
1717 {
1718 .name = "a9_m2a_0",
1719 .start = INT_A9_M2A_0,
1720 .flags = IORESOURCE_IRQ,
1721 },
1722 {
1723 .name = "a9_m2a_5",
1724 .start = INT_A9_M2A_5,
1725 .flags = IORESOURCE_IRQ,
1726 },
1727 {
1728 .name = "adsp_a11",
1729 .start = INT_ADSP_A11,
1730 .flags = IORESOURCE_IRQ,
1731 },
1732 {
1733 .name = "adsp_a11_smsm",
1734 .start = INT_ADSP_A11_SMSM,
1735 .flags = IORESOURCE_IRQ,
1736 },
1737 {
1738 .name = "dsps_a11",
1739 .start = INT_DSPS_A11,
1740 .flags = IORESOURCE_IRQ,
1741 },
1742 {
1743 .name = "dsps_a11_smsm",
1744 .start = INT_DSPS_A11_SMSM,
1745 .flags = IORESOURCE_IRQ,
1746 },
1747 {
1748 .name = "wcnss_a11",
1749 .start = INT_WCNSS_A11,
1750 .flags = IORESOURCE_IRQ,
1751 },
1752 {
1753 .name = "wcnss_a11_smsm",
1754 .start = INT_WCNSS_A11_SMSM,
1755 .flags = IORESOURCE_IRQ,
1756 },
1757};
1758
1759static struct smd_subsystem_config smd_config_list[] = {
1760 {
1761 .irq_config_id = SMD_MODEM,
1762 .subsys_name = "gss",
1763 .edge = SMD_APPS_MODEM,
1764
1765 .smd_int.irq_name = "a9_m2a_0",
1766 .smd_int.flags = IRQF_TRIGGER_RISING,
1767 .smd_int.irq_id = -1,
1768 .smd_int.device_name = "smd_dev",
1769 .smd_int.dev_id = 0,
1770 .smd_int.out_bit_pos = 1 << 3,
1771 .smd_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1772 .smd_int.out_offset = 0x8,
1773
1774 .smsm_int.irq_name = "a9_m2a_5",
1775 .smsm_int.flags = IRQF_TRIGGER_RISING,
1776 .smsm_int.irq_id = -1,
1777 .smsm_int.device_name = "smd_smsm",
1778 .smsm_int.dev_id = 0,
1779 .smsm_int.out_bit_pos = 1 << 4,
1780 .smsm_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1781 .smsm_int.out_offset = 0x8,
1782 },
1783 {
1784 .irq_config_id = SMD_Q6,
1785 .subsys_name = "q6",
1786 .edge = SMD_APPS_QDSP,
1787
1788 .smd_int.irq_name = "adsp_a11",
1789 .smd_int.flags = IRQF_TRIGGER_RISING,
1790 .smd_int.irq_id = -1,
1791 .smd_int.device_name = "smd_dev",
1792 .smd_int.dev_id = 0,
1793 .smd_int.out_bit_pos = 1 << 15,
1794 .smd_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1795 .smd_int.out_offset = 0x8,
1796
1797 .smsm_int.irq_name = "adsp_a11_smsm",
1798 .smsm_int.flags = IRQF_TRIGGER_RISING,
1799 .smsm_int.irq_id = -1,
1800 .smsm_int.device_name = "smd_smsm",
1801 .smsm_int.dev_id = 0,
1802 .smsm_int.out_bit_pos = 1 << 14,
1803 .smsm_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1804 .smsm_int.out_offset = 0x8,
1805 },
1806 {
1807 .irq_config_id = SMD_DSPS,
1808 .subsys_name = "dsps",
1809 .edge = SMD_APPS_DSPS,
1810
1811 .smd_int.irq_name = "dsps_a11",
1812 .smd_int.flags = IRQF_TRIGGER_RISING,
1813 .smd_int.irq_id = -1,
1814 .smd_int.device_name = "smd_dev",
1815 .smd_int.dev_id = 0,
1816 .smd_int.out_bit_pos = 1,
1817 .smd_int.out_base = (void __iomem *)MSM_SIC_NON_SECURE_BASE,
1818 .smd_int.out_offset = 0x4080,
1819
1820 .smsm_int.irq_name = "dsps_a11_smsm",
1821 .smsm_int.flags = IRQF_TRIGGER_RISING,
1822 .smsm_int.irq_id = -1,
1823 .smsm_int.device_name = "smd_smsm",
1824 .smsm_int.dev_id = 0,
1825 .smsm_int.out_bit_pos = 1,
1826 .smsm_int.out_base = (void __iomem *)MSM_SIC_NON_SECURE_BASE,
1827 .smsm_int.out_offset = 0x4094,
1828 },
1829 {
1830 .irq_config_id = SMD_WCNSS,
1831 .subsys_name = "wcnss",
1832 .edge = SMD_APPS_WCNSS,
1833
1834 .smd_int.irq_name = "wcnss_a11",
1835 .smd_int.flags = IRQF_TRIGGER_RISING,
1836 .smd_int.irq_id = -1,
1837 .smd_int.device_name = "smd_dev",
1838 .smd_int.dev_id = 0,
1839 .smd_int.out_bit_pos = 1 << 25,
1840 .smd_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1841 .smd_int.out_offset = 0x8,
1842
1843 .smsm_int.irq_name = "wcnss_a11_smsm",
1844 .smsm_int.flags = IRQF_TRIGGER_RISING,
1845 .smsm_int.irq_id = -1,
1846 .smsm_int.device_name = "smd_smsm",
1847 .smsm_int.dev_id = 0,
1848 .smsm_int.out_bit_pos = 1 << 23,
1849 .smsm_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1850 .smsm_int.out_offset = 0x8,
1851 },
1852};
1853
Eric Holmberg2bb6ccd2012-03-13 13:05:14 -06001854static struct smd_subsystem_restart_config smd_ssr_config = {
1855 .disable_smsm_reset_handshake = 1,
1856};
1857
Eric Holmberg023d25c2012-03-01 12:27:55 -07001858static struct smd_platform smd_platform_data = {
1859 .num_ss_configs = ARRAY_SIZE(smd_config_list),
1860 .smd_ss_configs = smd_config_list,
Eric Holmberg2bb6ccd2012-03-13 13:05:14 -06001861 .smd_ssr_config = &smd_ssr_config,
Eric Holmberg023d25c2012-03-01 12:27:55 -07001862};
1863
Jeff Hugo0c0f5e92011-09-28 13:55:45 -06001864struct platform_device msm_device_smd_apq8064 = {
1865 .name = "msm_smd",
1866 .id = -1,
Eric Holmberg023d25c2012-03-01 12:27:55 -07001867 .resource = smd_resource,
1868 .num_resources = ARRAY_SIZE(smd_resource),
1869 .dev = {
1870 .platform_data = &smd_platform_data,
1871 },
Jeff Hugo0c0f5e92011-09-28 13:55:45 -06001872};
1873
Niranjana Vishwanathapura06f89332012-05-03 17:11:13 -06001874static struct resource resources_msm_pcie[] = {
1875 {
Niranjana Vishwanathapura68210ff2012-06-24 18:03:49 -06001876 .name = "pcie_parf",
Niranjana Vishwanathapura06f89332012-05-03 17:11:13 -06001877 .start = PCIE20_PARF_PHYS,
1878 .end = PCIE20_PARF_PHYS + PCIE20_PARF_SIZE - 1,
1879 .flags = IORESOURCE_MEM,
1880 },
1881 {
Niranjana Vishwanathapura68210ff2012-06-24 18:03:49 -06001882 .name = "pcie_elbi",
Niranjana Vishwanathapura06f89332012-05-03 17:11:13 -06001883 .start = PCIE20_ELBI_PHYS,
1884 .end = PCIE20_ELBI_PHYS + PCIE20_ELBI_SIZE - 1,
1885 .flags = IORESOURCE_MEM,
1886 },
1887 {
1888 .name = "pcie20",
1889 .start = PCIE20_PHYS,
1890 .end = PCIE20_PHYS + PCIE20_SIZE - 1,
1891 .flags = IORESOURCE_MEM,
1892 },
Niranjana Vishwanathapura06f89332012-05-03 17:11:13 -06001893};
1894
1895struct platform_device msm_device_pcie = {
1896 .name = "msm_pcie",
1897 .id = -1,
1898 .num_resources = ARRAY_SIZE(resources_msm_pcie),
1899 .resource = resources_msm_pcie,
1900};
1901
Ramesh Masavarapuf46be1b2011-11-03 11:13:41 -07001902#ifdef CONFIG_HW_RANDOM_MSM
1903/* PRNG device */
1904#define MSM_PRNG_PHYS 0x1A500000
1905static struct resource rng_resources = {
1906 .flags = IORESOURCE_MEM,
1907 .start = MSM_PRNG_PHYS,
1908 .end = MSM_PRNG_PHYS + SZ_512 - 1,
1909};
1910
1911struct platform_device apq8064_device_rng = {
1912 .name = "msm_rng",
1913 .id = 0,
1914 .num_resources = 1,
1915 .resource = &rng_resources,
1916};
1917#endif
1918
Matt Wagantall292aace2012-01-26 19:12:34 -08001919static struct resource msm_gss_resources[] = {
1920 {
1921 .start = 0x10000000,
1922 .end = 0x10000000 + SZ_256 - 1,
1923 .flags = IORESOURCE_MEM,
1924 },
Matt Wagantall19ac4fd2012-02-03 20:18:23 -08001925 {
1926 .start = 0x10008000,
1927 .end = 0x10008000 + SZ_256 - 1,
1928 .flags = IORESOURCE_MEM,
1929 },
Matt Wagantall292aace2012-01-26 19:12:34 -08001930};
1931
1932struct platform_device msm_gss = {
1933 .name = "pil_gss",
1934 .id = -1,
1935 .num_resources = ARRAY_SIZE(msm_gss_resources),
1936 .resource = msm_gss_resources,
1937};
1938
Matt Wagantall1f65d9d2012-04-25 14:24:20 -07001939static struct fs_driver_data gfx3d_fs_data = {
1940 .clks = (struct fs_clk_data[]){
1941 { .name = "core_clk", .reset_rate = 27000000 },
1942 { .name = "iface_clk" },
1943 { .name = "bus_clk" },
1944 { 0 }
1945 },
1946 .bus_port0 = MSM_BUS_MASTER_GRAPHICS_3D,
1947 .bus_port1 = MSM_BUS_MASTER_GRAPHICS_3D_PORT1,
Matt Wagantall1875d322012-02-22 16:11:33 -08001948};
Matt Wagantall1f65d9d2012-04-25 14:24:20 -07001949
1950static struct fs_driver_data ijpeg_fs_data = {
1951 .clks = (struct fs_clk_data[]){
1952 { .name = "core_clk" },
1953 { .name = "iface_clk" },
1954 { .name = "bus_clk" },
1955 { 0 }
1956 },
1957 .bus_port0 = MSM_BUS_MASTER_JPEG_ENC,
1958};
1959
Nagamalleswararao Ganji6db8c512012-05-24 20:26:23 -07001960static struct fs_driver_data mdp_fs_data = {
1961 .clks = (struct fs_clk_data[]){
1962 { .name = "core_clk" },
1963 { .name = "iface_clk" },
1964 { .name = "bus_clk" },
1965 { .name = "vsync_clk" },
1966 { .name = "lut_clk" },
1967 { .name = "tv_src_clk" },
1968 { .name = "tv_clk" },
Matt Wagantallc33c1ed2012-07-23 17:19:08 -07001969 { .name = "reset1_clk" },
1970 { .name = "reset2_clk" },
Nagamalleswararao Ganji6db8c512012-05-24 20:26:23 -07001971 { 0 }
1972 },
1973 .bus_port0 = MSM_BUS_MASTER_MDP_PORT0,
1974 .bus_port1 = MSM_BUS_MASTER_MDP_PORT1,
1975};
1976
Matt Wagantall1f65d9d2012-04-25 14:24:20 -07001977static struct fs_driver_data rot_fs_data = {
1978 .clks = (struct fs_clk_data[]){
1979 { .name = "core_clk" },
1980 { .name = "iface_clk" },
1981 { .name = "bus_clk" },
1982 { 0 }
1983 },
1984 .bus_port0 = MSM_BUS_MASTER_ROTATOR,
1985};
1986
1987static struct fs_driver_data ved_fs_data = {
1988 .clks = (struct fs_clk_data[]){
1989 { .name = "core_clk" },
1990 { .name = "iface_clk" },
1991 { .name = "bus_clk" },
1992 { 0 }
1993 },
1994 .bus_port0 = MSM_BUS_MASTER_VIDEO_ENC,
1995 .bus_port1 = MSM_BUS_MASTER_VIDEO_DEC,
1996};
1997
1998static struct fs_driver_data vfe_fs_data = {
1999 .clks = (struct fs_clk_data[]){
2000 { .name = "core_clk" },
2001 { .name = "iface_clk" },
2002 { .name = "bus_clk" },
2003 { 0 }
2004 },
2005 .bus_port0 = MSM_BUS_MASTER_VFE,
2006};
2007
2008static struct fs_driver_data vpe_fs_data = {
2009 .clks = (struct fs_clk_data[]){
2010 { .name = "core_clk" },
2011 { .name = "iface_clk" },
2012 { .name = "bus_clk" },
2013 { 0 }
2014 },
2015 .bus_port0 = MSM_BUS_MASTER_VPE,
2016};
2017
2018static struct fs_driver_data vcap_fs_data = {
2019 .clks = (struct fs_clk_data[]){
2020 { .name = "core_clk" },
2021 { .name = "iface_clk" },
2022 { .name = "bus_clk" },
2023 { 0 },
2024 },
2025 .bus_port0 = MSM_BUS_MASTER_VIDEO_CAP,
2026};
2027
2028struct platform_device *apq8064_footswitch[] __initdata = {
Nagamalleswararao Ganji6db8c512012-05-24 20:26:23 -07002029 FS_8X60(FS_MDP, "vdd", "mdp.0", &mdp_fs_data),
Matt Wagantall316f2fc2012-05-03 20:41:42 -07002030 FS_8X60(FS_ROT, "vdd", "msm_rotator.0", &rot_fs_data),
Matt Wagantalle4454b82012-05-03 20:48:01 -07002031 FS_8X60(FS_IJPEG, "vdd", "msm_gemini.0", &ijpeg_fs_data),
Kiran Kumar H Nfa18a032012-06-25 14:34:18 -07002032 FS_8X60(FS_VFE, "vdd", "msm_vfe.0", &vfe_fs_data),
2033 FS_8X60(FS_VPE, "vdd", "msm_vpe.0", &vpe_fs_data),
Matt Wagantalld6fbf232012-05-03 20:09:28 -07002034 FS_8X60(FS_GFX3D, "vdd", "kgsl-3d0.0", &gfx3d_fs_data),
Matt Wagantall5e46aac2012-05-03 20:20:18 -07002035 FS_8X60(FS_VED, "vdd", "msm_vidc.0", &ved_fs_data),
Matt Wagantall3cd5b3d2012-05-03 20:35:20 -07002036 FS_8X60(FS_VCAP, "vdd", "msm_vcap.0", &vcap_fs_data),
Matt Wagantall1f65d9d2012-04-25 14:24:20 -07002037};
2038unsigned apq8064_num_footswitch __initdata = ARRAY_SIZE(apq8064_footswitch);
Matt Wagantall1875d322012-02-22 16:11:33 -08002039
Praveen Chidambaram78499012011-11-01 17:15:17 -06002040struct msm_rpm_platform_data apq8064_rpm_data __initdata = {
2041 .reg_base_addrs = {
2042 [MSM_RPM_PAGE_STATUS] = MSM_RPM_BASE,
2043 [MSM_RPM_PAGE_CTRL] = MSM_RPM_BASE + 0x400,
2044 [MSM_RPM_PAGE_REQ] = MSM_RPM_BASE + 0x600,
2045 [MSM_RPM_PAGE_ACK] = MSM_RPM_BASE + 0xa00,
2046 },
2047 .irq_ack = RPM_APCC_CPU0_GP_HIGH_IRQ,
Stephen Boydf61255e2012-02-24 14:31:09 -08002048 .irq_err = RPM_APCC_CPU0_GP_LOW_IRQ,
Praveen Chidambarame396ce62012-03-30 11:15:57 -06002049 .irq_wakeup = RPM_APCC_CPU0_WAKE_UP_IRQ,
Praveen Chidambaram78499012011-11-01 17:15:17 -06002050 .ipc_rpm_reg = MSM_APCS_GCC_BASE + 0x008,
2051 .ipc_rpm_val = 4,
2052 .target_id = {
2053 MSM_RPM_MAP(8064, NOTIFICATION_CONFIGURED_0, NOTIFICATION, 4),
2054 MSM_RPM_MAP(8064, NOTIFICATION_REGISTERED_0, NOTIFICATION, 4),
2055 MSM_RPM_MAP(8064, INVALIDATE_0, INVALIDATE, 8),
2056 MSM_RPM_MAP(8064, TRIGGER_TIMED_TO, TRIGGER_TIMED, 1),
2057 MSM_RPM_MAP(8064, TRIGGER_TIMED_SCLK_COUNT, TRIGGER_TIMED, 1),
2058 MSM_RPM_MAP(8064, RPM_CTL, RPM_CTL, 1),
2059 MSM_RPM_MAP(8064, CXO_CLK, CXO_CLK, 1),
2060 MSM_RPM_MAP(8064, PXO_CLK, PXO_CLK, 1),
2061 MSM_RPM_MAP(8064, APPS_FABRIC_CLK, APPS_FABRIC_CLK, 1),
2062 MSM_RPM_MAP(8064, SYSTEM_FABRIC_CLK, SYSTEM_FABRIC_CLK, 1),
2063 MSM_RPM_MAP(8064, MM_FABRIC_CLK, MM_FABRIC_CLK, 1),
2064 MSM_RPM_MAP(8064, DAYTONA_FABRIC_CLK, DAYTONA_FABRIC_CLK, 1),
2065 MSM_RPM_MAP(8064, SFPB_CLK, SFPB_CLK, 1),
2066 MSM_RPM_MAP(8064, CFPB_CLK, CFPB_CLK, 1),
2067 MSM_RPM_MAP(8064, MMFPB_CLK, MMFPB_CLK, 1),
2068 MSM_RPM_MAP(8064, EBI1_CLK, EBI1_CLK, 1),
2069 MSM_RPM_MAP(8064, APPS_FABRIC_CFG_HALT_0,
2070 APPS_FABRIC_CFG_HALT, 2),
2071 MSM_RPM_MAP(8064, APPS_FABRIC_CFG_CLKMOD_0,
2072 APPS_FABRIC_CFG_CLKMOD, 3),
2073 MSM_RPM_MAP(8064, APPS_FABRIC_CFG_IOCTL,
2074 APPS_FABRIC_CFG_IOCTL, 1),
2075 MSM_RPM_MAP(8064, APPS_FABRIC_ARB_0, APPS_FABRIC_ARB, 12),
2076 MSM_RPM_MAP(8064, SYS_FABRIC_CFG_HALT_0,
2077 SYS_FABRIC_CFG_HALT, 2),
2078 MSM_RPM_MAP(8064, SYS_FABRIC_CFG_CLKMOD_0,
2079 SYS_FABRIC_CFG_CLKMOD, 3),
2080 MSM_RPM_MAP(8064, SYS_FABRIC_CFG_IOCTL,
2081 SYS_FABRIC_CFG_IOCTL, 1),
2082 MSM_RPM_MAP(8064, SYSTEM_FABRIC_ARB_0, SYSTEM_FABRIC_ARB, 30),
2083 MSM_RPM_MAP(8064, MMSS_FABRIC_CFG_HALT_0,
2084 MMSS_FABRIC_CFG_HALT, 2),
2085 MSM_RPM_MAP(8064, MMSS_FABRIC_CFG_CLKMOD_0,
2086 MMSS_FABRIC_CFG_CLKMOD, 3),
2087 MSM_RPM_MAP(8064, MMSS_FABRIC_CFG_IOCTL,
2088 MMSS_FABRIC_CFG_IOCTL, 1),
2089 MSM_RPM_MAP(8064, MM_FABRIC_ARB_0, MM_FABRIC_ARB, 21),
2090 MSM_RPM_MAP(8064, PM8921_S1_0, PM8921_S1, 2),
2091 MSM_RPM_MAP(8064, PM8921_S2_0, PM8921_S2, 2),
2092 MSM_RPM_MAP(8064, PM8921_S3_0, PM8921_S3, 2),
2093 MSM_RPM_MAP(8064, PM8921_S4_0, PM8921_S4, 2),
2094 MSM_RPM_MAP(8064, PM8921_S5_0, PM8921_S5, 2),
2095 MSM_RPM_MAP(8064, PM8921_S6_0, PM8921_S6, 2),
2096 MSM_RPM_MAP(8064, PM8921_S7_0, PM8921_S7, 2),
2097 MSM_RPM_MAP(8064, PM8921_S8_0, PM8921_S8, 2),
2098 MSM_RPM_MAP(8064, PM8921_L1_0, PM8921_L1, 2),
2099 MSM_RPM_MAP(8064, PM8921_L2_0, PM8921_L2, 2),
2100 MSM_RPM_MAP(8064, PM8921_L3_0, PM8921_L3, 2),
2101 MSM_RPM_MAP(8064, PM8921_L4_0, PM8921_L4, 2),
2102 MSM_RPM_MAP(8064, PM8921_L5_0, PM8921_L5, 2),
2103 MSM_RPM_MAP(8064, PM8921_L6_0, PM8921_L6, 2),
2104 MSM_RPM_MAP(8064, PM8921_L7_0, PM8921_L7, 2),
2105 MSM_RPM_MAP(8064, PM8921_L8_0, PM8921_L8, 2),
2106 MSM_RPM_MAP(8064, PM8921_L9_0, PM8921_L9, 2),
2107 MSM_RPM_MAP(8064, PM8921_L10_0, PM8921_L10, 2),
2108 MSM_RPM_MAP(8064, PM8921_L11_0, PM8921_L11, 2),
2109 MSM_RPM_MAP(8064, PM8921_L12_0, PM8921_L12, 2),
2110 MSM_RPM_MAP(8064, PM8921_L13_0, PM8921_L13, 2),
2111 MSM_RPM_MAP(8064, PM8921_L14_0, PM8921_L14, 2),
2112 MSM_RPM_MAP(8064, PM8921_L15_0, PM8921_L15, 2),
2113 MSM_RPM_MAP(8064, PM8921_L16_0, PM8921_L16, 2),
2114 MSM_RPM_MAP(8064, PM8921_L17_0, PM8921_L17, 2),
2115 MSM_RPM_MAP(8064, PM8921_L18_0, PM8921_L18, 2),
2116 MSM_RPM_MAP(8064, PM8921_L19_0, PM8921_L19, 2),
2117 MSM_RPM_MAP(8064, PM8921_L20_0, PM8921_L20, 2),
2118 MSM_RPM_MAP(8064, PM8921_L21_0, PM8921_L21, 2),
2119 MSM_RPM_MAP(8064, PM8921_L22_0, PM8921_L22, 2),
2120 MSM_RPM_MAP(8064, PM8921_L23_0, PM8921_L23, 2),
2121 MSM_RPM_MAP(8064, PM8921_L24_0, PM8921_L24, 2),
2122 MSM_RPM_MAP(8064, PM8921_L25_0, PM8921_L25, 2),
2123 MSM_RPM_MAP(8064, PM8921_L26_0, PM8921_L26, 2),
2124 MSM_RPM_MAP(8064, PM8921_L27_0, PM8921_L27, 2),
2125 MSM_RPM_MAP(8064, PM8921_L28_0, PM8921_L28, 2),
2126 MSM_RPM_MAP(8064, PM8921_L29_0, PM8921_L29, 2),
2127 MSM_RPM_MAP(8064, PM8921_CLK1_0, PM8921_CLK1, 2),
2128 MSM_RPM_MAP(8064, PM8921_CLK2_0, PM8921_CLK2, 2),
2129 MSM_RPM_MAP(8064, PM8921_LVS1, PM8921_LVS1, 1),
2130 MSM_RPM_MAP(8064, PM8921_LVS2, PM8921_LVS2, 1),
2131 MSM_RPM_MAP(8064, PM8921_LVS3, PM8921_LVS3, 1),
2132 MSM_RPM_MAP(8064, PM8921_LVS4, PM8921_LVS4, 1),
2133 MSM_RPM_MAP(8064, PM8921_LVS5, PM8921_LVS5, 1),
2134 MSM_RPM_MAP(8064, PM8921_LVS6, PM8921_LVS6, 1),
2135 MSM_RPM_MAP(8064, PM8921_LVS7, PM8921_LVS7, 1),
2136 MSM_RPM_MAP(8064, PM8821_S1_0, PM8821_S1, 2),
2137 MSM_RPM_MAP(8064, PM8821_S2_0, PM8821_S2, 2),
2138 MSM_RPM_MAP(8064, PM8821_L1_0, PM8821_L1, 2),
2139 MSM_RPM_MAP(8064, NCP_0, NCP, 2),
2140 MSM_RPM_MAP(8064, CXO_BUFFERS, CXO_BUFFERS, 1),
2141 MSM_RPM_MAP(8064, USB_OTG_SWITCH, USB_OTG_SWITCH, 1),
2142 MSM_RPM_MAP(8064, HDMI_SWITCH, HDMI_SWITCH, 1),
2143 MSM_RPM_MAP(8064, DDR_DMM_0, DDR_DMM, 2),
2144 MSM_RPM_MAP(8064, QDSS_CLK, QDSS_CLK, 1),
Joel Kingef390842012-05-23 16:42:48 -07002145 MSM_RPM_MAP(8064, VDDMIN_GPIO, VDDMIN_GPIO, 1),
Praveen Chidambaram78499012011-11-01 17:15:17 -06002146 },
2147 .target_status = {
2148 MSM_RPM_STATUS_ID_MAP(8064, VERSION_MAJOR),
2149 MSM_RPM_STATUS_ID_MAP(8064, VERSION_MINOR),
2150 MSM_RPM_STATUS_ID_MAP(8064, VERSION_BUILD),
2151 MSM_RPM_STATUS_ID_MAP(8064, SUPPORTED_RESOURCES_0),
2152 MSM_RPM_STATUS_ID_MAP(8064, SUPPORTED_RESOURCES_1),
2153 MSM_RPM_STATUS_ID_MAP(8064, SUPPORTED_RESOURCES_2),
2154 MSM_RPM_STATUS_ID_MAP(8064, RESERVED_SUPPORTED_RESOURCES_0),
2155 MSM_RPM_STATUS_ID_MAP(8064, SEQUENCE),
2156 MSM_RPM_STATUS_ID_MAP(8064, RPM_CTL),
2157 MSM_RPM_STATUS_ID_MAP(8064, CXO_CLK),
2158 MSM_RPM_STATUS_ID_MAP(8064, PXO_CLK),
2159 MSM_RPM_STATUS_ID_MAP(8064, APPS_FABRIC_CLK),
2160 MSM_RPM_STATUS_ID_MAP(8064, SYSTEM_FABRIC_CLK),
2161 MSM_RPM_STATUS_ID_MAP(8064, MM_FABRIC_CLK),
2162 MSM_RPM_STATUS_ID_MAP(8064, DAYTONA_FABRIC_CLK),
2163 MSM_RPM_STATUS_ID_MAP(8064, SFPB_CLK),
2164 MSM_RPM_STATUS_ID_MAP(8064, CFPB_CLK),
2165 MSM_RPM_STATUS_ID_MAP(8064, MMFPB_CLK),
2166 MSM_RPM_STATUS_ID_MAP(8064, EBI1_CLK),
2167 MSM_RPM_STATUS_ID_MAP(8064, APPS_FABRIC_CFG_HALT),
2168 MSM_RPM_STATUS_ID_MAP(8064, APPS_FABRIC_CFG_CLKMOD),
2169 MSM_RPM_STATUS_ID_MAP(8064, APPS_FABRIC_CFG_IOCTL),
2170 MSM_RPM_STATUS_ID_MAP(8064, APPS_FABRIC_ARB),
2171 MSM_RPM_STATUS_ID_MAP(8064, SYS_FABRIC_CFG_HALT),
2172 MSM_RPM_STATUS_ID_MAP(8064, SYS_FABRIC_CFG_CLKMOD),
2173 MSM_RPM_STATUS_ID_MAP(8064, SYS_FABRIC_CFG_IOCTL),
2174 MSM_RPM_STATUS_ID_MAP(8064, SYSTEM_FABRIC_ARB),
2175 MSM_RPM_STATUS_ID_MAP(8064, MMSS_FABRIC_CFG_HALT),
2176 MSM_RPM_STATUS_ID_MAP(8064, MMSS_FABRIC_CFG_CLKMOD),
2177 MSM_RPM_STATUS_ID_MAP(8064, MMSS_FABRIC_CFG_IOCTL),
2178 MSM_RPM_STATUS_ID_MAP(8064, MM_FABRIC_ARB),
2179 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S1_0),
2180 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S1_1),
2181 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S2_0),
2182 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S2_1),
2183 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S3_0),
2184 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S3_1),
2185 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S4_0),
2186 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S4_1),
2187 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S5_0),
2188 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S5_1),
2189 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S6_0),
2190 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S6_1),
2191 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S7_0),
2192 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S7_1),
2193 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S8_0),
2194 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S8_1),
2195 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L1_0),
2196 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L1_1),
2197 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L2_0),
2198 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L2_1),
2199 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L3_0),
2200 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L3_1),
2201 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L4_0),
2202 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L4_1),
2203 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L5_0),
2204 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L5_1),
2205 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L6_0),
2206 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L6_1),
2207 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L7_0),
2208 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L7_1),
2209 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L8_0),
2210 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L8_1),
2211 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L9_0),
2212 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L9_1),
2213 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L10_0),
2214 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L10_1),
2215 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L11_0),
2216 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L11_1),
2217 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L12_0),
2218 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L12_1),
2219 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L13_0),
2220 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L13_1),
2221 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L14_0),
2222 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L14_1),
2223 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L15_0),
2224 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L15_1),
2225 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L16_0),
2226 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L16_1),
2227 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L17_0),
2228 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L17_1),
2229 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L18_0),
2230 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L18_1),
2231 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L19_0),
2232 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L19_1),
2233 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L20_0),
2234 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L20_1),
2235 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L21_0),
2236 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L21_1),
2237 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L22_0),
2238 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L22_1),
2239 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L23_0),
2240 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L23_1),
2241 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L24_0),
2242 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L24_1),
2243 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L25_0),
2244 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L25_1),
2245 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L26_0),
2246 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L26_1),
2247 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L27_0),
2248 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L27_1),
2249 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L28_0),
2250 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L28_1),
2251 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L29_0),
2252 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L29_1),
2253 MSM_RPM_STATUS_ID_MAP(8064, PM8921_CLK1_0),
2254 MSM_RPM_STATUS_ID_MAP(8064, PM8921_CLK1_1),
2255 MSM_RPM_STATUS_ID_MAP(8064, PM8921_CLK2_0),
2256 MSM_RPM_STATUS_ID_MAP(8064, PM8921_CLK2_1),
2257 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS1),
2258 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS2),
2259 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS3),
2260 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS4),
2261 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS5),
2262 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS6),
2263 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS7),
2264 MSM_RPM_STATUS_ID_MAP(8064, NCP_0),
2265 MSM_RPM_STATUS_ID_MAP(8064, NCP_1),
2266 MSM_RPM_STATUS_ID_MAP(8064, CXO_BUFFERS),
2267 MSM_RPM_STATUS_ID_MAP(8064, USB_OTG_SWITCH),
2268 MSM_RPM_STATUS_ID_MAP(8064, HDMI_SWITCH),
2269 MSM_RPM_STATUS_ID_MAP(8064, DDR_DMM_0),
2270 MSM_RPM_STATUS_ID_MAP(8064, DDR_DMM_1),
2271 MSM_RPM_STATUS_ID_MAP(8064, EBI1_CH0_RANGE),
2272 MSM_RPM_STATUS_ID_MAP(8064, EBI1_CH1_RANGE),
2273 MSM_RPM_STATUS_ID_MAP(8064, PM8821_S1_0),
2274 MSM_RPM_STATUS_ID_MAP(8064, PM8821_S1_1),
2275 MSM_RPM_STATUS_ID_MAP(8064, PM8821_S2_0),
2276 MSM_RPM_STATUS_ID_MAP(8064, PM8821_S2_1),
2277 MSM_RPM_STATUS_ID_MAP(8064, PM8821_L1_0),
2278 MSM_RPM_STATUS_ID_MAP(8064, PM8821_L1_1),
Joel Kingef390842012-05-23 16:42:48 -07002279 MSM_RPM_STATUS_ID_MAP(8064, VDDMIN_GPIO),
Praveen Chidambaram78499012011-11-01 17:15:17 -06002280 },
2281 .target_ctrl_id = {
2282 MSM_RPM_CTRL_MAP(8064, VERSION_MAJOR),
2283 MSM_RPM_CTRL_MAP(8064, VERSION_MINOR),
2284 MSM_RPM_CTRL_MAP(8064, VERSION_BUILD),
2285 MSM_RPM_CTRL_MAP(8064, REQ_CTX_0),
2286 MSM_RPM_CTRL_MAP(8064, REQ_SEL_0),
2287 MSM_RPM_CTRL_MAP(8064, ACK_CTX_0),
2288 MSM_RPM_CTRL_MAP(8064, ACK_SEL_0),
2289 },
2290 .sel_invalidate = MSM_RPM_8064_SEL_INVALIDATE,
2291 .sel_notification = MSM_RPM_8064_SEL_NOTIFICATION,
2292 .sel_last = MSM_RPM_8064_SEL_LAST,
2293 .ver = {3, 0, 0},
2294};
2295
2296struct platform_device apq8064_rpm_device = {
2297 .name = "msm_rpm",
2298 .id = -1,
2299};
2300
2301static struct msm_rpmstats_platform_data msm_rpm_stat_pdata = {
Anji Jonnalaa1a1c3b2012-09-18 19:20:21 +05302302 .phys_addr_base = 0x0010DD04,
2303 .phys_size = SZ_256,
Praveen Chidambaram78499012011-11-01 17:15:17 -06002304};
2305
2306struct platform_device apq8064_rpm_stat_device = {
2307 .name = "msm_rpm_stat",
2308 .id = -1,
2309 .dev = {
2310 .platform_data = &msm_rpm_stat_pdata,
2311 },
2312};
2313
Anji Jonnala2a8bd312012-11-01 13:11:42 +05302314static struct resource resources_rpm_master_stats[] = {
2315 {
2316 .start = MSM8064_RPM_MASTER_STATS_BASE,
2317 .end = MSM8064_RPM_MASTER_STATS_BASE + SZ_256,
2318 .flags = IORESOURCE_MEM,
2319 },
2320};
2321
2322static char *master_names[] = {
2323 "KPSS",
2324 "MPSS",
2325 "LPASS",
2326 "RIVA",
2327 "DSPS",
2328};
2329
2330static struct msm_rpm_master_stats_platform_data msm_rpm_master_stat_pdata = {
2331 .masters = master_names,
2332 .nomasters = ARRAY_SIZE(master_names),
2333};
2334
2335struct platform_device apq8064_rpm_master_stat_device = {
2336 .name = "msm_rpm_master_stat",
2337 .id = -1,
2338 .num_resources = ARRAY_SIZE(resources_rpm_master_stats),
2339 .resource = resources_rpm_master_stats,
2340 .dev = {
2341 .platform_data = &msm_rpm_master_stat_pdata,
2342 },
2343};
2344
Praveen Chidambaram78499012011-11-01 17:15:17 -06002345static struct msm_rpm_log_platform_data msm_rpm_log_pdata = {
2346 .phys_addr_base = 0x0010C000,
2347 .reg_offsets = {
2348 [MSM_RPM_LOG_PAGE_INDICES] = 0x00000080,
2349 [MSM_RPM_LOG_PAGE_BUFFER] = 0x000000A0,
2350 },
2351 .phys_size = SZ_8K,
2352 .log_len = 4096, /* log's buffer length in bytes */
2353 .log_len_mask = (4096 >> 2) - 1, /* length mask in units of u32 */
2354};
2355
2356struct platform_device apq8064_rpm_log_device = {
2357 .name = "msm_rpm_log",
2358 .id = -1,
2359 .dev = {
2360 .platform_data = &msm_rpm_log_pdata,
2361 },
2362};
2363
Jin Hongd3024e62012-02-09 16:13:32 -08002364/* Sensors DSPS platform data */
2365
Vikram Mulukutlaac682bb2012-09-20 14:06:23 -07002366#define PPSS_DSPS_TCM_CODE_BASE 0x12000000
2367#define PPSS_DSPS_TCM_CODE_SIZE 0x28000
2368#define PPSS_DSPS_TCM_BUF_BASE 0x12040000
2369#define PPSS_DSPS_TCM_BUF_SIZE 0x4000
2370#define PPSS_DSPS_PIPE_BASE 0x12800000
2371#define PPSS_DSPS_PIPE_SIZE 0x4000
2372#define PPSS_DSPS_DDR_BASE 0x8fe00000
2373#define PPSS_DSPS_DDR_SIZE 0x100000
2374#define PPSS_SMEM_BASE 0x80000000
2375#define PPSS_SMEM_SIZE 0x200000
2376#define PPSS_REG_PHYS_BASE 0x12080000
2377#define PPSS_WDOG_UNMASKED_INT_EN 0x1808
Jin Hongd3024e62012-02-09 16:13:32 -08002378
2379static struct dsps_clk_info dsps_clks[] = {};
2380static struct dsps_regulator_info dsps_regs[] = {};
2381
2382/*
2383 * Note: GPIOs field is intialized in run-time at the function
2384 * apq8064_init_dsps().
2385 */
2386
2387struct msm_dsps_platform_data msm_dsps_pdata_8064 = {
2388 .clks = dsps_clks,
2389 .clks_num = ARRAY_SIZE(dsps_clks),
2390 .gpios = NULL,
2391 .gpios_num = 0,
2392 .regs = dsps_regs,
2393 .regs_num = ARRAY_SIZE(dsps_regs),
2394 .dsps_pwr_ctl_en = 1,
karthik karuppasamy1a1c6b02012-05-29 15:16:32 -07002395 .tcm_code_start = PPSS_DSPS_TCM_CODE_BASE,
2396 .tcm_code_size = PPSS_DSPS_TCM_CODE_SIZE,
2397 .tcm_buf_start = PPSS_DSPS_TCM_BUF_BASE,
2398 .tcm_buf_size = PPSS_DSPS_TCM_BUF_SIZE,
2399 .pipe_start = PPSS_DSPS_PIPE_BASE,
2400 .pipe_size = PPSS_DSPS_PIPE_SIZE,
2401 .ddr_start = PPSS_DSPS_DDR_BASE,
2402 .ddr_size = PPSS_DSPS_DDR_SIZE,
2403 .smem_start = PPSS_SMEM_BASE,
2404 .smem_size = PPSS_SMEM_SIZE,
Vikram Mulukutlaac682bb2012-09-20 14:06:23 -07002405 .ppss_wdog_unmasked_int_en_reg = PPSS_WDOG_UNMASKED_INT_EN,
Jin Hongd3024e62012-02-09 16:13:32 -08002406 .signature = DSPS_SIGNATURE,
2407};
2408
2409static struct resource msm_dsps_resources[] = {
2410 {
2411 .start = PPSS_REG_PHYS_BASE,
2412 .end = PPSS_REG_PHYS_BASE + SZ_8K - 1,
2413 .name = "ppss_reg",
2414 .flags = IORESOURCE_MEM,
2415 },
2416
2417 {
2418 .start = PPSS_WDOG_TIMER_IRQ,
2419 .end = PPSS_WDOG_TIMER_IRQ,
2420 .name = "ppss_wdog",
2421 .flags = IORESOURCE_IRQ,
2422 },
2423};
2424
2425struct platform_device msm_dsps_device_8064 = {
2426 .name = "msm_dsps",
2427 .id = 0,
2428 .num_resources = ARRAY_SIZE(msm_dsps_resources),
2429 .resource = msm_dsps_resources,
2430 .dev.platform_data = &msm_dsps_pdata_8064,
2431};
2432
Praveen Chidambaram78499012011-11-01 17:15:17 -06002433#ifdef CONFIG_MSM_MPM
2434static uint16_t msm_mpm_irqs_m2a[MSM_MPM_NR_MPM_IRQS] __initdata = {
2435 [1] = MSM_GPIO_TO_INT(26),
2436 [2] = MSM_GPIO_TO_INT(88),
2437 [4] = MSM_GPIO_TO_INT(73),
2438 [5] = MSM_GPIO_TO_INT(74),
2439 [6] = MSM_GPIO_TO_INT(75),
2440 [7] = MSM_GPIO_TO_INT(76),
2441 [8] = MSM_GPIO_TO_INT(77),
2442 [9] = MSM_GPIO_TO_INT(36),
2443 [10] = MSM_GPIO_TO_INT(84),
2444 [11] = MSM_GPIO_TO_INT(7),
2445 [12] = MSM_GPIO_TO_INT(11),
2446 [13] = MSM_GPIO_TO_INT(52),
2447 [14] = MSM_GPIO_TO_INT(15),
2448 [15] = MSM_GPIO_TO_INT(83),
2449 [16] = USB3_HS_IRQ,
2450 [19] = MSM_GPIO_TO_INT(61),
2451 [20] = MSM_GPIO_TO_INT(58),
2452 [23] = MSM_GPIO_TO_INT(65),
2453 [24] = MSM_GPIO_TO_INT(63),
2454 [25] = USB1_HS_IRQ,
2455 [27] = HDMI_IRQ,
2456 [29] = MSM_GPIO_TO_INT(22),
2457 [30] = MSM_GPIO_TO_INT(72),
2458 [31] = USB4_HS_IRQ,
2459 [33] = MSM_GPIO_TO_INT(44),
2460 [34] = MSM_GPIO_TO_INT(39),
2461 [35] = MSM_GPIO_TO_INT(19),
2462 [36] = MSM_GPIO_TO_INT(23),
2463 [37] = MSM_GPIO_TO_INT(41),
2464 [38] = MSM_GPIO_TO_INT(30),
2465 [41] = MSM_GPIO_TO_INT(42),
2466 [42] = MSM_GPIO_TO_INT(56),
2467 [43] = MSM_GPIO_TO_INT(55),
2468 [44] = MSM_GPIO_TO_INT(50),
2469 [45] = MSM_GPIO_TO_INT(49),
2470 [46] = MSM_GPIO_TO_INT(47),
2471 [47] = MSM_GPIO_TO_INT(45),
2472 [48] = MSM_GPIO_TO_INT(38),
2473 [49] = MSM_GPIO_TO_INT(34),
2474 [50] = MSM_GPIO_TO_INT(32),
2475 [51] = MSM_GPIO_TO_INT(29),
2476 [52] = MSM_GPIO_TO_INT(18),
2477 [53] = MSM_GPIO_TO_INT(10),
2478 [54] = MSM_GPIO_TO_INT(81),
2479 [55] = MSM_GPIO_TO_INT(6),
Jaeseong GIMe630a592012-07-09 18:28:39 -07002480 [56] = MSM_GPIO_TO_INT(82),
Praveen Chidambaram78499012011-11-01 17:15:17 -06002481};
2482
2483static uint16_t msm_mpm_bypassed_apps_irqs[] __initdata = {
2484 TLMM_MSM_SUMMARY_IRQ,
2485 RPM_APCC_CPU0_GP_HIGH_IRQ,
2486 RPM_APCC_CPU0_GP_MEDIUM_IRQ,
2487 RPM_APCC_CPU0_GP_LOW_IRQ,
2488 RPM_APCC_CPU0_WAKE_UP_IRQ,
2489 RPM_APCC_CPU1_GP_HIGH_IRQ,
2490 RPM_APCC_CPU1_GP_MEDIUM_IRQ,
2491 RPM_APCC_CPU1_GP_LOW_IRQ,
2492 RPM_APCC_CPU1_WAKE_UP_IRQ,
2493 MSS_TO_APPS_IRQ_0,
2494 MSS_TO_APPS_IRQ_1,
2495 MSS_TO_APPS_IRQ_2,
2496 MSS_TO_APPS_IRQ_3,
2497 MSS_TO_APPS_IRQ_4,
2498 MSS_TO_APPS_IRQ_5,
2499 MSS_TO_APPS_IRQ_6,
2500 MSS_TO_APPS_IRQ_7,
2501 MSS_TO_APPS_IRQ_8,
2502 MSS_TO_APPS_IRQ_9,
2503 LPASS_SCSS_GP_LOW_IRQ,
2504 LPASS_SCSS_GP_MEDIUM_IRQ,
2505 LPASS_SCSS_GP_HIGH_IRQ,
2506 SPS_MTI_30,
2507 SPS_MTI_31,
2508 RIVA_APSS_SPARE_IRQ,
2509 RIVA_APPS_WLAN_SMSM_IRQ,
2510 RIVA_APPS_WLAN_RX_DATA_AVAIL_IRQ,
2511 RIVA_APPS_WLAN_DATA_XFER_DONE_IRQ,
Chandra Ramachandran59851722012-07-23 11:19:48 -07002512 PM8821_SEC_IRQ_N,
Praveen Chidambaram78499012011-11-01 17:15:17 -06002513};
2514
2515struct msm_mpm_device_data apq8064_mpm_dev_data __initdata = {
2516 .irqs_m2a = msm_mpm_irqs_m2a,
2517 .irqs_m2a_size = ARRAY_SIZE(msm_mpm_irqs_m2a),
2518 .bypassed_apps_irqs = msm_mpm_bypassed_apps_irqs,
2519 .bypassed_apps_irqs_size = ARRAY_SIZE(msm_mpm_bypassed_apps_irqs),
2520 .mpm_request_reg_base = MSM_RPM_BASE + 0x9d8,
2521 .mpm_status_reg_base = MSM_RPM_BASE + 0xdf8,
2522 .mpm_apps_ipc_reg = MSM_APCS_GCC_BASE + 0x008,
2523 .mpm_apps_ipc_val = BIT(1),
2524 .mpm_ipc_irq = RPM_APCC_CPU0_GP_MEDIUM_IRQ,
2525
2526};
2527#endif
Joel Kingdacbc822012-01-25 13:30:57 -08002528
Joel King14fe7fa2012-05-27 14:26:11 -07002529/* AP2MDM_SOFT_RESET is implemented by the PON_RESET_N gpio */
Joel Kingdacbc822012-01-25 13:30:57 -08002530#define MDM2AP_ERRFATAL 19
2531#define AP2MDM_ERRFATAL 18
2532#define MDM2AP_STATUS 49
2533#define AP2MDM_STATUS 48
Joel King14fe7fa2012-05-27 14:26:11 -07002534#define AP2MDM_SOFT_RESET 27
Ameya Thakur2702baf2013-01-30 11:55:25 -08002535#define I2S_AP2MDM_SOFT_RESET 0
Vamsi Krishna9e307cd2012-04-11 13:15:36 -07002536#define AP2MDM_WAKEUP 35
Ameya Thakure155ece2012-07-09 12:08:37 -07002537#define I2S_AP2MDM_WAKEUP 44
Vamsi Krishnac6dcd5e2012-05-09 15:38:01 -07002538#define MDM2AP_PBLRDY 46
Ameya Thakur2702baf2013-01-30 11:55:25 -08002539#define AMDM2AP_PBLRDY_DSDA2 31
Ameya Thakure155ece2012-07-09 12:08:37 -07002540#define I2S_MDM2AP_PBLRDY 81
Joel Kingdacbc822012-01-25 13:30:57 -08002541
Ameya Thakur2702baf2013-01-30 11:55:25 -08002542/* Gpios for second MDM */
2543#define BMDM2AP_ERRFATAL 81
2544#define AP2BMDM_ERRFATAL 18
2545#define BMDM2AP_STATUS 32
2546#define AP2BMDM_STATUS 56
2547#define AP2BMDM_SOFT_RESET 3
2548#define AP2BMDM_WAKEUP 29
2549
Joel Kingdacbc822012-01-25 13:30:57 -08002550static struct resource mdm_resources[] = {
2551 {
2552 .start = MDM2AP_ERRFATAL,
2553 .end = MDM2AP_ERRFATAL,
2554 .name = "MDM2AP_ERRFATAL",
2555 .flags = IORESOURCE_IO,
2556 },
2557 {
2558 .start = AP2MDM_ERRFATAL,
2559 .end = AP2MDM_ERRFATAL,
2560 .name = "AP2MDM_ERRFATAL",
2561 .flags = IORESOURCE_IO,
2562 },
2563 {
2564 .start = MDM2AP_STATUS,
2565 .end = MDM2AP_STATUS,
2566 .name = "MDM2AP_STATUS",
2567 .flags = IORESOURCE_IO,
2568 },
2569 {
2570 .start = AP2MDM_STATUS,
2571 .end = AP2MDM_STATUS,
2572 .name = "AP2MDM_STATUS",
2573 .flags = IORESOURCE_IO,
2574 },
2575 {
Joel King14fe7fa2012-05-27 14:26:11 -07002576 .start = AP2MDM_SOFT_RESET,
2577 .end = AP2MDM_SOFT_RESET,
2578 .name = "AP2MDM_SOFT_RESET",
Joel Kingdacbc822012-01-25 13:30:57 -08002579 .flags = IORESOURCE_IO,
2580 },
Vamsi Krishna9e307cd2012-04-11 13:15:36 -07002581 {
2582 .start = AP2MDM_WAKEUP,
2583 .end = AP2MDM_WAKEUP,
2584 .name = "AP2MDM_WAKEUP",
2585 .flags = IORESOURCE_IO,
2586 },
Vamsi Krishnac6dcd5e2012-05-09 15:38:01 -07002587 {
2588 .start = MDM2AP_PBLRDY,
2589 .end = MDM2AP_PBLRDY,
2590 .name = "MDM2AP_PBLRDY",
2591 .flags = IORESOURCE_IO,
2592 },
Joel Kingdacbc822012-01-25 13:30:57 -08002593};
2594
Ameya Thakur2702baf2013-01-30 11:55:25 -08002595static struct resource mdm_dsda2_amdm_resources[] = {
2596 {
2597 .start = MDM2AP_ERRFATAL,
2598 .end = MDM2AP_ERRFATAL,
2599 .name = "MDM2AP_ERRFATAL",
2600 .flags = IORESOURCE_IO,
2601 },
2602 {
2603 .start = AP2MDM_ERRFATAL,
2604 .end = AP2MDM_ERRFATAL,
2605 .name = "AP2MDM_ERRFATAL",
2606 .flags = IORESOURCE_IO,
2607 },
2608 {
2609 .start = MDM2AP_STATUS,
2610 .end = MDM2AP_STATUS,
2611 .name = "MDM2AP_STATUS",
2612 .flags = IORESOURCE_IO,
2613 },
2614 {
2615 .start = AP2MDM_STATUS,
2616 .end = AP2MDM_STATUS,
2617 .name = "AP2MDM_STATUS",
2618 .flags = IORESOURCE_IO,
2619 },
2620 {
2621 .start = AP2MDM_SOFT_RESET,
2622 .end = AP2MDM_SOFT_RESET,
2623 .name = "AP2MDM_SOFT_RESET",
2624 .flags = IORESOURCE_IO,
2625 },
2626 {
2627 .start = AP2MDM_WAKEUP,
2628 .end = AP2MDM_WAKEUP,
2629 .name = "AP2MDM_WAKEUP",
2630 .flags = IORESOURCE_IO,
2631 },
2632 {
2633 .start = AMDM2AP_PBLRDY_DSDA2,
2634 .end = AMDM2AP_PBLRDY_DSDA2,
2635 .name = "MDM2AP_PBLRDY",
2636 .flags = IORESOURCE_IO,
2637 },
2638};
2639
2640static struct resource mdm_dsda2_bmdm_resources[] = {
2641 {
2642 .start = BMDM2AP_ERRFATAL,
2643 .end = BMDM2AP_ERRFATAL,
2644 .name = "MDM2AP_ERRFATAL",
2645 .flags = IORESOURCE_IO,
2646 },
2647 {
2648 .start = AP2BMDM_ERRFATAL,
2649 .end = AP2BMDM_ERRFATAL,
2650 .name = "AP2MDM_ERRFATAL",
2651 .flags = IORESOURCE_IO,
2652 },
2653 {
2654 .start = BMDM2AP_STATUS,
2655 .end = BMDM2AP_STATUS,
2656 .name = "MDM2AP_STATUS",
2657 .flags = IORESOURCE_IO,
2658 },
2659 {
2660 .start = AP2BMDM_STATUS,
2661 .end = AP2BMDM_STATUS,
2662 .name = "AP2MDM_STATUS",
2663 .flags = IORESOURCE_IO,
2664 },
2665 {
2666 .start = AP2BMDM_SOFT_RESET,
2667 .end = AP2BMDM_SOFT_RESET,
2668 .name = "AP2MDM_SOFT_RESET",
2669 .flags = IORESOURCE_IO,
2670 },
2671 {
2672 .start = AP2BMDM_WAKEUP,
2673 .end = AP2BMDM_WAKEUP,
2674 .name = "AP2MDM_WAKEUP",
2675 .flags = IORESOURCE_IO,
2676 },
2677};
2678
Ameya Thakure155ece2012-07-09 12:08:37 -07002679static struct resource i2s_mdm_resources[] = {
2680 {
2681 .start = MDM2AP_ERRFATAL,
2682 .end = MDM2AP_ERRFATAL,
2683 .name = "MDM2AP_ERRFATAL",
2684 .flags = IORESOURCE_IO,
2685 },
2686 {
2687 .start = AP2MDM_ERRFATAL,
2688 .end = AP2MDM_ERRFATAL,
2689 .name = "AP2MDM_ERRFATAL",
2690 .flags = IORESOURCE_IO,
2691 },
2692 {
2693 .start = MDM2AP_STATUS,
2694 .end = MDM2AP_STATUS,
2695 .name = "MDM2AP_STATUS",
2696 .flags = IORESOURCE_IO,
2697 },
2698 {
2699 .start = AP2MDM_STATUS,
2700 .end = AP2MDM_STATUS,
2701 .name = "AP2MDM_STATUS",
2702 .flags = IORESOURCE_IO,
2703 },
2704 {
2705 .start = I2S_AP2MDM_SOFT_RESET,
2706 .end = I2S_AP2MDM_SOFT_RESET,
2707 .name = "AP2MDM_SOFT_RESET",
2708 .flags = IORESOURCE_IO,
2709 },
2710 {
2711 .start = I2S_AP2MDM_WAKEUP,
2712 .end = I2S_AP2MDM_WAKEUP,
2713 .name = "AP2MDM_WAKEUP",
2714 .flags = IORESOURCE_IO,
2715 },
2716 {
2717 .start = I2S_MDM2AP_PBLRDY,
2718 .end = I2S_MDM2AP_PBLRDY,
2719 .name = "MDM2AP_PBLRDY",
2720 .flags = IORESOURCE_IO,
2721 },
2722};
2723
Joel Kingdacbc822012-01-25 13:30:57 -08002724struct platform_device mdm_8064_device = {
2725 .name = "mdm2_modem",
2726 .id = -1,
2727 .num_resources = ARRAY_SIZE(mdm_resources),
2728 .resource = mdm_resources,
2729};
Praveen Chidambaram8ea3dcd2011-12-07 14:46:31 -07002730
Ameya Thakur2702baf2013-01-30 11:55:25 -08002731struct platform_device amdm_8064_device = {
2732 .name = "mdm2_modem",
2733 .id = 0,
2734 .num_resources = ARRAY_SIZE(mdm_dsda2_amdm_resources),
2735 .resource = mdm_dsda2_amdm_resources,
2736};
2737
2738struct platform_device bmdm_8064_device = {
2739 .name = "mdm2_modem",
2740 .id = 1,
2741 .num_resources = ARRAY_SIZE(mdm_dsda2_bmdm_resources),
2742 .resource = mdm_dsda2_bmdm_resources,
2743};
2744
Ameya Thakure155ece2012-07-09 12:08:37 -07002745struct platform_device i2s_mdm_8064_device = {
2746 .name = "mdm2_modem",
2747 .id = -1,
2748 .num_resources = ARRAY_SIZE(i2s_mdm_resources),
2749 .resource = i2s_mdm_resources,
2750};
Praveen Chidambaram5c8adf22012-02-23 18:44:37 -07002751
Steve Mucklea9aac292012-11-02 15:41:00 -07002752static struct msm_dcvs_sync_rule apq8064_dcvs_sync_rules[] = {
2753 {1026000, 400000},
2754 {384000, 200000},
Steve Muckle93bb4252012-11-12 14:20:39 -08002755 {0, 128000},
Steve Mucklea9aac292012-11-02 15:41:00 -07002756};
2757
2758static struct msm_dcvs_platform_data apq8064_dcvs_data = {
2759 .sync_rules = apq8064_dcvs_sync_rules,
2760 .num_sync_rules = ARRAY_SIZE(apq8064_dcvs_sync_rules),
Steve Muckle28ddcdd2012-11-21 10:12:39 -08002761 .gpu_max_nom_khz = 320000,
Steve Mucklea9aac292012-11-02 15:41:00 -07002762};
2763
2764struct platform_device apq8064_dcvs_device = {
2765 .name = "dcvs",
2766 .id = -1,
2767 .dev = {
2768 .platform_data = &apq8064_dcvs_data,
2769 },
Praveen Chidambaram5c8adf22012-02-23 18:44:37 -07002770};
2771
2772static struct msm_dcvs_core_info apq8064_core_info = {
Abhijeet Dharmapurikar19cf4742012-09-13 11:11:54 -07002773 .num_cores = 4,
2774 .sensors = (int[]){7, 8, 9, 10},
2775 .thermal_poll_ms = 60000,
2776 .core_param = {
Abhijeet Dharmapurikar7e37e6e2012-08-23 18:58:44 -07002777 .core_type = MSM_DCVS_CORE_TYPE_CPU,
Praveen Chidambaram5c8adf22012-02-23 18:44:37 -07002778 },
Abhijeet Dharmapurikar19cf4742012-09-13 11:11:54 -07002779 .algo_param = {
Abhijeet Dharmapurikar7e37e6e2012-08-23 18:58:44 -07002780 .disable_pc_threshold = 1458000,
2781 .em_win_size_min_us = 100000,
2782 .em_win_size_max_us = 300000,
2783 .em_max_util_pct = 97,
2784 .group_id = 1,
2785 .max_freq_chg_time_us = 100000,
2786 .slack_mode_dynamic = 0,
2787 .slack_weight_thresh_pct = 3,
2788 .slack_time_min_us = 45000,
2789 .slack_time_max_us = 45000,
Steve Muckle8d0782e2012-12-06 14:31:00 -08002790 .ss_no_corr_below_freq = 0,
Abhijeet Dharmapurikar7e37e6e2012-08-23 18:58:44 -07002791 .ss_win_size_min_us = 1000000,
2792 .ss_win_size_max_us = 1000000,
2793 .ss_util_pct = 95,
Praveen Chidambaram5c8adf22012-02-23 18:44:37 -07002794 },
Abhijeet Dharmapurikar19cf4742012-09-13 11:11:54 -07002795 .energy_coeffs = {
Abhijeet Dharmapurikar7e37e6e2012-08-23 18:58:44 -07002796 .active_coeff_a = 336,
2797 .active_coeff_b = 0,
2798 .active_coeff_c = 0,
2799
2800 .leakage_coeff_a = -17720,
2801 .leakage_coeff_b = 37,
2802 .leakage_coeff_c = 3329,
2803 .leakage_coeff_d = -277,
2804 },
Abhijeet Dharmapurikar19cf4742012-09-13 11:11:54 -07002805 .power_param = {
Abhijeet Dharmapurikar7e37e6e2012-08-23 18:58:44 -07002806 .current_temp = 25,
Steve Mucklea9aac292012-11-02 15:41:00 -07002807 .num_freq = 0, /* set at runtime */
Abhijeet Dharmapurikar7e37e6e2012-08-23 18:58:44 -07002808 }
Praveen Chidambaram5c8adf22012-02-23 18:44:37 -07002809};
2810
Abhijeet Dharmapurikar6e9b34f2012-09-10 16:03:39 -07002811#define APQ8064_LPM_LATENCY 1000 /* >100 usec for WFI */
2812
2813static struct msm_gov_platform_data gov_platform_data = {
2814 .info = &apq8064_core_info,
2815 .latency = APQ8064_LPM_LATENCY,
2816};
2817
Praveen Chidambaram5c8adf22012-02-23 18:44:37 -07002818struct platform_device apq8064_msm_gov_device = {
2819 .name = "msm_dcvs_gov",
2820 .id = -1,
2821 .dev = {
Abhijeet Dharmapurikar6e9b34f2012-09-10 16:03:39 -07002822 .platform_data = &gov_platform_data,
Praveen Chidambaram5c8adf22012-02-23 18:44:37 -07002823 },
2824};
Stepan Moskovchenko28662c52012-03-01 12:48:45 -08002825
Abhijeet Dharmapurikarde91d2c2012-08-23 14:36:59 -07002826static struct msm_mpd_algo_param apq8064_mpd_algo_param = {
2827 .em_win_size_min_us = 10000,
2828 .em_win_size_max_us = 100000,
2829 .em_max_util_pct = 90,
2830 .online_util_pct_min = 60,
2831 .slack_time_min_us = 50000,
2832 .slack_time_max_us = 100000,
2833};
2834
2835struct platform_device apq8064_msm_mpd_device = {
2836 .name = "msm_mpdecision",
2837 .id = -1,
2838 .dev = {
2839 .platform_data = &apq8064_mpd_algo_param,
2840 },
2841};
2842
Terence Hampson2e1705f2012-04-11 19:55:29 -04002843#ifdef CONFIG_MSM_VCAP
2844#define VCAP_HW_BASE 0x05900000
2845
2846static struct msm_bus_vectors vcap_init_vectors[] = {
2847 {
2848 .src = MSM_BUS_MASTER_VIDEO_CAP,
2849 .dst = MSM_BUS_SLAVE_EBI_CH0,
2850 .ab = 0,
2851 .ib = 0,
2852 },
2853};
2854
Terence Hampson2e1705f2012-04-11 19:55:29 -04002855static struct msm_bus_vectors vcap_480_vectors[] = {
2856 {
2857 .src = MSM_BUS_MASTER_VIDEO_CAP,
2858 .dst = MSM_BUS_SLAVE_EBI_CH0,
Terence Hampson779dc762012-06-07 15:59:27 -04002859 .ab = 480 * 720 * 3 * 60,
2860 .ib = 480 * 720 * 3 * 60 * 1.5,
2861 },
2862};
2863
2864static struct msm_bus_vectors vcap_576_vectors[] = {
2865 {
2866 .src = MSM_BUS_MASTER_VIDEO_CAP,
2867 .dst = MSM_BUS_SLAVE_EBI_CH0,
2868 .ab = 576 * 720 * 3 * 60,
2869 .ib = 576 * 720 * 3 * 60 * 1.5,
Terence Hampson2e1705f2012-04-11 19:55:29 -04002870 },
2871};
2872
2873static struct msm_bus_vectors vcap_720_vectors[] = {
2874 {
2875 .src = MSM_BUS_MASTER_VIDEO_CAP,
2876 .dst = MSM_BUS_SLAVE_EBI_CH0,
Terence Hampson35a1ff02012-04-25 17:07:18 -04002877 .ab = 1280 * 720 * 3 * 60,
2878 .ib = 1280 * 720 * 3 * 60 * 1.5,
Terence Hampson2e1705f2012-04-11 19:55:29 -04002879 },
2880};
2881
2882static struct msm_bus_vectors vcap_1080_vectors[] = {
2883 {
2884 .src = MSM_BUS_MASTER_VIDEO_CAP,
2885 .dst = MSM_BUS_SLAVE_EBI_CH0,
Terence Hampson35a1ff02012-04-25 17:07:18 -04002886 .ab = 1920 * 1080 * 3 * 60,
2887 .ib = 1920 * 1080 * 3 * 60 * 1.5,
Terence Hampson2e1705f2012-04-11 19:55:29 -04002888 },
2889};
2890
2891static struct msm_bus_paths vcap_bus_usecases[] = {
2892 {
2893 ARRAY_SIZE(vcap_init_vectors),
2894 vcap_init_vectors,
2895 },
2896 {
2897 ARRAY_SIZE(vcap_480_vectors),
2898 vcap_480_vectors,
2899 },
2900 {
Terence Hampson779dc762012-06-07 15:59:27 -04002901 ARRAY_SIZE(vcap_576_vectors),
2902 vcap_576_vectors,
2903 },
2904 {
Terence Hampson2e1705f2012-04-11 19:55:29 -04002905 ARRAY_SIZE(vcap_720_vectors),
2906 vcap_720_vectors,
2907 },
2908 {
2909 ARRAY_SIZE(vcap_1080_vectors),
2910 vcap_1080_vectors,
2911 },
2912};
2913
2914static struct msm_bus_scale_pdata vcap_axi_client_pdata = {
2915 vcap_bus_usecases,
2916 ARRAY_SIZE(vcap_bus_usecases),
2917};
2918
2919static struct resource msm_vcap_resources[] = {
2920 {
2921 .name = "vcap",
2922 .start = VCAP_HW_BASE,
2923 .end = VCAP_HW_BASE + SZ_1M - 1,
2924 .flags = IORESOURCE_MEM,
2925 },
2926 {
Terence Hampsonaeb793e2012-05-11 11:41:16 -04002927 .name = "vc_irq",
Terence Hampson2e1705f2012-04-11 19:55:29 -04002928 .start = VCAP_VC,
2929 .end = VCAP_VC,
2930 .flags = IORESOURCE_IRQ,
2931 },
Terence Hampsonaeb793e2012-05-11 11:41:16 -04002932 {
2933 .name = "vp_irq",
2934 .start = VCAP_VP,
2935 .end = VCAP_VP,
2936 .flags = IORESOURCE_IRQ,
2937 },
Terence Hampson2e1705f2012-04-11 19:55:29 -04002938};
2939
2940static unsigned vcap_gpios[] = {
2941 2, 3, 4, 5, 6, 7, 8, 9, 10,
2942 11, 12, 13, 18, 19, 20, 21,
2943 22, 23, 24, 25, 26, 80, 82,
2944 83, 84, 85, 86, 87,
2945};
2946
2947static struct vcap_platform_data vcap_pdata = {
2948 .gpios = vcap_gpios,
2949 .num_gpios = ARRAY_SIZE(vcap_gpios),
2950 .bus_client_pdata = &vcap_axi_client_pdata
2951};
2952
2953struct platform_device msm8064_device_vcap = {
2954 .name = "msm_vcap",
2955 .id = 0,
2956 .resource = msm_vcap_resources,
2957 .num_resources = ARRAY_SIZE(msm_vcap_resources),
2958 .dev = {
2959 .platform_data = &vcap_pdata,
2960 },
2961};
2962#endif
2963
Stepan Moskovchenko28662c52012-03-01 12:48:45 -08002964static struct resource msm_cache_erp_resources[] = {
2965 {
2966 .name = "l1_irq",
2967 .start = SC_SICCPUXEXTFAULTIRPTREQ,
2968 .flags = IORESOURCE_IRQ,
2969 },
2970 {
2971 .name = "l2_irq",
2972 .start = APCC_QGICL2IRPTREQ,
2973 .flags = IORESOURCE_IRQ,
2974 }
2975};
2976
2977struct platform_device apq8064_device_cache_erp = {
2978 .name = "msm_cache_erp",
2979 .id = -1,
2980 .num_resources = ARRAY_SIZE(msm_cache_erp_resources),
2981 .resource = msm_cache_erp_resources,
2982};
Pratik Patel212ab362012-03-16 12:30:07 -07002983
Pratik Patel3b0ca882012-06-01 16:54:14 -07002984#define CORESIGHT_PHYS_BASE 0x01A00000
2985#define CORESIGHT_FUNNEL_PHYS_BASE (CORESIGHT_PHYS_BASE + 0x4000)
2986#define CORESIGHT_ETM2_PHYS_BASE (CORESIGHT_PHYS_BASE + 0x1E000)
2987#define CORESIGHT_ETM3_PHYS_BASE (CORESIGHT_PHYS_BASE + 0x1F000)
Pratik Patel212ab362012-03-16 12:30:07 -07002988
Pratik Patel3b0ca882012-06-01 16:54:14 -07002989static struct resource coresight_funnel_resources[] = {
Pratik Patel212ab362012-03-16 12:30:07 -07002990 {
Pratik Patel3b0ca882012-06-01 16:54:14 -07002991 .start = CORESIGHT_FUNNEL_PHYS_BASE,
2992 .end = CORESIGHT_FUNNEL_PHYS_BASE + SZ_4K - 1,
Pratik Patel212ab362012-03-16 12:30:07 -07002993 .flags = IORESOURCE_MEM,
2994 },
2995};
2996
Pratik Patel3b0ca882012-06-01 16:54:14 -07002997static const int coresight_funnel_outports[] = { 0, 1 };
2998static const int coresight_funnel_child_ids[] = { 0, 1 };
2999static const int coresight_funnel_child_ports[] = { 0, 0 };
3000
3001static struct coresight_platform_data coresight_funnel_pdata = {
3002 .id = 2,
3003 .name = "coresight-funnel",
Pratik Patel98e6ce32012-09-06 09:41:49 -07003004 .nr_inports = 8,
Pratik Patel3b0ca882012-06-01 16:54:14 -07003005 .outports = coresight_funnel_outports,
3006 .child_ids = coresight_funnel_child_ids,
3007 .child_ports = coresight_funnel_child_ports,
3008 .nr_outports = ARRAY_SIZE(coresight_funnel_outports),
3009};
3010
3011struct platform_device apq8064_coresight_funnel_device = {
3012 .name = "coresight-funnel",
Pratik Patel212ab362012-03-16 12:30:07 -07003013 .id = 0,
Pratik Patel3b0ca882012-06-01 16:54:14 -07003014 .num_resources = ARRAY_SIZE(coresight_funnel_resources),
3015 .resource = coresight_funnel_resources,
3016 .dev = {
3017 .platform_data = &coresight_funnel_pdata,
3018 },
3019};
3020
3021static struct resource coresight_etm2_resources[] = {
3022 {
3023 .start = CORESIGHT_ETM2_PHYS_BASE,
3024 .end = CORESIGHT_ETM2_PHYS_BASE + SZ_4K - 1,
3025 .flags = IORESOURCE_MEM,
3026 },
3027};
3028
3029static const int coresight_etm2_outports[] = { 0 };
3030static const int coresight_etm2_child_ids[] = { 2 };
3031static const int coresight_etm2_child_ports[] = { 4 };
3032
3033static struct coresight_platform_data coresight_etm2_pdata = {
3034 .id = 6,
3035 .name = "coresight-etm2",
Pratik Patel98e6ce32012-09-06 09:41:49 -07003036 .nr_inports = 0,
Pratik Patel3b0ca882012-06-01 16:54:14 -07003037 .outports = coresight_etm2_outports,
3038 .child_ids = coresight_etm2_child_ids,
3039 .child_ports = coresight_etm2_child_ports,
3040 .nr_outports = ARRAY_SIZE(coresight_etm2_outports),
3041};
3042
3043struct platform_device coresight_etm2_device = {
3044 .name = "coresight-etm",
3045 .id = 2,
3046 .num_resources = ARRAY_SIZE(coresight_etm2_resources),
3047 .resource = coresight_etm2_resources,
3048 .dev = {
3049 .platform_data = &coresight_etm2_pdata,
3050 },
3051};
3052
3053static struct resource coresight_etm3_resources[] = {
3054 {
3055 .start = CORESIGHT_ETM3_PHYS_BASE,
3056 .end = CORESIGHT_ETM3_PHYS_BASE + SZ_4K - 1,
3057 .flags = IORESOURCE_MEM,
3058 },
3059};
3060
3061static const int coresight_etm3_outports[] = { 0 };
3062static const int coresight_etm3_child_ids[] = { 2 };
3063static const int coresight_etm3_child_ports[] = { 5 };
3064
3065static struct coresight_platform_data coresight_etm3_pdata = {
3066 .id = 7,
3067 .name = "coresight-etm3",
Pratik Patel98e6ce32012-09-06 09:41:49 -07003068 .nr_inports = 0,
Pratik Patel3b0ca882012-06-01 16:54:14 -07003069 .outports = coresight_etm3_outports,
3070 .child_ids = coresight_etm3_child_ids,
3071 .child_ports = coresight_etm3_child_ports,
3072 .nr_outports = ARRAY_SIZE(coresight_etm3_outports),
3073};
3074
3075struct platform_device coresight_etm3_device = {
3076 .name = "coresight-etm",
3077 .id = 3,
3078 .num_resources = ARRAY_SIZE(coresight_etm3_resources),
3079 .resource = coresight_etm3_resources,
3080 .dev = {
3081 .platform_data = &coresight_etm3_pdata,
3082 },
Pratik Patel212ab362012-03-16 12:30:07 -07003083};
Laura Abbott0577d7b2012-04-17 11:14:30 -07003084
3085struct msm_iommu_domain_name apq8064_iommu_ctx_names[] = {
3086 /* Camera */
3087 {
Laura Abbott0577d7b2012-04-17 11:14:30 -07003088 .name = "ijpeg_src",
3089 .domain = CAMERA_DOMAIN,
3090 },
3091 /* Camera */
3092 {
3093 .name = "ijpeg_dst",
3094 .domain = CAMERA_DOMAIN,
3095 },
3096 /* Camera */
3097 {
3098 .name = "jpegd_src",
3099 .domain = CAMERA_DOMAIN,
3100 },
3101 /* Camera */
3102 {
3103 .name = "jpegd_dst",
3104 .domain = CAMERA_DOMAIN,
3105 },
Olav Hauganef95ae32012-05-15 09:50:30 -07003106 /* Rotator src*/
Laura Abbott0577d7b2012-04-17 11:14:30 -07003107 {
3108 .name = "rot_src",
Olav Hauganef95ae32012-05-15 09:50:30 -07003109 .domain = ROTATOR_SRC_DOMAIN,
Laura Abbott0577d7b2012-04-17 11:14:30 -07003110 },
Olav Hauganef95ae32012-05-15 09:50:30 -07003111 /* Rotator dst */
Laura Abbott0577d7b2012-04-17 11:14:30 -07003112 {
3113 .name = "rot_dst",
Olav Hauganef95ae32012-05-15 09:50:30 -07003114 .domain = ROTATOR_DST_DOMAIN,
Laura Abbott0577d7b2012-04-17 11:14:30 -07003115 },
3116 /* Video */
3117 {
3118 .name = "vcodec_a_mm1",
3119 .domain = VIDEO_DOMAIN,
3120 },
3121 /* Video */
3122 {
3123 .name = "vcodec_b_mm2",
3124 .domain = VIDEO_DOMAIN,
3125 },
3126 /* Video */
3127 {
3128 .name = "vcodec_a_stream",
3129 .domain = VIDEO_DOMAIN,
3130 },
3131};
3132
3133static struct mem_pool apq8064_video_pools[] = {
3134 /*
3135 * Video hardware has the following requirements:
3136 * 1. All video addresses used by the video hardware must be at a higher
3137 * address than video firmware address.
3138 * 2. Video hardware can only access a range of 256MB from the base of
3139 * the video firmware.
3140 */
3141 [VIDEO_FIRMWARE_POOL] =
3142 /* Low addresses, intended for video firmware */
3143 {
3144 .paddr = SZ_128K,
3145 .size = SZ_16M - SZ_128K,
3146 },
3147 [VIDEO_MAIN_POOL] =
3148 /* Main video pool */
3149 {
3150 .paddr = SZ_16M,
3151 .size = SZ_256M - SZ_16M,
3152 },
3153 [GEN_POOL] =
3154 /* Remaining address space up to 2G */
3155 {
3156 .paddr = SZ_256M,
3157 .size = SZ_2G - SZ_256M,
3158 },
3159};
3160
3161static struct mem_pool apq8064_camera_pools[] = {
3162 [GEN_POOL] =
3163 /* One address space for camera */
3164 {
3165 .paddr = SZ_128K,
3166 .size = SZ_2G - SZ_128K,
3167 },
3168};
3169
Olav Hauganef95ae32012-05-15 09:50:30 -07003170static struct mem_pool apq8064_display_read_pools[] = {
Laura Abbott0577d7b2012-04-17 11:14:30 -07003171 [GEN_POOL] =
Olav Hauganef95ae32012-05-15 09:50:30 -07003172 /* One address space for display reads */
Laura Abbott0577d7b2012-04-17 11:14:30 -07003173 {
3174 .paddr = SZ_128K,
3175 .size = SZ_2G - SZ_128K,
3176 },
3177};
3178
Olav Hauganef95ae32012-05-15 09:50:30 -07003179static struct mem_pool apq8064_display_write_pools[] = {
Laura Abbott0577d7b2012-04-17 11:14:30 -07003180 [GEN_POOL] =
Olav Hauganef95ae32012-05-15 09:50:30 -07003181 /* One address space for display writes */
3182 {
3183 .paddr = SZ_128K,
3184 .size = SZ_2G - SZ_128K,
3185 },
3186};
3187
3188static struct mem_pool apq8064_rotator_src_pools[] = {
3189 [GEN_POOL] =
3190 /* One address space for rotator src */
3191 {
3192 .paddr = SZ_128K,
3193 .size = SZ_2G - SZ_128K,
3194 },
3195};
3196
3197static struct mem_pool apq8064_rotator_dst_pools[] = {
3198 [GEN_POOL] =
3199 /* One address space for rotator dst */
Laura Abbott0577d7b2012-04-17 11:14:30 -07003200 {
3201 .paddr = SZ_128K,
3202 .size = SZ_2G - SZ_128K,
3203 },
3204};
3205
3206static struct msm_iommu_domain apq8064_iommu_domains[] = {
3207 [VIDEO_DOMAIN] = {
3208 .iova_pools = apq8064_video_pools,
3209 .npools = ARRAY_SIZE(apq8064_video_pools),
3210 },
3211 [CAMERA_DOMAIN] = {
3212 .iova_pools = apq8064_camera_pools,
3213 .npools = ARRAY_SIZE(apq8064_camera_pools),
3214 },
Olav Hauganef95ae32012-05-15 09:50:30 -07003215 [DISPLAY_READ_DOMAIN] = {
3216 .iova_pools = apq8064_display_read_pools,
3217 .npools = ARRAY_SIZE(apq8064_display_read_pools),
Laura Abbott0577d7b2012-04-17 11:14:30 -07003218 },
Olav Hauganef95ae32012-05-15 09:50:30 -07003219 [DISPLAY_WRITE_DOMAIN] = {
3220 .iova_pools = apq8064_display_write_pools,
3221 .npools = ARRAY_SIZE(apq8064_display_write_pools),
3222 },
3223 [ROTATOR_SRC_DOMAIN] = {
3224 .iova_pools = apq8064_rotator_src_pools,
3225 .npools = ARRAY_SIZE(apq8064_rotator_src_pools),
3226 },
3227 [ROTATOR_DST_DOMAIN] = {
3228 .iova_pools = apq8064_rotator_dst_pools,
3229 .npools = ARRAY_SIZE(apq8064_rotator_dst_pools),
Laura Abbott0577d7b2012-04-17 11:14:30 -07003230 },
3231};
3232
3233struct iommu_domains_pdata apq8064_iommu_domain_pdata = {
3234 .domains = apq8064_iommu_domains,
3235 .ndomains = ARRAY_SIZE(apq8064_iommu_domains),
3236 .domain_names = apq8064_iommu_ctx_names,
3237 .nnames = ARRAY_SIZE(apq8064_iommu_ctx_names),
3238 .domain_alloc_flags = 0,
3239};
3240
3241struct platform_device apq8064_iommu_domain_device = {
3242 .name = "iommu_domains",
3243 .id = -1,
3244 .dev = {
3245 .platform_data = &apq8064_iommu_domain_pdata,
Laura Abbott532b2df2012-04-12 10:53:48 -07003246 }
3247};
3248
3249struct msm_rtb_platform_data apq8064_rtb_pdata = {
3250 .size = SZ_1M,
3251};
3252
3253static int __init msm_rtb_set_buffer_size(char *p)
3254{
3255 int s;
3256
3257 s = memparse(p, NULL);
3258 apq8064_rtb_pdata.size = ALIGN(s, SZ_4K);
3259 return 0;
3260}
3261early_param("msm_rtb_size", msm_rtb_set_buffer_size);
3262
3263struct platform_device apq8064_rtb_device = {
3264 .name = "msm_rtb",
3265 .id = -1,
3266 .dev = {
3267 .platform_data = &apq8064_rtb_pdata,
Laura Abbott0577d7b2012-04-17 11:14:30 -07003268 },
3269};
Laura Abbott93a4a352012-05-25 09:26:35 -07003270
3271#define APQ8064_L1_SIZE SZ_1M
3272/*
3273 * The actual L2 size is smaller but we need a larger buffer
3274 * size to store other dump information
3275 */
3276#define APQ8064_L2_SIZE SZ_8M
3277
3278struct msm_cache_dump_platform_data apq8064_cache_dump_pdata = {
3279 .l2_size = APQ8064_L2_SIZE,
3280 .l1_size = APQ8064_L1_SIZE,
3281};
3282
3283struct platform_device apq8064_cache_dump_device = {
3284 .name = "msm_cache_dump",
3285 .id = -1,
3286 .dev = {
3287 .platform_data = &apq8064_cache_dump_pdata,
3288 },
3289};