blob: d3753c4e5aab31f848e13454b2a67a65431a89e3 [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"
Anji Jonnala4bf6c0c2013-04-16 17:07:52 +053042#include "pm.h"
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070043#include "devices.h"
Matt Wagantall1875d322012-02-22 16:11:33 -080044#include "footswitch.h"
Jeff Ohlstein7e668552011-10-06 16:17:25 -070045#include "msm_watchdog.h"
Praveen Chidambaram78499012011-11-01 17:15:17 -060046#include "rpm_stats.h"
47#include "rpm_log.h"
Joel King3166e892013-02-26 11:16:08 -080048#include "board-8064.h"
Subhash Jadavani909e04f2012-04-12 10:52:50 +053049#include <mach/mpm.h>
Laura Abbott0577d7b2012-04-17 11:14:30 -070050#include <mach/iommu_domains.h>
Laura Abbott93a4a352012-05-25 09:26:35 -070051#include <mach/msm_cache_dump.h>
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070052
53/* Address of GSBI blocks */
Stepan Moskovchenko2701a442011-08-19 13:47:22 -070054#define MSM_GSBI1_PHYS 0x12440000
Devin Kima3085422012-06-14 18:23:41 -070055#define MSM_GSBI2_PHYS 0x13440000
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070056#define MSM_GSBI3_PHYS 0x16200000
Harini Jayaramanc4c58692011-07-19 14:50:10 -060057#define MSM_GSBI4_PHYS 0x16300000
58#define MSM_GSBI5_PHYS 0x1A200000
59#define MSM_GSBI6_PHYS 0x16500000
60#define MSM_GSBI7_PHYS 0x16600000
61
Kenneth Heitke748593a2011-07-15 15:45:11 -060062/* GSBI UART devices */
Stepan Moskovchenko2701a442011-08-19 13:47:22 -070063#define MSM_UART1DM_PHYS (MSM_GSBI1_PHYS + 0x10000)
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070064#define MSM_UART3DM_PHYS (MSM_GSBI3_PHYS + 0x40000)
Devin Kima3085422012-06-14 18:23:41 -070065#define MSM_UART4DM_PHYS (MSM_GSBI4_PHYS + 0x40000)
66#define MSM_UART6DM_PHYS (MSM_GSBI6_PHYS + 0x40000)
Jin Hong4bbbfba2012-02-02 21:48:07 -080067#define MSM_UART7DM_PHYS (MSM_GSBI7_PHYS + 0x40000)
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070068
Harini Jayaramanc4c58692011-07-19 14:50:10 -060069/* GSBI QUP devices */
David Keitel3c40fc52012-02-09 17:53:52 -080070#define MSM_GSBI1_QUP_PHYS (MSM_GSBI1_PHYS + 0x20000)
Devin Kima3085422012-06-14 18:23:41 -070071#define MSM_GSBI2_QUP_PHYS (MSM_GSBI2_PHYS + 0x20000)
Harini Jayaramanc4c58692011-07-19 14:50:10 -060072#define MSM_GSBI3_QUP_PHYS (MSM_GSBI3_PHYS + 0x80000)
73#define MSM_GSBI4_QUP_PHYS (MSM_GSBI4_PHYS + 0x80000)
74#define MSM_GSBI5_QUP_PHYS (MSM_GSBI5_PHYS + 0x80000)
75#define MSM_GSBI6_QUP_PHYS (MSM_GSBI6_PHYS + 0x80000)
76#define MSM_GSBI7_QUP_PHYS (MSM_GSBI7_PHYS + 0x80000)
77#define MSM_QUP_SIZE SZ_4K
78
Kenneth Heitke36920d32011-07-20 16:44:30 -060079/* Address of SSBI CMD */
80#define MSM_PMIC1_SSBI_CMD_PHYS 0x00500000
81#define MSM_PMIC2_SSBI_CMD_PHYS 0x00C00000
82#define MSM_PMIC_SSBI_SIZE SZ_4K
Harini Jayaramanc4c58692011-07-19 14:50:10 -060083
Hemant Kumarcaa09092011-07-30 00:26:33 -070084/* Address of HS USBOTG1 */
Hemant Kumard86c4882012-01-24 19:39:37 -080085#define MSM_HSUSB1_PHYS 0x12500000
86#define MSM_HSUSB1_SIZE SZ_4K
Hemant Kumarcaa09092011-07-30 00:26:33 -070087
Manu Gautam91223e02011-11-08 15:27:22 +053088/* Address of HS USB3 */
89#define MSM_HSUSB3_PHYS 0x12520000
90#define MSM_HSUSB3_SIZE SZ_4K
91
Hemant Kumar1d66e1c2012-02-13 15:24:59 -080092/* Address of HS USB4 */
93#define MSM_HSUSB4_PHYS 0x12530000
94#define MSM_HSUSB4_SIZE SZ_4K
95
Niranjana Vishwanathapura06f89332012-05-03 17:11:13 -060096/* Address of PCIE20 PARF */
97#define PCIE20_PARF_PHYS 0x1b600000
98#define PCIE20_PARF_SIZE SZ_128
99
100/* Address of PCIE20 ELBI */
101#define PCIE20_ELBI_PHYS 0x1b502000
102#define PCIE20_ELBI_SIZE SZ_256
103
104/* Address of PCIE20 */
105#define PCIE20_PHYS 0x1b500000
106#define PCIE20_SIZE SZ_4K
Anji Jonnala2a8bd312012-11-01 13:11:42 +0530107#define MSM8064_RPM_MASTER_STATS_BASE 0x10BB00
Anji Jonnalae84292b2012-09-21 13:34:44 +0530108#define MSM8064_PC_CNTR_PHYS (APQ8064_IMEM_PHYS + 0x664)
109#define MSM8064_PC_CNTR_SIZE 0x40
110
111static struct resource msm8064_resources_pccntr[] = {
112 {
113 .start = MSM8064_PC_CNTR_PHYS,
114 .end = MSM8064_PC_CNTR_PHYS + MSM8064_PC_CNTR_SIZE,
115 .flags = IORESOURCE_MEM,
116 },
117};
118
119struct platform_device msm8064_pc_cntr = {
120 .name = "pc-cntr",
121 .id = -1,
122 .num_resources = ARRAY_SIZE(msm8064_resources_pccntr),
123 .resource = msm8064_resources_pccntr,
124};
Niranjana Vishwanathapura06f89332012-05-03 17:11:13 -0600125
Anji Jonnala4bf6c0c2013-04-16 17:07:52 +0530126static struct msm_pm_sleep_status_data msm_pm_slp_sts_data = {
127 .base_addr = MSM_ACC0_BASE + 0x08,
128 .cpu_offset = MSM_ACC1_BASE - MSM_ACC0_BASE,
129 .mask = 1UL << 13,
130};
131struct platform_device msm8064_cpu_slp_status = {
132 .name = "cpu_slp_status",
133 .id = -1,
134 .dev = {
135 .platform_data = &msm_pm_slp_sts_data,
136 },
137};
138
Jeff Ohlstein7e668552011-10-06 16:17:25 -0700139static struct msm_watchdog_pdata msm_watchdog_pdata = {
140 .pet_time = 10000,
141 .bark_time = 11000,
142 .has_secure = true,
Joel Kinge7ca6f72012-02-09 20:51:25 -0800143 .needs_expired_enable = true,
Rohit Vaswanic77e4a62012-08-09 18:10:28 -0700144 .base = MSM_TMR0_BASE + WDT0_OFFSET,
145};
146
147static struct resource msm_watchdog_resources[] = {
148 {
149 .start = WDT0_ACCSCSSNBARK_INT,
150 .end = WDT0_ACCSCSSNBARK_INT,
151 .flags = IORESOURCE_IRQ,
152 },
Jeff Ohlstein7e668552011-10-06 16:17:25 -0700153};
154
155struct platform_device msm8064_device_watchdog = {
156 .name = "msm_watchdog",
157 .id = -1,
158 .dev = {
159 .platform_data = &msm_watchdog_pdata,
160 },
Rohit Vaswanic77e4a62012-08-09 18:10:28 -0700161 .num_resources = ARRAY_SIZE(msm_watchdog_resources),
162 .resource = msm_watchdog_resources,
Jeff Ohlstein7e668552011-10-06 16:17:25 -0700163};
164
Joel King0581896d2011-07-19 16:43:28 -0700165static struct resource msm_dmov_resource[] = {
166 {
Jeff Ohlstein4af72692011-11-07 15:59:17 -0800167 .start = ADM_0_SCSS_1_IRQ,
Joel King0581896d2011-07-19 16:43:28 -0700168 .flags = IORESOURCE_IRQ,
169 },
Jeff Ohlstein905f1ce2011-09-07 18:50:18 -0700170 {
Jeff Ohlstein4af72692011-11-07 15:59:17 -0800171 .start = 0x18320000,
172 .end = 0x18320000 + SZ_1M - 1,
Jeff Ohlstein905f1ce2011-09-07 18:50:18 -0700173 .flags = IORESOURCE_MEM,
174 },
175};
176
177static struct msm_dmov_pdata msm_dmov_pdata = {
Jeff Ohlstein4af72692011-11-07 15:59:17 -0800178 .sd = 1,
Jeff Ohlstein905f1ce2011-09-07 18:50:18 -0700179 .sd_size = 0x800,
Joel King0581896d2011-07-19 16:43:28 -0700180};
181
Stepan Moskovchenkodf13d342011-08-03 19:01:25 -0700182struct platform_device apq8064_device_dmov = {
Joel King0581896d2011-07-19 16:43:28 -0700183 .name = "msm_dmov",
184 .id = -1,
185 .resource = msm_dmov_resource,
186 .num_resources = ARRAY_SIZE(msm_dmov_resource),
Jeff Ohlstein905f1ce2011-09-07 18:50:18 -0700187 .dev = {
188 .platform_data = &msm_dmov_pdata,
189 },
Joel King0581896d2011-07-19 16:43:28 -0700190};
191
Stepan Moskovchenko2701a442011-08-19 13:47:22 -0700192static struct resource resources_uart_gsbi1[] = {
193 {
194 .start = APQ8064_GSBI1_UARTDM_IRQ,
195 .end = APQ8064_GSBI1_UARTDM_IRQ,
196 .flags = IORESOURCE_IRQ,
197 },
198 {
199 .start = MSM_UART1DM_PHYS,
200 .end = MSM_UART1DM_PHYS + PAGE_SIZE - 1,
201 .name = "uartdm_resource",
202 .flags = IORESOURCE_MEM,
203 },
204 {
205 .start = MSM_GSBI1_PHYS,
206 .end = MSM_GSBI1_PHYS + PAGE_SIZE - 1,
207 .name = "gsbi_resource",
208 .flags = IORESOURCE_MEM,
209 },
210};
211
212struct platform_device apq8064_device_uart_gsbi1 = {
213 .name = "msm_serial_hsl",
Jin Hong4bbbfba2012-02-02 21:48:07 -0800214 .id = 1,
Stepan Moskovchenko2701a442011-08-19 13:47:22 -0700215 .num_resources = ARRAY_SIZE(resources_uart_gsbi1),
216 .resource = resources_uart_gsbi1,
217};
218
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700219static struct resource resources_uart_gsbi3[] = {
220 {
221 .start = GSBI3_UARTDM_IRQ,
222 .end = GSBI3_UARTDM_IRQ,
223 .flags = IORESOURCE_IRQ,
224 },
225 {
226 .start = MSM_UART3DM_PHYS,
227 .end = MSM_UART3DM_PHYS + PAGE_SIZE - 1,
228 .name = "uartdm_resource",
229 .flags = IORESOURCE_MEM,
230 },
231 {
232 .start = MSM_GSBI3_PHYS,
233 .end = MSM_GSBI3_PHYS + PAGE_SIZE - 1,
234 .name = "gsbi_resource",
235 .flags = IORESOURCE_MEM,
236 },
237};
238
239struct platform_device apq8064_device_uart_gsbi3 = {
240 .name = "msm_serial_hsl",
241 .id = 0,
242 .num_resources = ARRAY_SIZE(resources_uart_gsbi3),
243 .resource = resources_uart_gsbi3,
244};
245
Jing Lin04601f92012-02-05 15:36:07 -0800246static struct resource resources_qup_i2c_gsbi3[] = {
247 {
248 .name = "gsbi_qup_i2c_addr",
249 .start = MSM_GSBI3_PHYS,
250 .end = MSM_GSBI3_PHYS + 4 - 1,
251 .flags = IORESOURCE_MEM,
252 },
253 {
254 .name = "qup_phys_addr",
255 .start = MSM_GSBI3_QUP_PHYS,
256 .end = MSM_GSBI3_QUP_PHYS + MSM_QUP_SIZE - 1,
257 .flags = IORESOURCE_MEM,
258 },
259 {
260 .name = "qup_err_intr",
261 .start = GSBI3_QUP_IRQ,
262 .end = GSBI3_QUP_IRQ,
263 .flags = IORESOURCE_IRQ,
264 },
265 {
266 .name = "i2c_clk",
267 .start = 9,
268 .end = 9,
269 .flags = IORESOURCE_IO,
270 },
271 {
272 .name = "i2c_sda",
273 .start = 8,
274 .end = 8,
275 .flags = IORESOURCE_IO,
276 },
277};
278
David Keitel3c40fc52012-02-09 17:53:52 -0800279static struct resource resources_qup_i2c_gsbi1[] = {
280 {
281 .name = "gsbi_qup_i2c_addr",
282 .start = MSM_GSBI1_PHYS,
283 .end = MSM_GSBI1_PHYS + 4 - 1,
284 .flags = IORESOURCE_MEM,
285 },
286 {
287 .name = "qup_phys_addr",
288 .start = MSM_GSBI1_QUP_PHYS,
289 .end = MSM_GSBI1_QUP_PHYS + MSM_QUP_SIZE - 1,
290 .flags = IORESOURCE_MEM,
291 },
292 {
293 .name = "qup_err_intr",
294 .start = APQ8064_GSBI1_QUP_IRQ,
295 .end = APQ8064_GSBI1_QUP_IRQ,
296 .flags = IORESOURCE_IRQ,
297 },
298 {
299 .name = "i2c_clk",
300 .start = 21,
301 .end = 21,
302 .flags = IORESOURCE_IO,
303 },
304 {
305 .name = "i2c_sda",
306 .start = 20,
307 .end = 20,
308 .flags = IORESOURCE_IO,
309 },
310};
311
312struct platform_device apq8064_device_qup_i2c_gsbi1 = {
313 .name = "qup_i2c",
314 .id = 0,
315 .num_resources = ARRAY_SIZE(resources_qup_i2c_gsbi1),
316 .resource = resources_qup_i2c_gsbi1,
317};
318
Jing Lin04601f92012-02-05 15:36:07 -0800319struct platform_device apq8064_device_qup_i2c_gsbi3 = {
320 .name = "qup_i2c",
321 .id = 3,
322 .num_resources = ARRAY_SIZE(resources_qup_i2c_gsbi3),
323 .resource = resources_qup_i2c_gsbi3,
324};
325
Devin Kima3085422012-06-14 18:23:41 -0700326static struct resource resources_uart_gsbi4[] = {
327 {
328 .start = GSBI4_UARTDM_IRQ,
329 .end = GSBI4_UARTDM_IRQ,
330 .flags = IORESOURCE_IRQ,
331 },
332 {
333 .start = MSM_UART4DM_PHYS,
334 .end = MSM_UART4DM_PHYS + PAGE_SIZE - 1,
335 .name = "uartdm_resource",
336 .flags = IORESOURCE_MEM,
337 },
338 {
339 .start = MSM_GSBI4_PHYS,
340 .end = MSM_GSBI4_PHYS + PAGE_SIZE - 1,
341 .name = "gsbi_resource",
342 .flags = IORESOURCE_MEM,
343 },
344};
345
346struct platform_device apq8064_device_uart_gsbi4 = {
347 .name = "msm_serial_hsl",
348 .id = 0,
349 .num_resources = ARRAY_SIZE(resources_uart_gsbi4),
350 .resource = resources_uart_gsbi4,
351};
352
Mayank Ranae98f1e42013-02-22 19:58:59 +0530353/* GSBI 4 used into UARTDM Mode for 8064 SGLTE */
354static struct resource msm_uart_dm4_resources[] = {
355 {
356 .start = MSM_UART4DM_PHYS,
357 .end = MSM_UART4DM_PHYS + PAGE_SIZE - 1,
358 .name = "uartdm_resource",
359 .flags = IORESOURCE_MEM,
360 },
361 {
362 .start = GSBI4_UARTDM_IRQ,
363 .end = GSBI4_UARTDM_IRQ,
364 .flags = IORESOURCE_IRQ,
365 },
366 {
367 .start = MSM_GSBI4_PHYS,
368 .end = MSM_GSBI4_PHYS + 4 - 1,
369 .name = "gsbi_resource",
370 .flags = IORESOURCE_MEM,
371 },
372 {
373 .start = DMOV_APQ8064_HSUART_GSBI4_TX_CHAN,
374 .end = DMOV_APQ8064_HSUART_GSBI4_RX_CHAN,
375 .name = "uartdm_channels",
376 .flags = IORESOURCE_DMA,
377 },
378 {
379 .start = DMOV_APQ8064_HSUART_GSBI4_TX_CRCI,
380 .end = DMOV_APQ8064_HSUART_GSBI4_RX_CRCI,
381 .name = "uartdm_crci",
382 .flags = IORESOURCE_DMA,
383 },
384};
385static u64 msm_uart_dm4_dma_mask = DMA_BIT_MASK(32);
386struct platform_device apq8064_device_uartdm_gsbi4 = {
387 .name = "msm_serial_hs",
388 .id = 1,
389 .num_resources = ARRAY_SIZE(msm_uart_dm4_resources),
390 .resource = msm_uart_dm4_resources,
391 .dev = {
392 .dma_mask = &msm_uart_dm4_dma_mask,
393 .coherent_dma_mask = DMA_BIT_MASK(32),
394 },
395};
396
Kenneth Heitke748593a2011-07-15 15:45:11 -0600397static struct resource resources_qup_i2c_gsbi4[] = {
398 {
399 .name = "gsbi_qup_i2c_addr",
400 .start = MSM_GSBI4_PHYS,
Harini Jayaramane1554a92011-09-15 14:43:02 -0600401 .end = MSM_GSBI4_PHYS + 4 - 1,
Kenneth Heitke748593a2011-07-15 15:45:11 -0600402 .flags = IORESOURCE_MEM,
403 },
404 {
405 .name = "qup_phys_addr",
406 .start = MSM_GSBI4_QUP_PHYS,
Harini Jayaramane1554a92011-09-15 14:43:02 -0600407 .end = MSM_GSBI4_QUP_PHYS + MSM_QUP_SIZE - 1,
Kenneth Heitke748593a2011-07-15 15:45:11 -0600408 .flags = IORESOURCE_MEM,
409 },
410 {
411 .name = "qup_err_intr",
412 .start = GSBI4_QUP_IRQ,
413 .end = GSBI4_QUP_IRQ,
414 .flags = IORESOURCE_IRQ,
415 },
Kevin Chand07220e2012-02-13 15:52:22 -0800416 {
417 .name = "i2c_clk",
418 .start = 11,
419 .end = 11,
420 .flags = IORESOURCE_IO,
421 },
422 {
423 .name = "i2c_sda",
424 .start = 10,
425 .end = 10,
426 .flags = IORESOURCE_IO,
427 },
Kenneth Heitke748593a2011-07-15 15:45:11 -0600428};
429
430struct platform_device apq8064_device_qup_i2c_gsbi4 = {
431 .name = "qup_i2c",
432 .id = 4,
433 .num_resources = ARRAY_SIZE(resources_qup_i2c_gsbi4),
434 .resource = resources_qup_i2c_gsbi4,
435};
436
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700437static struct resource resources_qup_spi_gsbi5[] = {
438 {
439 .name = "spi_base",
440 .start = MSM_GSBI5_QUP_PHYS,
441 .end = MSM_GSBI5_QUP_PHYS + SZ_4K - 1,
442 .flags = IORESOURCE_MEM,
443 },
444 {
445 .name = "gsbi_base",
446 .start = MSM_GSBI5_PHYS,
447 .end = MSM_GSBI5_PHYS + 4 - 1,
448 .flags = IORESOURCE_MEM,
449 },
450 {
451 .name = "spi_irq_in",
452 .start = GSBI5_QUP_IRQ,
453 .end = GSBI5_QUP_IRQ,
454 .flags = IORESOURCE_IRQ,
455 },
456};
457
458struct platform_device apq8064_device_qup_spi_gsbi5 = {
459 .name = "spi_qsd",
460 .id = 0,
461 .num_resources = ARRAY_SIZE(resources_qup_spi_gsbi5),
462 .resource = resources_qup_spi_gsbi5,
463};
464
Joel King8f839b92012-04-01 14:37:46 -0700465static struct resource resources_qup_i2c_gsbi5[] = {
466 {
467 .name = "gsbi_qup_i2c_addr",
468 .start = MSM_GSBI5_PHYS,
469 .end = MSM_GSBI5_PHYS + 4 - 1,
470 .flags = IORESOURCE_MEM,
471 },
472 {
473 .name = "qup_phys_addr",
474 .start = MSM_GSBI5_QUP_PHYS,
475 .end = MSM_GSBI5_QUP_PHYS + MSM_QUP_SIZE - 1,
476 .flags = IORESOURCE_MEM,
477 },
478 {
479 .name = "qup_err_intr",
480 .start = GSBI5_QUP_IRQ,
481 .end = GSBI5_QUP_IRQ,
482 .flags = IORESOURCE_IRQ,
483 },
484 {
485 .name = "i2c_clk",
486 .start = 54,
487 .end = 54,
488 .flags = IORESOURCE_IO,
489 },
490 {
491 .name = "i2c_sda",
492 .start = 53,
493 .end = 53,
494 .flags = IORESOURCE_IO,
495 },
496};
497
498struct platform_device mpq8064_device_qup_i2c_gsbi5 = {
499 .name = "qup_i2c",
500 .id = 5,
501 .num_resources = ARRAY_SIZE(resources_qup_i2c_gsbi5),
502 .resource = resources_qup_i2c_gsbi5,
503};
504
Mayank Rana33681af2012-05-10 15:14:00 -0700505/* GSBI 6 used into UARTDM Mode */
506static struct resource msm_uart_dm6_resources[] = {
507 {
508 .start = MSM_UART6DM_PHYS,
509 .end = MSM_UART6DM_PHYS + PAGE_SIZE - 1,
510 .name = "uartdm_resource",
511 .flags = IORESOURCE_MEM,
512 },
513 {
514 .start = GSBI6_UARTDM_IRQ,
515 .end = GSBI6_UARTDM_IRQ,
516 .flags = IORESOURCE_IRQ,
517 },
518 {
519 .start = MSM_GSBI6_PHYS,
520 .end = MSM_GSBI6_PHYS + 4 - 1,
521 .name = "gsbi_resource",
522 .flags = IORESOURCE_MEM,
523 },
524 {
525 .start = DMOV_MPQ8064_HSUART_GSBI6_TX_CHAN,
526 .end = DMOV_MPQ8064_HSUART_GSBI6_RX_CHAN,
527 .name = "uartdm_channels",
528 .flags = IORESOURCE_DMA,
529 },
530 {
531 .start = DMOV_MPQ8064_HSUART_GSBI6_TX_CRCI,
532 .end = DMOV_MPQ8064_HSUART_GSBI6_RX_CRCI,
533 .name = "uartdm_crci",
534 .flags = IORESOURCE_DMA,
535 },
536};
537static u64 msm_uart_dm6_dma_mask = DMA_BIT_MASK(32);
538struct platform_device mpq8064_device_uartdm_gsbi6 = {
539 .name = "msm_serial_hs",
540 .id = 0,
541 .num_resources = ARRAY_SIZE(msm_uart_dm6_resources),
542 .resource = msm_uart_dm6_resources,
543 .dev = {
544 .dma_mask = &msm_uart_dm6_dma_mask,
545 .coherent_dma_mask = DMA_BIT_MASK(32),
546 },
547};
548
Jin Hong4bbbfba2012-02-02 21:48:07 -0800549static struct resource resources_uart_gsbi7[] = {
550 {
551 .start = GSBI7_UARTDM_IRQ,
552 .end = GSBI7_UARTDM_IRQ,
553 .flags = IORESOURCE_IRQ,
554 },
555 {
556 .start = MSM_UART7DM_PHYS,
557 .end = MSM_UART7DM_PHYS + PAGE_SIZE - 1,
558 .name = "uartdm_resource",
559 .flags = IORESOURCE_MEM,
560 },
561 {
562 .start = MSM_GSBI7_PHYS,
563 .end = MSM_GSBI7_PHYS + PAGE_SIZE - 1,
564 .name = "gsbi_resource",
565 .flags = IORESOURCE_MEM,
566 },
567};
568
569struct platform_device apq8064_device_uart_gsbi7 = {
570 .name = "msm_serial_hsl",
571 .id = 0,
572 .num_resources = ARRAY_SIZE(resources_uart_gsbi7),
573 .resource = resources_uart_gsbi7,
574};
575
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800576struct platform_device apq_pcm = {
577 .name = "msm-pcm-dsp",
578 .id = -1,
579};
580
581struct platform_device apq_pcm_routing = {
582 .name = "msm-pcm-routing",
583 .id = -1,
584};
585
586struct platform_device apq_cpudai0 = {
587 .name = "msm-dai-q6",
588 .id = 0x4000,
589};
590
591struct platform_device apq_cpudai1 = {
592 .name = "msm-dai-q6",
593 .id = 0x4001,
594};
Santosh Mardieff9a742012-04-09 23:23:39 +0530595struct platform_device mpq_cpudai_sec_i2s_rx = {
596 .name = "msm-dai-q6",
597 .id = 4,
598};
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800599struct platform_device apq_cpudai_hdmi_rx = {
Swaminathan Sathappanfd9dbad2012-02-15 16:56:44 -0800600 .name = "msm-dai-q6-hdmi",
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800601 .id = 8,
602};
603
604struct platform_device apq_cpudai_bt_rx = {
605 .name = "msm-dai-q6",
606 .id = 0x3000,
607};
608
609struct platform_device apq_cpudai_bt_tx = {
610 .name = "msm-dai-q6",
611 .id = 0x3001,
612};
613
614struct platform_device apq_cpudai_fm_rx = {
615 .name = "msm-dai-q6",
616 .id = 0x3004,
617};
618
619struct platform_device apq_cpudai_fm_tx = {
620 .name = "msm-dai-q6",
621 .id = 0x3005,
622};
623
Helen Zeng8f925502012-03-05 16:50:17 -0800624struct platform_device apq_cpudai_slim_4_rx = {
625 .name = "msm-dai-q6",
626 .id = 0x4008,
627};
628
629struct platform_device apq_cpudai_slim_4_tx = {
630 .name = "msm-dai-q6",
631 .id = 0x4009,
632};
633
Joel Nidere5de00e2012-07-03 10:58:10 +0300634#define MSM_TSIF0_PHYS (0x18200000)
635#define MSM_TSIF1_PHYS (0x18201000)
636#define MSM_TSIF_SIZE (0x200)
637
638#define TSIF_0_CLK GPIO_CFG(55, 1, GPIO_CFG_INPUT, \
639 GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA)
640#define TSIF_0_EN GPIO_CFG(56, 1, GPIO_CFG_INPUT, \
641 GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA)
642#define TSIF_0_DATA GPIO_CFG(57, 1, GPIO_CFG_INPUT, \
643 GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA)
644#define TSIF_0_SYNC GPIO_CFG(62, 1, GPIO_CFG_INPUT, \
645 GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA)
646#define TSIF_1_CLK GPIO_CFG(59, 1, GPIO_CFG_INPUT, \
647 GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA)
648#define TSIF_1_EN GPIO_CFG(60, 1, GPIO_CFG_INPUT, \
649 GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA)
650#define TSIF_1_DATA GPIO_CFG(61, 1, GPIO_CFG_INPUT, \
651 GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA)
652#define TSIF_1_SYNC GPIO_CFG(58, 1, GPIO_CFG_INPUT, \
653 GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA)
654
655static const struct msm_gpio tsif0_gpios[] = {
656 { .gpio_cfg = TSIF_0_CLK, .label = "tsif_clk", },
657 { .gpio_cfg = TSIF_0_EN, .label = "tsif_en", },
658 { .gpio_cfg = TSIF_0_DATA, .label = "tsif_data", },
659 { .gpio_cfg = TSIF_0_SYNC, .label = "tsif_sync", },
660};
661
662static const struct msm_gpio tsif1_gpios[] = {
663 { .gpio_cfg = TSIF_1_CLK, .label = "tsif_clk", },
664 { .gpio_cfg = TSIF_1_EN, .label = "tsif_en", },
665 { .gpio_cfg = TSIF_1_DATA, .label = "tsif_data", },
666 { .gpio_cfg = TSIF_1_SYNC, .label = "tsif_sync", },
667};
668
669struct msm_tsif_platform_data tsif1_8064_platform_data = {
670 .num_gpios = ARRAY_SIZE(tsif1_gpios),
671 .gpios = tsif1_gpios,
672 .tsif_pclk = "iface_clk",
673 .tsif_ref_clk = "ref_clk",
674};
675
676struct resource tsif1_8064_resources[] = {
677 [0] = {
678 .flags = IORESOURCE_IRQ,
679 .start = TSIF2_IRQ,
680 .end = TSIF2_IRQ,
681 },
682 [1] = {
683 .flags = IORESOURCE_MEM,
684 .start = MSM_TSIF1_PHYS,
685 .end = MSM_TSIF1_PHYS + MSM_TSIF_SIZE - 1,
686 },
687 [2] = {
688 .flags = IORESOURCE_DMA,
689 .start = DMOV8064_TSIF_CHAN,
690 .end = DMOV8064_TSIF_CRCI,
691 },
692};
693
694struct msm_tsif_platform_data tsif0_8064_platform_data = {
695 .num_gpios = ARRAY_SIZE(tsif0_gpios),
696 .gpios = tsif0_gpios,
697 .tsif_pclk = "iface_clk",
698 .tsif_ref_clk = "ref_clk",
699};
700
701struct resource tsif0_8064_resources[] = {
702 [0] = {
703 .flags = IORESOURCE_IRQ,
704 .start = TSIF1_IRQ,
705 .end = TSIF1_IRQ,
706 },
707 [1] = {
708 .flags = IORESOURCE_MEM,
709 .start = MSM_TSIF0_PHYS,
710 .end = MSM_TSIF0_PHYS + MSM_TSIF_SIZE - 1,
711 },
712 [2] = {
713 .flags = IORESOURCE_DMA,
714 .start = DMOV_TSIF_CHAN,
715 .end = DMOV_TSIF_CRCI,
716 },
717};
718
719struct platform_device msm_8064_device_tsif[2] = {
720 {
721 .name = "msm_tsif",
722 .id = 0,
723 .num_resources = ARRAY_SIZE(tsif0_8064_resources),
724 .resource = tsif0_8064_resources,
725 .dev = {
726 .platform_data = &tsif0_8064_platform_data
727 },
728 },
729 {
730 .name = "msm_tsif",
731 .id = 1,
732 .num_resources = ARRAY_SIZE(tsif1_8064_resources),
733 .resource = tsif1_8064_resources,
734 .dev = {
735 .platform_data = &tsif1_8064_platform_data
736 },
737 }
738};
739
Joel Nider50b50fa2012-08-05 14:17:29 +0300740#define MSM_TSPP_PHYS (0x18202000)
741#define MSM_TSPP_SIZE (0x1000)
742#define MSM_TSPP_BAM_PHYS (0x18204000)
743#define MSM_TSPP_BAM_SIZE (0x2000)
744
745static const struct msm_gpio tspp_gpios[] = {
746 { .gpio_cfg = TSIF_0_CLK, .label = "tsif_clk", },
747 { .gpio_cfg = TSIF_0_EN, .label = "tsif_en", },
748 { .gpio_cfg = TSIF_0_DATA, .label = "tsif_data", },
749 { .gpio_cfg = TSIF_0_SYNC, .label = "tsif_sync", },
750 { .gpio_cfg = TSIF_1_CLK, .label = "tsif_clk", },
751 { .gpio_cfg = TSIF_1_EN, .label = "tsif_en", },
752 { .gpio_cfg = TSIF_1_DATA, .label = "tsif_data", },
753 { .gpio_cfg = TSIF_1_SYNC, .label = "tsif_sync", },
754};
755
756static struct resource tspp_resources[] = {
757 [0] = {
Liron Kuch8fa85b02013-01-01 18:29:47 +0200758 .name = "TSIF_TSPP_IRQ",
Joel Nider50b50fa2012-08-05 14:17:29 +0300759 .flags = IORESOURCE_IRQ,
760 .start = TSIF_TSPP_IRQ,
Liron Kuch8fa85b02013-01-01 18:29:47 +0200761 .end = TSIF_TSPP_IRQ,
Joel Nider50b50fa2012-08-05 14:17:29 +0300762 },
763 [1] = {
Liron Kuch8fa85b02013-01-01 18:29:47 +0200764 .name = "TSIF0_IRQ",
765 .flags = IORESOURCE_IRQ,
766 .start = TSIF1_IRQ,
767 .end = TSIF1_IRQ,
768 },
769 [2] = {
770 .name = "TSIF1_IRQ",
771 .flags = IORESOURCE_IRQ,
772 .start = TSIF2_IRQ,
773 .end = TSIF2_IRQ,
774 },
775 [3] = {
776 .name = "TSIF_BAM_IRQ",
777 .flags = IORESOURCE_IRQ,
778 .start = TSIF_BAM_IRQ,
779 .end = TSIF_BAM_IRQ,
780 },
781 [4] = {
782 .name = "MSM_TSIF0_PHYS",
Joel Nider50b50fa2012-08-05 14:17:29 +0300783 .flags = IORESOURCE_MEM,
784 .start = MSM_TSIF0_PHYS,
785 .end = MSM_TSIF0_PHYS + MSM_TSIF_SIZE - 1,
786 },
Liron Kuch8fa85b02013-01-01 18:29:47 +0200787 [5] = {
788 .name = "MSM_TSIF1_PHYS",
Joel Nider50b50fa2012-08-05 14:17:29 +0300789 .flags = IORESOURCE_MEM,
790 .start = MSM_TSIF1_PHYS,
791 .end = MSM_TSIF1_PHYS + MSM_TSIF_SIZE - 1,
792 },
Liron Kuch8fa85b02013-01-01 18:29:47 +0200793 [6] = {
794 .name = "MSM_TSPP_PHYS",
Joel Nider50b50fa2012-08-05 14:17:29 +0300795 .flags = IORESOURCE_MEM,
796 .start = MSM_TSPP_PHYS,
797 .end = MSM_TSPP_PHYS + MSM_TSPP_SIZE - 1,
798 },
Liron Kuch8fa85b02013-01-01 18:29:47 +0200799 [7] = {
800 .name = "MSM_TSPP_BAM_PHYS",
Joel Nider50b50fa2012-08-05 14:17:29 +0300801 .flags = IORESOURCE_MEM,
802 .start = MSM_TSPP_BAM_PHYS,
803 .end = MSM_TSPP_BAM_PHYS + MSM_TSPP_BAM_SIZE - 1,
804 },
805};
806
807static struct msm_tspp_platform_data tspp_platform_data = {
808 .num_gpios = ARRAY_SIZE(tspp_gpios),
809 .gpios = tspp_gpios,
810 .tsif_pclk = "iface_clk",
811 .tsif_ref_clk = "ref_clk",
812};
813
814struct platform_device msm_8064_device_tspp = {
815 .name = "msm_tspp",
816 .id = 0,
817 .num_resources = ARRAY_SIZE(tspp_resources),
818 .resource = tspp_resources,
819 .dev = {
820 .platform_data = &tspp_platform_data
821 },
822};
823
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800824/*
825 * Machine specific data for AUX PCM Interface
826 * which the driver will be unware of.
827 */
Kiran Kandi5f4ab692012-02-23 11:23:56 -0800828struct msm_dai_auxpcm_pdata apq_auxpcm_pdata = {
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800829 .clk = "pcm_clk",
Kuirong Wang547a9982012-05-04 18:29:11 -0700830 .mode_8k = {
831 .mode = AFE_PCM_CFG_MODE_PCM,
832 .sync = AFE_PCM_CFG_SYNC_INT,
833 .frame = AFE_PCM_CFG_FRM_256BPF,
834 .quant = AFE_PCM_CFG_QUANT_LINEAR_NOPAD,
835 .slot = 0,
836 .data = AFE_PCM_CFG_CDATAOE_MASTER,
837 .pcm_clk_rate = 2048000,
838 },
839 .mode_16k = {
840 .mode = AFE_PCM_CFG_MODE_PCM,
841 .sync = AFE_PCM_CFG_SYNC_INT,
842 .frame = AFE_PCM_CFG_FRM_256BPF,
843 .quant = AFE_PCM_CFG_QUANT_LINEAR_NOPAD,
844 .slot = 0,
845 .data = AFE_PCM_CFG_CDATAOE_MASTER,
846 .pcm_clk_rate = 4096000,
847 }
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800848};
849
850struct platform_device apq_cpudai_auxpcm_rx = {
851 .name = "msm-dai-q6",
852 .id = 2,
853 .dev = {
Kiran Kandi5f4ab692012-02-23 11:23:56 -0800854 .platform_data = &apq_auxpcm_pdata,
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800855 },
856};
857
858struct platform_device apq_cpudai_auxpcm_tx = {
859 .name = "msm-dai-q6",
860 .id = 3,
Kiran Kandi5f4ab692012-02-23 11:23:56 -0800861 .dev = {
862 .platform_data = &apq_auxpcm_pdata,
863 },
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800864};
865
Patrick Lai04baee942012-05-01 14:38:47 -0700866struct msm_mi2s_pdata mpq_mi2s_tx_data = {
867 .rx_sd_lines = 0,
868 .tx_sd_lines = MSM_MI2S_SD0 | MSM_MI2S_SD1 | MSM_MI2S_SD2 |
869 MSM_MI2S_SD3,
Kuirong Wangf23f8c52012-03-31 12:34:51 -0700870};
871
872struct platform_device mpq_cpudai_mi2s_tx = {
Patrick Lai04baee942012-05-01 14:38:47 -0700873 .name = "msm-dai-q6-mi2s",
874 .id = -1, /*MI2S_TX */
Kuirong Wangf23f8c52012-03-31 12:34:51 -0700875 .dev = {
876 .platform_data = &mpq_mi2s_tx_data,
877 },
878};
879
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800880struct platform_device apq_cpu_fe = {
881 .name = "msm-dai-fe",
882 .id = -1,
883};
884
885struct platform_device apq_stub_codec = {
886 .name = "msm-stub-codec",
887 .id = 1,
888};
889
890struct platform_device apq_voice = {
891 .name = "msm-pcm-voice",
892 .id = -1,
893};
894
895struct platform_device apq_voip = {
896 .name = "msm-voip-dsp",
897 .id = -1,
898};
899
900struct platform_device apq_lpa_pcm = {
901 .name = "msm-pcm-lpa",
902 .id = -1,
903};
904
Krishnankutty Kolathappilly4374e332012-03-18 22:27:30 -0700905struct platform_device apq_compr_dsp = {
906 .name = "msm-compr-dsp",
907 .id = -1,
908};
909
910struct platform_device apq_multi_ch_pcm = {
911 .name = "msm-multi-ch-pcm-dsp",
912 .id = -1,
913};
914
Jayasena Sangaraboina99bf09c2012-07-17 12:03:08 -0700915struct platform_device apq_lowlatency_pcm = {
916 .name = "msm-lowlatency-pcm-dsp",
917 .id = -1,
918};
919
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800920struct platform_device apq_pcm_hostless = {
921 .name = "msm-pcm-hostless",
922 .id = -1,
923};
924
925struct platform_device apq_cpudai_afe_01_rx = {
926 .name = "msm-dai-q6",
927 .id = 0xE0,
928};
929
930struct platform_device apq_cpudai_afe_01_tx = {
931 .name = "msm-dai-q6",
932 .id = 0xF0,
933};
934
935struct platform_device apq_cpudai_afe_02_rx = {
936 .name = "msm-dai-q6",
937 .id = 0xF1,
938};
939
940struct platform_device apq_cpudai_afe_02_tx = {
941 .name = "msm-dai-q6",
942 .id = 0xE1,
943};
944
945struct platform_device apq_pcm_afe = {
946 .name = "msm-pcm-afe",
947 .id = -1,
948};
949
Neema Shetty8427c262012-02-16 11:23:43 -0800950struct platform_device apq_cpudai_stub = {
951 .name = "msm-dai-stub",
952 .id = -1,
953};
954
Neema Shetty3c9d2862012-03-11 01:25:32 -0800955struct platform_device apq_cpudai_slimbus_1_rx = {
956 .name = "msm-dai-q6",
957 .id = 0x4002,
958};
959
960struct platform_device apq_cpudai_slimbus_1_tx = {
961 .name = "msm-dai-q6",
962 .id = 0x4003,
963};
964
Kiran Kandi97fe19d2012-05-20 22:34:04 -0700965struct platform_device apq_cpudai_slimbus_2_rx = {
966 .name = "msm-dai-q6",
967 .id = 0x4004,
968};
969
Kiran Kandi1e6371d2012-03-29 11:48:57 -0700970struct platform_device apq_cpudai_slimbus_2_tx = {
971 .name = "msm-dai-q6",
972 .id = 0x4005,
973};
974
Neema Shettyc9d86c32012-05-09 12:01:39 -0700975struct platform_device apq_cpudai_slimbus_3_rx = {
976 .name = "msm-dai-q6",
977 .id = 0x4006,
978};
979
ehgrace.kim9b771372012-08-13 15:08:56 -0700980struct platform_device apq_cpudai_slimbus_3_tx = {
981 .name = "msm-dai-q6",
982 .id = 0x4007,
983};
984
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700985static struct resource resources_ssbi_pmic1[] = {
986 {
987 .start = MSM_PMIC1_SSBI_CMD_PHYS,
988 .end = MSM_PMIC1_SSBI_CMD_PHYS + MSM_PMIC_SSBI_SIZE - 1,
989 .flags = IORESOURCE_MEM,
990 },
991};
992
Sagar Dharia8bdcdaf2011-09-16 16:01:15 -0600993#define LPASS_SLIMBUS_PHYS 0x28080000
994#define LPASS_SLIMBUS_BAM_PHYS 0x28084000
Swaminathan Sathappan2316e082012-02-03 14:07:17 -0800995#define LPASS_SLIMBUS_SLEW (MSM8960_TLMM_PHYS + 0x207C)
Sagar Dharia8bdcdaf2011-09-16 16:01:15 -0600996/* Board info for the slimbus slave device */
997static struct resource slimbus_res[] = {
998 {
999 .start = LPASS_SLIMBUS_PHYS,
1000 .end = LPASS_SLIMBUS_PHYS + 8191,
1001 .flags = IORESOURCE_MEM,
1002 .name = "slimbus_physical",
1003 },
1004 {
1005 .start = LPASS_SLIMBUS_BAM_PHYS,
1006 .end = LPASS_SLIMBUS_BAM_PHYS + 8191,
1007 .flags = IORESOURCE_MEM,
1008 .name = "slimbus_bam_physical",
1009 },
1010 {
Swaminathan Sathappan2316e082012-02-03 14:07:17 -08001011 .start = LPASS_SLIMBUS_SLEW,
1012 .end = LPASS_SLIMBUS_SLEW + 4 - 1,
1013 .flags = IORESOURCE_MEM,
1014 .name = "slimbus_slew_reg",
1015 },
1016 {
Sagar Dharia8bdcdaf2011-09-16 16:01:15 -06001017 .start = SLIMBUS0_CORE_EE1_IRQ,
1018 .end = SLIMBUS0_CORE_EE1_IRQ,
1019 .flags = IORESOURCE_IRQ,
1020 .name = "slimbus_irq",
1021 },
1022 {
1023 .start = SLIMBUS0_BAM_EE1_IRQ,
1024 .end = SLIMBUS0_BAM_EE1_IRQ,
1025 .flags = IORESOURCE_IRQ,
1026 .name = "slimbus_bam_irq",
1027 },
1028};
1029
1030struct platform_device apq8064_slim_ctrl = {
1031 .name = "msm_slim_ctrl",
1032 .id = 1,
1033 .num_resources = ARRAY_SIZE(slimbus_res),
1034 .resource = slimbus_res,
1035 .dev = {
1036 .coherent_dma_mask = 0xffffffffULL,
1037 },
1038};
1039
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001040struct platform_device apq8064_device_ssbi_pmic1 = {
1041 .name = "msm_ssbi",
1042 .id = 0,
1043 .resource = resources_ssbi_pmic1,
1044 .num_resources = ARRAY_SIZE(resources_ssbi_pmic1),
1045};
1046
1047static struct resource resources_ssbi_pmic2[] = {
1048 {
1049 .start = MSM_PMIC2_SSBI_CMD_PHYS,
1050 .end = MSM_PMIC2_SSBI_CMD_PHYS + MSM_PMIC_SSBI_SIZE - 1,
1051 .flags = IORESOURCE_MEM,
1052 },
1053};
1054
1055struct platform_device apq8064_device_ssbi_pmic2 = {
1056 .name = "msm_ssbi",
1057 .id = 1,
1058 .resource = resources_ssbi_pmic2,
1059 .num_resources = ARRAY_SIZE(resources_ssbi_pmic2),
1060};
1061
1062static struct resource resources_otg[] = {
1063 {
Hemant Kumard86c4882012-01-24 19:39:37 -08001064 .start = MSM_HSUSB1_PHYS,
1065 .end = MSM_HSUSB1_PHYS + MSM_HSUSB1_SIZE - 1,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001066 .flags = IORESOURCE_MEM,
1067 },
1068 {
1069 .start = USB1_HS_IRQ,
1070 .end = USB1_HS_IRQ,
1071 .flags = IORESOURCE_IRQ,
1072 },
1073};
1074
Stepan Moskovchenko14aa6492011-08-08 15:15:01 -07001075struct platform_device apq8064_device_otg = {
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001076 .name = "msm_otg",
1077 .id = -1,
1078 .num_resources = ARRAY_SIZE(resources_otg),
1079 .resource = resources_otg,
1080 .dev = {
1081 .coherent_dma_mask = 0xffffffff,
1082 },
1083};
1084
1085static struct resource resources_hsusb[] = {
1086 {
Hemant Kumard86c4882012-01-24 19:39:37 -08001087 .start = MSM_HSUSB1_PHYS,
1088 .end = MSM_HSUSB1_PHYS + MSM_HSUSB1_SIZE - 1,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001089 .flags = IORESOURCE_MEM,
1090 },
1091 {
1092 .start = USB1_HS_IRQ,
1093 .end = USB1_HS_IRQ,
1094 .flags = IORESOURCE_IRQ,
1095 },
1096};
1097
Stepan Moskovchenko14aa6492011-08-08 15:15:01 -07001098struct platform_device apq8064_device_gadget_peripheral = {
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001099 .name = "msm_hsusb",
1100 .id = -1,
1101 .num_resources = ARRAY_SIZE(resources_hsusb),
1102 .resource = resources_hsusb,
1103 .dev = {
1104 .coherent_dma_mask = 0xffffffff,
1105 },
1106};
1107
Hemant Kumard86c4882012-01-24 19:39:37 -08001108static struct resource resources_hsusb_host[] = {
1109 {
1110 .start = MSM_HSUSB1_PHYS,
1111 .end = MSM_HSUSB1_PHYS + MSM_HSUSB1_SIZE - 1,
1112 .flags = IORESOURCE_MEM,
1113 },
1114 {
1115 .start = USB1_HS_IRQ,
1116 .end = USB1_HS_IRQ,
1117 .flags = IORESOURCE_IRQ,
1118 },
1119};
1120
Hemant Kumara945b472012-01-25 15:08:06 -08001121static struct resource resources_hsic_host[] = {
1122 {
1123 .start = 0x12510000,
1124 .end = 0x12510000 + SZ_4K - 1,
1125 .flags = IORESOURCE_MEM,
1126 },
1127 {
1128 .start = USB2_HSIC_IRQ,
1129 .end = USB2_HSIC_IRQ,
1130 .flags = IORESOURCE_IRQ,
1131 },
1132 {
1133 .start = MSM_GPIO_TO_INT(49),
1134 .end = MSM_GPIO_TO_INT(49),
1135 .name = "peripheral_status_irq",
1136 .flags = IORESOURCE_IRQ,
1137 },
Vamsi Krishna6921cbe2012-02-21 18:34:43 -08001138 {
Hemant Kumar6fd65032012-05-23 13:02:24 -07001139 .start = 47,
1140 .end = 47,
1141 .name = "wakeup",
1142 .flags = IORESOURCE_IO,
Vamsi Krishna6921cbe2012-02-21 18:34:43 -08001143 },
Hemant Kumara945b472012-01-25 15:08:06 -08001144};
1145
Hemant Kumard86c4882012-01-24 19:39:37 -08001146static u64 dma_mask = DMA_BIT_MASK(32);
1147struct platform_device apq8064_device_hsusb_host = {
1148 .name = "msm_hsusb_host",
1149 .id = -1,
1150 .num_resources = ARRAY_SIZE(resources_hsusb_host),
1151 .resource = resources_hsusb_host,
1152 .dev = {
1153 .dma_mask = &dma_mask,
1154 .coherent_dma_mask = 0xffffffff,
1155 },
1156};
1157
Hemant Kumara945b472012-01-25 15:08:06 -08001158struct platform_device apq8064_device_hsic_host = {
1159 .name = "msm_hsic_host",
1160 .id = -1,
1161 .num_resources = ARRAY_SIZE(resources_hsic_host),
1162 .resource = resources_hsic_host,
1163 .dev = {
1164 .dma_mask = &dma_mask,
1165 .coherent_dma_mask = DMA_BIT_MASK(32),
1166 },
1167};
1168
Manu Gautam91223e02011-11-08 15:27:22 +05301169static struct resource resources_ehci_host3[] = {
1170{
1171 .start = MSM_HSUSB3_PHYS,
1172 .end = MSM_HSUSB3_PHYS + MSM_HSUSB3_SIZE - 1,
1173 .flags = IORESOURCE_MEM,
1174 },
1175 {
1176 .start = USB3_HS_IRQ,
1177 .end = USB3_HS_IRQ,
1178 .flags = IORESOURCE_IRQ,
1179 },
1180};
1181
1182struct platform_device apq8064_device_ehci_host3 = {
1183 .name = "msm_ehci_host",
1184 .id = 0,
1185 .num_resources = ARRAY_SIZE(resources_ehci_host3),
1186 .resource = resources_ehci_host3,
1187 .dev = {
1188 .dma_mask = &dma_mask,
1189 .coherent_dma_mask = 0xffffffff,
1190 },
1191};
1192
Hemant Kumar1d66e1c2012-02-13 15:24:59 -08001193static struct resource resources_ehci_host4[] = {
1194{
1195 .start = MSM_HSUSB4_PHYS,
1196 .end = MSM_HSUSB4_PHYS + MSM_HSUSB4_SIZE - 1,
1197 .flags = IORESOURCE_MEM,
1198 },
1199 {
1200 .start = USB4_HS_IRQ,
1201 .end = USB4_HS_IRQ,
1202 .flags = IORESOURCE_IRQ,
1203 },
1204};
1205
1206struct platform_device apq8064_device_ehci_host4 = {
1207 .name = "msm_ehci_host",
1208 .id = 1,
1209 .num_resources = ARRAY_SIZE(resources_ehci_host4),
1210 .resource = resources_ehci_host4,
1211 .dev = {
1212 .dma_mask = &dma_mask,
1213 .coherent_dma_mask = 0xffffffff,
1214 },
1215};
1216
Matt Wagantallf5cc3892012-06-07 19:47:02 -07001217struct platform_device apq8064_device_acpuclk = {
1218 .name = "acpuclk-8064",
1219 .id = -1,
1220};
1221
Ramesh Masavarapuf31ff242012-05-10 18:55:21 -07001222#define SHARED_IMEM_TZ_BASE 0x2a03f720
1223static struct resource tzlog_resources[] = {
1224 {
1225 .start = SHARED_IMEM_TZ_BASE,
1226 .end = SHARED_IMEM_TZ_BASE + SZ_4K - 1,
1227 .flags = IORESOURCE_MEM,
1228 },
1229};
1230
1231struct platform_device apq_device_tz_log = {
1232 .name = "tz_log",
1233 .id = 0,
1234 .num_resources = ARRAY_SIZE(tzlog_resources),
1235 .resource = tzlog_resources,
1236};
1237
Mohan Kumar Gubbihalli Lachma Naik7f72edd2012-02-06 17:26:47 -08001238/* MSM Video core device */
1239#ifdef CONFIG_MSM_BUS_SCALING
1240static struct msm_bus_vectors vidc_init_vectors[] = {
1241 {
1242 .src = MSM_BUS_MASTER_VIDEO_ENC,
1243 .dst = MSM_BUS_SLAVE_EBI_CH0,
1244 .ab = 0,
1245 .ib = 0,
1246 },
1247 {
1248 .src = MSM_BUS_MASTER_VIDEO_DEC,
1249 .dst = MSM_BUS_SLAVE_EBI_CH0,
1250 .ab = 0,
1251 .ib = 0,
1252 },
1253 {
1254 .src = MSM_BUS_MASTER_AMPSS_M0,
1255 .dst = MSM_BUS_SLAVE_EBI_CH0,
1256 .ab = 0,
1257 .ib = 0,
1258 },
1259 {
1260 .src = MSM_BUS_MASTER_AMPSS_M0,
1261 .dst = MSM_BUS_SLAVE_EBI_CH0,
1262 .ab = 0,
1263 .ib = 0,
1264 },
1265};
1266static struct msm_bus_vectors vidc_venc_vga_vectors[] = {
1267 {
1268 .src = MSM_BUS_MASTER_VIDEO_ENC,
1269 .dst = MSM_BUS_SLAVE_EBI_CH0,
1270 .ab = 54525952,
1271 .ib = 436207616,
1272 },
1273 {
1274 .src = MSM_BUS_MASTER_VIDEO_DEC,
1275 .dst = MSM_BUS_SLAVE_EBI_CH0,
1276 .ab = 72351744,
1277 .ib = 289406976,
1278 },
1279 {
1280 .src = MSM_BUS_MASTER_AMPSS_M0,
1281 .dst = MSM_BUS_SLAVE_EBI_CH0,
1282 .ab = 500000,
1283 .ib = 1000000,
1284 },
1285 {
1286 .src = MSM_BUS_MASTER_AMPSS_M0,
1287 .dst = MSM_BUS_SLAVE_EBI_CH0,
1288 .ab = 500000,
1289 .ib = 1000000,
1290 },
1291};
1292static struct msm_bus_vectors vidc_vdec_vga_vectors[] = {
1293 {
1294 .src = MSM_BUS_MASTER_VIDEO_ENC,
1295 .dst = MSM_BUS_SLAVE_EBI_CH0,
1296 .ab = 40894464,
1297 .ib = 327155712,
1298 },
1299 {
1300 .src = MSM_BUS_MASTER_VIDEO_DEC,
1301 .dst = MSM_BUS_SLAVE_EBI_CH0,
1302 .ab = 48234496,
1303 .ib = 192937984,
1304 },
1305 {
1306 .src = MSM_BUS_MASTER_AMPSS_M0,
1307 .dst = MSM_BUS_SLAVE_EBI_CH0,
1308 .ab = 500000,
1309 .ib = 2000000,
1310 },
1311 {
1312 .src = MSM_BUS_MASTER_AMPSS_M0,
1313 .dst = MSM_BUS_SLAVE_EBI_CH0,
1314 .ab = 500000,
1315 .ib = 2000000,
1316 },
1317};
1318static struct msm_bus_vectors vidc_venc_720p_vectors[] = {
1319 {
1320 .src = MSM_BUS_MASTER_VIDEO_ENC,
1321 .dst = MSM_BUS_SLAVE_EBI_CH0,
1322 .ab = 163577856,
1323 .ib = 1308622848,
1324 },
1325 {
1326 .src = MSM_BUS_MASTER_VIDEO_DEC,
1327 .dst = MSM_BUS_SLAVE_EBI_CH0,
1328 .ab = 219152384,
1329 .ib = 876609536,
1330 },
1331 {
1332 .src = MSM_BUS_MASTER_AMPSS_M0,
1333 .dst = MSM_BUS_SLAVE_EBI_CH0,
1334 .ab = 1750000,
1335 .ib = 3500000,
1336 },
1337 {
1338 .src = MSM_BUS_MASTER_AMPSS_M0,
1339 .dst = MSM_BUS_SLAVE_EBI_CH0,
1340 .ab = 1750000,
1341 .ib = 3500000,
1342 },
1343};
1344static struct msm_bus_vectors vidc_vdec_720p_vectors[] = {
1345 {
1346 .src = MSM_BUS_MASTER_VIDEO_ENC,
1347 .dst = MSM_BUS_SLAVE_EBI_CH0,
1348 .ab = 121634816,
1349 .ib = 973078528,
1350 },
1351 {
1352 .src = MSM_BUS_MASTER_VIDEO_DEC,
1353 .dst = MSM_BUS_SLAVE_EBI_CH0,
1354 .ab = 155189248,
1355 .ib = 620756992,
1356 },
1357 {
1358 .src = MSM_BUS_MASTER_AMPSS_M0,
1359 .dst = MSM_BUS_SLAVE_EBI_CH0,
1360 .ab = 1750000,
1361 .ib = 7000000,
1362 },
1363 {
1364 .src = MSM_BUS_MASTER_AMPSS_M0,
1365 .dst = MSM_BUS_SLAVE_EBI_CH0,
1366 .ab = 1750000,
1367 .ib = 7000000,
1368 },
1369};
1370static struct msm_bus_vectors vidc_venc_1080p_vectors[] = {
1371 {
1372 .src = MSM_BUS_MASTER_VIDEO_ENC,
1373 .dst = MSM_BUS_SLAVE_EBI_CH0,
1374 .ab = 372244480,
1375 .ib = 2560000000U,
1376 },
1377 {
1378 .src = MSM_BUS_MASTER_VIDEO_DEC,
1379 .dst = MSM_BUS_SLAVE_EBI_CH0,
1380 .ab = 501219328,
1381 .ib = 2560000000U,
1382 },
1383 {
1384 .src = MSM_BUS_MASTER_AMPSS_M0,
1385 .dst = MSM_BUS_SLAVE_EBI_CH0,
1386 .ab = 2500000,
1387 .ib = 5000000,
1388 },
1389 {
1390 .src = MSM_BUS_MASTER_AMPSS_M0,
1391 .dst = MSM_BUS_SLAVE_EBI_CH0,
1392 .ab = 2500000,
1393 .ib = 5000000,
1394 },
1395};
1396static struct msm_bus_vectors vidc_vdec_1080p_vectors[] = {
1397 {
1398 .src = MSM_BUS_MASTER_VIDEO_ENC,
1399 .dst = MSM_BUS_SLAVE_EBI_CH0,
1400 .ab = 222298112,
1401 .ib = 2560000000U,
1402 },
1403 {
1404 .src = MSM_BUS_MASTER_VIDEO_DEC,
1405 .dst = MSM_BUS_SLAVE_EBI_CH0,
1406 .ab = 330301440,
1407 .ib = 2560000000U,
1408 },
1409 {
1410 .src = MSM_BUS_MASTER_AMPSS_M0,
1411 .dst = MSM_BUS_SLAVE_EBI_CH0,
1412 .ab = 2500000,
1413 .ib = 700000000,
1414 },
1415 {
1416 .src = MSM_BUS_MASTER_AMPSS_M0,
1417 .dst = MSM_BUS_SLAVE_EBI_CH0,
1418 .ab = 2500000,
1419 .ib = 10000000,
1420 },
1421};
1422
Arun Menon152c3c72012-06-20 11:50:08 -07001423static struct msm_bus_vectors vidc_venc_1080p_turbo_vectors[] = {
1424 {
1425 .src = MSM_BUS_MASTER_VIDEO_ENC,
1426 .dst = MSM_BUS_SLAVE_EBI_CH0,
Shobhit Pandey1a923ca2013-04-12 12:49:28 +05301427 .ab = 372244480,
Arun Menon152c3c72012-06-20 11:50:08 -07001428 .ib = 3522000000U,
1429 },
1430 {
1431 .src = MSM_BUS_MASTER_VIDEO_DEC,
1432 .dst = MSM_BUS_SLAVE_EBI_CH0,
Shobhit Pandey1a923ca2013-04-12 12:49:28 +05301433 .ab = 501219328,
Arun Menon152c3c72012-06-20 11:50:08 -07001434 .ib = 3522000000U,
1435 },
1436 {
1437 .src = MSM_BUS_MASTER_AMPSS_M0,
1438 .dst = MSM_BUS_SLAVE_EBI_CH0,
1439 .ab = 2500000,
Shobhit Pandey1a923ca2013-04-12 12:49:28 +05301440 .ib = 5000000,
Arun Menon152c3c72012-06-20 11:50:08 -07001441 },
1442 {
1443 .src = MSM_BUS_MASTER_AMPSS_M0,
1444 .dst = MSM_BUS_SLAVE_EBI_CH0,
1445 .ab = 2500000,
Shobhit Pandey1a923ca2013-04-12 12:49:28 +05301446 .ib = 5000000,
Arun Menon152c3c72012-06-20 11:50:08 -07001447 },
1448};
1449static struct msm_bus_vectors vidc_vdec_1080p_turbo_vectors[] = {
1450 {
1451 .src = MSM_BUS_MASTER_VIDEO_ENC,
1452 .dst = MSM_BUS_SLAVE_EBI_CH0,
1453 .ab = 222298112,
1454 .ib = 3522000000U,
1455 },
1456 {
1457 .src = MSM_BUS_MASTER_VIDEO_DEC,
1458 .dst = MSM_BUS_SLAVE_EBI_CH0,
1459 .ab = 330301440,
1460 .ib = 3522000000U,
1461 },
1462 {
1463 .src = MSM_BUS_MASTER_AMPSS_M0,
1464 .dst = MSM_BUS_SLAVE_EBI_CH0,
1465 .ab = 2500000,
1466 .ib = 700000000,
1467 },
1468 {
1469 .src = MSM_BUS_MASTER_AMPSS_M0,
1470 .dst = MSM_BUS_SLAVE_EBI_CH0,
1471 .ab = 2500000,
1472 .ib = 10000000,
1473 },
1474};
1475
Mohan Kumar Gubbihalli Lachma Naik7f72edd2012-02-06 17:26:47 -08001476static struct msm_bus_paths vidc_bus_client_config[] = {
1477 {
1478 ARRAY_SIZE(vidc_init_vectors),
1479 vidc_init_vectors,
1480 },
1481 {
1482 ARRAY_SIZE(vidc_venc_vga_vectors),
1483 vidc_venc_vga_vectors,
1484 },
1485 {
1486 ARRAY_SIZE(vidc_vdec_vga_vectors),
1487 vidc_vdec_vga_vectors,
1488 },
1489 {
1490 ARRAY_SIZE(vidc_venc_720p_vectors),
1491 vidc_venc_720p_vectors,
1492 },
1493 {
1494 ARRAY_SIZE(vidc_vdec_720p_vectors),
1495 vidc_vdec_720p_vectors,
1496 },
1497 {
1498 ARRAY_SIZE(vidc_venc_1080p_vectors),
1499 vidc_venc_1080p_vectors,
1500 },
1501 {
1502 ARRAY_SIZE(vidc_vdec_1080p_vectors),
1503 vidc_vdec_1080p_vectors,
1504 },
Arun Menon152c3c72012-06-20 11:50:08 -07001505 {
1506 ARRAY_SIZE(vidc_venc_1080p_turbo_vectors),
1507 vidc_venc_1080p_turbo_vectors,
1508 },
1509 {
1510 ARRAY_SIZE(vidc_vdec_1080p_turbo_vectors),
1511 vidc_vdec_1080p_turbo_vectors,
1512 },
Mohan Kumar Gubbihalli Lachma Naik7f72edd2012-02-06 17:26:47 -08001513};
1514
1515static struct msm_bus_scale_pdata vidc_bus_client_data = {
1516 vidc_bus_client_config,
1517 ARRAY_SIZE(vidc_bus_client_config),
1518 .name = "vidc",
1519};
1520#endif
1521
1522
1523#define APQ8064_VIDC_BASE_PHYS 0x04400000
1524#define APQ8064_VIDC_BASE_SIZE 0x00100000
1525
1526static struct resource apq8064_device_vidc_resources[] = {
1527 {
1528 .start = APQ8064_VIDC_BASE_PHYS,
1529 .end = APQ8064_VIDC_BASE_PHYS + APQ8064_VIDC_BASE_SIZE - 1,
1530 .flags = IORESOURCE_MEM,
1531 },
1532 {
1533 .start = VCODEC_IRQ,
1534 .end = VCODEC_IRQ,
1535 .flags = IORESOURCE_IRQ,
1536 },
1537};
1538
1539struct msm_vidc_platform_data apq8064_vidc_platform_data = {
1540#ifdef CONFIG_MSM_BUS_SCALING
1541 .vidc_bus_client_pdata = &vidc_bus_client_data,
1542#endif
1543#ifdef CONFIG_MSM_MULTIMEDIA_USE_ION
1544 .memtype = ION_CP_MM_HEAP_ID,
1545 .enable_ion = 1,
Deepak kotureda295a2012-05-10 19:49:46 -07001546 .cp_enabled = 1,
Mohan Kumar Gubbihalli Lachma Naik7f72edd2012-02-06 17:26:47 -08001547#else
1548 .memtype = MEMTYPE_EBI1,
1549 .enable_ion = 0,
1550#endif
1551 .disable_dmx = 0,
1552 .disable_fullhd = 0,
Mohan Kumar Gubbihalli Lachma Naiked9dc912012-03-01 19:11:14 -08001553 .cont_mode_dpb_count = 18,
Riaz Rahaman84f8c682012-05-30 13:32:10 +05301554 .fw_addr = 0x9fe00000,
Deepak Verma587c98e2013-02-01 22:47:49 +05301555 .enable_sec_metadata = 1,
Mohan Kumar Gubbihalli Lachma Naik7f72edd2012-02-06 17:26:47 -08001556};
1557
1558struct platform_device apq8064_msm_device_vidc = {
1559 .name = "msm_vidc",
1560 .id = 0,
1561 .num_resources = ARRAY_SIZE(apq8064_device_vidc_resources),
1562 .resource = apq8064_device_vidc_resources,
1563 .dev = {
1564 .platform_data = &apq8064_vidc_platform_data,
1565 },
1566};
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001567#define MSM_SDC1_BASE 0x12400000
1568#define MSM_SDC1_DML_BASE (MSM_SDC1_BASE + 0x800)
1569#define MSM_SDC1_BAM_BASE (MSM_SDC1_BASE + 0x2000)
1570#define MSM_SDC2_BASE 0x12140000
1571#define MSM_SDC2_DML_BASE (MSM_SDC2_BASE + 0x800)
1572#define MSM_SDC2_BAM_BASE (MSM_SDC2_BASE + 0x2000)
1573#define MSM_SDC3_BASE 0x12180000
1574#define MSM_SDC3_DML_BASE (MSM_SDC3_BASE + 0x800)
1575#define MSM_SDC3_BAM_BASE (MSM_SDC3_BASE + 0x2000)
1576#define MSM_SDC4_BASE 0x121C0000
1577#define MSM_SDC4_DML_BASE (MSM_SDC4_BASE + 0x800)
1578#define MSM_SDC4_BAM_BASE (MSM_SDC4_BASE + 0x2000)
1579
1580static struct resource resources_sdc1[] = {
1581 {
1582 .name = "core_mem",
1583 .flags = IORESOURCE_MEM,
1584 .start = MSM_SDC1_BASE,
1585 .end = MSM_SDC1_DML_BASE - 1,
1586 },
1587 {
1588 .name = "core_irq",
1589 .flags = IORESOURCE_IRQ,
1590 .start = SDC1_IRQ_0,
1591 .end = SDC1_IRQ_0
1592 },
1593#ifdef CONFIG_MMC_MSM_SPS_SUPPORT
1594 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301595 .name = "dml_mem",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001596 .start = MSM_SDC1_DML_BASE,
1597 .end = MSM_SDC1_BAM_BASE - 1,
1598 .flags = IORESOURCE_MEM,
1599 },
1600 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301601 .name = "bam_mem",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001602 .start = MSM_SDC1_BAM_BASE,
1603 .end = MSM_SDC1_BAM_BASE + (2 * SZ_4K) - 1,
1604 .flags = IORESOURCE_MEM,
1605 },
1606 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301607 .name = "bam_irq",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001608 .start = SDC1_BAM_IRQ,
1609 .end = SDC1_BAM_IRQ,
1610 .flags = IORESOURCE_IRQ,
1611 },
1612#endif
1613};
1614
1615static struct resource resources_sdc2[] = {
1616 {
1617 .name = "core_mem",
1618 .flags = IORESOURCE_MEM,
1619 .start = MSM_SDC2_BASE,
1620 .end = MSM_SDC2_DML_BASE - 1,
1621 },
1622 {
1623 .name = "core_irq",
1624 .flags = IORESOURCE_IRQ,
1625 .start = SDC2_IRQ_0,
1626 .end = SDC2_IRQ_0
1627 },
1628#ifdef CONFIG_MMC_MSM_SPS_SUPPORT
1629 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301630 .name = "dml_mem",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001631 .start = MSM_SDC2_DML_BASE,
1632 .end = MSM_SDC2_BAM_BASE - 1,
1633 .flags = IORESOURCE_MEM,
1634 },
1635 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301636 .name = "bam_mem",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001637 .start = MSM_SDC2_BAM_BASE,
1638 .end = MSM_SDC2_BAM_BASE + (2 * SZ_4K) - 1,
1639 .flags = IORESOURCE_MEM,
1640 },
1641 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301642 .name = "bam_irq",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001643 .start = SDC2_BAM_IRQ,
1644 .end = SDC2_BAM_IRQ,
1645 .flags = IORESOURCE_IRQ,
1646 },
1647#endif
1648};
1649
1650static struct resource resources_sdc3[] = {
1651 {
1652 .name = "core_mem",
1653 .flags = IORESOURCE_MEM,
1654 .start = MSM_SDC3_BASE,
1655 .end = MSM_SDC3_DML_BASE - 1,
1656 },
1657 {
1658 .name = "core_irq",
1659 .flags = IORESOURCE_IRQ,
1660 .start = SDC3_IRQ_0,
1661 .end = SDC3_IRQ_0
1662 },
1663#ifdef CONFIG_MMC_MSM_SPS_SUPPORT
1664 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301665 .name = "dml_mem",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001666 .start = MSM_SDC3_DML_BASE,
1667 .end = MSM_SDC3_BAM_BASE - 1,
1668 .flags = IORESOURCE_MEM,
1669 },
1670 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301671 .name = "bam_mem",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001672 .start = MSM_SDC3_BAM_BASE,
1673 .end = MSM_SDC3_BAM_BASE + (2 * SZ_4K) - 1,
1674 .flags = IORESOURCE_MEM,
1675 },
1676 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301677 .name = "bam_irq",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001678 .start = SDC3_BAM_IRQ,
1679 .end = SDC3_BAM_IRQ,
1680 .flags = IORESOURCE_IRQ,
1681 },
1682#endif
1683};
1684
1685static struct resource resources_sdc4[] = {
1686 {
1687 .name = "core_mem",
1688 .flags = IORESOURCE_MEM,
1689 .start = MSM_SDC4_BASE,
1690 .end = MSM_SDC4_DML_BASE - 1,
1691 },
1692 {
1693 .name = "core_irq",
1694 .flags = IORESOURCE_IRQ,
1695 .start = SDC4_IRQ_0,
1696 .end = SDC4_IRQ_0
1697 },
1698#ifdef CONFIG_MMC_MSM_SPS_SUPPORT
1699 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301700 .name = "dml_mem",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001701 .start = MSM_SDC4_DML_BASE,
1702 .end = MSM_SDC4_BAM_BASE - 1,
1703 .flags = IORESOURCE_MEM,
1704 },
1705 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301706 .name = "bam_mem",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001707 .start = MSM_SDC4_BAM_BASE,
1708 .end = MSM_SDC4_BAM_BASE + (2 * SZ_4K) - 1,
1709 .flags = IORESOURCE_MEM,
1710 },
1711 {
Sujit Reddy Thumma1dfac2c2012-07-30 10:15:39 +05301712 .name = "bam_irq",
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001713 .start = SDC4_BAM_IRQ,
1714 .end = SDC4_BAM_IRQ,
1715 .flags = IORESOURCE_IRQ,
1716 },
1717#endif
1718};
1719
1720struct platform_device apq8064_device_sdc1 = {
1721 .name = "msm_sdcc",
1722 .id = 1,
1723 .num_resources = ARRAY_SIZE(resources_sdc1),
1724 .resource = resources_sdc1,
1725 .dev = {
1726 .coherent_dma_mask = 0xffffffff,
1727 },
1728};
1729
1730struct platform_device apq8064_device_sdc2 = {
1731 .name = "msm_sdcc",
1732 .id = 2,
1733 .num_resources = ARRAY_SIZE(resources_sdc2),
1734 .resource = resources_sdc2,
1735 .dev = {
1736 .coherent_dma_mask = 0xffffffff,
1737 },
1738};
1739
1740struct platform_device apq8064_device_sdc3 = {
1741 .name = "msm_sdcc",
1742 .id = 3,
1743 .num_resources = ARRAY_SIZE(resources_sdc3),
1744 .resource = resources_sdc3,
1745 .dev = {
1746 .coherent_dma_mask = 0xffffffff,
1747 },
1748};
1749
1750struct platform_device apq8064_device_sdc4 = {
1751 .name = "msm_sdcc",
1752 .id = 4,
1753 .num_resources = ARRAY_SIZE(resources_sdc4),
1754 .resource = resources_sdc4,
1755 .dev = {
1756 .coherent_dma_mask = 0xffffffff,
1757 },
1758};
1759
1760static struct platform_device *apq8064_sdcc_devices[] __initdata = {
1761 &apq8064_device_sdc1,
1762 &apq8064_device_sdc2,
1763 &apq8064_device_sdc3,
1764 &apq8064_device_sdc4,
1765};
1766
1767int __init apq8064_add_sdcc(unsigned int controller,
1768 struct mmc_platform_data *plat)
1769{
1770 struct platform_device *pdev;
1771
1772 if (!plat)
1773 return 0;
1774 if (controller < 1 || controller > 4)
1775 return -EINVAL;
1776
1777 pdev = apq8064_sdcc_devices[controller-1];
1778 pdev->dev.platform_data = plat;
1779 return platform_device_register(pdev);
1780}
1781
Yan He06913ce2011-08-26 16:33:46 -07001782static struct resource resources_sps[] = {
1783 {
1784 .name = "pipe_mem",
1785 .start = 0x12800000,
1786 .end = 0x12800000 + 0x4000 - 1,
1787 .flags = IORESOURCE_MEM,
1788 },
1789 {
1790 .name = "bamdma_dma",
1791 .start = 0x12240000,
1792 .end = 0x12240000 + 0x1000 - 1,
1793 .flags = IORESOURCE_MEM,
1794 },
1795 {
1796 .name = "bamdma_bam",
1797 .start = 0x12244000,
1798 .end = 0x12244000 + 0x4000 - 1,
1799 .flags = IORESOURCE_MEM,
1800 },
1801 {
1802 .name = "bamdma_irq",
1803 .start = SPS_BAM_DMA_IRQ,
1804 .end = SPS_BAM_DMA_IRQ,
1805 .flags = IORESOURCE_IRQ,
1806 },
1807};
1808
Gagan Mac8a7a5d32011-11-11 16:43:06 -07001809struct platform_device msm_bus_8064_sys_fabric = {
1810 .name = "msm_bus_fabric",
1811 .id = MSM_BUS_FAB_SYSTEM,
1812};
1813struct platform_device msm_bus_8064_apps_fabric = {
1814 .name = "msm_bus_fabric",
1815 .id = MSM_BUS_FAB_APPSS,
1816};
1817struct platform_device msm_bus_8064_mm_fabric = {
1818 .name = "msm_bus_fabric",
1819 .id = MSM_BUS_FAB_MMSS,
1820};
1821struct platform_device msm_bus_8064_sys_fpb = {
1822 .name = "msm_bus_fabric",
1823 .id = MSM_BUS_FAB_SYSTEM_FPB,
1824};
1825struct platform_device msm_bus_8064_cpss_fpb = {
1826 .name = "msm_bus_fabric",
1827 .id = MSM_BUS_FAB_CPSS_FPB,
1828};
1829
Yan He06913ce2011-08-26 16:33:46 -07001830static struct msm_sps_platform_data msm_sps_pdata = {
1831 .bamdma_restricted_pipes = 0x06,
1832};
1833
1834struct platform_device msm_device_sps_apq8064 = {
1835 .name = "msm_sps",
1836 .id = -1,
1837 .num_resources = ARRAY_SIZE(resources_sps),
1838 .resource = resources_sps,
1839 .dev.platform_data = &msm_sps_pdata,
1840};
1841
Eric Holmberg023d25c2012-03-01 12:27:55 -07001842static struct resource smd_resource[] = {
1843 {
1844 .name = "a9_m2a_0",
1845 .start = INT_A9_M2A_0,
1846 .flags = IORESOURCE_IRQ,
1847 },
1848 {
1849 .name = "a9_m2a_5",
1850 .start = INT_A9_M2A_5,
1851 .flags = IORESOURCE_IRQ,
1852 },
1853 {
1854 .name = "adsp_a11",
1855 .start = INT_ADSP_A11,
1856 .flags = IORESOURCE_IRQ,
1857 },
1858 {
1859 .name = "adsp_a11_smsm",
1860 .start = INT_ADSP_A11_SMSM,
1861 .flags = IORESOURCE_IRQ,
1862 },
1863 {
1864 .name = "dsps_a11",
1865 .start = INT_DSPS_A11,
1866 .flags = IORESOURCE_IRQ,
1867 },
1868 {
1869 .name = "dsps_a11_smsm",
1870 .start = INT_DSPS_A11_SMSM,
1871 .flags = IORESOURCE_IRQ,
1872 },
1873 {
1874 .name = "wcnss_a11",
1875 .start = INT_WCNSS_A11,
1876 .flags = IORESOURCE_IRQ,
1877 },
1878 {
1879 .name = "wcnss_a11_smsm",
1880 .start = INT_WCNSS_A11_SMSM,
1881 .flags = IORESOURCE_IRQ,
1882 },
1883};
1884
1885static struct smd_subsystem_config smd_config_list[] = {
1886 {
1887 .irq_config_id = SMD_MODEM,
1888 .subsys_name = "gss",
1889 .edge = SMD_APPS_MODEM,
1890
1891 .smd_int.irq_name = "a9_m2a_0",
1892 .smd_int.flags = IRQF_TRIGGER_RISING,
1893 .smd_int.irq_id = -1,
1894 .smd_int.device_name = "smd_dev",
1895 .smd_int.dev_id = 0,
1896 .smd_int.out_bit_pos = 1 << 3,
1897 .smd_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1898 .smd_int.out_offset = 0x8,
1899
1900 .smsm_int.irq_name = "a9_m2a_5",
1901 .smsm_int.flags = IRQF_TRIGGER_RISING,
1902 .smsm_int.irq_id = -1,
1903 .smsm_int.device_name = "smd_smsm",
1904 .smsm_int.dev_id = 0,
1905 .smsm_int.out_bit_pos = 1 << 4,
1906 .smsm_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1907 .smsm_int.out_offset = 0x8,
1908 },
1909 {
1910 .irq_config_id = SMD_Q6,
1911 .subsys_name = "q6",
1912 .edge = SMD_APPS_QDSP,
1913
1914 .smd_int.irq_name = "adsp_a11",
1915 .smd_int.flags = IRQF_TRIGGER_RISING,
1916 .smd_int.irq_id = -1,
1917 .smd_int.device_name = "smd_dev",
1918 .smd_int.dev_id = 0,
1919 .smd_int.out_bit_pos = 1 << 15,
1920 .smd_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1921 .smd_int.out_offset = 0x8,
1922
1923 .smsm_int.irq_name = "adsp_a11_smsm",
1924 .smsm_int.flags = IRQF_TRIGGER_RISING,
1925 .smsm_int.irq_id = -1,
1926 .smsm_int.device_name = "smd_smsm",
1927 .smsm_int.dev_id = 0,
1928 .smsm_int.out_bit_pos = 1 << 14,
1929 .smsm_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1930 .smsm_int.out_offset = 0x8,
1931 },
1932 {
1933 .irq_config_id = SMD_DSPS,
1934 .subsys_name = "dsps",
1935 .edge = SMD_APPS_DSPS,
1936
1937 .smd_int.irq_name = "dsps_a11",
1938 .smd_int.flags = IRQF_TRIGGER_RISING,
1939 .smd_int.irq_id = -1,
1940 .smd_int.device_name = "smd_dev",
1941 .smd_int.dev_id = 0,
1942 .smd_int.out_bit_pos = 1,
1943 .smd_int.out_base = (void __iomem *)MSM_SIC_NON_SECURE_BASE,
1944 .smd_int.out_offset = 0x4080,
1945
1946 .smsm_int.irq_name = "dsps_a11_smsm",
1947 .smsm_int.flags = IRQF_TRIGGER_RISING,
1948 .smsm_int.irq_id = -1,
1949 .smsm_int.device_name = "smd_smsm",
1950 .smsm_int.dev_id = 0,
1951 .smsm_int.out_bit_pos = 1,
1952 .smsm_int.out_base = (void __iomem *)MSM_SIC_NON_SECURE_BASE,
1953 .smsm_int.out_offset = 0x4094,
1954 },
1955 {
1956 .irq_config_id = SMD_WCNSS,
1957 .subsys_name = "wcnss",
1958 .edge = SMD_APPS_WCNSS,
1959
1960 .smd_int.irq_name = "wcnss_a11",
1961 .smd_int.flags = IRQF_TRIGGER_RISING,
1962 .smd_int.irq_id = -1,
1963 .smd_int.device_name = "smd_dev",
1964 .smd_int.dev_id = 0,
1965 .smd_int.out_bit_pos = 1 << 25,
1966 .smd_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1967 .smd_int.out_offset = 0x8,
1968
1969 .smsm_int.irq_name = "wcnss_a11_smsm",
1970 .smsm_int.flags = IRQF_TRIGGER_RISING,
1971 .smsm_int.irq_id = -1,
1972 .smsm_int.device_name = "smd_smsm",
1973 .smsm_int.dev_id = 0,
1974 .smsm_int.out_bit_pos = 1 << 23,
1975 .smsm_int.out_base = (void __iomem *)MSM_APCS_GCC_BASE,
1976 .smsm_int.out_offset = 0x8,
1977 },
1978};
1979
Eric Holmberg2bb6ccd2012-03-13 13:05:14 -06001980static struct smd_subsystem_restart_config smd_ssr_config = {
1981 .disable_smsm_reset_handshake = 1,
1982};
1983
Eric Holmberg023d25c2012-03-01 12:27:55 -07001984static struct smd_platform smd_platform_data = {
1985 .num_ss_configs = ARRAY_SIZE(smd_config_list),
1986 .smd_ss_configs = smd_config_list,
Eric Holmberg2bb6ccd2012-03-13 13:05:14 -06001987 .smd_ssr_config = &smd_ssr_config,
Eric Holmberg023d25c2012-03-01 12:27:55 -07001988};
1989
Jeff Hugo0c0f5e92011-09-28 13:55:45 -06001990struct platform_device msm_device_smd_apq8064 = {
1991 .name = "msm_smd",
1992 .id = -1,
Eric Holmberg023d25c2012-03-01 12:27:55 -07001993 .resource = smd_resource,
1994 .num_resources = ARRAY_SIZE(smd_resource),
1995 .dev = {
1996 .platform_data = &smd_platform_data,
1997 },
Jeff Hugo0c0f5e92011-09-28 13:55:45 -06001998};
1999
Niranjana Vishwanathapura06f89332012-05-03 17:11:13 -06002000static struct resource resources_msm_pcie[] = {
2001 {
Niranjana Vishwanathapura68210ff2012-06-24 18:03:49 -06002002 .name = "pcie_parf",
Niranjana Vishwanathapura06f89332012-05-03 17:11:13 -06002003 .start = PCIE20_PARF_PHYS,
2004 .end = PCIE20_PARF_PHYS + PCIE20_PARF_SIZE - 1,
2005 .flags = IORESOURCE_MEM,
2006 },
2007 {
Niranjana Vishwanathapura68210ff2012-06-24 18:03:49 -06002008 .name = "pcie_elbi",
Niranjana Vishwanathapura06f89332012-05-03 17:11:13 -06002009 .start = PCIE20_ELBI_PHYS,
2010 .end = PCIE20_ELBI_PHYS + PCIE20_ELBI_SIZE - 1,
2011 .flags = IORESOURCE_MEM,
2012 },
2013 {
2014 .name = "pcie20",
2015 .start = PCIE20_PHYS,
2016 .end = PCIE20_PHYS + PCIE20_SIZE - 1,
2017 .flags = IORESOURCE_MEM,
2018 },
Niranjana Vishwanathapura06f89332012-05-03 17:11:13 -06002019};
2020
2021struct platform_device msm_device_pcie = {
2022 .name = "msm_pcie",
2023 .id = -1,
2024 .num_resources = ARRAY_SIZE(resources_msm_pcie),
2025 .resource = resources_msm_pcie,
2026};
2027
Ramesh Masavarapuf46be1b2011-11-03 11:13:41 -07002028#ifdef CONFIG_HW_RANDOM_MSM
2029/* PRNG device */
2030#define MSM_PRNG_PHYS 0x1A500000
2031static struct resource rng_resources = {
2032 .flags = IORESOURCE_MEM,
2033 .start = MSM_PRNG_PHYS,
2034 .end = MSM_PRNG_PHYS + SZ_512 - 1,
2035};
2036
2037struct platform_device apq8064_device_rng = {
2038 .name = "msm_rng",
2039 .id = 0,
2040 .num_resources = 1,
2041 .resource = &rng_resources,
2042};
2043#endif
2044
Matt Wagantall292aace2012-01-26 19:12:34 -08002045static struct resource msm_gss_resources[] = {
2046 {
2047 .start = 0x10000000,
2048 .end = 0x10000000 + SZ_256 - 1,
2049 .flags = IORESOURCE_MEM,
2050 },
Matt Wagantall19ac4fd2012-02-03 20:18:23 -08002051 {
2052 .start = 0x10008000,
2053 .end = 0x10008000 + SZ_256 - 1,
2054 .flags = IORESOURCE_MEM,
2055 },
Matt Wagantall292aace2012-01-26 19:12:34 -08002056};
2057
2058struct platform_device msm_gss = {
2059 .name = "pil_gss",
2060 .id = -1,
2061 .num_resources = ARRAY_SIZE(msm_gss_resources),
2062 .resource = msm_gss_resources,
2063};
2064
Matt Wagantall1f65d9d2012-04-25 14:24:20 -07002065static struct fs_driver_data gfx3d_fs_data = {
2066 .clks = (struct fs_clk_data[]){
2067 { .name = "core_clk", .reset_rate = 27000000 },
2068 { .name = "iface_clk" },
2069 { .name = "bus_clk" },
2070 { 0 }
2071 },
2072 .bus_port0 = MSM_BUS_MASTER_GRAPHICS_3D,
2073 .bus_port1 = MSM_BUS_MASTER_GRAPHICS_3D_PORT1,
Matt Wagantall1875d322012-02-22 16:11:33 -08002074};
Matt Wagantall1f65d9d2012-04-25 14:24:20 -07002075
2076static struct fs_driver_data ijpeg_fs_data = {
2077 .clks = (struct fs_clk_data[]){
2078 { .name = "core_clk" },
2079 { .name = "iface_clk" },
2080 { .name = "bus_clk" },
2081 { 0 }
2082 },
2083 .bus_port0 = MSM_BUS_MASTER_JPEG_ENC,
2084};
2085
Nagamalleswararao Ganji6db8c512012-05-24 20:26:23 -07002086static struct fs_driver_data mdp_fs_data = {
2087 .clks = (struct fs_clk_data[]){
2088 { .name = "core_clk" },
2089 { .name = "iface_clk" },
2090 { .name = "bus_clk" },
2091 { .name = "vsync_clk" },
2092 { .name = "lut_clk" },
2093 { .name = "tv_src_clk" },
2094 { .name = "tv_clk" },
Matt Wagantallc33c1ed2012-07-23 17:19:08 -07002095 { .name = "reset1_clk" },
2096 { .name = "reset2_clk" },
Nagamalleswararao Ganji6db8c512012-05-24 20:26:23 -07002097 { 0 }
2098 },
2099 .bus_port0 = MSM_BUS_MASTER_MDP_PORT0,
2100 .bus_port1 = MSM_BUS_MASTER_MDP_PORT1,
2101};
2102
Matt Wagantall1f65d9d2012-04-25 14:24:20 -07002103static struct fs_driver_data rot_fs_data = {
2104 .clks = (struct fs_clk_data[]){
2105 { .name = "core_clk" },
2106 { .name = "iface_clk" },
2107 { .name = "bus_clk" },
2108 { 0 }
2109 },
2110 .bus_port0 = MSM_BUS_MASTER_ROTATOR,
2111};
2112
2113static struct fs_driver_data ved_fs_data = {
2114 .clks = (struct fs_clk_data[]){
2115 { .name = "core_clk" },
2116 { .name = "iface_clk" },
2117 { .name = "bus_clk" },
2118 { 0 }
2119 },
2120 .bus_port0 = MSM_BUS_MASTER_VIDEO_ENC,
2121 .bus_port1 = MSM_BUS_MASTER_VIDEO_DEC,
2122};
2123
2124static struct fs_driver_data vfe_fs_data = {
2125 .clks = (struct fs_clk_data[]){
2126 { .name = "core_clk" },
2127 { .name = "iface_clk" },
2128 { .name = "bus_clk" },
2129 { 0 }
2130 },
2131 .bus_port0 = MSM_BUS_MASTER_VFE,
2132};
2133
2134static struct fs_driver_data vpe_fs_data = {
2135 .clks = (struct fs_clk_data[]){
2136 { .name = "core_clk" },
2137 { .name = "iface_clk" },
2138 { .name = "bus_clk" },
2139 { 0 }
2140 },
2141 .bus_port0 = MSM_BUS_MASTER_VPE,
2142};
2143
2144static struct fs_driver_data vcap_fs_data = {
2145 .clks = (struct fs_clk_data[]){
2146 { .name = "core_clk" },
2147 { .name = "iface_clk" },
2148 { .name = "bus_clk" },
2149 { 0 },
2150 },
2151 .bus_port0 = MSM_BUS_MASTER_VIDEO_CAP,
2152};
2153
2154struct platform_device *apq8064_footswitch[] __initdata = {
Nagamalleswararao Ganji6db8c512012-05-24 20:26:23 -07002155 FS_8X60(FS_MDP, "vdd", "mdp.0", &mdp_fs_data),
Matt Wagantall316f2fc2012-05-03 20:41:42 -07002156 FS_8X60(FS_ROT, "vdd", "msm_rotator.0", &rot_fs_data),
Matt Wagantalle4454b82012-05-03 20:48:01 -07002157 FS_8X60(FS_IJPEG, "vdd", "msm_gemini.0", &ijpeg_fs_data),
Kiran Kumar H Nfa18a032012-06-25 14:34:18 -07002158 FS_8X60(FS_VFE, "vdd", "msm_vfe.0", &vfe_fs_data),
2159 FS_8X60(FS_VPE, "vdd", "msm_vpe.0", &vpe_fs_data),
Matt Wagantalld6fbf232012-05-03 20:09:28 -07002160 FS_8X60(FS_GFX3D, "vdd", "kgsl-3d0.0", &gfx3d_fs_data),
Matt Wagantall5e46aac2012-05-03 20:20:18 -07002161 FS_8X60(FS_VED, "vdd", "msm_vidc.0", &ved_fs_data),
Matt Wagantall3cd5b3d2012-05-03 20:35:20 -07002162 FS_8X60(FS_VCAP, "vdd", "msm_vcap.0", &vcap_fs_data),
Matt Wagantall1f65d9d2012-04-25 14:24:20 -07002163};
2164unsigned apq8064_num_footswitch __initdata = ARRAY_SIZE(apq8064_footswitch);
Matt Wagantall1875d322012-02-22 16:11:33 -08002165
Praveen Chidambaram78499012011-11-01 17:15:17 -06002166struct msm_rpm_platform_data apq8064_rpm_data __initdata = {
2167 .reg_base_addrs = {
2168 [MSM_RPM_PAGE_STATUS] = MSM_RPM_BASE,
2169 [MSM_RPM_PAGE_CTRL] = MSM_RPM_BASE + 0x400,
2170 [MSM_RPM_PAGE_REQ] = MSM_RPM_BASE + 0x600,
2171 [MSM_RPM_PAGE_ACK] = MSM_RPM_BASE + 0xa00,
2172 },
2173 .irq_ack = RPM_APCC_CPU0_GP_HIGH_IRQ,
Stephen Boydf61255e2012-02-24 14:31:09 -08002174 .irq_err = RPM_APCC_CPU0_GP_LOW_IRQ,
Praveen Chidambarame396ce62012-03-30 11:15:57 -06002175 .irq_wakeup = RPM_APCC_CPU0_WAKE_UP_IRQ,
Praveen Chidambaram78499012011-11-01 17:15:17 -06002176 .ipc_rpm_reg = MSM_APCS_GCC_BASE + 0x008,
2177 .ipc_rpm_val = 4,
2178 .target_id = {
2179 MSM_RPM_MAP(8064, NOTIFICATION_CONFIGURED_0, NOTIFICATION, 4),
2180 MSM_RPM_MAP(8064, NOTIFICATION_REGISTERED_0, NOTIFICATION, 4),
2181 MSM_RPM_MAP(8064, INVALIDATE_0, INVALIDATE, 8),
2182 MSM_RPM_MAP(8064, TRIGGER_TIMED_TO, TRIGGER_TIMED, 1),
2183 MSM_RPM_MAP(8064, TRIGGER_TIMED_SCLK_COUNT, TRIGGER_TIMED, 1),
2184 MSM_RPM_MAP(8064, RPM_CTL, RPM_CTL, 1),
2185 MSM_RPM_MAP(8064, CXO_CLK, CXO_CLK, 1),
2186 MSM_RPM_MAP(8064, PXO_CLK, PXO_CLK, 1),
2187 MSM_RPM_MAP(8064, APPS_FABRIC_CLK, APPS_FABRIC_CLK, 1),
2188 MSM_RPM_MAP(8064, SYSTEM_FABRIC_CLK, SYSTEM_FABRIC_CLK, 1),
2189 MSM_RPM_MAP(8064, MM_FABRIC_CLK, MM_FABRIC_CLK, 1),
2190 MSM_RPM_MAP(8064, DAYTONA_FABRIC_CLK, DAYTONA_FABRIC_CLK, 1),
2191 MSM_RPM_MAP(8064, SFPB_CLK, SFPB_CLK, 1),
2192 MSM_RPM_MAP(8064, CFPB_CLK, CFPB_CLK, 1),
2193 MSM_RPM_MAP(8064, MMFPB_CLK, MMFPB_CLK, 1),
2194 MSM_RPM_MAP(8064, EBI1_CLK, EBI1_CLK, 1),
2195 MSM_RPM_MAP(8064, APPS_FABRIC_CFG_HALT_0,
2196 APPS_FABRIC_CFG_HALT, 2),
2197 MSM_RPM_MAP(8064, APPS_FABRIC_CFG_CLKMOD_0,
2198 APPS_FABRIC_CFG_CLKMOD, 3),
2199 MSM_RPM_MAP(8064, APPS_FABRIC_CFG_IOCTL,
2200 APPS_FABRIC_CFG_IOCTL, 1),
2201 MSM_RPM_MAP(8064, APPS_FABRIC_ARB_0, APPS_FABRIC_ARB, 12),
2202 MSM_RPM_MAP(8064, SYS_FABRIC_CFG_HALT_0,
2203 SYS_FABRIC_CFG_HALT, 2),
2204 MSM_RPM_MAP(8064, SYS_FABRIC_CFG_CLKMOD_0,
2205 SYS_FABRIC_CFG_CLKMOD, 3),
2206 MSM_RPM_MAP(8064, SYS_FABRIC_CFG_IOCTL,
2207 SYS_FABRIC_CFG_IOCTL, 1),
2208 MSM_RPM_MAP(8064, SYSTEM_FABRIC_ARB_0, SYSTEM_FABRIC_ARB, 30),
2209 MSM_RPM_MAP(8064, MMSS_FABRIC_CFG_HALT_0,
2210 MMSS_FABRIC_CFG_HALT, 2),
2211 MSM_RPM_MAP(8064, MMSS_FABRIC_CFG_CLKMOD_0,
2212 MMSS_FABRIC_CFG_CLKMOD, 3),
2213 MSM_RPM_MAP(8064, MMSS_FABRIC_CFG_IOCTL,
2214 MMSS_FABRIC_CFG_IOCTL, 1),
2215 MSM_RPM_MAP(8064, MM_FABRIC_ARB_0, MM_FABRIC_ARB, 21),
2216 MSM_RPM_MAP(8064, PM8921_S1_0, PM8921_S1, 2),
2217 MSM_RPM_MAP(8064, PM8921_S2_0, PM8921_S2, 2),
2218 MSM_RPM_MAP(8064, PM8921_S3_0, PM8921_S3, 2),
2219 MSM_RPM_MAP(8064, PM8921_S4_0, PM8921_S4, 2),
2220 MSM_RPM_MAP(8064, PM8921_S5_0, PM8921_S5, 2),
2221 MSM_RPM_MAP(8064, PM8921_S6_0, PM8921_S6, 2),
2222 MSM_RPM_MAP(8064, PM8921_S7_0, PM8921_S7, 2),
2223 MSM_RPM_MAP(8064, PM8921_S8_0, PM8921_S8, 2),
2224 MSM_RPM_MAP(8064, PM8921_L1_0, PM8921_L1, 2),
2225 MSM_RPM_MAP(8064, PM8921_L2_0, PM8921_L2, 2),
2226 MSM_RPM_MAP(8064, PM8921_L3_0, PM8921_L3, 2),
2227 MSM_RPM_MAP(8064, PM8921_L4_0, PM8921_L4, 2),
2228 MSM_RPM_MAP(8064, PM8921_L5_0, PM8921_L5, 2),
2229 MSM_RPM_MAP(8064, PM8921_L6_0, PM8921_L6, 2),
2230 MSM_RPM_MAP(8064, PM8921_L7_0, PM8921_L7, 2),
2231 MSM_RPM_MAP(8064, PM8921_L8_0, PM8921_L8, 2),
2232 MSM_RPM_MAP(8064, PM8921_L9_0, PM8921_L9, 2),
2233 MSM_RPM_MAP(8064, PM8921_L10_0, PM8921_L10, 2),
2234 MSM_RPM_MAP(8064, PM8921_L11_0, PM8921_L11, 2),
2235 MSM_RPM_MAP(8064, PM8921_L12_0, PM8921_L12, 2),
2236 MSM_RPM_MAP(8064, PM8921_L13_0, PM8921_L13, 2),
2237 MSM_RPM_MAP(8064, PM8921_L14_0, PM8921_L14, 2),
2238 MSM_RPM_MAP(8064, PM8921_L15_0, PM8921_L15, 2),
2239 MSM_RPM_MAP(8064, PM8921_L16_0, PM8921_L16, 2),
2240 MSM_RPM_MAP(8064, PM8921_L17_0, PM8921_L17, 2),
2241 MSM_RPM_MAP(8064, PM8921_L18_0, PM8921_L18, 2),
2242 MSM_RPM_MAP(8064, PM8921_L19_0, PM8921_L19, 2),
2243 MSM_RPM_MAP(8064, PM8921_L20_0, PM8921_L20, 2),
2244 MSM_RPM_MAP(8064, PM8921_L21_0, PM8921_L21, 2),
2245 MSM_RPM_MAP(8064, PM8921_L22_0, PM8921_L22, 2),
2246 MSM_RPM_MAP(8064, PM8921_L23_0, PM8921_L23, 2),
2247 MSM_RPM_MAP(8064, PM8921_L24_0, PM8921_L24, 2),
2248 MSM_RPM_MAP(8064, PM8921_L25_0, PM8921_L25, 2),
2249 MSM_RPM_MAP(8064, PM8921_L26_0, PM8921_L26, 2),
2250 MSM_RPM_MAP(8064, PM8921_L27_0, PM8921_L27, 2),
2251 MSM_RPM_MAP(8064, PM8921_L28_0, PM8921_L28, 2),
2252 MSM_RPM_MAP(8064, PM8921_L29_0, PM8921_L29, 2),
2253 MSM_RPM_MAP(8064, PM8921_CLK1_0, PM8921_CLK1, 2),
2254 MSM_RPM_MAP(8064, PM8921_CLK2_0, PM8921_CLK2, 2),
2255 MSM_RPM_MAP(8064, PM8921_LVS1, PM8921_LVS1, 1),
2256 MSM_RPM_MAP(8064, PM8921_LVS2, PM8921_LVS2, 1),
2257 MSM_RPM_MAP(8064, PM8921_LVS3, PM8921_LVS3, 1),
2258 MSM_RPM_MAP(8064, PM8921_LVS4, PM8921_LVS4, 1),
2259 MSM_RPM_MAP(8064, PM8921_LVS5, PM8921_LVS5, 1),
2260 MSM_RPM_MAP(8064, PM8921_LVS6, PM8921_LVS6, 1),
2261 MSM_RPM_MAP(8064, PM8921_LVS7, PM8921_LVS7, 1),
2262 MSM_RPM_MAP(8064, PM8821_S1_0, PM8821_S1, 2),
2263 MSM_RPM_MAP(8064, PM8821_S2_0, PM8821_S2, 2),
2264 MSM_RPM_MAP(8064, PM8821_L1_0, PM8821_L1, 2),
2265 MSM_RPM_MAP(8064, NCP_0, NCP, 2),
2266 MSM_RPM_MAP(8064, CXO_BUFFERS, CXO_BUFFERS, 1),
2267 MSM_RPM_MAP(8064, USB_OTG_SWITCH, USB_OTG_SWITCH, 1),
2268 MSM_RPM_MAP(8064, HDMI_SWITCH, HDMI_SWITCH, 1),
2269 MSM_RPM_MAP(8064, DDR_DMM_0, DDR_DMM, 2),
2270 MSM_RPM_MAP(8064, QDSS_CLK, QDSS_CLK, 1),
Joel Kingef390842012-05-23 16:42:48 -07002271 MSM_RPM_MAP(8064, VDDMIN_GPIO, VDDMIN_GPIO, 1),
Praveen Chidambaram78499012011-11-01 17:15:17 -06002272 },
2273 .target_status = {
2274 MSM_RPM_STATUS_ID_MAP(8064, VERSION_MAJOR),
2275 MSM_RPM_STATUS_ID_MAP(8064, VERSION_MINOR),
2276 MSM_RPM_STATUS_ID_MAP(8064, VERSION_BUILD),
2277 MSM_RPM_STATUS_ID_MAP(8064, SUPPORTED_RESOURCES_0),
2278 MSM_RPM_STATUS_ID_MAP(8064, SUPPORTED_RESOURCES_1),
2279 MSM_RPM_STATUS_ID_MAP(8064, SUPPORTED_RESOURCES_2),
2280 MSM_RPM_STATUS_ID_MAP(8064, RESERVED_SUPPORTED_RESOURCES_0),
2281 MSM_RPM_STATUS_ID_MAP(8064, SEQUENCE),
2282 MSM_RPM_STATUS_ID_MAP(8064, RPM_CTL),
2283 MSM_RPM_STATUS_ID_MAP(8064, CXO_CLK),
2284 MSM_RPM_STATUS_ID_MAP(8064, PXO_CLK),
2285 MSM_RPM_STATUS_ID_MAP(8064, APPS_FABRIC_CLK),
2286 MSM_RPM_STATUS_ID_MAP(8064, SYSTEM_FABRIC_CLK),
2287 MSM_RPM_STATUS_ID_MAP(8064, MM_FABRIC_CLK),
2288 MSM_RPM_STATUS_ID_MAP(8064, DAYTONA_FABRIC_CLK),
2289 MSM_RPM_STATUS_ID_MAP(8064, SFPB_CLK),
2290 MSM_RPM_STATUS_ID_MAP(8064, CFPB_CLK),
2291 MSM_RPM_STATUS_ID_MAP(8064, MMFPB_CLK),
2292 MSM_RPM_STATUS_ID_MAP(8064, EBI1_CLK),
2293 MSM_RPM_STATUS_ID_MAP(8064, APPS_FABRIC_CFG_HALT),
2294 MSM_RPM_STATUS_ID_MAP(8064, APPS_FABRIC_CFG_CLKMOD),
2295 MSM_RPM_STATUS_ID_MAP(8064, APPS_FABRIC_CFG_IOCTL),
2296 MSM_RPM_STATUS_ID_MAP(8064, APPS_FABRIC_ARB),
2297 MSM_RPM_STATUS_ID_MAP(8064, SYS_FABRIC_CFG_HALT),
2298 MSM_RPM_STATUS_ID_MAP(8064, SYS_FABRIC_CFG_CLKMOD),
2299 MSM_RPM_STATUS_ID_MAP(8064, SYS_FABRIC_CFG_IOCTL),
2300 MSM_RPM_STATUS_ID_MAP(8064, SYSTEM_FABRIC_ARB),
2301 MSM_RPM_STATUS_ID_MAP(8064, MMSS_FABRIC_CFG_HALT),
2302 MSM_RPM_STATUS_ID_MAP(8064, MMSS_FABRIC_CFG_CLKMOD),
2303 MSM_RPM_STATUS_ID_MAP(8064, MMSS_FABRIC_CFG_IOCTL),
2304 MSM_RPM_STATUS_ID_MAP(8064, MM_FABRIC_ARB),
2305 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S1_0),
2306 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S1_1),
2307 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S2_0),
2308 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S2_1),
2309 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S3_0),
2310 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S3_1),
2311 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S4_0),
2312 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S4_1),
2313 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S5_0),
2314 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S5_1),
2315 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S6_0),
2316 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S6_1),
2317 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S7_0),
2318 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S7_1),
2319 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S8_0),
2320 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S8_1),
2321 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L1_0),
2322 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L1_1),
2323 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L2_0),
2324 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L2_1),
2325 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L3_0),
2326 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L3_1),
2327 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L4_0),
2328 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L4_1),
2329 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L5_0),
2330 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L5_1),
2331 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L6_0),
2332 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L6_1),
2333 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L7_0),
2334 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L7_1),
2335 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L8_0),
2336 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L8_1),
2337 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L9_0),
2338 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L9_1),
2339 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L10_0),
2340 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L10_1),
2341 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L11_0),
2342 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L11_1),
2343 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L12_0),
2344 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L12_1),
2345 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L13_0),
2346 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L13_1),
2347 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L14_0),
2348 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L14_1),
2349 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L15_0),
2350 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L15_1),
2351 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L16_0),
2352 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L16_1),
2353 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L17_0),
2354 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L17_1),
2355 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L18_0),
2356 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L18_1),
2357 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L19_0),
2358 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L19_1),
2359 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L20_0),
2360 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L20_1),
2361 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L21_0),
2362 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L21_1),
2363 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L22_0),
2364 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L22_1),
2365 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L23_0),
2366 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L23_1),
2367 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L24_0),
2368 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L24_1),
2369 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L25_0),
2370 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L25_1),
2371 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L26_0),
2372 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L26_1),
2373 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L27_0),
2374 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L27_1),
2375 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L28_0),
2376 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L28_1),
2377 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L29_0),
2378 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L29_1),
2379 MSM_RPM_STATUS_ID_MAP(8064, PM8921_CLK1_0),
2380 MSM_RPM_STATUS_ID_MAP(8064, PM8921_CLK1_1),
2381 MSM_RPM_STATUS_ID_MAP(8064, PM8921_CLK2_0),
2382 MSM_RPM_STATUS_ID_MAP(8064, PM8921_CLK2_1),
2383 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS1),
2384 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS2),
2385 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS3),
2386 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS4),
2387 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS5),
2388 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS6),
2389 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS7),
2390 MSM_RPM_STATUS_ID_MAP(8064, NCP_0),
2391 MSM_RPM_STATUS_ID_MAP(8064, NCP_1),
2392 MSM_RPM_STATUS_ID_MAP(8064, CXO_BUFFERS),
2393 MSM_RPM_STATUS_ID_MAP(8064, USB_OTG_SWITCH),
2394 MSM_RPM_STATUS_ID_MAP(8064, HDMI_SWITCH),
2395 MSM_RPM_STATUS_ID_MAP(8064, DDR_DMM_0),
2396 MSM_RPM_STATUS_ID_MAP(8064, DDR_DMM_1),
2397 MSM_RPM_STATUS_ID_MAP(8064, EBI1_CH0_RANGE),
2398 MSM_RPM_STATUS_ID_MAP(8064, EBI1_CH1_RANGE),
2399 MSM_RPM_STATUS_ID_MAP(8064, PM8821_S1_0),
2400 MSM_RPM_STATUS_ID_MAP(8064, PM8821_S1_1),
2401 MSM_RPM_STATUS_ID_MAP(8064, PM8821_S2_0),
2402 MSM_RPM_STATUS_ID_MAP(8064, PM8821_S2_1),
2403 MSM_RPM_STATUS_ID_MAP(8064, PM8821_L1_0),
2404 MSM_RPM_STATUS_ID_MAP(8064, PM8821_L1_1),
Joel Kingef390842012-05-23 16:42:48 -07002405 MSM_RPM_STATUS_ID_MAP(8064, VDDMIN_GPIO),
Praveen Chidambaram78499012011-11-01 17:15:17 -06002406 },
2407 .target_ctrl_id = {
2408 MSM_RPM_CTRL_MAP(8064, VERSION_MAJOR),
2409 MSM_RPM_CTRL_MAP(8064, VERSION_MINOR),
2410 MSM_RPM_CTRL_MAP(8064, VERSION_BUILD),
2411 MSM_RPM_CTRL_MAP(8064, REQ_CTX_0),
2412 MSM_RPM_CTRL_MAP(8064, REQ_SEL_0),
2413 MSM_RPM_CTRL_MAP(8064, ACK_CTX_0),
2414 MSM_RPM_CTRL_MAP(8064, ACK_SEL_0),
2415 },
2416 .sel_invalidate = MSM_RPM_8064_SEL_INVALIDATE,
2417 .sel_notification = MSM_RPM_8064_SEL_NOTIFICATION,
2418 .sel_last = MSM_RPM_8064_SEL_LAST,
2419 .ver = {3, 0, 0},
2420};
2421
2422struct platform_device apq8064_rpm_device = {
2423 .name = "msm_rpm",
2424 .id = -1,
2425};
2426
2427static struct msm_rpmstats_platform_data msm_rpm_stat_pdata = {
Anji Jonnalaa1a1c3b2012-09-18 19:20:21 +05302428 .phys_addr_base = 0x0010DD04,
2429 .phys_size = SZ_256,
Praveen Chidambaram78499012011-11-01 17:15:17 -06002430};
2431
2432struct platform_device apq8064_rpm_stat_device = {
2433 .name = "msm_rpm_stat",
2434 .id = -1,
2435 .dev = {
2436 .platform_data = &msm_rpm_stat_pdata,
2437 },
2438};
2439
Anji Jonnala2a8bd312012-11-01 13:11:42 +05302440static struct resource resources_rpm_master_stats[] = {
2441 {
2442 .start = MSM8064_RPM_MASTER_STATS_BASE,
2443 .end = MSM8064_RPM_MASTER_STATS_BASE + SZ_256,
2444 .flags = IORESOURCE_MEM,
2445 },
2446};
2447
2448static char *master_names[] = {
2449 "KPSS",
2450 "MPSS",
2451 "LPASS",
2452 "RIVA",
2453 "DSPS",
2454};
2455
2456static struct msm_rpm_master_stats_platform_data msm_rpm_master_stat_pdata = {
2457 .masters = master_names,
2458 .nomasters = ARRAY_SIZE(master_names),
2459};
2460
2461struct platform_device apq8064_rpm_master_stat_device = {
2462 .name = "msm_rpm_master_stat",
2463 .id = -1,
2464 .num_resources = ARRAY_SIZE(resources_rpm_master_stats),
2465 .resource = resources_rpm_master_stats,
2466 .dev = {
2467 .platform_data = &msm_rpm_master_stat_pdata,
2468 },
2469};
2470
Praveen Chidambaram78499012011-11-01 17:15:17 -06002471static struct msm_rpm_log_platform_data msm_rpm_log_pdata = {
2472 .phys_addr_base = 0x0010C000,
2473 .reg_offsets = {
2474 [MSM_RPM_LOG_PAGE_INDICES] = 0x00000080,
2475 [MSM_RPM_LOG_PAGE_BUFFER] = 0x000000A0,
2476 },
2477 .phys_size = SZ_8K,
Anji Jonnalaa5777ce2013-03-28 13:45:58 +05302478 .log_len = 6144, /* log's buffer length in bytes */
2479 .log_len_mask = (6144 >> 2) - 1, /* length mask in units of u32 */
Praveen Chidambaram78499012011-11-01 17:15:17 -06002480};
2481
2482struct platform_device apq8064_rpm_log_device = {
2483 .name = "msm_rpm_log",
2484 .id = -1,
2485 .dev = {
2486 .platform_data = &msm_rpm_log_pdata,
2487 },
2488};
2489
Jin Hongd3024e62012-02-09 16:13:32 -08002490/* Sensors DSPS platform data */
2491
Vikram Mulukutlaac682bb2012-09-20 14:06:23 -07002492#define PPSS_DSPS_TCM_CODE_BASE 0x12000000
2493#define PPSS_DSPS_TCM_CODE_SIZE 0x28000
2494#define PPSS_DSPS_TCM_BUF_BASE 0x12040000
2495#define PPSS_DSPS_TCM_BUF_SIZE 0x4000
2496#define PPSS_DSPS_PIPE_BASE 0x12800000
2497#define PPSS_DSPS_PIPE_SIZE 0x4000
2498#define PPSS_DSPS_DDR_BASE 0x8fe00000
2499#define PPSS_DSPS_DDR_SIZE 0x100000
2500#define PPSS_SMEM_BASE 0x80000000
2501#define PPSS_SMEM_SIZE 0x200000
2502#define PPSS_REG_PHYS_BASE 0x12080000
2503#define PPSS_WDOG_UNMASKED_INT_EN 0x1808
Jin Hongd3024e62012-02-09 16:13:32 -08002504
2505static struct dsps_clk_info dsps_clks[] = {};
2506static struct dsps_regulator_info dsps_regs[] = {};
2507
2508/*
2509 * Note: GPIOs field is intialized in run-time at the function
2510 * apq8064_init_dsps().
2511 */
2512
2513struct msm_dsps_platform_data msm_dsps_pdata_8064 = {
2514 .clks = dsps_clks,
2515 .clks_num = ARRAY_SIZE(dsps_clks),
2516 .gpios = NULL,
2517 .gpios_num = 0,
2518 .regs = dsps_regs,
2519 .regs_num = ARRAY_SIZE(dsps_regs),
2520 .dsps_pwr_ctl_en = 1,
karthik karuppasamy1a1c6b02012-05-29 15:16:32 -07002521 .tcm_code_start = PPSS_DSPS_TCM_CODE_BASE,
2522 .tcm_code_size = PPSS_DSPS_TCM_CODE_SIZE,
2523 .tcm_buf_start = PPSS_DSPS_TCM_BUF_BASE,
2524 .tcm_buf_size = PPSS_DSPS_TCM_BUF_SIZE,
2525 .pipe_start = PPSS_DSPS_PIPE_BASE,
2526 .pipe_size = PPSS_DSPS_PIPE_SIZE,
2527 .ddr_start = PPSS_DSPS_DDR_BASE,
2528 .ddr_size = PPSS_DSPS_DDR_SIZE,
2529 .smem_start = PPSS_SMEM_BASE,
2530 .smem_size = PPSS_SMEM_SIZE,
Vikram Mulukutlaac682bb2012-09-20 14:06:23 -07002531 .ppss_wdog_unmasked_int_en_reg = PPSS_WDOG_UNMASKED_INT_EN,
Jin Hongd3024e62012-02-09 16:13:32 -08002532 .signature = DSPS_SIGNATURE,
2533};
2534
2535static struct resource msm_dsps_resources[] = {
2536 {
2537 .start = PPSS_REG_PHYS_BASE,
2538 .end = PPSS_REG_PHYS_BASE + SZ_8K - 1,
2539 .name = "ppss_reg",
2540 .flags = IORESOURCE_MEM,
2541 },
2542
2543 {
2544 .start = PPSS_WDOG_TIMER_IRQ,
2545 .end = PPSS_WDOG_TIMER_IRQ,
2546 .name = "ppss_wdog",
2547 .flags = IORESOURCE_IRQ,
2548 },
2549};
2550
2551struct platform_device msm_dsps_device_8064 = {
2552 .name = "msm_dsps",
2553 .id = 0,
2554 .num_resources = ARRAY_SIZE(msm_dsps_resources),
2555 .resource = msm_dsps_resources,
2556 .dev.platform_data = &msm_dsps_pdata_8064,
2557};
2558
Praveen Chidambaram78499012011-11-01 17:15:17 -06002559#ifdef CONFIG_MSM_MPM
2560static uint16_t msm_mpm_irqs_m2a[MSM_MPM_NR_MPM_IRQS] __initdata = {
2561 [1] = MSM_GPIO_TO_INT(26),
2562 [2] = MSM_GPIO_TO_INT(88),
2563 [4] = MSM_GPIO_TO_INT(73),
2564 [5] = MSM_GPIO_TO_INT(74),
2565 [6] = MSM_GPIO_TO_INT(75),
2566 [7] = MSM_GPIO_TO_INT(76),
2567 [8] = MSM_GPIO_TO_INT(77),
2568 [9] = MSM_GPIO_TO_INT(36),
2569 [10] = MSM_GPIO_TO_INT(84),
2570 [11] = MSM_GPIO_TO_INT(7),
2571 [12] = MSM_GPIO_TO_INT(11),
2572 [13] = MSM_GPIO_TO_INT(52),
2573 [14] = MSM_GPIO_TO_INT(15),
2574 [15] = MSM_GPIO_TO_INT(83),
2575 [16] = USB3_HS_IRQ,
2576 [19] = MSM_GPIO_TO_INT(61),
2577 [20] = MSM_GPIO_TO_INT(58),
2578 [23] = MSM_GPIO_TO_INT(65),
2579 [24] = MSM_GPIO_TO_INT(63),
2580 [25] = USB1_HS_IRQ,
2581 [27] = HDMI_IRQ,
2582 [29] = MSM_GPIO_TO_INT(22),
2583 [30] = MSM_GPIO_TO_INT(72),
2584 [31] = USB4_HS_IRQ,
2585 [33] = MSM_GPIO_TO_INT(44),
2586 [34] = MSM_GPIO_TO_INT(39),
2587 [35] = MSM_GPIO_TO_INT(19),
2588 [36] = MSM_GPIO_TO_INT(23),
2589 [37] = MSM_GPIO_TO_INT(41),
2590 [38] = MSM_GPIO_TO_INT(30),
2591 [41] = MSM_GPIO_TO_INT(42),
2592 [42] = MSM_GPIO_TO_INT(56),
2593 [43] = MSM_GPIO_TO_INT(55),
2594 [44] = MSM_GPIO_TO_INT(50),
2595 [45] = MSM_GPIO_TO_INT(49),
2596 [46] = MSM_GPIO_TO_INT(47),
2597 [47] = MSM_GPIO_TO_INT(45),
2598 [48] = MSM_GPIO_TO_INT(38),
2599 [49] = MSM_GPIO_TO_INT(34),
2600 [50] = MSM_GPIO_TO_INT(32),
2601 [51] = MSM_GPIO_TO_INT(29),
2602 [52] = MSM_GPIO_TO_INT(18),
2603 [53] = MSM_GPIO_TO_INT(10),
2604 [54] = MSM_GPIO_TO_INT(81),
2605 [55] = MSM_GPIO_TO_INT(6),
Jaeseong GIMe630a592012-07-09 18:28:39 -07002606 [56] = MSM_GPIO_TO_INT(82),
Praveen Chidambaram78499012011-11-01 17:15:17 -06002607};
2608
2609static uint16_t msm_mpm_bypassed_apps_irqs[] __initdata = {
2610 TLMM_MSM_SUMMARY_IRQ,
2611 RPM_APCC_CPU0_GP_HIGH_IRQ,
2612 RPM_APCC_CPU0_GP_MEDIUM_IRQ,
2613 RPM_APCC_CPU0_GP_LOW_IRQ,
2614 RPM_APCC_CPU0_WAKE_UP_IRQ,
2615 RPM_APCC_CPU1_GP_HIGH_IRQ,
2616 RPM_APCC_CPU1_GP_MEDIUM_IRQ,
2617 RPM_APCC_CPU1_GP_LOW_IRQ,
2618 RPM_APCC_CPU1_WAKE_UP_IRQ,
2619 MSS_TO_APPS_IRQ_0,
2620 MSS_TO_APPS_IRQ_1,
2621 MSS_TO_APPS_IRQ_2,
2622 MSS_TO_APPS_IRQ_3,
2623 MSS_TO_APPS_IRQ_4,
2624 MSS_TO_APPS_IRQ_5,
2625 MSS_TO_APPS_IRQ_6,
2626 MSS_TO_APPS_IRQ_7,
2627 MSS_TO_APPS_IRQ_8,
2628 MSS_TO_APPS_IRQ_9,
2629 LPASS_SCSS_GP_LOW_IRQ,
2630 LPASS_SCSS_GP_MEDIUM_IRQ,
2631 LPASS_SCSS_GP_HIGH_IRQ,
2632 SPS_MTI_30,
2633 SPS_MTI_31,
2634 RIVA_APSS_SPARE_IRQ,
2635 RIVA_APPS_WLAN_SMSM_IRQ,
2636 RIVA_APPS_WLAN_RX_DATA_AVAIL_IRQ,
2637 RIVA_APPS_WLAN_DATA_XFER_DONE_IRQ,
Chandra Ramachandran59851722012-07-23 11:19:48 -07002638 PM8821_SEC_IRQ_N,
Praveen Chidambaram78499012011-11-01 17:15:17 -06002639};
2640
2641struct msm_mpm_device_data apq8064_mpm_dev_data __initdata = {
2642 .irqs_m2a = msm_mpm_irqs_m2a,
2643 .irqs_m2a_size = ARRAY_SIZE(msm_mpm_irqs_m2a),
2644 .bypassed_apps_irqs = msm_mpm_bypassed_apps_irqs,
2645 .bypassed_apps_irqs_size = ARRAY_SIZE(msm_mpm_bypassed_apps_irqs),
2646 .mpm_request_reg_base = MSM_RPM_BASE + 0x9d8,
2647 .mpm_status_reg_base = MSM_RPM_BASE + 0xdf8,
2648 .mpm_apps_ipc_reg = MSM_APCS_GCC_BASE + 0x008,
2649 .mpm_apps_ipc_val = BIT(1),
2650 .mpm_ipc_irq = RPM_APCC_CPU0_GP_MEDIUM_IRQ,
2651
2652};
2653#endif
Joel Kingdacbc822012-01-25 13:30:57 -08002654
Joel King14fe7fa2012-05-27 14:26:11 -07002655/* AP2MDM_SOFT_RESET is implemented by the PON_RESET_N gpio */
Joel Kingdacbc822012-01-25 13:30:57 -08002656#define MDM2AP_ERRFATAL 19
2657#define AP2MDM_ERRFATAL 18
2658#define MDM2AP_STATUS 49
2659#define AP2MDM_STATUS 48
Joel King14fe7fa2012-05-27 14:26:11 -07002660#define AP2MDM_SOFT_RESET 27
Ameya Thakur2702baf2013-01-30 11:55:25 -08002661#define I2S_AP2MDM_SOFT_RESET 0
Vamsi Krishna9e307cd2012-04-11 13:15:36 -07002662#define AP2MDM_WAKEUP 35
Ameya Thakure155ece2012-07-09 12:08:37 -07002663#define I2S_AP2MDM_WAKEUP 44
Vamsi Krishnac6dcd5e2012-05-09 15:38:01 -07002664#define MDM2AP_PBLRDY 46
Ameya Thakur2702baf2013-01-30 11:55:25 -08002665#define AMDM2AP_PBLRDY_DSDA2 31
Ameya Thakure155ece2012-07-09 12:08:37 -07002666#define I2S_MDM2AP_PBLRDY 81
Joel Kingdacbc822012-01-25 13:30:57 -08002667
Ameya Thakur2702baf2013-01-30 11:55:25 -08002668/* Gpios for second MDM */
2669#define BMDM2AP_ERRFATAL 81
2670#define AP2BMDM_ERRFATAL 18
2671#define BMDM2AP_STATUS 32
2672#define AP2BMDM_STATUS 56
2673#define AP2BMDM_SOFT_RESET 3
2674#define AP2BMDM_WAKEUP 29
2675
Joel King3166e892013-02-26 11:16:08 -08002676#define SGLTE2_QSC2AP_STATUS 51
2677#define SGLTE2_QSC2AP_ERRFATAL 52
Joel King57aefdd2013-03-11 13:46:05 -07002678#define SGLTE2_PM2QSC_SOFT_RESET PM8921_GPIO_PM_TO_SYS(23)
Joel King3166e892013-02-26 11:16:08 -08002679#define SGLTE2_PM2QSC_KEYPADPWR PM8921_GPIO_PM_TO_SYS(21)
2680
Joel Kingdacbc822012-01-25 13:30:57 -08002681static struct resource mdm_resources[] = {
2682 {
2683 .start = MDM2AP_ERRFATAL,
2684 .end = MDM2AP_ERRFATAL,
2685 .name = "MDM2AP_ERRFATAL",
2686 .flags = IORESOURCE_IO,
2687 },
2688 {
2689 .start = AP2MDM_ERRFATAL,
2690 .end = AP2MDM_ERRFATAL,
2691 .name = "AP2MDM_ERRFATAL",
2692 .flags = IORESOURCE_IO,
2693 },
2694 {
2695 .start = MDM2AP_STATUS,
2696 .end = MDM2AP_STATUS,
2697 .name = "MDM2AP_STATUS",
2698 .flags = IORESOURCE_IO,
2699 },
2700 {
2701 .start = AP2MDM_STATUS,
2702 .end = AP2MDM_STATUS,
2703 .name = "AP2MDM_STATUS",
2704 .flags = IORESOURCE_IO,
2705 },
2706 {
Joel King14fe7fa2012-05-27 14:26:11 -07002707 .start = AP2MDM_SOFT_RESET,
2708 .end = AP2MDM_SOFT_RESET,
2709 .name = "AP2MDM_SOFT_RESET",
Joel Kingdacbc822012-01-25 13:30:57 -08002710 .flags = IORESOURCE_IO,
2711 },
Vamsi Krishna9e307cd2012-04-11 13:15:36 -07002712 {
2713 .start = AP2MDM_WAKEUP,
2714 .end = AP2MDM_WAKEUP,
2715 .name = "AP2MDM_WAKEUP",
2716 .flags = IORESOURCE_IO,
2717 },
Vamsi Krishnac6dcd5e2012-05-09 15:38:01 -07002718 {
2719 .start = MDM2AP_PBLRDY,
2720 .end = MDM2AP_PBLRDY,
2721 .name = "MDM2AP_PBLRDY",
2722 .flags = IORESOURCE_IO,
2723 },
Joel Kingdacbc822012-01-25 13:30:57 -08002724};
2725
Ameya Thakur2702baf2013-01-30 11:55:25 -08002726static struct resource mdm_dsda2_amdm_resources[] = {
2727 {
2728 .start = MDM2AP_ERRFATAL,
2729 .end = MDM2AP_ERRFATAL,
2730 .name = "MDM2AP_ERRFATAL",
2731 .flags = IORESOURCE_IO,
2732 },
2733 {
2734 .start = AP2MDM_ERRFATAL,
2735 .end = AP2MDM_ERRFATAL,
2736 .name = "AP2MDM_ERRFATAL",
2737 .flags = IORESOURCE_IO,
2738 },
2739 {
2740 .start = MDM2AP_STATUS,
2741 .end = MDM2AP_STATUS,
2742 .name = "MDM2AP_STATUS",
2743 .flags = IORESOURCE_IO,
2744 },
2745 {
2746 .start = AP2MDM_STATUS,
2747 .end = AP2MDM_STATUS,
2748 .name = "AP2MDM_STATUS",
2749 .flags = IORESOURCE_IO,
2750 },
2751 {
2752 .start = AP2MDM_SOFT_RESET,
2753 .end = AP2MDM_SOFT_RESET,
2754 .name = "AP2MDM_SOFT_RESET",
2755 .flags = IORESOURCE_IO,
2756 },
2757 {
2758 .start = AP2MDM_WAKEUP,
2759 .end = AP2MDM_WAKEUP,
2760 .name = "AP2MDM_WAKEUP",
2761 .flags = IORESOURCE_IO,
2762 },
2763 {
2764 .start = AMDM2AP_PBLRDY_DSDA2,
2765 .end = AMDM2AP_PBLRDY_DSDA2,
2766 .name = "MDM2AP_PBLRDY",
2767 .flags = IORESOURCE_IO,
2768 },
2769};
2770
2771static struct resource mdm_dsda2_bmdm_resources[] = {
2772 {
2773 .start = BMDM2AP_ERRFATAL,
2774 .end = BMDM2AP_ERRFATAL,
2775 .name = "MDM2AP_ERRFATAL",
2776 .flags = IORESOURCE_IO,
2777 },
2778 {
2779 .start = AP2BMDM_ERRFATAL,
2780 .end = AP2BMDM_ERRFATAL,
2781 .name = "AP2MDM_ERRFATAL",
2782 .flags = IORESOURCE_IO,
2783 },
2784 {
2785 .start = BMDM2AP_STATUS,
2786 .end = BMDM2AP_STATUS,
2787 .name = "MDM2AP_STATUS",
2788 .flags = IORESOURCE_IO,
2789 },
2790 {
2791 .start = AP2BMDM_STATUS,
2792 .end = AP2BMDM_STATUS,
2793 .name = "AP2MDM_STATUS",
2794 .flags = IORESOURCE_IO,
2795 },
2796 {
2797 .start = AP2BMDM_SOFT_RESET,
2798 .end = AP2BMDM_SOFT_RESET,
2799 .name = "AP2MDM_SOFT_RESET",
2800 .flags = IORESOURCE_IO,
2801 },
2802 {
2803 .start = AP2BMDM_WAKEUP,
2804 .end = AP2BMDM_WAKEUP,
2805 .name = "AP2MDM_WAKEUP",
2806 .flags = IORESOURCE_IO,
2807 },
2808};
2809
Ameya Thakure155ece2012-07-09 12:08:37 -07002810static struct resource i2s_mdm_resources[] = {
2811 {
2812 .start = MDM2AP_ERRFATAL,
2813 .end = MDM2AP_ERRFATAL,
2814 .name = "MDM2AP_ERRFATAL",
2815 .flags = IORESOURCE_IO,
2816 },
2817 {
2818 .start = AP2MDM_ERRFATAL,
2819 .end = AP2MDM_ERRFATAL,
2820 .name = "AP2MDM_ERRFATAL",
2821 .flags = IORESOURCE_IO,
2822 },
2823 {
2824 .start = MDM2AP_STATUS,
2825 .end = MDM2AP_STATUS,
2826 .name = "MDM2AP_STATUS",
2827 .flags = IORESOURCE_IO,
2828 },
2829 {
2830 .start = AP2MDM_STATUS,
2831 .end = AP2MDM_STATUS,
2832 .name = "AP2MDM_STATUS",
2833 .flags = IORESOURCE_IO,
2834 },
2835 {
2836 .start = I2S_AP2MDM_SOFT_RESET,
2837 .end = I2S_AP2MDM_SOFT_RESET,
2838 .name = "AP2MDM_SOFT_RESET",
2839 .flags = IORESOURCE_IO,
2840 },
2841 {
2842 .start = I2S_AP2MDM_WAKEUP,
2843 .end = I2S_AP2MDM_WAKEUP,
2844 .name = "AP2MDM_WAKEUP",
2845 .flags = IORESOURCE_IO,
2846 },
2847 {
2848 .start = I2S_MDM2AP_PBLRDY,
2849 .end = I2S_MDM2AP_PBLRDY,
2850 .name = "MDM2AP_PBLRDY",
2851 .flags = IORESOURCE_IO,
2852 },
2853};
2854
Joel King3166e892013-02-26 11:16:08 -08002855static struct resource sglte2_qsc_resources[] = {
2856 {
2857 .start = SGLTE2_QSC2AP_ERRFATAL,
2858 .end = SGLTE2_QSC2AP_ERRFATAL,
2859 .name = "MDM2AP_ERRFATAL",
2860 .flags = IORESOURCE_IO,
2861 },
2862 {
2863 .start = AP2MDM_ERRFATAL,
2864 .end = AP2MDM_ERRFATAL,
2865 .name = "AP2MDM_ERRFATAL",
2866 .flags = IORESOURCE_IO,
2867 },
2868 {
2869 .start = SGLTE2_QSC2AP_STATUS,
2870 .end = SGLTE2_QSC2AP_STATUS,
2871 .name = "MDM2AP_STATUS",
2872 .flags = IORESOURCE_IO,
2873 },
2874 {
2875 .start = AP2MDM_STATUS,
2876 .end = AP2MDM_STATUS,
2877 .name = "AP2MDM_STATUS",
2878 .flags = IORESOURCE_IO,
2879 },
2880 {
2881 .start = SGLTE2_PM2QSC_KEYPADPWR,
2882 .end = SGLTE2_PM2QSC_KEYPADPWR,
2883 .name = "AP2MDM_KPDPWR_N",
2884 .flags = IORESOURCE_IO,
2885 },
2886 {
2887 .start = SGLTE2_PM2QSC_SOFT_RESET,
2888 .end = SGLTE2_PM2QSC_SOFT_RESET,
2889 .name = "AP2MDM_SOFT_RESET",
2890 .flags = IORESOURCE_IO,
2891 },
2892};
2893
Joel Kingdacbc822012-01-25 13:30:57 -08002894struct platform_device mdm_8064_device = {
2895 .name = "mdm2_modem",
2896 .id = -1,
2897 .num_resources = ARRAY_SIZE(mdm_resources),
2898 .resource = mdm_resources,
2899};
Praveen Chidambaram8ea3dcd2011-12-07 14:46:31 -07002900
Ameya Thakur2702baf2013-01-30 11:55:25 -08002901struct platform_device amdm_8064_device = {
2902 .name = "mdm2_modem",
2903 .id = 0,
2904 .num_resources = ARRAY_SIZE(mdm_dsda2_amdm_resources),
2905 .resource = mdm_dsda2_amdm_resources,
2906};
2907
2908struct platform_device bmdm_8064_device = {
2909 .name = "mdm2_modem",
2910 .id = 1,
2911 .num_resources = ARRAY_SIZE(mdm_dsda2_bmdm_resources),
2912 .resource = mdm_dsda2_bmdm_resources,
2913};
2914
Ameya Thakure155ece2012-07-09 12:08:37 -07002915struct platform_device i2s_mdm_8064_device = {
2916 .name = "mdm2_modem",
2917 .id = -1,
2918 .num_resources = ARRAY_SIZE(i2s_mdm_resources),
2919 .resource = i2s_mdm_resources,
2920};
Praveen Chidambaram5c8adf22012-02-23 18:44:37 -07002921
Joel King3166e892013-02-26 11:16:08 -08002922struct platform_device sglte_mdm_8064_device = {
2923 .name = "mdm2_modem",
2924 .id = 0,
2925 .num_resources = ARRAY_SIZE(mdm_resources),
2926 .resource = mdm_resources,
2927};
2928
2929struct platform_device sglte2_qsc_8064_device = {
2930 .name = "mdm2_modem",
2931 .id = 1,
2932 .num_resources = ARRAY_SIZE(sglte2_qsc_resources),
2933 .resource = sglte2_qsc_resources,
2934};
2935
Steve Mucklea9aac292012-11-02 15:41:00 -07002936static struct msm_dcvs_sync_rule apq8064_dcvs_sync_rules[] = {
2937 {1026000, 400000},
2938 {384000, 200000},
Steve Muckle93bb4252012-11-12 14:20:39 -08002939 {0, 128000},
Steve Mucklea9aac292012-11-02 15:41:00 -07002940};
2941
2942static struct msm_dcvs_platform_data apq8064_dcvs_data = {
2943 .sync_rules = apq8064_dcvs_sync_rules,
2944 .num_sync_rules = ARRAY_SIZE(apq8064_dcvs_sync_rules),
Steve Muckle28ddcdd2012-11-21 10:12:39 -08002945 .gpu_max_nom_khz = 320000,
Steve Mucklea9aac292012-11-02 15:41:00 -07002946};
2947
2948struct platform_device apq8064_dcvs_device = {
2949 .name = "dcvs",
2950 .id = -1,
2951 .dev = {
2952 .platform_data = &apq8064_dcvs_data,
2953 },
Praveen Chidambaram5c8adf22012-02-23 18:44:37 -07002954};
2955
2956static struct msm_dcvs_core_info apq8064_core_info = {
Abhijeet Dharmapurikar19cf4742012-09-13 11:11:54 -07002957 .num_cores = 4,
2958 .sensors = (int[]){7, 8, 9, 10},
2959 .thermal_poll_ms = 60000,
2960 .core_param = {
Abhijeet Dharmapurikar7e37e6e2012-08-23 18:58:44 -07002961 .core_type = MSM_DCVS_CORE_TYPE_CPU,
Praveen Chidambaram5c8adf22012-02-23 18:44:37 -07002962 },
Abhijeet Dharmapurikar19cf4742012-09-13 11:11:54 -07002963 .algo_param = {
Abhijeet Dharmapurikar7e37e6e2012-08-23 18:58:44 -07002964 .disable_pc_threshold = 1458000,
2965 .em_win_size_min_us = 100000,
2966 .em_win_size_max_us = 300000,
2967 .em_max_util_pct = 97,
2968 .group_id = 1,
2969 .max_freq_chg_time_us = 100000,
2970 .slack_mode_dynamic = 0,
2971 .slack_weight_thresh_pct = 3,
2972 .slack_time_min_us = 45000,
2973 .slack_time_max_us = 45000,
Steve Muckle8d0782e2012-12-06 14:31:00 -08002974 .ss_no_corr_below_freq = 0,
Abhijeet Dharmapurikar7e37e6e2012-08-23 18:58:44 -07002975 .ss_win_size_min_us = 1000000,
2976 .ss_win_size_max_us = 1000000,
2977 .ss_util_pct = 95,
Praveen Chidambaram5c8adf22012-02-23 18:44:37 -07002978 },
Abhijeet Dharmapurikar19cf4742012-09-13 11:11:54 -07002979 .energy_coeffs = {
Abhijeet Dharmapurikar7e37e6e2012-08-23 18:58:44 -07002980 .active_coeff_a = 336,
2981 .active_coeff_b = 0,
2982 .active_coeff_c = 0,
2983
2984 .leakage_coeff_a = -17720,
2985 .leakage_coeff_b = 37,
2986 .leakage_coeff_c = 3329,
2987 .leakage_coeff_d = -277,
2988 },
Abhijeet Dharmapurikar19cf4742012-09-13 11:11:54 -07002989 .power_param = {
Abhijeet Dharmapurikar7e37e6e2012-08-23 18:58:44 -07002990 .current_temp = 25,
Steve Mucklea9aac292012-11-02 15:41:00 -07002991 .num_freq = 0, /* set at runtime */
Abhijeet Dharmapurikar7e37e6e2012-08-23 18:58:44 -07002992 }
Praveen Chidambaram5c8adf22012-02-23 18:44:37 -07002993};
2994
Abhijeet Dharmapurikar6e9b34f2012-09-10 16:03:39 -07002995#define APQ8064_LPM_LATENCY 1000 /* >100 usec for WFI */
2996
2997static struct msm_gov_platform_data gov_platform_data = {
2998 .info = &apq8064_core_info,
2999 .latency = APQ8064_LPM_LATENCY,
3000};
3001
Praveen Chidambaram5c8adf22012-02-23 18:44:37 -07003002struct platform_device apq8064_msm_gov_device = {
3003 .name = "msm_dcvs_gov",
3004 .id = -1,
3005 .dev = {
Abhijeet Dharmapurikar6e9b34f2012-09-10 16:03:39 -07003006 .platform_data = &gov_platform_data,
Praveen Chidambaram5c8adf22012-02-23 18:44:37 -07003007 },
3008};
Stepan Moskovchenko28662c52012-03-01 12:48:45 -08003009
Abhijeet Dharmapurikarde91d2c2012-08-23 14:36:59 -07003010static struct msm_mpd_algo_param apq8064_mpd_algo_param = {
3011 .em_win_size_min_us = 10000,
3012 .em_win_size_max_us = 100000,
3013 .em_max_util_pct = 90,
3014 .online_util_pct_min = 60,
3015 .slack_time_min_us = 50000,
3016 .slack_time_max_us = 100000,
3017};
3018
3019struct platform_device apq8064_msm_mpd_device = {
3020 .name = "msm_mpdecision",
3021 .id = -1,
3022 .dev = {
3023 .platform_data = &apq8064_mpd_algo_param,
3024 },
3025};
3026
Terence Hampson2e1705f2012-04-11 19:55:29 -04003027#ifdef CONFIG_MSM_VCAP
3028#define VCAP_HW_BASE 0x05900000
3029
3030static struct msm_bus_vectors vcap_init_vectors[] = {
3031 {
3032 .src = MSM_BUS_MASTER_VIDEO_CAP,
3033 .dst = MSM_BUS_SLAVE_EBI_CH0,
3034 .ab = 0,
3035 .ib = 0,
3036 },
3037};
3038
Terence Hampson2e1705f2012-04-11 19:55:29 -04003039static struct msm_bus_vectors vcap_480_vectors[] = {
3040 {
3041 .src = MSM_BUS_MASTER_VIDEO_CAP,
3042 .dst = MSM_BUS_SLAVE_EBI_CH0,
Terence Hampson779dc762012-06-07 15:59:27 -04003043 .ab = 480 * 720 * 3 * 60,
3044 .ib = 480 * 720 * 3 * 60 * 1.5,
3045 },
3046};
3047
3048static struct msm_bus_vectors vcap_576_vectors[] = {
3049 {
3050 .src = MSM_BUS_MASTER_VIDEO_CAP,
3051 .dst = MSM_BUS_SLAVE_EBI_CH0,
3052 .ab = 576 * 720 * 3 * 60,
3053 .ib = 576 * 720 * 3 * 60 * 1.5,
Terence Hampson2e1705f2012-04-11 19:55:29 -04003054 },
3055};
3056
3057static struct msm_bus_vectors vcap_720_vectors[] = {
3058 {
3059 .src = MSM_BUS_MASTER_VIDEO_CAP,
3060 .dst = MSM_BUS_SLAVE_EBI_CH0,
Terence Hampson35a1ff02012-04-25 17:07:18 -04003061 .ab = 1280 * 720 * 3 * 60,
3062 .ib = 1280 * 720 * 3 * 60 * 1.5,
Terence Hampson2e1705f2012-04-11 19:55:29 -04003063 },
3064};
3065
3066static struct msm_bus_vectors vcap_1080_vectors[] = {
3067 {
3068 .src = MSM_BUS_MASTER_VIDEO_CAP,
3069 .dst = MSM_BUS_SLAVE_EBI_CH0,
Terence Hampson35a1ff02012-04-25 17:07:18 -04003070 .ab = 1920 * 1080 * 3 * 60,
3071 .ib = 1920 * 1080 * 3 * 60 * 1.5,
Terence Hampson2e1705f2012-04-11 19:55:29 -04003072 },
3073};
3074
3075static struct msm_bus_paths vcap_bus_usecases[] = {
3076 {
3077 ARRAY_SIZE(vcap_init_vectors),
3078 vcap_init_vectors,
3079 },
3080 {
3081 ARRAY_SIZE(vcap_480_vectors),
3082 vcap_480_vectors,
3083 },
3084 {
Terence Hampson779dc762012-06-07 15:59:27 -04003085 ARRAY_SIZE(vcap_576_vectors),
3086 vcap_576_vectors,
3087 },
3088 {
Terence Hampson2e1705f2012-04-11 19:55:29 -04003089 ARRAY_SIZE(vcap_720_vectors),
3090 vcap_720_vectors,
3091 },
3092 {
3093 ARRAY_SIZE(vcap_1080_vectors),
3094 vcap_1080_vectors,
3095 },
3096};
3097
3098static struct msm_bus_scale_pdata vcap_axi_client_pdata = {
3099 vcap_bus_usecases,
3100 ARRAY_SIZE(vcap_bus_usecases),
3101};
3102
3103static struct resource msm_vcap_resources[] = {
3104 {
3105 .name = "vcap",
3106 .start = VCAP_HW_BASE,
3107 .end = VCAP_HW_BASE + SZ_1M - 1,
3108 .flags = IORESOURCE_MEM,
3109 },
3110 {
Terence Hampsonaeb793e2012-05-11 11:41:16 -04003111 .name = "vc_irq",
Terence Hampson2e1705f2012-04-11 19:55:29 -04003112 .start = VCAP_VC,
3113 .end = VCAP_VC,
3114 .flags = IORESOURCE_IRQ,
3115 },
Terence Hampsonaeb793e2012-05-11 11:41:16 -04003116 {
3117 .name = "vp_irq",
3118 .start = VCAP_VP,
3119 .end = VCAP_VP,
3120 .flags = IORESOURCE_IRQ,
3121 },
Terence Hampson2e1705f2012-04-11 19:55:29 -04003122};
3123
3124static unsigned vcap_gpios[] = {
3125 2, 3, 4, 5, 6, 7, 8, 9, 10,
3126 11, 12, 13, 18, 19, 20, 21,
3127 22, 23, 24, 25, 26, 80, 82,
3128 83, 84, 85, 86, 87,
3129};
3130
3131static struct vcap_platform_data vcap_pdata = {
3132 .gpios = vcap_gpios,
3133 .num_gpios = ARRAY_SIZE(vcap_gpios),
3134 .bus_client_pdata = &vcap_axi_client_pdata
3135};
3136
3137struct platform_device msm8064_device_vcap = {
3138 .name = "msm_vcap",
3139 .id = 0,
3140 .resource = msm_vcap_resources,
3141 .num_resources = ARRAY_SIZE(msm_vcap_resources),
3142 .dev = {
3143 .platform_data = &vcap_pdata,
3144 },
3145};
3146#endif
3147
Stepan Moskovchenko28662c52012-03-01 12:48:45 -08003148static struct resource msm_cache_erp_resources[] = {
3149 {
3150 .name = "l1_irq",
3151 .start = SC_SICCPUXEXTFAULTIRPTREQ,
3152 .flags = IORESOURCE_IRQ,
3153 },
3154 {
3155 .name = "l2_irq",
3156 .start = APCC_QGICL2IRPTREQ,
3157 .flags = IORESOURCE_IRQ,
3158 }
3159};
3160
3161struct platform_device apq8064_device_cache_erp = {
3162 .name = "msm_cache_erp",
3163 .id = -1,
3164 .num_resources = ARRAY_SIZE(msm_cache_erp_resources),
3165 .resource = msm_cache_erp_resources,
3166};
Pratik Patel212ab362012-03-16 12:30:07 -07003167
Pratik Patel3b0ca882012-06-01 16:54:14 -07003168#define CORESIGHT_PHYS_BASE 0x01A00000
3169#define CORESIGHT_FUNNEL_PHYS_BASE (CORESIGHT_PHYS_BASE + 0x4000)
3170#define CORESIGHT_ETM2_PHYS_BASE (CORESIGHT_PHYS_BASE + 0x1E000)
3171#define CORESIGHT_ETM3_PHYS_BASE (CORESIGHT_PHYS_BASE + 0x1F000)
Pratik Patel212ab362012-03-16 12:30:07 -07003172
Pratik Patel3b0ca882012-06-01 16:54:14 -07003173static struct resource coresight_funnel_resources[] = {
Pratik Patel212ab362012-03-16 12:30:07 -07003174 {
Pratik Patel3b0ca882012-06-01 16:54:14 -07003175 .start = CORESIGHT_FUNNEL_PHYS_BASE,
3176 .end = CORESIGHT_FUNNEL_PHYS_BASE + SZ_4K - 1,
Pratik Patel212ab362012-03-16 12:30:07 -07003177 .flags = IORESOURCE_MEM,
3178 },
3179};
3180
Pratik Patel3b0ca882012-06-01 16:54:14 -07003181static const int coresight_funnel_outports[] = { 0, 1 };
3182static const int coresight_funnel_child_ids[] = { 0, 1 };
3183static const int coresight_funnel_child_ports[] = { 0, 0 };
3184
3185static struct coresight_platform_data coresight_funnel_pdata = {
3186 .id = 2,
3187 .name = "coresight-funnel",
Pratik Patel98e6ce32012-09-06 09:41:49 -07003188 .nr_inports = 8,
Pratik Patel3b0ca882012-06-01 16:54:14 -07003189 .outports = coresight_funnel_outports,
3190 .child_ids = coresight_funnel_child_ids,
3191 .child_ports = coresight_funnel_child_ports,
3192 .nr_outports = ARRAY_SIZE(coresight_funnel_outports),
3193};
3194
3195struct platform_device apq8064_coresight_funnel_device = {
3196 .name = "coresight-funnel",
Pratik Patel212ab362012-03-16 12:30:07 -07003197 .id = 0,
Pratik Patel3b0ca882012-06-01 16:54:14 -07003198 .num_resources = ARRAY_SIZE(coresight_funnel_resources),
3199 .resource = coresight_funnel_resources,
3200 .dev = {
3201 .platform_data = &coresight_funnel_pdata,
3202 },
3203};
3204
3205static struct resource coresight_etm2_resources[] = {
3206 {
3207 .start = CORESIGHT_ETM2_PHYS_BASE,
3208 .end = CORESIGHT_ETM2_PHYS_BASE + SZ_4K - 1,
3209 .flags = IORESOURCE_MEM,
3210 },
3211};
3212
3213static const int coresight_etm2_outports[] = { 0 };
3214static const int coresight_etm2_child_ids[] = { 2 };
3215static const int coresight_etm2_child_ports[] = { 4 };
3216
3217static struct coresight_platform_data coresight_etm2_pdata = {
3218 .id = 6,
3219 .name = "coresight-etm2",
Pratik Patel98e6ce32012-09-06 09:41:49 -07003220 .nr_inports = 0,
Pratik Patel3b0ca882012-06-01 16:54:14 -07003221 .outports = coresight_etm2_outports,
3222 .child_ids = coresight_etm2_child_ids,
3223 .child_ports = coresight_etm2_child_ports,
3224 .nr_outports = ARRAY_SIZE(coresight_etm2_outports),
3225};
3226
3227struct platform_device coresight_etm2_device = {
3228 .name = "coresight-etm",
3229 .id = 2,
3230 .num_resources = ARRAY_SIZE(coresight_etm2_resources),
3231 .resource = coresight_etm2_resources,
3232 .dev = {
3233 .platform_data = &coresight_etm2_pdata,
3234 },
3235};
3236
3237static struct resource coresight_etm3_resources[] = {
3238 {
3239 .start = CORESIGHT_ETM3_PHYS_BASE,
3240 .end = CORESIGHT_ETM3_PHYS_BASE + SZ_4K - 1,
3241 .flags = IORESOURCE_MEM,
3242 },
3243};
3244
3245static const int coresight_etm3_outports[] = { 0 };
3246static const int coresight_etm3_child_ids[] = { 2 };
3247static const int coresight_etm3_child_ports[] = { 5 };
3248
3249static struct coresight_platform_data coresight_etm3_pdata = {
3250 .id = 7,
3251 .name = "coresight-etm3",
Pratik Patel98e6ce32012-09-06 09:41:49 -07003252 .nr_inports = 0,
Pratik Patel3b0ca882012-06-01 16:54:14 -07003253 .outports = coresight_etm3_outports,
3254 .child_ids = coresight_etm3_child_ids,
3255 .child_ports = coresight_etm3_child_ports,
3256 .nr_outports = ARRAY_SIZE(coresight_etm3_outports),
3257};
3258
3259struct platform_device coresight_etm3_device = {
3260 .name = "coresight-etm",
3261 .id = 3,
3262 .num_resources = ARRAY_SIZE(coresight_etm3_resources),
3263 .resource = coresight_etm3_resources,
3264 .dev = {
3265 .platform_data = &coresight_etm3_pdata,
3266 },
Pratik Patel212ab362012-03-16 12:30:07 -07003267};
Laura Abbott0577d7b2012-04-17 11:14:30 -07003268
3269struct msm_iommu_domain_name apq8064_iommu_ctx_names[] = {
3270 /* Camera */
3271 {
Laura Abbott0577d7b2012-04-17 11:14:30 -07003272 .name = "ijpeg_src",
3273 .domain = CAMERA_DOMAIN,
3274 },
3275 /* Camera */
3276 {
3277 .name = "ijpeg_dst",
3278 .domain = CAMERA_DOMAIN,
3279 },
3280 /* Camera */
3281 {
3282 .name = "jpegd_src",
3283 .domain = CAMERA_DOMAIN,
3284 },
3285 /* Camera */
3286 {
3287 .name = "jpegd_dst",
3288 .domain = CAMERA_DOMAIN,
3289 },
Olav Hauganef95ae32012-05-15 09:50:30 -07003290 /* Rotator src*/
Laura Abbott0577d7b2012-04-17 11:14:30 -07003291 {
3292 .name = "rot_src",
Olav Hauganef95ae32012-05-15 09:50:30 -07003293 .domain = ROTATOR_SRC_DOMAIN,
Laura Abbott0577d7b2012-04-17 11:14:30 -07003294 },
Olav Hauganef95ae32012-05-15 09:50:30 -07003295 /* Rotator dst */
Laura Abbott0577d7b2012-04-17 11:14:30 -07003296 {
3297 .name = "rot_dst",
Olav Hauganef95ae32012-05-15 09:50:30 -07003298 .domain = ROTATOR_DST_DOMAIN,
Laura Abbott0577d7b2012-04-17 11:14:30 -07003299 },
3300 /* Video */
3301 {
3302 .name = "vcodec_a_mm1",
3303 .domain = VIDEO_DOMAIN,
3304 },
3305 /* Video */
3306 {
3307 .name = "vcodec_b_mm2",
3308 .domain = VIDEO_DOMAIN,
3309 },
3310 /* Video */
3311 {
3312 .name = "vcodec_a_stream",
3313 .domain = VIDEO_DOMAIN,
3314 },
3315};
3316
3317static struct mem_pool apq8064_video_pools[] = {
3318 /*
3319 * Video hardware has the following requirements:
3320 * 1. All video addresses used by the video hardware must be at a higher
3321 * address than video firmware address.
3322 * 2. Video hardware can only access a range of 256MB from the base of
3323 * the video firmware.
3324 */
3325 [VIDEO_FIRMWARE_POOL] =
3326 /* Low addresses, intended for video firmware */
3327 {
3328 .paddr = SZ_128K,
3329 .size = SZ_16M - SZ_128K,
3330 },
3331 [VIDEO_MAIN_POOL] =
3332 /* Main video pool */
3333 {
3334 .paddr = SZ_16M,
3335 .size = SZ_256M - SZ_16M,
3336 },
3337 [GEN_POOL] =
3338 /* Remaining address space up to 2G */
3339 {
3340 .paddr = SZ_256M,
3341 .size = SZ_2G - SZ_256M,
3342 },
3343};
3344
3345static struct mem_pool apq8064_camera_pools[] = {
3346 [GEN_POOL] =
3347 /* One address space for camera */
3348 {
3349 .paddr = SZ_128K,
3350 .size = SZ_2G - SZ_128K,
3351 },
3352};
3353
Olav Hauganef95ae32012-05-15 09:50:30 -07003354static struct mem_pool apq8064_display_read_pools[] = {
Laura Abbott0577d7b2012-04-17 11:14:30 -07003355 [GEN_POOL] =
Olav Hauganef95ae32012-05-15 09:50:30 -07003356 /* One address space for display reads */
Laura Abbott0577d7b2012-04-17 11:14:30 -07003357 {
3358 .paddr = SZ_128K,
3359 .size = SZ_2G - SZ_128K,
3360 },
3361};
3362
Olav Hauganef95ae32012-05-15 09:50:30 -07003363static struct mem_pool apq8064_display_write_pools[] = {
Laura Abbott0577d7b2012-04-17 11:14:30 -07003364 [GEN_POOL] =
Olav Hauganef95ae32012-05-15 09:50:30 -07003365 /* One address space for display writes */
3366 {
3367 .paddr = SZ_128K,
3368 .size = SZ_2G - SZ_128K,
3369 },
3370};
3371
3372static struct mem_pool apq8064_rotator_src_pools[] = {
3373 [GEN_POOL] =
3374 /* One address space for rotator src */
3375 {
3376 .paddr = SZ_128K,
3377 .size = SZ_2G - SZ_128K,
3378 },
3379};
3380
3381static struct mem_pool apq8064_rotator_dst_pools[] = {
3382 [GEN_POOL] =
3383 /* One address space for rotator dst */
Laura Abbott0577d7b2012-04-17 11:14:30 -07003384 {
3385 .paddr = SZ_128K,
3386 .size = SZ_2G - SZ_128K,
3387 },
3388};
3389
3390static struct msm_iommu_domain apq8064_iommu_domains[] = {
3391 [VIDEO_DOMAIN] = {
3392 .iova_pools = apq8064_video_pools,
3393 .npools = ARRAY_SIZE(apq8064_video_pools),
3394 },
3395 [CAMERA_DOMAIN] = {
3396 .iova_pools = apq8064_camera_pools,
3397 .npools = ARRAY_SIZE(apq8064_camera_pools),
3398 },
Olav Hauganef95ae32012-05-15 09:50:30 -07003399 [DISPLAY_READ_DOMAIN] = {
3400 .iova_pools = apq8064_display_read_pools,
3401 .npools = ARRAY_SIZE(apq8064_display_read_pools),
Laura Abbott0577d7b2012-04-17 11:14:30 -07003402 },
Olav Hauganef95ae32012-05-15 09:50:30 -07003403 [DISPLAY_WRITE_DOMAIN] = {
3404 .iova_pools = apq8064_display_write_pools,
3405 .npools = ARRAY_SIZE(apq8064_display_write_pools),
3406 },
3407 [ROTATOR_SRC_DOMAIN] = {
3408 .iova_pools = apq8064_rotator_src_pools,
3409 .npools = ARRAY_SIZE(apq8064_rotator_src_pools),
3410 },
3411 [ROTATOR_DST_DOMAIN] = {
3412 .iova_pools = apq8064_rotator_dst_pools,
3413 .npools = ARRAY_SIZE(apq8064_rotator_dst_pools),
Laura Abbott0577d7b2012-04-17 11:14:30 -07003414 },
3415};
3416
3417struct iommu_domains_pdata apq8064_iommu_domain_pdata = {
3418 .domains = apq8064_iommu_domains,
3419 .ndomains = ARRAY_SIZE(apq8064_iommu_domains),
3420 .domain_names = apq8064_iommu_ctx_names,
3421 .nnames = ARRAY_SIZE(apq8064_iommu_ctx_names),
3422 .domain_alloc_flags = 0,
3423};
3424
3425struct platform_device apq8064_iommu_domain_device = {
3426 .name = "iommu_domains",
3427 .id = -1,
3428 .dev = {
3429 .platform_data = &apq8064_iommu_domain_pdata,
Laura Abbott532b2df2012-04-12 10:53:48 -07003430 }
3431};
3432
3433struct msm_rtb_platform_data apq8064_rtb_pdata = {
3434 .size = SZ_1M,
3435};
3436
3437static int __init msm_rtb_set_buffer_size(char *p)
3438{
3439 int s;
3440
3441 s = memparse(p, NULL);
3442 apq8064_rtb_pdata.size = ALIGN(s, SZ_4K);
3443 return 0;
3444}
3445early_param("msm_rtb_size", msm_rtb_set_buffer_size);
3446
3447struct platform_device apq8064_rtb_device = {
3448 .name = "msm_rtb",
3449 .id = -1,
3450 .dev = {
3451 .platform_data = &apq8064_rtb_pdata,
Laura Abbott0577d7b2012-04-17 11:14:30 -07003452 },
3453};
Laura Abbott93a4a352012-05-25 09:26:35 -07003454
3455#define APQ8064_L1_SIZE SZ_1M
3456/*
3457 * The actual L2 size is smaller but we need a larger buffer
3458 * size to store other dump information
3459 */
3460#define APQ8064_L2_SIZE SZ_8M
3461
3462struct msm_cache_dump_platform_data apq8064_cache_dump_pdata = {
3463 .l2_size = APQ8064_L2_SIZE,
3464 .l1_size = APQ8064_L1_SIZE,
3465};
3466
3467struct platform_device apq8064_cache_dump_device = {
3468 .name = "msm_cache_dump",
3469 .id = -1,
3470 .dev = {
3471 .platform_data = &apq8064_cache_dump_pdata,
3472 },
3473};