blob: 912d1b0409010f09d52002c26d47d4d69f10ee3f [file] [log] [blame]
Manu Gautam5143b252012-01-05 19:25:23 -08001/* Copyright (c) 2011-2012, Code Aurora Forum. All rights reserved.
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002 *
3 * This program is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License version 2 and
5 * only version 2 as published by the Free Software Foundation.
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
11 *
12 */
13
14#include <linux/kernel.h>
15#include <linux/list.h>
16#include <linux/platform_device.h>
17#include <linux/msm_rotator.h>
18#include <linux/clkdev.h>
Hemant Kumard86c4882012-01-24 19:39:37 -080019#include <linux/dma-mapping.h>
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070020#include <mach/irqs-8064.h>
21#include <mach/board.h>
22#include <mach/msm_iomap.h>
Yan He06913ce2011-08-26 16:33:46 -070023#include <mach/usbdiag.h>
24#include <mach/msm_sps.h>
Jeff Ohlstein905f1ce2011-09-07 18:50:18 -070025#include <mach/dma.h>
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -080026#include <sound/msm-dai-q6.h>
27#include <sound/apr_audio.h>
Gagan Mac8a7a5d32011-11-11 16:43:06 -070028#include <mach/msm_bus_board.h>
Praveen Chidambaram78499012011-11-01 17:15:17 -060029#include <mach/rpm.h>
Joel Kingdacbc822012-01-25 13:30:57 -080030#include <mach/mdm2.h>
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070031#include "clock.h"
32#include "devices.h"
Jeff Ohlstein7e668552011-10-06 16:17:25 -070033#include "msm_watchdog.h"
Praveen Chidambaram78499012011-11-01 17:15:17 -060034#include "rpm_stats.h"
35#include "rpm_log.h"
36#include "mpm.h"
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070037
38/* Address of GSBI blocks */
Stepan Moskovchenko2701a442011-08-19 13:47:22 -070039#define MSM_GSBI1_PHYS 0x12440000
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070040#define MSM_GSBI3_PHYS 0x16200000
Harini Jayaramanc4c58692011-07-19 14:50:10 -060041#define MSM_GSBI4_PHYS 0x16300000
42#define MSM_GSBI5_PHYS 0x1A200000
43#define MSM_GSBI6_PHYS 0x16500000
44#define MSM_GSBI7_PHYS 0x16600000
45
Kenneth Heitke748593a2011-07-15 15:45:11 -060046/* GSBI UART devices */
Stepan Moskovchenko2701a442011-08-19 13:47:22 -070047#define MSM_UART1DM_PHYS (MSM_GSBI1_PHYS + 0x10000)
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070048#define MSM_UART3DM_PHYS (MSM_GSBI3_PHYS + 0x40000)
Jin Hong4bbbfba2012-02-02 21:48:07 -080049#define MSM_UART7DM_PHYS (MSM_GSBI7_PHYS + 0x40000)
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070050
Harini Jayaramanc4c58692011-07-19 14:50:10 -060051/* GSBI QUP devices */
52#define MSM_GSBI3_QUP_PHYS (MSM_GSBI3_PHYS + 0x80000)
53#define MSM_GSBI4_QUP_PHYS (MSM_GSBI4_PHYS + 0x80000)
54#define MSM_GSBI5_QUP_PHYS (MSM_GSBI5_PHYS + 0x80000)
55#define MSM_GSBI6_QUP_PHYS (MSM_GSBI6_PHYS + 0x80000)
56#define MSM_GSBI7_QUP_PHYS (MSM_GSBI7_PHYS + 0x80000)
57#define MSM_QUP_SIZE SZ_4K
58
Kenneth Heitke36920d32011-07-20 16:44:30 -060059/* Address of SSBI CMD */
60#define MSM_PMIC1_SSBI_CMD_PHYS 0x00500000
61#define MSM_PMIC2_SSBI_CMD_PHYS 0x00C00000
62#define MSM_PMIC_SSBI_SIZE SZ_4K
Harini Jayaramanc4c58692011-07-19 14:50:10 -060063
Hemant Kumarcaa09092011-07-30 00:26:33 -070064/* Address of HS USBOTG1 */
Hemant Kumard86c4882012-01-24 19:39:37 -080065#define MSM_HSUSB1_PHYS 0x12500000
66#define MSM_HSUSB1_SIZE SZ_4K
Hemant Kumarcaa09092011-07-30 00:26:33 -070067
Jeff Ohlstein7e668552011-10-06 16:17:25 -070068static struct msm_watchdog_pdata msm_watchdog_pdata = {
69 .pet_time = 10000,
70 .bark_time = 11000,
71 .has_secure = true,
Joel Kinge7ca6f72012-02-09 20:51:25 -080072 .needs_expired_enable = true,
Jeff Ohlstein7e668552011-10-06 16:17:25 -070073};
74
75struct platform_device msm8064_device_watchdog = {
76 .name = "msm_watchdog",
77 .id = -1,
78 .dev = {
79 .platform_data = &msm_watchdog_pdata,
80 },
81};
82
Joel King0581896d2011-07-19 16:43:28 -070083static struct resource msm_dmov_resource[] = {
84 {
Jeff Ohlstein4af72692011-11-07 15:59:17 -080085 .start = ADM_0_SCSS_1_IRQ,
Joel King0581896d2011-07-19 16:43:28 -070086 .flags = IORESOURCE_IRQ,
87 },
Jeff Ohlstein905f1ce2011-09-07 18:50:18 -070088 {
Jeff Ohlstein4af72692011-11-07 15:59:17 -080089 .start = 0x18320000,
90 .end = 0x18320000 + SZ_1M - 1,
Jeff Ohlstein905f1ce2011-09-07 18:50:18 -070091 .flags = IORESOURCE_MEM,
92 },
93};
94
95static struct msm_dmov_pdata msm_dmov_pdata = {
Jeff Ohlstein4af72692011-11-07 15:59:17 -080096 .sd = 1,
Jeff Ohlstein905f1ce2011-09-07 18:50:18 -070097 .sd_size = 0x800,
Joel King0581896d2011-07-19 16:43:28 -070098};
99
Stepan Moskovchenkodf13d342011-08-03 19:01:25 -0700100struct platform_device apq8064_device_dmov = {
Joel King0581896d2011-07-19 16:43:28 -0700101 .name = "msm_dmov",
102 .id = -1,
103 .resource = msm_dmov_resource,
104 .num_resources = ARRAY_SIZE(msm_dmov_resource),
Jeff Ohlstein905f1ce2011-09-07 18:50:18 -0700105 .dev = {
106 .platform_data = &msm_dmov_pdata,
107 },
Joel King0581896d2011-07-19 16:43:28 -0700108};
109
Stepan Moskovchenko2701a442011-08-19 13:47:22 -0700110static struct resource resources_uart_gsbi1[] = {
111 {
112 .start = APQ8064_GSBI1_UARTDM_IRQ,
113 .end = APQ8064_GSBI1_UARTDM_IRQ,
114 .flags = IORESOURCE_IRQ,
115 },
116 {
117 .start = MSM_UART1DM_PHYS,
118 .end = MSM_UART1DM_PHYS + PAGE_SIZE - 1,
119 .name = "uartdm_resource",
120 .flags = IORESOURCE_MEM,
121 },
122 {
123 .start = MSM_GSBI1_PHYS,
124 .end = MSM_GSBI1_PHYS + PAGE_SIZE - 1,
125 .name = "gsbi_resource",
126 .flags = IORESOURCE_MEM,
127 },
128};
129
130struct platform_device apq8064_device_uart_gsbi1 = {
131 .name = "msm_serial_hsl",
Jin Hong4bbbfba2012-02-02 21:48:07 -0800132 .id = 1,
Stepan Moskovchenko2701a442011-08-19 13:47:22 -0700133 .num_resources = ARRAY_SIZE(resources_uart_gsbi1),
134 .resource = resources_uart_gsbi1,
135};
136
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700137static struct resource resources_uart_gsbi3[] = {
138 {
139 .start = GSBI3_UARTDM_IRQ,
140 .end = GSBI3_UARTDM_IRQ,
141 .flags = IORESOURCE_IRQ,
142 },
143 {
144 .start = MSM_UART3DM_PHYS,
145 .end = MSM_UART3DM_PHYS + PAGE_SIZE - 1,
146 .name = "uartdm_resource",
147 .flags = IORESOURCE_MEM,
148 },
149 {
150 .start = MSM_GSBI3_PHYS,
151 .end = MSM_GSBI3_PHYS + PAGE_SIZE - 1,
152 .name = "gsbi_resource",
153 .flags = IORESOURCE_MEM,
154 },
155};
156
157struct platform_device apq8064_device_uart_gsbi3 = {
158 .name = "msm_serial_hsl",
159 .id = 0,
160 .num_resources = ARRAY_SIZE(resources_uart_gsbi3),
161 .resource = resources_uart_gsbi3,
162};
163
Jing Lin04601f92012-02-05 15:36:07 -0800164static struct resource resources_qup_i2c_gsbi3[] = {
165 {
166 .name = "gsbi_qup_i2c_addr",
167 .start = MSM_GSBI3_PHYS,
168 .end = MSM_GSBI3_PHYS + 4 - 1,
169 .flags = IORESOURCE_MEM,
170 },
171 {
172 .name = "qup_phys_addr",
173 .start = MSM_GSBI3_QUP_PHYS,
174 .end = MSM_GSBI3_QUP_PHYS + MSM_QUP_SIZE - 1,
175 .flags = IORESOURCE_MEM,
176 },
177 {
178 .name = "qup_err_intr",
179 .start = GSBI3_QUP_IRQ,
180 .end = GSBI3_QUP_IRQ,
181 .flags = IORESOURCE_IRQ,
182 },
183 {
184 .name = "i2c_clk",
185 .start = 9,
186 .end = 9,
187 .flags = IORESOURCE_IO,
188 },
189 {
190 .name = "i2c_sda",
191 .start = 8,
192 .end = 8,
193 .flags = IORESOURCE_IO,
194 },
195};
196
197struct platform_device apq8064_device_qup_i2c_gsbi3 = {
198 .name = "qup_i2c",
199 .id = 3,
200 .num_resources = ARRAY_SIZE(resources_qup_i2c_gsbi3),
201 .resource = resources_qup_i2c_gsbi3,
202};
203
Kenneth Heitke748593a2011-07-15 15:45:11 -0600204static struct resource resources_qup_i2c_gsbi4[] = {
205 {
206 .name = "gsbi_qup_i2c_addr",
207 .start = MSM_GSBI4_PHYS,
Harini Jayaramane1554a92011-09-15 14:43:02 -0600208 .end = MSM_GSBI4_PHYS + 4 - 1,
Kenneth Heitke748593a2011-07-15 15:45:11 -0600209 .flags = IORESOURCE_MEM,
210 },
211 {
212 .name = "qup_phys_addr",
213 .start = MSM_GSBI4_QUP_PHYS,
Harini Jayaramane1554a92011-09-15 14:43:02 -0600214 .end = MSM_GSBI4_QUP_PHYS + MSM_QUP_SIZE - 1,
Kenneth Heitke748593a2011-07-15 15:45:11 -0600215 .flags = IORESOURCE_MEM,
216 },
217 {
218 .name = "qup_err_intr",
219 .start = GSBI4_QUP_IRQ,
220 .end = GSBI4_QUP_IRQ,
221 .flags = IORESOURCE_IRQ,
222 },
223};
224
225struct platform_device apq8064_device_qup_i2c_gsbi4 = {
226 .name = "qup_i2c",
227 .id = 4,
228 .num_resources = ARRAY_SIZE(resources_qup_i2c_gsbi4),
229 .resource = resources_qup_i2c_gsbi4,
230};
231
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700232static struct resource resources_qup_spi_gsbi5[] = {
233 {
234 .name = "spi_base",
235 .start = MSM_GSBI5_QUP_PHYS,
236 .end = MSM_GSBI5_QUP_PHYS + SZ_4K - 1,
237 .flags = IORESOURCE_MEM,
238 },
239 {
240 .name = "gsbi_base",
241 .start = MSM_GSBI5_PHYS,
242 .end = MSM_GSBI5_PHYS + 4 - 1,
243 .flags = IORESOURCE_MEM,
244 },
245 {
246 .name = "spi_irq_in",
247 .start = GSBI5_QUP_IRQ,
248 .end = GSBI5_QUP_IRQ,
249 .flags = IORESOURCE_IRQ,
250 },
251};
252
253struct platform_device apq8064_device_qup_spi_gsbi5 = {
254 .name = "spi_qsd",
255 .id = 0,
256 .num_resources = ARRAY_SIZE(resources_qup_spi_gsbi5),
257 .resource = resources_qup_spi_gsbi5,
258};
259
Jin Hong4bbbfba2012-02-02 21:48:07 -0800260static struct resource resources_uart_gsbi7[] = {
261 {
262 .start = GSBI7_UARTDM_IRQ,
263 .end = GSBI7_UARTDM_IRQ,
264 .flags = IORESOURCE_IRQ,
265 },
266 {
267 .start = MSM_UART7DM_PHYS,
268 .end = MSM_UART7DM_PHYS + PAGE_SIZE - 1,
269 .name = "uartdm_resource",
270 .flags = IORESOURCE_MEM,
271 },
272 {
273 .start = MSM_GSBI7_PHYS,
274 .end = MSM_GSBI7_PHYS + PAGE_SIZE - 1,
275 .name = "gsbi_resource",
276 .flags = IORESOURCE_MEM,
277 },
278};
279
280struct platform_device apq8064_device_uart_gsbi7 = {
281 .name = "msm_serial_hsl",
282 .id = 0,
283 .num_resources = ARRAY_SIZE(resources_uart_gsbi7),
284 .resource = resources_uart_gsbi7,
285};
286
Bharath Ramachandramurthyb8e797f2011-11-30 12:08:42 -0800287struct platform_device apq_pcm = {
288 .name = "msm-pcm-dsp",
289 .id = -1,
290};
291
292struct platform_device apq_pcm_routing = {
293 .name = "msm-pcm-routing",
294 .id = -1,
295};
296
297struct platform_device apq_cpudai0 = {
298 .name = "msm-dai-q6",
299 .id = 0x4000,
300};
301
302struct platform_device apq_cpudai1 = {
303 .name = "msm-dai-q6",
304 .id = 0x4001,
305};
306
307struct platform_device apq_cpudai_hdmi_rx = {
308 .name = "msm-dai-q6",
309 .id = 8,
310};
311
312struct platform_device apq_cpudai_bt_rx = {
313 .name = "msm-dai-q6",
314 .id = 0x3000,
315};
316
317struct platform_device apq_cpudai_bt_tx = {
318 .name = "msm-dai-q6",
319 .id = 0x3001,
320};
321
322struct platform_device apq_cpudai_fm_rx = {
323 .name = "msm-dai-q6",
324 .id = 0x3004,
325};
326
327struct platform_device apq_cpudai_fm_tx = {
328 .name = "msm-dai-q6",
329 .id = 0x3005,
330};
331
332/*
333 * Machine specific data for AUX PCM Interface
334 * which the driver will be unware of.
335 */
336struct msm_dai_auxpcm_pdata apq_auxpcm_rx_pdata = {
337 .clk = "pcm_clk",
338 .mode = AFE_PCM_CFG_MODE_PCM,
339 .sync = AFE_PCM_CFG_SYNC_INT,
340 .frame = AFE_PCM_CFG_FRM_256BPF,
341 .quant = AFE_PCM_CFG_QUANT_LINEAR_NOPAD,
342 .slot = 0,
343 .data = AFE_PCM_CFG_CDATAOE_MASTER,
344 .pcm_clk_rate = 2048000,
345};
346
347struct platform_device apq_cpudai_auxpcm_rx = {
348 .name = "msm-dai-q6",
349 .id = 2,
350 .dev = {
351 .platform_data = &apq_auxpcm_rx_pdata,
352 },
353};
354
355struct platform_device apq_cpudai_auxpcm_tx = {
356 .name = "msm-dai-q6",
357 .id = 3,
358};
359
360struct platform_device apq_cpu_fe = {
361 .name = "msm-dai-fe",
362 .id = -1,
363};
364
365struct platform_device apq_stub_codec = {
366 .name = "msm-stub-codec",
367 .id = 1,
368};
369
370struct platform_device apq_voice = {
371 .name = "msm-pcm-voice",
372 .id = -1,
373};
374
375struct platform_device apq_voip = {
376 .name = "msm-voip-dsp",
377 .id = -1,
378};
379
380struct platform_device apq_lpa_pcm = {
381 .name = "msm-pcm-lpa",
382 .id = -1,
383};
384
385struct platform_device apq_pcm_hostless = {
386 .name = "msm-pcm-hostless",
387 .id = -1,
388};
389
390struct platform_device apq_cpudai_afe_01_rx = {
391 .name = "msm-dai-q6",
392 .id = 0xE0,
393};
394
395struct platform_device apq_cpudai_afe_01_tx = {
396 .name = "msm-dai-q6",
397 .id = 0xF0,
398};
399
400struct platform_device apq_cpudai_afe_02_rx = {
401 .name = "msm-dai-q6",
402 .id = 0xF1,
403};
404
405struct platform_device apq_cpudai_afe_02_tx = {
406 .name = "msm-dai-q6",
407 .id = 0xE1,
408};
409
410struct platform_device apq_pcm_afe = {
411 .name = "msm-pcm-afe",
412 .id = -1,
413};
414
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700415static struct resource resources_ssbi_pmic1[] = {
416 {
417 .start = MSM_PMIC1_SSBI_CMD_PHYS,
418 .end = MSM_PMIC1_SSBI_CMD_PHYS + MSM_PMIC_SSBI_SIZE - 1,
419 .flags = IORESOURCE_MEM,
420 },
421};
422
Sagar Dharia8bdcdaf2011-09-16 16:01:15 -0600423#define LPASS_SLIMBUS_PHYS 0x28080000
424#define LPASS_SLIMBUS_BAM_PHYS 0x28084000
Swaminathan Sathappan2316e082012-02-03 14:07:17 -0800425#define LPASS_SLIMBUS_SLEW (MSM8960_TLMM_PHYS + 0x207C)
Sagar Dharia8bdcdaf2011-09-16 16:01:15 -0600426/* Board info for the slimbus slave device */
427static struct resource slimbus_res[] = {
428 {
429 .start = LPASS_SLIMBUS_PHYS,
430 .end = LPASS_SLIMBUS_PHYS + 8191,
431 .flags = IORESOURCE_MEM,
432 .name = "slimbus_physical",
433 },
434 {
435 .start = LPASS_SLIMBUS_BAM_PHYS,
436 .end = LPASS_SLIMBUS_BAM_PHYS + 8191,
437 .flags = IORESOURCE_MEM,
438 .name = "slimbus_bam_physical",
439 },
440 {
Swaminathan Sathappan2316e082012-02-03 14:07:17 -0800441 .start = LPASS_SLIMBUS_SLEW,
442 .end = LPASS_SLIMBUS_SLEW + 4 - 1,
443 .flags = IORESOURCE_MEM,
444 .name = "slimbus_slew_reg",
445 },
446 {
Sagar Dharia8bdcdaf2011-09-16 16:01:15 -0600447 .start = SLIMBUS0_CORE_EE1_IRQ,
448 .end = SLIMBUS0_CORE_EE1_IRQ,
449 .flags = IORESOURCE_IRQ,
450 .name = "slimbus_irq",
451 },
452 {
453 .start = SLIMBUS0_BAM_EE1_IRQ,
454 .end = SLIMBUS0_BAM_EE1_IRQ,
455 .flags = IORESOURCE_IRQ,
456 .name = "slimbus_bam_irq",
457 },
458};
459
460struct platform_device apq8064_slim_ctrl = {
461 .name = "msm_slim_ctrl",
462 .id = 1,
463 .num_resources = ARRAY_SIZE(slimbus_res),
464 .resource = slimbus_res,
465 .dev = {
466 .coherent_dma_mask = 0xffffffffULL,
467 },
468};
469
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700470struct platform_device apq8064_device_ssbi_pmic1 = {
471 .name = "msm_ssbi",
472 .id = 0,
473 .resource = resources_ssbi_pmic1,
474 .num_resources = ARRAY_SIZE(resources_ssbi_pmic1),
475};
476
477static struct resource resources_ssbi_pmic2[] = {
478 {
479 .start = MSM_PMIC2_SSBI_CMD_PHYS,
480 .end = MSM_PMIC2_SSBI_CMD_PHYS + MSM_PMIC_SSBI_SIZE - 1,
481 .flags = IORESOURCE_MEM,
482 },
483};
484
485struct platform_device apq8064_device_ssbi_pmic2 = {
486 .name = "msm_ssbi",
487 .id = 1,
488 .resource = resources_ssbi_pmic2,
489 .num_resources = ARRAY_SIZE(resources_ssbi_pmic2),
490};
491
492static struct resource resources_otg[] = {
493 {
Hemant Kumard86c4882012-01-24 19:39:37 -0800494 .start = MSM_HSUSB1_PHYS,
495 .end = MSM_HSUSB1_PHYS + MSM_HSUSB1_SIZE - 1,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700496 .flags = IORESOURCE_MEM,
497 },
498 {
499 .start = USB1_HS_IRQ,
500 .end = USB1_HS_IRQ,
501 .flags = IORESOURCE_IRQ,
502 },
503};
504
Stepan Moskovchenko14aa6492011-08-08 15:15:01 -0700505struct platform_device apq8064_device_otg = {
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700506 .name = "msm_otg",
507 .id = -1,
508 .num_resources = ARRAY_SIZE(resources_otg),
509 .resource = resources_otg,
510 .dev = {
511 .coherent_dma_mask = 0xffffffff,
512 },
513};
514
515static struct resource resources_hsusb[] = {
516 {
Hemant Kumard86c4882012-01-24 19:39:37 -0800517 .start = MSM_HSUSB1_PHYS,
518 .end = MSM_HSUSB1_PHYS + MSM_HSUSB1_SIZE - 1,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700519 .flags = IORESOURCE_MEM,
520 },
521 {
522 .start = USB1_HS_IRQ,
523 .end = USB1_HS_IRQ,
524 .flags = IORESOURCE_IRQ,
525 },
526};
527
Stepan Moskovchenko14aa6492011-08-08 15:15:01 -0700528struct platform_device apq8064_device_gadget_peripheral = {
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700529 .name = "msm_hsusb",
530 .id = -1,
531 .num_resources = ARRAY_SIZE(resources_hsusb),
532 .resource = resources_hsusb,
533 .dev = {
534 .coherent_dma_mask = 0xffffffff,
535 },
536};
537
Hemant Kumard86c4882012-01-24 19:39:37 -0800538static struct resource resources_hsusb_host[] = {
539 {
540 .start = MSM_HSUSB1_PHYS,
541 .end = MSM_HSUSB1_PHYS + MSM_HSUSB1_SIZE - 1,
542 .flags = IORESOURCE_MEM,
543 },
544 {
545 .start = USB1_HS_IRQ,
546 .end = USB1_HS_IRQ,
547 .flags = IORESOURCE_IRQ,
548 },
549};
550
Hemant Kumara945b472012-01-25 15:08:06 -0800551static struct resource resources_hsic_host[] = {
552 {
553 .start = 0x12510000,
554 .end = 0x12510000 + SZ_4K - 1,
555 .flags = IORESOURCE_MEM,
556 },
557 {
558 .start = USB2_HSIC_IRQ,
559 .end = USB2_HSIC_IRQ,
560 .flags = IORESOURCE_IRQ,
561 },
562 {
563 .start = MSM_GPIO_TO_INT(49),
564 .end = MSM_GPIO_TO_INT(49),
565 .name = "peripheral_status_irq",
566 .flags = IORESOURCE_IRQ,
567 },
568};
569
Hemant Kumard86c4882012-01-24 19:39:37 -0800570static u64 dma_mask = DMA_BIT_MASK(32);
571struct platform_device apq8064_device_hsusb_host = {
572 .name = "msm_hsusb_host",
573 .id = -1,
574 .num_resources = ARRAY_SIZE(resources_hsusb_host),
575 .resource = resources_hsusb_host,
576 .dev = {
577 .dma_mask = &dma_mask,
578 .coherent_dma_mask = 0xffffffff,
579 },
580};
581
Hemant Kumara945b472012-01-25 15:08:06 -0800582struct platform_device apq8064_device_hsic_host = {
583 .name = "msm_hsic_host",
584 .id = -1,
585 .num_resources = ARRAY_SIZE(resources_hsic_host),
586 .resource = resources_hsic_host,
587 .dev = {
588 .dma_mask = &dma_mask,
589 .coherent_dma_mask = DMA_BIT_MASK(32),
590 },
591};
592
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700593#define MSM_SDC1_BASE 0x12400000
594#define MSM_SDC1_DML_BASE (MSM_SDC1_BASE + 0x800)
595#define MSM_SDC1_BAM_BASE (MSM_SDC1_BASE + 0x2000)
596#define MSM_SDC2_BASE 0x12140000
597#define MSM_SDC2_DML_BASE (MSM_SDC2_BASE + 0x800)
598#define MSM_SDC2_BAM_BASE (MSM_SDC2_BASE + 0x2000)
599#define MSM_SDC3_BASE 0x12180000
600#define MSM_SDC3_DML_BASE (MSM_SDC3_BASE + 0x800)
601#define MSM_SDC3_BAM_BASE (MSM_SDC3_BASE + 0x2000)
602#define MSM_SDC4_BASE 0x121C0000
603#define MSM_SDC4_DML_BASE (MSM_SDC4_BASE + 0x800)
604#define MSM_SDC4_BAM_BASE (MSM_SDC4_BASE + 0x2000)
605
606static struct resource resources_sdc1[] = {
607 {
608 .name = "core_mem",
609 .flags = IORESOURCE_MEM,
610 .start = MSM_SDC1_BASE,
611 .end = MSM_SDC1_DML_BASE - 1,
612 },
613 {
614 .name = "core_irq",
615 .flags = IORESOURCE_IRQ,
616 .start = SDC1_IRQ_0,
617 .end = SDC1_IRQ_0
618 },
619#ifdef CONFIG_MMC_MSM_SPS_SUPPORT
620 {
621 .name = "sdcc_dml_addr",
622 .start = MSM_SDC1_DML_BASE,
623 .end = MSM_SDC1_BAM_BASE - 1,
624 .flags = IORESOURCE_MEM,
625 },
626 {
627 .name = "sdcc_bam_addr",
628 .start = MSM_SDC1_BAM_BASE,
629 .end = MSM_SDC1_BAM_BASE + (2 * SZ_4K) - 1,
630 .flags = IORESOURCE_MEM,
631 },
632 {
633 .name = "sdcc_bam_irq",
634 .start = SDC1_BAM_IRQ,
635 .end = SDC1_BAM_IRQ,
636 .flags = IORESOURCE_IRQ,
637 },
638#endif
639};
640
641static struct resource resources_sdc2[] = {
642 {
643 .name = "core_mem",
644 .flags = IORESOURCE_MEM,
645 .start = MSM_SDC2_BASE,
646 .end = MSM_SDC2_DML_BASE - 1,
647 },
648 {
649 .name = "core_irq",
650 .flags = IORESOURCE_IRQ,
651 .start = SDC2_IRQ_0,
652 .end = SDC2_IRQ_0
653 },
654#ifdef CONFIG_MMC_MSM_SPS_SUPPORT
655 {
656 .name = "sdcc_dml_addr",
657 .start = MSM_SDC2_DML_BASE,
658 .end = MSM_SDC2_BAM_BASE - 1,
659 .flags = IORESOURCE_MEM,
660 },
661 {
662 .name = "sdcc_bam_addr",
663 .start = MSM_SDC2_BAM_BASE,
664 .end = MSM_SDC2_BAM_BASE + (2 * SZ_4K) - 1,
665 .flags = IORESOURCE_MEM,
666 },
667 {
668 .name = "sdcc_bam_irq",
669 .start = SDC2_BAM_IRQ,
670 .end = SDC2_BAM_IRQ,
671 .flags = IORESOURCE_IRQ,
672 },
673#endif
674};
675
676static struct resource resources_sdc3[] = {
677 {
678 .name = "core_mem",
679 .flags = IORESOURCE_MEM,
680 .start = MSM_SDC3_BASE,
681 .end = MSM_SDC3_DML_BASE - 1,
682 },
683 {
684 .name = "core_irq",
685 .flags = IORESOURCE_IRQ,
686 .start = SDC3_IRQ_0,
687 .end = SDC3_IRQ_0
688 },
689#ifdef CONFIG_MMC_MSM_SPS_SUPPORT
690 {
691 .name = "sdcc_dml_addr",
692 .start = MSM_SDC3_DML_BASE,
693 .end = MSM_SDC3_BAM_BASE - 1,
694 .flags = IORESOURCE_MEM,
695 },
696 {
697 .name = "sdcc_bam_addr",
698 .start = MSM_SDC3_BAM_BASE,
699 .end = MSM_SDC3_BAM_BASE + (2 * SZ_4K) - 1,
700 .flags = IORESOURCE_MEM,
701 },
702 {
703 .name = "sdcc_bam_irq",
704 .start = SDC3_BAM_IRQ,
705 .end = SDC3_BAM_IRQ,
706 .flags = IORESOURCE_IRQ,
707 },
708#endif
709};
710
711static struct resource resources_sdc4[] = {
712 {
713 .name = "core_mem",
714 .flags = IORESOURCE_MEM,
715 .start = MSM_SDC4_BASE,
716 .end = MSM_SDC4_DML_BASE - 1,
717 },
718 {
719 .name = "core_irq",
720 .flags = IORESOURCE_IRQ,
721 .start = SDC4_IRQ_0,
722 .end = SDC4_IRQ_0
723 },
724#ifdef CONFIG_MMC_MSM_SPS_SUPPORT
725 {
726 .name = "sdcc_dml_addr",
727 .start = MSM_SDC4_DML_BASE,
728 .end = MSM_SDC4_BAM_BASE - 1,
729 .flags = IORESOURCE_MEM,
730 },
731 {
732 .name = "sdcc_bam_addr",
733 .start = MSM_SDC4_BAM_BASE,
734 .end = MSM_SDC4_BAM_BASE + (2 * SZ_4K) - 1,
735 .flags = IORESOURCE_MEM,
736 },
737 {
738 .name = "sdcc_bam_irq",
739 .start = SDC4_BAM_IRQ,
740 .end = SDC4_BAM_IRQ,
741 .flags = IORESOURCE_IRQ,
742 },
743#endif
744};
745
746struct platform_device apq8064_device_sdc1 = {
747 .name = "msm_sdcc",
748 .id = 1,
749 .num_resources = ARRAY_SIZE(resources_sdc1),
750 .resource = resources_sdc1,
751 .dev = {
752 .coherent_dma_mask = 0xffffffff,
753 },
754};
755
756struct platform_device apq8064_device_sdc2 = {
757 .name = "msm_sdcc",
758 .id = 2,
759 .num_resources = ARRAY_SIZE(resources_sdc2),
760 .resource = resources_sdc2,
761 .dev = {
762 .coherent_dma_mask = 0xffffffff,
763 },
764};
765
766struct platform_device apq8064_device_sdc3 = {
767 .name = "msm_sdcc",
768 .id = 3,
769 .num_resources = ARRAY_SIZE(resources_sdc3),
770 .resource = resources_sdc3,
771 .dev = {
772 .coherent_dma_mask = 0xffffffff,
773 },
774};
775
776struct platform_device apq8064_device_sdc4 = {
777 .name = "msm_sdcc",
778 .id = 4,
779 .num_resources = ARRAY_SIZE(resources_sdc4),
780 .resource = resources_sdc4,
781 .dev = {
782 .coherent_dma_mask = 0xffffffff,
783 },
784};
785
786static struct platform_device *apq8064_sdcc_devices[] __initdata = {
787 &apq8064_device_sdc1,
788 &apq8064_device_sdc2,
789 &apq8064_device_sdc3,
790 &apq8064_device_sdc4,
791};
792
793int __init apq8064_add_sdcc(unsigned int controller,
794 struct mmc_platform_data *plat)
795{
796 struct platform_device *pdev;
797
798 if (!plat)
799 return 0;
800 if (controller < 1 || controller > 4)
801 return -EINVAL;
802
803 pdev = apq8064_sdcc_devices[controller-1];
804 pdev->dev.platform_data = plat;
805 return platform_device_register(pdev);
806}
807
Yan He06913ce2011-08-26 16:33:46 -0700808static struct resource resources_sps[] = {
809 {
810 .name = "pipe_mem",
811 .start = 0x12800000,
812 .end = 0x12800000 + 0x4000 - 1,
813 .flags = IORESOURCE_MEM,
814 },
815 {
816 .name = "bamdma_dma",
817 .start = 0x12240000,
818 .end = 0x12240000 + 0x1000 - 1,
819 .flags = IORESOURCE_MEM,
820 },
821 {
822 .name = "bamdma_bam",
823 .start = 0x12244000,
824 .end = 0x12244000 + 0x4000 - 1,
825 .flags = IORESOURCE_MEM,
826 },
827 {
828 .name = "bamdma_irq",
829 .start = SPS_BAM_DMA_IRQ,
830 .end = SPS_BAM_DMA_IRQ,
831 .flags = IORESOURCE_IRQ,
832 },
833};
834
Gagan Mac8a7a5d32011-11-11 16:43:06 -0700835struct platform_device msm_bus_8064_sys_fabric = {
836 .name = "msm_bus_fabric",
837 .id = MSM_BUS_FAB_SYSTEM,
838};
839struct platform_device msm_bus_8064_apps_fabric = {
840 .name = "msm_bus_fabric",
841 .id = MSM_BUS_FAB_APPSS,
842};
843struct platform_device msm_bus_8064_mm_fabric = {
844 .name = "msm_bus_fabric",
845 .id = MSM_BUS_FAB_MMSS,
846};
847struct platform_device msm_bus_8064_sys_fpb = {
848 .name = "msm_bus_fabric",
849 .id = MSM_BUS_FAB_SYSTEM_FPB,
850};
851struct platform_device msm_bus_8064_cpss_fpb = {
852 .name = "msm_bus_fabric",
853 .id = MSM_BUS_FAB_CPSS_FPB,
854};
855
Yan He06913ce2011-08-26 16:33:46 -0700856static struct msm_sps_platform_data msm_sps_pdata = {
857 .bamdma_restricted_pipes = 0x06,
858};
859
860struct platform_device msm_device_sps_apq8064 = {
861 .name = "msm_sps",
862 .id = -1,
863 .num_resources = ARRAY_SIZE(resources_sps),
864 .resource = resources_sps,
865 .dev.platform_data = &msm_sps_pdata,
866};
867
Jeff Hugo0c0f5e92011-09-28 13:55:45 -0600868struct platform_device msm_device_smd_apq8064 = {
869 .name = "msm_smd",
870 .id = -1,
871};
872
Ramesh Masavarapuf46be1b2011-11-03 11:13:41 -0700873#ifdef CONFIG_HW_RANDOM_MSM
874/* PRNG device */
875#define MSM_PRNG_PHYS 0x1A500000
876static struct resource rng_resources = {
877 .flags = IORESOURCE_MEM,
878 .start = MSM_PRNG_PHYS,
879 .end = MSM_PRNG_PHYS + SZ_512 - 1,
880};
881
882struct platform_device apq8064_device_rng = {
883 .name = "msm_rng",
884 .id = 0,
885 .num_resources = 1,
886 .resource = &rng_resources,
887};
888#endif
889
Matt Wagantall292aace2012-01-26 19:12:34 -0800890static struct resource msm_gss_resources[] = {
891 {
892 .start = 0x10000000,
893 .end = 0x10000000 + SZ_256 - 1,
894 .flags = IORESOURCE_MEM,
895 },
Matt Wagantall19ac4fd2012-02-03 20:18:23 -0800896 {
897 .start = 0x10008000,
898 .end = 0x10008000 + SZ_256 - 1,
899 .flags = IORESOURCE_MEM,
900 },
Matt Wagantall292aace2012-01-26 19:12:34 -0800901};
902
903struct platform_device msm_gss = {
904 .name = "pil_gss",
905 .id = -1,
906 .num_resources = ARRAY_SIZE(msm_gss_resources),
907 .resource = msm_gss_resources,
908};
909
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700910static struct clk_lookup msm_clocks_8064_dummy[] = {
911 CLK_DUMMY("pll2", PLL2, NULL, 0),
912 CLK_DUMMY("pll8", PLL8, NULL, 0),
913 CLK_DUMMY("pll4", PLL4, NULL, 0),
914
915 CLK_DUMMY("afab_clk", AFAB_CLK, NULL, 0),
916 CLK_DUMMY("afab_a_clk", AFAB_A_CLK, NULL, 0),
917 CLK_DUMMY("cfpb_clk", CFPB_CLK, NULL, 0),
918 CLK_DUMMY("cfpb_a_clk", CFPB_A_CLK, NULL, 0),
919 CLK_DUMMY("dfab_clk", DFAB_CLK, NULL, 0),
920 CLK_DUMMY("dfab_a_clk", DFAB_A_CLK, NULL, 0),
921 CLK_DUMMY("ebi1_clk", EBI1_CLK, NULL, 0),
922 CLK_DUMMY("ebi1_a_clk", EBI1_A_CLK, NULL, 0),
923 CLK_DUMMY("mmfab_clk", MMFAB_CLK, NULL, 0),
924 CLK_DUMMY("mmfab_a_clk", MMFAB_A_CLK, NULL, 0),
925 CLK_DUMMY("mmfpb_clk", MMFPB_CLK, NULL, 0),
926 CLK_DUMMY("mmfpb_a_clk", MMFPB_A_CLK, NULL, 0),
927 CLK_DUMMY("sfab_clk", SFAB_CLK, NULL, 0),
928 CLK_DUMMY("sfab_a_clk", SFAB_A_CLK, NULL, 0),
929 CLK_DUMMY("sfpb_clk", SFPB_CLK, NULL, 0),
930 CLK_DUMMY("sfpb_a_clk", SFPB_A_CLK, NULL, 0),
931
Matt Wagantalle2522372011-08-17 14:52:21 -0700932 CLK_DUMMY("core_clk", GSBI1_UART_CLK, NULL, OFF),
933 CLK_DUMMY("core_clk", GSBI2_UART_CLK, NULL, OFF),
934 CLK_DUMMY("core_clk", GSBI3_UART_CLK,
Jing Lin04601f92012-02-05 15:36:07 -0800935 NULL, OFF),
Matt Wagantalle2522372011-08-17 14:52:21 -0700936 CLK_DUMMY("core_clk", GSBI4_UART_CLK, NULL, OFF),
937 CLK_DUMMY("core_clk", GSBI5_UART_CLK, NULL, OFF),
938 CLK_DUMMY("core_clk", GSBI6_UART_CLK, NULL, OFF),
939 CLK_DUMMY("core_clk", GSBI7_UART_CLK, NULL, OFF),
940 CLK_DUMMY("core_clk", GSBI8_UART_CLK, NULL, OFF),
941 CLK_DUMMY("core_clk", GSBI9_UART_CLK, NULL, OFF),
942 CLK_DUMMY("core_clk", GSBI10_UART_CLK, NULL, OFF),
943 CLK_DUMMY("core_clk", GSBI11_UART_CLK, NULL, OFF),
944 CLK_DUMMY("core_clk", GSBI12_UART_CLK, NULL, OFF),
Matt Wagantall62cf63e2011-08-17 16:34:47 -0700945 CLK_DUMMY("core_clk", GSBI1_QUP_CLK, NULL, OFF),
946 CLK_DUMMY("core_clk", GSBI2_QUP_CLK, NULL, OFF),
Jing Lin04601f92012-02-05 15:36:07 -0800947 CLK_DUMMY("core_clk", GSBI3_QUP_CLK, "qup_i2c.3", OFF),
Matt Wagantallac294852011-08-17 15:44:58 -0700948 CLK_DUMMY("core_clk", GSBI4_QUP_CLK, "qup_i2c.4", OFF),
949 CLK_DUMMY("core_clk", GSBI5_QUP_CLK, "spi_qsd.0", OFF),
Matt Wagantall62cf63e2011-08-17 16:34:47 -0700950 CLK_DUMMY("core_clk", GSBI6_QUP_CLK, NULL, OFF),
951 CLK_DUMMY("core_clk", GSBI7_QUP_CLK, NULL, OFF),
Matt Wagantallb86ad262011-10-24 19:50:29 -0700952 CLK_DUMMY("core_clk", PDM_CLK, NULL, OFF),
Matt Wagantalld86d6832011-08-17 14:06:55 -0700953 CLK_DUMMY("mem_clk", PMEM_CLK, NULL, OFF),
Ramesh Masavarapuf46be1b2011-11-03 11:13:41 -0700954 CLK_DUMMY("core_clk", PRNG_CLK, "msm_rng.0", OFF),
Matt Wagantall37ce3842011-08-17 16:00:36 -0700955 CLK_DUMMY("core_clk", SDC1_CLK, NULL, OFF),
956 CLK_DUMMY("core_clk", SDC2_CLK, NULL, OFF),
957 CLK_DUMMY("core_clk", SDC3_CLK, NULL, OFF),
958 CLK_DUMMY("core_clk", SDC4_CLK, NULL, OFF),
Matt Wagantall640e5fd2011-08-17 16:08:53 -0700959 CLK_DUMMY("ref_clk", TSIF_REF_CLK, NULL, OFF),
Matt Wagantallb86ad262011-10-24 19:50:29 -0700960 CLK_DUMMY("core_clk", TSSC_CLK, NULL, OFF),
Manu Gautam5143b252012-01-05 19:25:23 -0800961 CLK_DUMMY("alt_core_clk", USB_HS1_XCVR_CLK, NULL, OFF),
962 CLK_DUMMY("alt_core_clk", USB_HS3_XCVR_CLK, NULL, OFF),
963 CLK_DUMMY("alt_core_clk", USB_HS4_XCVR_CLK, NULL, OFF),
964 CLK_DUMMY("phy_clk", USB_PHY0_CLK, NULL, OFF),
965 CLK_DUMMY("src_clk", USB_FS1_SRC_CLK, NULL, OFF),
966 CLK_DUMMY("alt_core_clk", USB_FS1_XCVR_CLK, NULL, OFF),
967 CLK_DUMMY("sys_clk", USB_FS1_SYS_CLK, NULL, OFF),
Matt Wagantallc4b3a4d2011-08-17 16:58:39 -0700968 CLK_DUMMY("core_clk", CE2_CLK, NULL, OFF),
969 CLK_DUMMY("core_clk", CE1_CORE_CLK, NULL, OFF),
970 CLK_DUMMY("core_clk", CE3_CORE_CLK, NULL, OFF),
971 CLK_DUMMY("iface_clk", CE3_P_CLK, NULL, OFF),
Tianyi Gou86bb4722011-08-09 13:28:02 -0700972 CLK_DUMMY("pcie_pclk", PCIE_P_CLK, NULL, OFF),
973 CLK_DUMMY("pcie_alt_ref_clk", PCIE_ALT_REF_CLK, NULL, OFF),
974 CLK_DUMMY("sata_rxoob_clk", SATA_RXOOB_CLK, NULL, OFF),
975 CLK_DUMMY("sata_pmalive_clk", SATA_PMALIVE_CLK, NULL, OFF),
Matt Wagantallb86ad262011-10-24 19:50:29 -0700976 CLK_DUMMY("ref_clk", SATA_PHY_REF_CLK, NULL, OFF),
Matt Wagantall62cf63e2011-08-17 16:34:47 -0700977 CLK_DUMMY("iface_clk", GSBI1_P_CLK, NULL, OFF),
978 CLK_DUMMY("iface_clk", GSBI2_P_CLK, NULL, OFF),
Jing Lin04601f92012-02-05 15:36:07 -0800979 CLK_DUMMY("iface_clk", GSBI3_P_CLK, "qup_i2c.3", OFF),
Matt Wagantallac294852011-08-17 15:44:58 -0700980 CLK_DUMMY("iface_clk", GSBI4_P_CLK, "qup_i2c.4", OFF),
981 CLK_DUMMY("iface_clk", GSBI5_P_CLK, "spi_qsd.0", OFF),
Matt Wagantalle2522372011-08-17 14:52:21 -0700982 CLK_DUMMY("iface_clk", GSBI6_P_CLK, NULL, OFF),
Matt Wagantall62cf63e2011-08-17 16:34:47 -0700983 CLK_DUMMY("iface_clk", GSBI7_P_CLK, NULL, OFF),
Matt Wagantall640e5fd2011-08-17 16:08:53 -0700984 CLK_DUMMY("iface_clk", TSIF_P_CLK, NULL, OFF),
Manu Gautam5143b252012-01-05 19:25:23 -0800985 CLK_DUMMY("iface_clk", USB_FS1_P_CLK, NULL, OFF),
986 CLK_DUMMY("iface_clk", USB_HS1_P_CLK, NULL, OFF),
987 CLK_DUMMY("iface_clk", USB_HS3_P_CLK, NULL, OFF),
988 CLK_DUMMY("iface_clk", USB_HS4_P_CLK, NULL, OFF),
Matt Wagantall37ce3842011-08-17 16:00:36 -0700989 CLK_DUMMY("iface_clk", SDC1_P_CLK, NULL, OFF),
990 CLK_DUMMY("iface_clk", SDC2_P_CLK, NULL, OFF),
991 CLK_DUMMY("iface_clk", SDC3_P_CLK, NULL, OFF),
992 CLK_DUMMY("iface_clk", SDC4_P_CLK, NULL, OFF),
Jin Hong01f2dbb2011-11-03 22:13:51 -0700993 CLK_DUMMY("core_clk", ADM0_CLK, "msm_dmov", OFF),
994 CLK_DUMMY("iface_clk", ADM0_P_CLK, "msm_dmov", OFF),
Matt Wagantallb86ad262011-10-24 19:50:29 -0700995 CLK_DUMMY("iface_clk", PMIC_ARB0_P_CLK, NULL, OFF),
996 CLK_DUMMY("iface_clk", PMIC_ARB1_P_CLK, NULL, OFF),
997 CLK_DUMMY("core_clk", PMIC_SSBI2_CLK, NULL, OFF),
998 CLK_DUMMY("mem_clk", RPM_MSG_RAM_P_CLK, NULL, OFF),
999 CLK_DUMMY("core_clk", AMP_CLK, NULL, OFF),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001000 CLK_DUMMY("cam_clk", CAM0_CLK, NULL, OFF),
1001 CLK_DUMMY("cam_clk", CAM1_CLK, NULL, OFF),
1002 CLK_DUMMY("csi_src_clk", CSI0_SRC_CLK, NULL, OFF),
1003 CLK_DUMMY("csi_src_clk", CSI1_SRC_CLK, NULL, OFF),
1004 CLK_DUMMY("csi_clk", CSI0_CLK, NULL, OFF),
1005 CLK_DUMMY("csi_clk", CSI1_CLK, NULL, OFF),
1006 CLK_DUMMY("csi_pix_clk", CSI_PIX_CLK, NULL, OFF),
1007 CLK_DUMMY("csi_rdi_clk", CSI_RDI_CLK, NULL, OFF),
1008 CLK_DUMMY("csiphy_timer_src_clk", CSIPHY_TIMER_SRC_CLK, NULL, OFF),
1009 CLK_DUMMY("csi0phy_timer_clk", CSIPHY0_TIMER_CLK, NULL, OFF),
1010 CLK_DUMMY("csi1phy_timer_clk", CSIPHY1_TIMER_CLK, NULL, OFF),
1011 CLK_DUMMY("dsi_byte_div_clk", DSI1_BYTE_CLK, NULL, OFF),
1012 CLK_DUMMY("dsi_byte_div_clk", DSI2_BYTE_CLK, NULL, OFF),
1013 CLK_DUMMY("dsi_esc_clk", DSI1_ESC_CLK, NULL, OFF),
1014 CLK_DUMMY("dsi_esc_clk", DSI2_ESC_CLK, NULL, OFF),
Matt Wagantall9dc01632011-08-17 18:55:04 -07001015 CLK_DUMMY("core_clk", VCAP_CLK, NULL, OFF),
1016 CLK_DUMMY("npl_clk", VCAP_NPL_CLK, NULL, OFF),
Pu Chen86b4be92011-11-03 17:27:57 -07001017 CLK_DUMMY("core_clk", GFX3D_CLK, "kgsl-3d0.0", OFF),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001018 CLK_DUMMY("ijpeg_clk", IJPEG_CLK, NULL, OFF),
Matt Wagantall9dc01632011-08-17 18:55:04 -07001019 CLK_DUMMY("mem_clk", IMEM_CLK, NULL, OFF),
Matt Wagantallb86ad262011-10-24 19:50:29 -07001020 CLK_DUMMY("core_clk", JPEGD_CLK, NULL, OFF),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001021 CLK_DUMMY("mdp_clk", MDP_CLK, NULL, OFF),
1022 CLK_DUMMY("mdp_vsync_clk", MDP_VSYNC_CLK, NULL, OFF),
1023 CLK_DUMMY("lut_mdp", LUT_MDP_CLK, NULL, OFF),
Matt Wagantallbb90da92011-10-25 15:07:52 -07001024 CLK_DUMMY("core_clk", ROT_CLK, NULL, OFF),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001025 CLK_DUMMY("tv_src_clk", TV_SRC_CLK, NULL, OFF),
Matt Wagantallb86ad262011-10-24 19:50:29 -07001026 CLK_DUMMY("core_clk", VCODEC_CLK, NULL, OFF),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001027 CLK_DUMMY("mdp_tv_clk", MDP_TV_CLK, NULL, OFF),
Tianyi Gou86bb4722011-08-09 13:28:02 -07001028 CLK_DUMMY("rgb_tv_clk", RGB_TV_CLK, NULL, OFF),
1029 CLK_DUMMY("npl_tv_clk", NPL_TV_CLK, NULL, OFF),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001030 CLK_DUMMY("hdmi_clk", HDMI_TV_CLK, NULL, OFF),
Matt Wagantall5a4f1ba2011-08-18 18:13:03 -07001031 CLK_DUMMY("core_clk", HDMI_APP_CLK, "hdmi_msm.1", OFF),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001032 CLK_DUMMY("vpe_clk", VPE_CLK, NULL, OFF),
1033 CLK_DUMMY("vfe_clk", VFE_CLK, NULL, OFF),
1034 CLK_DUMMY("csi_vfe_clk", CSI0_VFE_CLK, NULL, OFF),
1035 CLK_DUMMY("vfe_axi_clk", VFE_AXI_CLK, NULL, OFF),
1036 CLK_DUMMY("ijpeg_axi_clk", IJPEG_AXI_CLK, NULL, OFF),
1037 CLK_DUMMY("mdp_axi_clk", MDP_AXI_CLK, NULL, OFF),
Matt Wagantallbb90da92011-10-25 15:07:52 -07001038 CLK_DUMMY("bus_clk", ROT_AXI_CLK, NULL, OFF),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001039 CLK_DUMMY("vcodec_axi_clk", VCODEC_AXI_CLK, NULL, OFF),
1040 CLK_DUMMY("vcodec_axi_a_clk", VCODEC_AXI_A_CLK, NULL, OFF),
1041 CLK_DUMMY("vcodec_axi_b_clk", VCODEC_AXI_B_CLK, NULL, OFF),
1042 CLK_DUMMY("vpe_axi_clk", VPE_AXI_CLK, NULL, OFF),
Matt Wagantall9dc01632011-08-17 18:55:04 -07001043 CLK_DUMMY("bus_clk", GFX3D_AXI_CLK, NULL, OFF),
Tianyi Gou86bb4722011-08-09 13:28:02 -07001044 CLK_DUMMY("vcap_axi_clk", VCAP_AXI_CLK, NULL, OFF),
1045 CLK_DUMMY("vcap_ahb_clk", VCAP_AHB_CLK, NULL, OFF),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001046 CLK_DUMMY("amp_pclk", AMP_P_CLK, NULL, OFF),
1047 CLK_DUMMY("csi_pclk", CSI0_P_CLK, NULL, OFF),
1048 CLK_DUMMY("dsi_m_pclk", DSI1_M_P_CLK, NULL, OFF),
1049 CLK_DUMMY("dsi_s_pclk", DSI1_S_P_CLK, NULL, OFF),
1050 CLK_DUMMY("dsi_m_pclk", DSI2_M_P_CLK, NULL, OFF),
1051 CLK_DUMMY("dsi_s_pclk", DSI2_S_P_CLK, NULL, OFF),
Tianyi Gou86bb4722011-08-09 13:28:02 -07001052 CLK_DUMMY("lvds_clk", LVDS_CLK, NULL, OFF),
1053 CLK_DUMMY("mdp_p2clk", MDP_P2CLK, NULL, OFF),
1054 CLK_DUMMY("dsi2_pixel_clk", DSI2_PIXEL_CLK, NULL, OFF),
1055 CLK_DUMMY("lvds_ref_clk", LVDS_REF_CLK, NULL, OFF),
Pu Chen86b4be92011-11-03 17:27:57 -07001056 CLK_DUMMY("iface_clk", GFX3D_P_CLK, "kgsl-3d0.0", OFF),
Matt Wagantall5a4f1ba2011-08-18 18:13:03 -07001057 CLK_DUMMY("master_iface_clk", HDMI_M_P_CLK, "hdmi_msm.1", OFF),
1058 CLK_DUMMY("slave_iface_clk", HDMI_S_P_CLK, "hdmi_msm.1", OFF),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001059 CLK_DUMMY("ijpeg_pclk", IJPEG_P_CLK, NULL, OFF),
1060 CLK_DUMMY("jpegd_pclk", JPEGD_P_CLK, NULL, OFF),
Matt Wagantall9dc01632011-08-17 18:55:04 -07001061 CLK_DUMMY("mem_iface_clk", IMEM_P_CLK, NULL, OFF),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001062 CLK_DUMMY("mdp_pclk", MDP_P_CLK, NULL, OFF),
Matt Wagantalle604d712011-10-21 15:38:18 -07001063 CLK_DUMMY("iface_clk", SMMU_P_CLK, "msm_smmu", OFF),
Matt Wagantallbb90da92011-10-25 15:07:52 -07001064 CLK_DUMMY("iface_clk", ROT_P_CLK, NULL, OFF),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001065 CLK_DUMMY("vcodec_pclk", VCODEC_P_CLK, NULL, OFF),
1066 CLK_DUMMY("vfe_pclk", VFE_P_CLK, NULL, OFF),
1067 CLK_DUMMY("vpe_pclk", VPE_P_CLK, NULL, OFF),
1068 CLK_DUMMY("mi2s_osr_clk", MI2S_OSR_CLK, NULL, OFF),
1069 CLK_DUMMY("mi2s_bit_clk", MI2S_BIT_CLK, NULL, OFF),
1070 CLK_DUMMY("i2s_mic_osr_clk", CODEC_I2S_MIC_OSR_CLK, NULL, OFF),
1071 CLK_DUMMY("i2s_mic_bit_clk", CODEC_I2S_MIC_BIT_CLK, NULL, OFF),
1072 CLK_DUMMY("i2s_mic_osr_clk", SPARE_I2S_MIC_OSR_CLK, NULL, OFF),
1073 CLK_DUMMY("i2s_mic_bit_clk", SPARE_I2S_MIC_BIT_CLK, NULL, OFF),
1074 CLK_DUMMY("i2s_spkr_osr_clk", CODEC_I2S_SPKR_OSR_CLK, NULL, OFF),
1075 CLK_DUMMY("i2s_spkr_bit_clk", CODEC_I2S_SPKR_BIT_CLK, NULL, OFF),
1076 CLK_DUMMY("i2s_spkr_osr_clk", SPARE_I2S_SPKR_OSR_CLK, NULL, OFF),
1077 CLK_DUMMY("i2s_spkr_bit_clk", SPARE_I2S_SPKR_BIT_CLK, NULL, OFF),
1078 CLK_DUMMY("pcm_clk", PCM_CLK, NULL, OFF),
Tianyi Gou142b8db2011-09-21 18:01:54 -07001079 CLK_DUMMY("audio_slimbus_clk", AUDIO_SLIMBUS_CLK, NULL, OFF),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001080
1081 CLK_DUMMY("dfab_dsps_clk", DFAB_DSPS_CLK, NULL, 0),
Manu Gautam5143b252012-01-05 19:25:23 -08001082 CLK_DUMMY("core_clk", DFAB_USB_HS_CLK, NULL, 0),
Matt Wagantall37ce3842011-08-17 16:00:36 -07001083 CLK_DUMMY("bus_clk", DFAB_SDC1_CLK, NULL, 0),
1084 CLK_DUMMY("bus_clk", DFAB_SDC2_CLK, NULL, 0),
1085 CLK_DUMMY("bus_clk", DFAB_SDC3_CLK, NULL, 0),
1086 CLK_DUMMY("bus_clk", DFAB_SDC4_CLK, NULL, 0),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001087 CLK_DUMMY("dfab_clk", DFAB_CLK, NULL, 0),
1088 CLK_DUMMY("dma_bam_pclk", DMA_BAM_P_CLK, NULL, 0),
Jin Hong01f2dbb2011-11-03 22:13:51 -07001089 CLK_DUMMY("mem_clk", EBI1_ADM_CLK, "msm_dmov", 0),
Ramesh Masavarapu28311912011-10-27 11:04:12 -07001090 CLK_DUMMY("ce3_core_src_clk", CE3_SRC_CLK, "qce.0", OFF),
1091 CLK_DUMMY("ce3_core_src_clk", CE3_SRC_CLK, "qcrypto.0", OFF),
1092 CLK_DUMMY("core_clk", CE3_CORE_CLK, "qce.0", OFF),
1093 CLK_DUMMY("core_clk", CE3_CORE_CLK, "qcrypto.0", OFF),
1094 CLK_DUMMY("iface_clk", CE3_P_CLK, "qce0.0", OFF),
1095 CLK_DUMMY("iface_clk", CE3_P_CLK, "qcrypto.0", OFF),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001096};
1097
Stephen Boydbb600ae2011-08-02 20:11:40 -07001098struct clock_init_data apq8064_dummy_clock_init_data __initdata = {
1099 .table = msm_clocks_8064_dummy,
1100 .size = ARRAY_SIZE(msm_clocks_8064_dummy),
1101};
Praveen Chidambaram78499012011-11-01 17:15:17 -06001102
1103struct msm_rpm_platform_data apq8064_rpm_data __initdata = {
1104 .reg_base_addrs = {
1105 [MSM_RPM_PAGE_STATUS] = MSM_RPM_BASE,
1106 [MSM_RPM_PAGE_CTRL] = MSM_RPM_BASE + 0x400,
1107 [MSM_RPM_PAGE_REQ] = MSM_RPM_BASE + 0x600,
1108 [MSM_RPM_PAGE_ACK] = MSM_RPM_BASE + 0xa00,
1109 },
1110 .irq_ack = RPM_APCC_CPU0_GP_HIGH_IRQ,
1111 .ipc_rpm_reg = MSM_APCS_GCC_BASE + 0x008,
1112 .ipc_rpm_val = 4,
1113 .target_id = {
1114 MSM_RPM_MAP(8064, NOTIFICATION_CONFIGURED_0, NOTIFICATION, 4),
1115 MSM_RPM_MAP(8064, NOTIFICATION_REGISTERED_0, NOTIFICATION, 4),
1116 MSM_RPM_MAP(8064, INVALIDATE_0, INVALIDATE, 8),
1117 MSM_RPM_MAP(8064, TRIGGER_TIMED_TO, TRIGGER_TIMED, 1),
1118 MSM_RPM_MAP(8064, TRIGGER_TIMED_SCLK_COUNT, TRIGGER_TIMED, 1),
1119 MSM_RPM_MAP(8064, RPM_CTL, RPM_CTL, 1),
1120 MSM_RPM_MAP(8064, CXO_CLK, CXO_CLK, 1),
1121 MSM_RPM_MAP(8064, PXO_CLK, PXO_CLK, 1),
1122 MSM_RPM_MAP(8064, APPS_FABRIC_CLK, APPS_FABRIC_CLK, 1),
1123 MSM_RPM_MAP(8064, SYSTEM_FABRIC_CLK, SYSTEM_FABRIC_CLK, 1),
1124 MSM_RPM_MAP(8064, MM_FABRIC_CLK, MM_FABRIC_CLK, 1),
1125 MSM_RPM_MAP(8064, DAYTONA_FABRIC_CLK, DAYTONA_FABRIC_CLK, 1),
1126 MSM_RPM_MAP(8064, SFPB_CLK, SFPB_CLK, 1),
1127 MSM_RPM_MAP(8064, CFPB_CLK, CFPB_CLK, 1),
1128 MSM_RPM_MAP(8064, MMFPB_CLK, MMFPB_CLK, 1),
1129 MSM_RPM_MAP(8064, EBI1_CLK, EBI1_CLK, 1),
1130 MSM_RPM_MAP(8064, APPS_FABRIC_CFG_HALT_0,
1131 APPS_FABRIC_CFG_HALT, 2),
1132 MSM_RPM_MAP(8064, APPS_FABRIC_CFG_CLKMOD_0,
1133 APPS_FABRIC_CFG_CLKMOD, 3),
1134 MSM_RPM_MAP(8064, APPS_FABRIC_CFG_IOCTL,
1135 APPS_FABRIC_CFG_IOCTL, 1),
1136 MSM_RPM_MAP(8064, APPS_FABRIC_ARB_0, APPS_FABRIC_ARB, 12),
1137 MSM_RPM_MAP(8064, SYS_FABRIC_CFG_HALT_0,
1138 SYS_FABRIC_CFG_HALT, 2),
1139 MSM_RPM_MAP(8064, SYS_FABRIC_CFG_CLKMOD_0,
1140 SYS_FABRIC_CFG_CLKMOD, 3),
1141 MSM_RPM_MAP(8064, SYS_FABRIC_CFG_IOCTL,
1142 SYS_FABRIC_CFG_IOCTL, 1),
1143 MSM_RPM_MAP(8064, SYSTEM_FABRIC_ARB_0, SYSTEM_FABRIC_ARB, 30),
1144 MSM_RPM_MAP(8064, MMSS_FABRIC_CFG_HALT_0,
1145 MMSS_FABRIC_CFG_HALT, 2),
1146 MSM_RPM_MAP(8064, MMSS_FABRIC_CFG_CLKMOD_0,
1147 MMSS_FABRIC_CFG_CLKMOD, 3),
1148 MSM_RPM_MAP(8064, MMSS_FABRIC_CFG_IOCTL,
1149 MMSS_FABRIC_CFG_IOCTL, 1),
1150 MSM_RPM_MAP(8064, MM_FABRIC_ARB_0, MM_FABRIC_ARB, 21),
1151 MSM_RPM_MAP(8064, PM8921_S1_0, PM8921_S1, 2),
1152 MSM_RPM_MAP(8064, PM8921_S2_0, PM8921_S2, 2),
1153 MSM_RPM_MAP(8064, PM8921_S3_0, PM8921_S3, 2),
1154 MSM_RPM_MAP(8064, PM8921_S4_0, PM8921_S4, 2),
1155 MSM_RPM_MAP(8064, PM8921_S5_0, PM8921_S5, 2),
1156 MSM_RPM_MAP(8064, PM8921_S6_0, PM8921_S6, 2),
1157 MSM_RPM_MAP(8064, PM8921_S7_0, PM8921_S7, 2),
1158 MSM_RPM_MAP(8064, PM8921_S8_0, PM8921_S8, 2),
1159 MSM_RPM_MAP(8064, PM8921_L1_0, PM8921_L1, 2),
1160 MSM_RPM_MAP(8064, PM8921_L2_0, PM8921_L2, 2),
1161 MSM_RPM_MAP(8064, PM8921_L3_0, PM8921_L3, 2),
1162 MSM_RPM_MAP(8064, PM8921_L4_0, PM8921_L4, 2),
1163 MSM_RPM_MAP(8064, PM8921_L5_0, PM8921_L5, 2),
1164 MSM_RPM_MAP(8064, PM8921_L6_0, PM8921_L6, 2),
1165 MSM_RPM_MAP(8064, PM8921_L7_0, PM8921_L7, 2),
1166 MSM_RPM_MAP(8064, PM8921_L8_0, PM8921_L8, 2),
1167 MSM_RPM_MAP(8064, PM8921_L9_0, PM8921_L9, 2),
1168 MSM_RPM_MAP(8064, PM8921_L10_0, PM8921_L10, 2),
1169 MSM_RPM_MAP(8064, PM8921_L11_0, PM8921_L11, 2),
1170 MSM_RPM_MAP(8064, PM8921_L12_0, PM8921_L12, 2),
1171 MSM_RPM_MAP(8064, PM8921_L13_0, PM8921_L13, 2),
1172 MSM_RPM_MAP(8064, PM8921_L14_0, PM8921_L14, 2),
1173 MSM_RPM_MAP(8064, PM8921_L15_0, PM8921_L15, 2),
1174 MSM_RPM_MAP(8064, PM8921_L16_0, PM8921_L16, 2),
1175 MSM_RPM_MAP(8064, PM8921_L17_0, PM8921_L17, 2),
1176 MSM_RPM_MAP(8064, PM8921_L18_0, PM8921_L18, 2),
1177 MSM_RPM_MAP(8064, PM8921_L19_0, PM8921_L19, 2),
1178 MSM_RPM_MAP(8064, PM8921_L20_0, PM8921_L20, 2),
1179 MSM_RPM_MAP(8064, PM8921_L21_0, PM8921_L21, 2),
1180 MSM_RPM_MAP(8064, PM8921_L22_0, PM8921_L22, 2),
1181 MSM_RPM_MAP(8064, PM8921_L23_0, PM8921_L23, 2),
1182 MSM_RPM_MAP(8064, PM8921_L24_0, PM8921_L24, 2),
1183 MSM_RPM_MAP(8064, PM8921_L25_0, PM8921_L25, 2),
1184 MSM_RPM_MAP(8064, PM8921_L26_0, PM8921_L26, 2),
1185 MSM_RPM_MAP(8064, PM8921_L27_0, PM8921_L27, 2),
1186 MSM_RPM_MAP(8064, PM8921_L28_0, PM8921_L28, 2),
1187 MSM_RPM_MAP(8064, PM8921_L29_0, PM8921_L29, 2),
1188 MSM_RPM_MAP(8064, PM8921_CLK1_0, PM8921_CLK1, 2),
1189 MSM_RPM_MAP(8064, PM8921_CLK2_0, PM8921_CLK2, 2),
1190 MSM_RPM_MAP(8064, PM8921_LVS1, PM8921_LVS1, 1),
1191 MSM_RPM_MAP(8064, PM8921_LVS2, PM8921_LVS2, 1),
1192 MSM_RPM_MAP(8064, PM8921_LVS3, PM8921_LVS3, 1),
1193 MSM_RPM_MAP(8064, PM8921_LVS4, PM8921_LVS4, 1),
1194 MSM_RPM_MAP(8064, PM8921_LVS5, PM8921_LVS5, 1),
1195 MSM_RPM_MAP(8064, PM8921_LVS6, PM8921_LVS6, 1),
1196 MSM_RPM_MAP(8064, PM8921_LVS7, PM8921_LVS7, 1),
1197 MSM_RPM_MAP(8064, PM8821_S1_0, PM8821_S1, 2),
1198 MSM_RPM_MAP(8064, PM8821_S2_0, PM8821_S2, 2),
1199 MSM_RPM_MAP(8064, PM8821_L1_0, PM8821_L1, 2),
1200 MSM_RPM_MAP(8064, NCP_0, NCP, 2),
1201 MSM_RPM_MAP(8064, CXO_BUFFERS, CXO_BUFFERS, 1),
1202 MSM_RPM_MAP(8064, USB_OTG_SWITCH, USB_OTG_SWITCH, 1),
1203 MSM_RPM_MAP(8064, HDMI_SWITCH, HDMI_SWITCH, 1),
1204 MSM_RPM_MAP(8064, DDR_DMM_0, DDR_DMM, 2),
1205 MSM_RPM_MAP(8064, QDSS_CLK, QDSS_CLK, 1),
1206 },
1207 .target_status = {
1208 MSM_RPM_STATUS_ID_MAP(8064, VERSION_MAJOR),
1209 MSM_RPM_STATUS_ID_MAP(8064, VERSION_MINOR),
1210 MSM_RPM_STATUS_ID_MAP(8064, VERSION_BUILD),
1211 MSM_RPM_STATUS_ID_MAP(8064, SUPPORTED_RESOURCES_0),
1212 MSM_RPM_STATUS_ID_MAP(8064, SUPPORTED_RESOURCES_1),
1213 MSM_RPM_STATUS_ID_MAP(8064, SUPPORTED_RESOURCES_2),
1214 MSM_RPM_STATUS_ID_MAP(8064, RESERVED_SUPPORTED_RESOURCES_0),
1215 MSM_RPM_STATUS_ID_MAP(8064, SEQUENCE),
1216 MSM_RPM_STATUS_ID_MAP(8064, RPM_CTL),
1217 MSM_RPM_STATUS_ID_MAP(8064, CXO_CLK),
1218 MSM_RPM_STATUS_ID_MAP(8064, PXO_CLK),
1219 MSM_RPM_STATUS_ID_MAP(8064, APPS_FABRIC_CLK),
1220 MSM_RPM_STATUS_ID_MAP(8064, SYSTEM_FABRIC_CLK),
1221 MSM_RPM_STATUS_ID_MAP(8064, MM_FABRIC_CLK),
1222 MSM_RPM_STATUS_ID_MAP(8064, DAYTONA_FABRIC_CLK),
1223 MSM_RPM_STATUS_ID_MAP(8064, SFPB_CLK),
1224 MSM_RPM_STATUS_ID_MAP(8064, CFPB_CLK),
1225 MSM_RPM_STATUS_ID_MAP(8064, MMFPB_CLK),
1226 MSM_RPM_STATUS_ID_MAP(8064, EBI1_CLK),
1227 MSM_RPM_STATUS_ID_MAP(8064, APPS_FABRIC_CFG_HALT),
1228 MSM_RPM_STATUS_ID_MAP(8064, APPS_FABRIC_CFG_CLKMOD),
1229 MSM_RPM_STATUS_ID_MAP(8064, APPS_FABRIC_CFG_IOCTL),
1230 MSM_RPM_STATUS_ID_MAP(8064, APPS_FABRIC_ARB),
1231 MSM_RPM_STATUS_ID_MAP(8064, SYS_FABRIC_CFG_HALT),
1232 MSM_RPM_STATUS_ID_MAP(8064, SYS_FABRIC_CFG_CLKMOD),
1233 MSM_RPM_STATUS_ID_MAP(8064, SYS_FABRIC_CFG_IOCTL),
1234 MSM_RPM_STATUS_ID_MAP(8064, SYSTEM_FABRIC_ARB),
1235 MSM_RPM_STATUS_ID_MAP(8064, MMSS_FABRIC_CFG_HALT),
1236 MSM_RPM_STATUS_ID_MAP(8064, MMSS_FABRIC_CFG_CLKMOD),
1237 MSM_RPM_STATUS_ID_MAP(8064, MMSS_FABRIC_CFG_IOCTL),
1238 MSM_RPM_STATUS_ID_MAP(8064, MM_FABRIC_ARB),
1239 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S1_0),
1240 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S1_1),
1241 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S2_0),
1242 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S2_1),
1243 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S3_0),
1244 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S3_1),
1245 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S4_0),
1246 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S4_1),
1247 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S5_0),
1248 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S5_1),
1249 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S6_0),
1250 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S6_1),
1251 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S7_0),
1252 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S7_1),
1253 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S8_0),
1254 MSM_RPM_STATUS_ID_MAP(8064, PM8921_S8_1),
1255 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L1_0),
1256 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L1_1),
1257 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L2_0),
1258 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L2_1),
1259 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L3_0),
1260 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L3_1),
1261 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L4_0),
1262 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L4_1),
1263 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L5_0),
1264 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L5_1),
1265 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L6_0),
1266 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L6_1),
1267 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L7_0),
1268 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L7_1),
1269 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L8_0),
1270 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L8_1),
1271 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L9_0),
1272 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L9_1),
1273 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L10_0),
1274 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L10_1),
1275 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L11_0),
1276 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L11_1),
1277 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L12_0),
1278 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L12_1),
1279 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L13_0),
1280 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L13_1),
1281 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L14_0),
1282 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L14_1),
1283 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L15_0),
1284 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L15_1),
1285 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L16_0),
1286 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L16_1),
1287 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L17_0),
1288 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L17_1),
1289 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L18_0),
1290 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L18_1),
1291 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L19_0),
1292 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L19_1),
1293 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L20_0),
1294 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L20_1),
1295 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L21_0),
1296 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L21_1),
1297 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L22_0),
1298 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L22_1),
1299 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L23_0),
1300 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L23_1),
1301 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L24_0),
1302 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L24_1),
1303 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L25_0),
1304 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L25_1),
1305 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L26_0),
1306 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L26_1),
1307 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L27_0),
1308 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L27_1),
1309 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L28_0),
1310 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L28_1),
1311 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L29_0),
1312 MSM_RPM_STATUS_ID_MAP(8064, PM8921_L29_1),
1313 MSM_RPM_STATUS_ID_MAP(8064, PM8921_CLK1_0),
1314 MSM_RPM_STATUS_ID_MAP(8064, PM8921_CLK1_1),
1315 MSM_RPM_STATUS_ID_MAP(8064, PM8921_CLK2_0),
1316 MSM_RPM_STATUS_ID_MAP(8064, PM8921_CLK2_1),
1317 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS1),
1318 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS2),
1319 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS3),
1320 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS4),
1321 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS5),
1322 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS6),
1323 MSM_RPM_STATUS_ID_MAP(8064, PM8921_LVS7),
1324 MSM_RPM_STATUS_ID_MAP(8064, NCP_0),
1325 MSM_RPM_STATUS_ID_MAP(8064, NCP_1),
1326 MSM_RPM_STATUS_ID_MAP(8064, CXO_BUFFERS),
1327 MSM_RPM_STATUS_ID_MAP(8064, USB_OTG_SWITCH),
1328 MSM_RPM_STATUS_ID_MAP(8064, HDMI_SWITCH),
1329 MSM_RPM_STATUS_ID_MAP(8064, DDR_DMM_0),
1330 MSM_RPM_STATUS_ID_MAP(8064, DDR_DMM_1),
1331 MSM_RPM_STATUS_ID_MAP(8064, EBI1_CH0_RANGE),
1332 MSM_RPM_STATUS_ID_MAP(8064, EBI1_CH1_RANGE),
1333 MSM_RPM_STATUS_ID_MAP(8064, PM8821_S1_0),
1334 MSM_RPM_STATUS_ID_MAP(8064, PM8821_S1_1),
1335 MSM_RPM_STATUS_ID_MAP(8064, PM8821_S2_0),
1336 MSM_RPM_STATUS_ID_MAP(8064, PM8821_S2_1),
1337 MSM_RPM_STATUS_ID_MAP(8064, PM8821_L1_0),
1338 MSM_RPM_STATUS_ID_MAP(8064, PM8821_L1_1),
1339 },
1340 .target_ctrl_id = {
1341 MSM_RPM_CTRL_MAP(8064, VERSION_MAJOR),
1342 MSM_RPM_CTRL_MAP(8064, VERSION_MINOR),
1343 MSM_RPM_CTRL_MAP(8064, VERSION_BUILD),
1344 MSM_RPM_CTRL_MAP(8064, REQ_CTX_0),
1345 MSM_RPM_CTRL_MAP(8064, REQ_SEL_0),
1346 MSM_RPM_CTRL_MAP(8064, ACK_CTX_0),
1347 MSM_RPM_CTRL_MAP(8064, ACK_SEL_0),
1348 },
1349 .sel_invalidate = MSM_RPM_8064_SEL_INVALIDATE,
1350 .sel_notification = MSM_RPM_8064_SEL_NOTIFICATION,
1351 .sel_last = MSM_RPM_8064_SEL_LAST,
1352 .ver = {3, 0, 0},
1353};
1354
1355struct platform_device apq8064_rpm_device = {
1356 .name = "msm_rpm",
1357 .id = -1,
1358};
1359
1360static struct msm_rpmstats_platform_data msm_rpm_stat_pdata = {
1361 .phys_addr_base = 0x0010D204,
1362 .phys_size = SZ_8K,
1363};
1364
1365struct platform_device apq8064_rpm_stat_device = {
1366 .name = "msm_rpm_stat",
1367 .id = -1,
1368 .dev = {
1369 .platform_data = &msm_rpm_stat_pdata,
1370 },
1371};
1372
1373static struct msm_rpm_log_platform_data msm_rpm_log_pdata = {
1374 .phys_addr_base = 0x0010C000,
1375 .reg_offsets = {
1376 [MSM_RPM_LOG_PAGE_INDICES] = 0x00000080,
1377 [MSM_RPM_LOG_PAGE_BUFFER] = 0x000000A0,
1378 },
1379 .phys_size = SZ_8K,
1380 .log_len = 4096, /* log's buffer length in bytes */
1381 .log_len_mask = (4096 >> 2) - 1, /* length mask in units of u32 */
1382};
1383
1384struct platform_device apq8064_rpm_log_device = {
1385 .name = "msm_rpm_log",
1386 .id = -1,
1387 .dev = {
1388 .platform_data = &msm_rpm_log_pdata,
1389 },
1390};
1391
1392#ifdef CONFIG_MSM_MPM
1393static uint16_t msm_mpm_irqs_m2a[MSM_MPM_NR_MPM_IRQS] __initdata = {
1394 [1] = MSM_GPIO_TO_INT(26),
1395 [2] = MSM_GPIO_TO_INT(88),
1396 [4] = MSM_GPIO_TO_INT(73),
1397 [5] = MSM_GPIO_TO_INT(74),
1398 [6] = MSM_GPIO_TO_INT(75),
1399 [7] = MSM_GPIO_TO_INT(76),
1400 [8] = MSM_GPIO_TO_INT(77),
1401 [9] = MSM_GPIO_TO_INT(36),
1402 [10] = MSM_GPIO_TO_INT(84),
1403 [11] = MSM_GPIO_TO_INT(7),
1404 [12] = MSM_GPIO_TO_INT(11),
1405 [13] = MSM_GPIO_TO_INT(52),
1406 [14] = MSM_GPIO_TO_INT(15),
1407 [15] = MSM_GPIO_TO_INT(83),
1408 [16] = USB3_HS_IRQ,
1409 [19] = MSM_GPIO_TO_INT(61),
1410 [20] = MSM_GPIO_TO_INT(58),
1411 [23] = MSM_GPIO_TO_INT(65),
1412 [24] = MSM_GPIO_TO_INT(63),
1413 [25] = USB1_HS_IRQ,
1414 [27] = HDMI_IRQ,
1415 [29] = MSM_GPIO_TO_INT(22),
1416 [30] = MSM_GPIO_TO_INT(72),
1417 [31] = USB4_HS_IRQ,
1418 [33] = MSM_GPIO_TO_INT(44),
1419 [34] = MSM_GPIO_TO_INT(39),
1420 [35] = MSM_GPIO_TO_INT(19),
1421 [36] = MSM_GPIO_TO_INT(23),
1422 [37] = MSM_GPIO_TO_INT(41),
1423 [38] = MSM_GPIO_TO_INT(30),
1424 [41] = MSM_GPIO_TO_INT(42),
1425 [42] = MSM_GPIO_TO_INT(56),
1426 [43] = MSM_GPIO_TO_INT(55),
1427 [44] = MSM_GPIO_TO_INT(50),
1428 [45] = MSM_GPIO_TO_INT(49),
1429 [46] = MSM_GPIO_TO_INT(47),
1430 [47] = MSM_GPIO_TO_INT(45),
1431 [48] = MSM_GPIO_TO_INT(38),
1432 [49] = MSM_GPIO_TO_INT(34),
1433 [50] = MSM_GPIO_TO_INT(32),
1434 [51] = MSM_GPIO_TO_INT(29),
1435 [52] = MSM_GPIO_TO_INT(18),
1436 [53] = MSM_GPIO_TO_INT(10),
1437 [54] = MSM_GPIO_TO_INT(81),
1438 [55] = MSM_GPIO_TO_INT(6),
1439};
1440
1441static uint16_t msm_mpm_bypassed_apps_irqs[] __initdata = {
1442 TLMM_MSM_SUMMARY_IRQ,
1443 RPM_APCC_CPU0_GP_HIGH_IRQ,
1444 RPM_APCC_CPU0_GP_MEDIUM_IRQ,
1445 RPM_APCC_CPU0_GP_LOW_IRQ,
1446 RPM_APCC_CPU0_WAKE_UP_IRQ,
1447 RPM_APCC_CPU1_GP_HIGH_IRQ,
1448 RPM_APCC_CPU1_GP_MEDIUM_IRQ,
1449 RPM_APCC_CPU1_GP_LOW_IRQ,
1450 RPM_APCC_CPU1_WAKE_UP_IRQ,
1451 MSS_TO_APPS_IRQ_0,
1452 MSS_TO_APPS_IRQ_1,
1453 MSS_TO_APPS_IRQ_2,
1454 MSS_TO_APPS_IRQ_3,
1455 MSS_TO_APPS_IRQ_4,
1456 MSS_TO_APPS_IRQ_5,
1457 MSS_TO_APPS_IRQ_6,
1458 MSS_TO_APPS_IRQ_7,
1459 MSS_TO_APPS_IRQ_8,
1460 MSS_TO_APPS_IRQ_9,
1461 LPASS_SCSS_GP_LOW_IRQ,
1462 LPASS_SCSS_GP_MEDIUM_IRQ,
1463 LPASS_SCSS_GP_HIGH_IRQ,
1464 SPS_MTI_30,
1465 SPS_MTI_31,
1466 RIVA_APSS_SPARE_IRQ,
1467 RIVA_APPS_WLAN_SMSM_IRQ,
1468 RIVA_APPS_WLAN_RX_DATA_AVAIL_IRQ,
1469 RIVA_APPS_WLAN_DATA_XFER_DONE_IRQ,
1470};
1471
1472struct msm_mpm_device_data apq8064_mpm_dev_data __initdata = {
1473 .irqs_m2a = msm_mpm_irqs_m2a,
1474 .irqs_m2a_size = ARRAY_SIZE(msm_mpm_irqs_m2a),
1475 .bypassed_apps_irqs = msm_mpm_bypassed_apps_irqs,
1476 .bypassed_apps_irqs_size = ARRAY_SIZE(msm_mpm_bypassed_apps_irqs),
1477 .mpm_request_reg_base = MSM_RPM_BASE + 0x9d8,
1478 .mpm_status_reg_base = MSM_RPM_BASE + 0xdf8,
1479 .mpm_apps_ipc_reg = MSM_APCS_GCC_BASE + 0x008,
1480 .mpm_apps_ipc_val = BIT(1),
1481 .mpm_ipc_irq = RPM_APCC_CPU0_GP_MEDIUM_IRQ,
1482
1483};
1484#endif
Joel Kingdacbc822012-01-25 13:30:57 -08001485
1486#define MDM2AP_ERRFATAL 19
1487#define AP2MDM_ERRFATAL 18
1488#define MDM2AP_STATUS 49
1489#define AP2MDM_STATUS 48
1490#define AP2MDM_PMIC_RESET_N 27
1491
1492static struct resource mdm_resources[] = {
1493 {
1494 .start = MDM2AP_ERRFATAL,
1495 .end = MDM2AP_ERRFATAL,
1496 .name = "MDM2AP_ERRFATAL",
1497 .flags = IORESOURCE_IO,
1498 },
1499 {
1500 .start = AP2MDM_ERRFATAL,
1501 .end = AP2MDM_ERRFATAL,
1502 .name = "AP2MDM_ERRFATAL",
1503 .flags = IORESOURCE_IO,
1504 },
1505 {
1506 .start = MDM2AP_STATUS,
1507 .end = MDM2AP_STATUS,
1508 .name = "MDM2AP_STATUS",
1509 .flags = IORESOURCE_IO,
1510 },
1511 {
1512 .start = AP2MDM_STATUS,
1513 .end = AP2MDM_STATUS,
1514 .name = "AP2MDM_STATUS",
1515 .flags = IORESOURCE_IO,
1516 },
1517 {
1518 .start = AP2MDM_PMIC_RESET_N,
1519 .end = AP2MDM_PMIC_RESET_N,
1520 .name = "AP2MDM_PMIC_RESET_N",
1521 .flags = IORESOURCE_IO,
1522 },
1523};
1524
1525struct platform_device mdm_8064_device = {
1526 .name = "mdm2_modem",
1527 .id = -1,
1528 .num_resources = ARRAY_SIZE(mdm_resources),
1529 .resource = mdm_resources,
1530};
1531