blob: 19c7acdbd20bc19f1f9683bd75c302e11ff37280 [file] [log] [blame]
Brian Swetland30421022007-11-26 04:11:43 -08001/* arch/arm/mach-msm/io.c
2 *
Daniel Walkercf62ffa2010-05-04 15:12:27 -07003 * MSM7K, QSD io support
Brian Swetland30421022007-11-26 04:11:43 -08004 *
5 * Copyright (C) 2007 Google, Inc.
Syed Rameez Mustafa3971c142013-01-09 19:04:53 -08006 * Copyright (c) 2008-2013, The Linux Foundation. All rights reserved.
Brian Swetland30421022007-11-26 04:11:43 -08007 * Author: Brian Swetland <swetland@google.com>
8 *
9 * This software is licensed under the terms of the GNU General Public
10 * License version 2, as published by the Free Software Foundation, and
11 * may be copied, distributed, and modified under those terms.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 */
19
20#include <linux/kernel.h>
21#include <linux/init.h>
Russell Kingfced80c2008-09-06 12:10:45 +010022#include <linux/io.h>
Paul Gortmakerdc280942011-07-31 16:17:29 -040023#include <linux/export.h>
Brian Swetland30421022007-11-26 04:11:43 -080024
Russell Kinga09e64f2008-08-05 16:14:15 +010025#include <mach/hardware.h>
Brian Swetland30421022007-11-26 04:11:43 -080026#include <asm/page.h>
Russell Kinga09e64f2008-08-05 16:14:15 +010027#include <mach/msm_iomap.h>
Trilok Soni80c19362012-10-15 00:55:00 +053028#include <mach/memory.h>
Brian Swetland30421022007-11-26 04:11:43 -080029#include <asm/mach/map.h>
Steve Mucklef132c6c2012-06-06 18:30:57 -070030#include <linux/dma-mapping.h>
Abhimanyu Kapur032b1f42013-01-18 00:10:50 -080031#include <linux/of_fdt.h>
Brian Swetland30421022007-11-26 04:11:43 -080032
Russell Kinga09e64f2008-08-05 16:14:15 +010033#include <mach/board.h>
Abhimanyu Kapur032b1f42013-01-18 00:10:50 -080034#include "board-dt.h"
Brian Swetland30421022007-11-26 04:11:43 -080035
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070036#define MSM_CHIP_DEVICE(name, chip) { \
Brian Swetlandbcc0f6a2008-09-10 14:00:53 -070037 .virtual = (unsigned long) MSM_##name##_BASE, \
David Brown8c27e6f2011-01-07 10:20:49 -080038 .pfn = __phys_to_pfn(chip##_##name##_PHYS), \
39 .length = chip##_##name##_SIZE, \
Rohit Vaswanidba530e2012-06-12 20:04:28 -070040 .type = MT_DEVICE, \
Brian Swetland30421022007-11-26 04:11:43 -080041 }
42
David Brown8c27e6f2011-01-07 10:20:49 -080043#define MSM_DEVICE(name) MSM_CHIP_DEVICE(name, MSM)
44
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070045/* msm_shared_ram_phys default value of 0x00100000 is the most common value
46 * and should work as-is for any target without stacked memory.
47 */
48unsigned int msm_shared_ram_phys = 0x00100000;
49
Stephen Boyd552e4292012-02-21 01:27:20 -080050static void __init msm_map_io(struct map_desc *io_desc, int size)
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070051{
52 int i;
53
54 BUG_ON(!size);
55 for (i = 0; i < size; i++)
56 if (io_desc[i].virtual == (unsigned long)MSM_SHARED_RAM_BASE)
57 io_desc[i].pfn = __phys_to_pfn(msm_shared_ram_phys);
58
59 iotable_init(io_desc, size);
60}
61
62#if defined(CONFIG_ARCH_MSM7X01A) || defined(CONFIG_ARCH_MSM7X27) \
Daniel Walkercf62ffa2010-05-04 15:12:27 -070063 || defined(CONFIG_ARCH_MSM7X25)
Brian Swetland30421022007-11-26 04:11:43 -080064static struct map_desc msm_io_desc[] __initdata = {
Taniya Das13b811a2011-12-09 18:33:45 +053065 MSM_CHIP_DEVICE(VIC, MSM7XXX),
66 MSM_CHIP_DEVICE(CSR, MSM7XXX),
67 MSM_CHIP_DEVICE(TMR, MSM7XXX),
68 MSM_CHIP_DEVICE(GPIO1, MSM7XXX),
69 MSM_CHIP_DEVICE(GPIO2, MSM7XXX),
70 MSM_CHIP_DEVICE(CLK_CTL, MSM7XXX),
71 MSM_CHIP_DEVICE(AD5, MSM7XXX),
72 MSM_CHIP_DEVICE(MDC, MSM7XXX),
Stephen Boyd650e3f02011-11-08 10:33:03 -080073#if defined(CONFIG_DEBUG_MSM_UART1) || defined(CONFIG_DEBUG_MSM_UART2) || \
74 defined(CONFIG_DEBUG_MSM_UART3)
Pavel Machek6339f662009-11-02 11:48:29 +010075 MSM_DEVICE(DEBUG_UART),
76#endif
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070077#ifdef CONFIG_CACHE_L2X0
78 {
79 .virtual = (unsigned long) MSM_L2CC_BASE,
Taniya Das13b811a2011-12-09 18:33:45 +053080 .pfn = __phys_to_pfn(MSM7XXX_L2CC_PHYS),
81 .length = MSM7XXX_L2CC_SIZE,
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070082 .type = MT_DEVICE,
83 },
Dima Zavinb42dc442010-01-29 11:43:42 -080084#endif
Brian Swetland30421022007-11-26 04:11:43 -080085 {
Brian Swetlandbcc0f6a2008-09-10 14:00:53 -070086 .virtual = (unsigned long) MSM_SHARED_RAM_BASE,
Brian Swetland30421022007-11-26 04:11:43 -080087 .length = MSM_SHARED_RAM_SIZE,
88 .type = MT_DEVICE,
89 },
90};
91
92void __init msm_map_common_io(void)
93{
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070094 /*Peripheral port memory remap, nothing looks to be there for
95 * cortex a5.
96 */
97#ifndef CONFIG_ARCH_MSM_CORTEX_A5
Brian Swetland30421022007-11-26 04:11:43 -080098 /* Make sure the peripheral register window is closed, since
99 * we will use PTE flags (TEX[1]=1,B=0,C=1) to determine which
100 * pages are peripheral interface or not.
101 */
102 asm("mcr p15, 0, %0, c15, c2, 4" : : "r" (0));
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700103#endif
104 msm_map_io(msm_io_desc, ARRAY_SIZE(msm_io_desc));
Trilok Soni80c19362012-10-15 00:55:00 +0530105 map_page_strongly_ordered();
Brian Swetland30421022007-11-26 04:11:43 -0800106}
Daniel Walkercf62ffa2010-05-04 15:12:27 -0700107#endif
108
109#ifdef CONFIG_ARCH_QSD8X50
110static struct map_desc qsd8x50_io_desc[] __initdata = {
111 MSM_DEVICE(VIC),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700112 MSM_DEVICE(CSR),
113 MSM_DEVICE(TMR),
Daniel Walkercf62ffa2010-05-04 15:12:27 -0700114 MSM_DEVICE(GPIO1),
115 MSM_DEVICE(GPIO2),
116 MSM_DEVICE(CLK_CTL),
117 MSM_DEVICE(SIRC),
118 MSM_DEVICE(SCPLL),
119 MSM_DEVICE(AD5),
120 MSM_DEVICE(MDC),
Daniel Walkerc83b2bf2010-05-04 15:26:13 -0700121 MSM_DEVICE(TCSR),
Stephen Boyd650e3f02011-11-08 10:33:03 -0800122#if defined(CONFIG_DEBUG_MSM_UART1) || defined(CONFIG_DEBUG_MSM_UART2) || \
123 defined(CONFIG_DEBUG_MSM_UART3)
Daniel Walkerc83b2bf2010-05-04 15:26:13 -0700124 MSM_DEVICE(DEBUG_UART),
125#endif
126 {
127 .virtual = (unsigned long) MSM_SHARED_RAM_BASE,
Daniel Walkercf62ffa2010-05-04 15:12:27 -0700128 .length = MSM_SHARED_RAM_SIZE,
129 .type = MT_DEVICE,
130 },
131};
132
133void __init msm_map_qsd8x50_io(void)
134{
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700135 msm_map_io(qsd8x50_io_desc, ARRAY_SIZE(qsd8x50_io_desc));
Daniel Walkercf62ffa2010-05-04 15:12:27 -0700136}
Brian Swetland30421022007-11-26 04:11:43 -0800137#endif /* CONFIG_ARCH_QSD8X50 */
Daniel Walkerc83b2bf2010-05-04 15:26:13 -0700138
139#ifdef CONFIG_ARCH_MSM8X60
140static struct map_desc msm8x60_io_desc[] __initdata = {
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700141 MSM_DEVICE(QGIC_DIST),
142 MSM_DEVICE(QGIC_CPU),
143 MSM_DEVICE(TMR),
144 MSM_DEVICE(TMR0),
145 MSM_DEVICE(RPM_MPM),
Daniel Walkerc83b2bf2010-05-04 15:26:13 -0700146 MSM_DEVICE(ACC),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700147 MSM_DEVICE(ACC0),
148 MSM_DEVICE(ACC1),
149 MSM_DEVICE(SAW0),
150 MSM_DEVICE(SAW1),
Daniel Walkerc83b2bf2010-05-04 15:26:13 -0700151 MSM_DEVICE(GCC),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700152 MSM_DEVICE(TLMM),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700153 MSM_DEVICE(SCPLL),
154 MSM_DEVICE(RPM),
155 MSM_DEVICE(CLK_CTL),
156 MSM_DEVICE(MMSS_CLK_CTL),
157 MSM_DEVICE(LPASS_CLK_CTL),
158 MSM_DEVICE(TCSR),
159 MSM_DEVICE(IMEM),
160 MSM_DEVICE(HDMI),
Sathish Ambleybb87d5f2011-11-08 15:14:01 -0800161#ifdef CONFIG_DEBUG_MSM8660_UART
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700162 MSM_DEVICE(DEBUG_UART),
163#endif
164 MSM_DEVICE(SIC_NON_SECURE),
165 {
166 .virtual = (unsigned long) MSM_SHARED_RAM_BASE,
167 .length = MSM_SHARED_RAM_SIZE,
168 .type = MT_DEVICE,
169 },
170 MSM_DEVICE(QFPROM),
Daniel Walkerc83b2bf2010-05-04 15:26:13 -0700171};
172
173void __init msm_map_msm8x60_io(void)
174{
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700175 msm_map_io(msm8x60_io_desc, ARRAY_SIZE(msm8x60_io_desc));
Steve Mucklef132c6c2012-06-06 18:30:57 -0700176 init_consistent_dma_size(14*SZ_1M);
Daniel Walkerc83b2bf2010-05-04 15:26:13 -0700177}
178#endif /* CONFIG_ARCH_MSM8X60 */
179
180#ifdef CONFIG_ARCH_MSM8960
181static struct map_desc msm8960_io_desc[] __initdata = {
182 MSM_CHIP_DEVICE(QGIC_DIST, MSM8960),
183 MSM_CHIP_DEVICE(QGIC_CPU, MSM8960),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700184 MSM_CHIP_DEVICE(ACC0, MSM8960),
185 MSM_CHIP_DEVICE(ACC1, MSM8960),
Daniel Walkerc83b2bf2010-05-04 15:26:13 -0700186 MSM_CHIP_DEVICE(TMR, MSM8960),
187 MSM_CHIP_DEVICE(TMR0, MSM8960),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700188 MSM_CHIP_DEVICE(RPM_MPM, MSM8960),
189 MSM_CHIP_DEVICE(CLK_CTL, MSM8960),
190 MSM_CHIP_DEVICE(MMSS_CLK_CTL, MSM8960),
191 MSM_CHIP_DEVICE(LPASS_CLK_CTL, MSM8960),
192 MSM_CHIP_DEVICE(RPM, MSM8960),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700193 MSM_CHIP_DEVICE(TLMM, MSM8960),
194 MSM_CHIP_DEVICE(HFPLL, MSM8960),
195 MSM_CHIP_DEVICE(SAW0, MSM8960),
196 MSM_CHIP_DEVICE(SAW1, MSM8960),
197 MSM_CHIP_DEVICE(SAW_L2, MSM8960),
198 MSM_CHIP_DEVICE(SIC_NON_SECURE, MSM8960),
199 MSM_CHIP_DEVICE(APCS_GCC, MSM8960),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700200 MSM_CHIP_DEVICE(IMEM, MSM8960),
201 MSM_CHIP_DEVICE(HDMI, MSM8960),
202 {
203 .virtual = (unsigned long) MSM_SHARED_RAM_BASE,
204 .length = MSM_SHARED_RAM_SIZE,
205 .type = MT_DEVICE,
206 },
Sathish Ambleybb87d5f2011-11-08 15:14:01 -0800207#ifdef CONFIG_DEBUG_MSM8960_UART
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700208 MSM_DEVICE(DEBUG_UART),
209#endif
Siddartha Mohanadossce1315a2011-04-21 15:25:55 -0700210 MSM_CHIP_DEVICE(QFPROM, MSM8960),
Daniel Walkerc83b2bf2010-05-04 15:26:13 -0700211};
212
213void __init msm_map_msm8960_io(void)
214{
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700215 msm_map_io(msm8960_io_desc, ARRAY_SIZE(msm8960_io_desc));
Daniel Walkerc83b2bf2010-05-04 15:26:13 -0700216}
217#endif /* CONFIG_ARCH_MSM8960 */
218
Stepan Moskovchenko2b992ad2011-10-18 17:24:18 -0700219#ifdef CONFIG_ARCH_MSM8930
220static struct map_desc msm8930_io_desc[] __initdata = {
221 MSM_CHIP_DEVICE(QGIC_DIST, MSM8930),
222 MSM_CHIP_DEVICE(QGIC_CPU, MSM8930),
223 MSM_CHIP_DEVICE(ACC0, MSM8930),
224 MSM_CHIP_DEVICE(ACC1, MSM8930),
225 MSM_CHIP_DEVICE(TMR, MSM8930),
226 MSM_CHIP_DEVICE(TMR0, MSM8930),
227 MSM_CHIP_DEVICE(RPM_MPM, MSM8930),
228 MSM_CHIP_DEVICE(CLK_CTL, MSM8930),
229 MSM_CHIP_DEVICE(MMSS_CLK_CTL, MSM8930),
230 MSM_CHIP_DEVICE(LPASS_CLK_CTL, MSM8930),
231 MSM_CHIP_DEVICE(RPM, MSM8930),
232 MSM_CHIP_DEVICE(TLMM, MSM8930),
233 MSM_CHIP_DEVICE(HFPLL, MSM8930),
234 MSM_CHIP_DEVICE(SAW0, MSM8930),
235 MSM_CHIP_DEVICE(SAW1, MSM8930),
236 MSM_CHIP_DEVICE(SAW_L2, MSM8930),
237 MSM_CHIP_DEVICE(SIC_NON_SECURE, MSM8930),
238 MSM_CHIP_DEVICE(APCS_GCC, MSM8930),
239 MSM_CHIP_DEVICE(IMEM, MSM8930),
240 MSM_CHIP_DEVICE(HDMI, MSM8930),
241 {
242 .virtual = (unsigned long) MSM_SHARED_RAM_BASE,
243 .length = MSM_SHARED_RAM_SIZE,
244 .type = MT_DEVICE,
245 },
Sathish Ambleybb87d5f2011-11-08 15:14:01 -0800246#ifdef CONFIG_DEBUG_MSM8930_UART
Stepan Moskovchenko2b992ad2011-10-18 17:24:18 -0700247 MSM_DEVICE(DEBUG_UART),
248#endif
249 MSM_CHIP_DEVICE(QFPROM, MSM8930),
250};
251
252void __init msm_map_msm8930_io(void)
253{
254 msm_map_io(msm8930_io_desc, ARRAY_SIZE(msm8930_io_desc));
255}
256#endif /* CONFIG_ARCH_MSM8930 */
257
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700258#ifdef CONFIG_ARCH_APQ8064
259static struct map_desc apq8064_io_desc[] __initdata = {
260 MSM_CHIP_DEVICE(QGIC_DIST, APQ8064),
261 MSM_CHIP_DEVICE(QGIC_CPU, APQ8064),
262 MSM_CHIP_DEVICE(TMR, APQ8064),
263 MSM_CHIP_DEVICE(TMR0, APQ8064),
Joel King4ebccc62011-07-22 09:43:22 -0700264 MSM_CHIP_DEVICE(TLMM, APQ8064),
Vikram Mulukutlabb408eb2011-08-04 09:28:56 -0700265 MSM_CHIP_DEVICE(ACC0, APQ8064),
266 MSM_CHIP_DEVICE(ACC1, APQ8064),
267 MSM_CHIP_DEVICE(ACC2, APQ8064),
268 MSM_CHIP_DEVICE(ACC3, APQ8064),
269 MSM_CHIP_DEVICE(HFPLL, APQ8064),
Tianyi Gou33430412011-09-07 21:50:42 -0700270 MSM_CHIP_DEVICE(CLK_CTL, APQ8064),
271 MSM_CHIP_DEVICE(MMSS_CLK_CTL, APQ8064),
272 MSM_CHIP_DEVICE(LPASS_CLK_CTL, APQ8064),
Vikram Mulukutlabb408eb2011-08-04 09:28:56 -0700273 MSM_CHIP_DEVICE(APCS_GCC, APQ8064),
Praveen Chidambaramd9a41732011-10-17 09:41:05 -0600274 MSM_CHIP_DEVICE(RPM, APQ8064),
275 MSM_CHIP_DEVICE(RPM_MPM, APQ8064),
276 MSM_CHIP_DEVICE(SAW0, APQ8064),
277 MSM_CHIP_DEVICE(SAW1, APQ8064),
278 MSM_CHIP_DEVICE(SAW2, APQ8064),
279 MSM_CHIP_DEVICE(SAW3, APQ8064),
280 MSM_CHIP_DEVICE(SAW_L2, APQ8064),
Stepan Moskovchenko3e444e52011-08-05 17:59:48 -0700281 MSM_CHIP_DEVICE(IMEM, APQ8064),
Aravind Venkateswaran7eb05da2012-02-16 14:23:03 -0800282 MSM_CHIP_DEVICE(HDMI, APQ8064),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700283 {
284 .virtual = (unsigned long) MSM_SHARED_RAM_BASE,
285 .length = MSM_SHARED_RAM_SIZE,
286 .type = MT_DEVICE,
287 },
Vijayakumar Muthuvel Manickamf35fd732012-01-13 16:17:52 -0800288 MSM_CHIP_DEVICE(QFPROM, APQ8064),
Jeff Hugo85bfed42012-01-31 10:10:14 -0700289 MSM_CHIP_DEVICE(SIC_NON_SECURE, APQ8064),
Stepan Moskovchenko824db172012-05-29 18:05:09 -0700290#ifdef CONFIG_DEBUG_APQ8064_UART
291 MSM_DEVICE(DEBUG_UART),
292#endif
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700293};
294
295void __init msm_map_apq8064_io(void)
296{
297 msm_map_io(apq8064_io_desc, ARRAY_SIZE(apq8064_io_desc));
298}
299#endif /* CONFIG_ARCH_APQ8064 */
300
Abhimanyu Kapur90ced6e2012-06-26 17:41:25 -0700301#ifdef CONFIG_ARCH_MSM8974
302static struct map_desc msm_8974_io_desc[] __initdata = {
303 MSM_CHIP_DEVICE(QGIC_DIST, MSM8974),
Abhimanyu Kapur90ced6e2012-06-26 17:41:25 -0700304 MSM_CHIP_DEVICE(TLMM, MSM8974),
Stepan Moskovchenkoda7ce9c2012-08-14 21:02:21 -0700305 MSM_CHIP_DEVICE(MPM2_PSHOLD, MSM8974),
Jeff Hugo70946092012-02-10 11:30:43 -0700306 {
307 .virtual = (unsigned long) MSM_SHARED_RAM_BASE,
308 .length = MSM_SHARED_RAM_SIZE,
309 .type = MT_DEVICE,
310 },
Abhimanyu Kapur90ced6e2012-06-26 17:41:25 -0700311#ifdef CONFIG_DEBUG_MSM8974_UART
Sathish Ambleyf5bebd62011-11-03 23:36:36 -0700312 MSM_DEVICE(DEBUG_UART),
313#endif
Sathish Ambley6829db12011-10-08 22:41:23 -0700314};
315
Abhimanyu Kapur90ced6e2012-06-26 17:41:25 -0700316void __init msm_map_8974_io(void)
Sathish Ambley6829db12011-10-08 22:41:23 -0700317{
Abhimanyu Kapur90ced6e2012-06-26 17:41:25 -0700318 msm_shared_ram_phys = MSM8974_MSM_SHARED_RAM_PHYS;
319 msm_map_io(msm_8974_io_desc, ARRAY_SIZE(msm_8974_io_desc));
Abhimanyu Kapur032b1f42013-01-18 00:10:50 -0800320 of_scan_flat_dt(msm_scan_dt_map_imem, NULL);
Sathish Ambley6829db12011-10-08 22:41:23 -0700321}
Abhimanyu Kapur90ced6e2012-06-26 17:41:25 -0700322#endif /* CONFIG_ARCH_MSM8974 */
Sathish Ambley6829db12011-10-08 22:41:23 -0700323
Stepan Moskovchenkob6bd0bb2013-01-24 15:55:35 -0800324#ifdef CONFIG_ARCH_MSMZINC
325static struct map_desc msm_zinc_io_desc[] __initdata = {
326 MSM_CHIP_DEVICE(QGIC_DIST, MSMZINC),
Stepan Moskovchenkob6bd0bb2013-01-24 15:55:35 -0800327 MSM_CHIP_DEVICE(TLMM, MSMZINC),
Stepan Moskovchenkob6bd0bb2013-01-24 15:55:35 -0800328 {
329 .virtual = (unsigned long) MSM_SHARED_RAM_BASE,
330 .length = MSM_SHARED_RAM_SIZE,
331 .type = MT_DEVICE,
332 },
Stepan Moskovchenko80064f32013-03-05 16:58:39 -0800333#ifdef CONFIG_DEBUG_MSMZINC_UART
334 MSM_DEVICE(DEBUG_UART),
335#endif
Stepan Moskovchenkob6bd0bb2013-01-24 15:55:35 -0800336};
337
338void __init msm_map_zinc_io(void)
339{
340 msm_shared_ram_phys = MSMZINC_SHARED_RAM_PHYS;
341 msm_map_io(msm_zinc_io_desc, ARRAY_SIZE(msm_zinc_io_desc));
Stepan Moskovchenkob8dd6a92013-03-18 18:53:34 -0700342 of_scan_flat_dt(msm_scan_dt_map_imem, NULL);
Stepan Moskovchenkob6bd0bb2013-01-24 15:55:35 -0800343}
344#endif /* CONFIG_ARCH_MSMZINC */
345
Daniel Walkerc83b2bf2010-05-04 15:26:13 -0700346#ifdef CONFIG_ARCH_MSM7X30
347static struct map_desc msm7x30_io_desc[] __initdata = {
Taniya Das298de8c2012-02-16 11:45:31 +0530348 MSM_CHIP_DEVICE(VIC, MSM7X30),
349 MSM_CHIP_DEVICE(CSR, MSM7X30),
350 MSM_CHIP_DEVICE(TMR, MSM7X30),
351 MSM_CHIP_DEVICE(GPIO1, MSM7X30),
352 MSM_CHIP_DEVICE(GPIO2, MSM7X30),
353 MSM_CHIP_DEVICE(CLK_CTL, MSM7X30),
354 MSM_CHIP_DEVICE(CLK_CTL_SH2, MSM7X30),
355 MSM_CHIP_DEVICE(AD5, MSM7X30),
356 MSM_CHIP_DEVICE(MDC, MSM7X30),
357 MSM_CHIP_DEVICE(ACC0, MSM7X30),
358 MSM_CHIP_DEVICE(SAW0, MSM7X30),
359 MSM_CHIP_DEVICE(APCS_GCC, MSM7X30),
360 MSM_CHIP_DEVICE(TCSR, MSM7X30),
Sathish Ambleybb87d5f2011-11-08 15:14:01 -0800361#if defined(CONFIG_DEBUG_MSM_UART1) || defined(CONFIG_DEBUG_MSM_UART2) || \
362 defined(CONFIG_DEBUG_MSM_UART3)
Daniel Walkerc83b2bf2010-05-04 15:26:13 -0700363 MSM_DEVICE(DEBUG_UART),
364#endif
365 {
366 .virtual = (unsigned long) MSM_SHARED_RAM_BASE,
Daniel Walkerc83b2bf2010-05-04 15:26:13 -0700367 .length = MSM_SHARED_RAM_SIZE,
368 .type = MT_DEVICE,
369 },
370};
371
372void __init msm_map_msm7x30_io(void)
373{
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700374 msm_map_io(msm7x30_io_desc, ARRAY_SIZE(msm7x30_io_desc));
Daniel Walkerc83b2bf2010-05-04 15:26:13 -0700375}
376#endif /* CONFIG_ARCH_MSM7X30 */
377
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700378#ifdef CONFIG_ARCH_FSM9XXX
379static struct map_desc fsm9xxx_io_desc[] __initdata = {
380 MSM_DEVICE(VIC),
381 MSM_DEVICE(SIRC),
382 MSM_DEVICE(CSR),
383 MSM_DEVICE(TLMM),
384 MSM_DEVICE(TCSR),
385 MSM_DEVICE(CLK_CTL),
386 MSM_DEVICE(ACC),
387 MSM_DEVICE(SAW),
388 MSM_DEVICE(GCC),
389 MSM_DEVICE(GRFC),
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700390 MSM_DEVICE(QFP_FUSE),
391 MSM_DEVICE(HH),
Sathish Ambleybb87d5f2011-11-08 15:14:01 -0800392#if defined(CONFIG_DEBUG_MSM_UART1) || defined(CONFIG_DEBUG_MSM_UART2) || \
393 defined(CONFIG_DEBUG_MSM_UART3)
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700394 MSM_DEVICE(DEBUG_UART),
395#endif
396 {
397 .virtual = (unsigned long) MSM_SHARED_RAM_BASE,
398 .length = MSM_SHARED_RAM_SIZE,
399 .type = MT_DEVICE,
400 },
401};
Brian Swetland30421022007-11-26 04:11:43 -0800402
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700403void __init msm_map_fsm9xxx_io(void)
404{
405 msm_map_io(fsm9xxx_io_desc, ARRAY_SIZE(fsm9xxx_io_desc));
Brian Swetland30421022007-11-26 04:11:43 -0800406}
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700407#endif /* CONFIG_ARCH_FSM9XXX */
408
Rohit Vaswani99fb6f22011-08-15 13:37:32 -0700409#ifdef CONFIG_ARCH_MSM9615
410static struct map_desc msm9615_io_desc[] __initdata = {
411 MSM_CHIP_DEVICE(QGIC_DIST, MSM9615),
412 MSM_CHIP_DEVICE(QGIC_CPU, MSM9615),
413 MSM_CHIP_DEVICE(ACC0, MSM9615),
414 MSM_CHIP_DEVICE(TMR, MSM9615),
Rohit Vaswani99fb6f22011-08-15 13:37:32 -0700415 MSM_CHIP_DEVICE(TLMM, MSM9615),
416 MSM_CHIP_DEVICE(SAW0, MSM9615),
417 MSM_CHIP_DEVICE(APCS_GCC, MSM9615),
418 MSM_CHIP_DEVICE(TCSR, MSM9615),
Vikram Mulukutla489e39e2011-08-31 18:04:05 -0700419 MSM_CHIP_DEVICE(L2CC, MSM9615),
420 MSM_CHIP_DEVICE(CLK_CTL, MSM9615),
421 MSM_CHIP_DEVICE(LPASS_CLK_CTL, MSM9615),
Rohit Vaswani71c86b72011-09-09 16:51:46 -0700422 MSM_CHIP_DEVICE(RPM, MSM9615),
423 MSM_CHIP_DEVICE(RPM_MPM, MSM9615),
424 MSM_CHIP_DEVICE(APCS_GLB, MSM9615),
Rohit Vaswani4f96570c2011-10-13 18:14:37 -0700425 MSM_CHIP_DEVICE(IMEM, MSM9615),
Rohit Vaswani99fb6f22011-08-15 13:37:32 -0700426 {
427 .virtual = (unsigned long) MSM_SHARED_RAM_BASE,
428 .length = MSM_SHARED_RAM_SIZE,
429 .type = MT_DEVICE,
430 },
Siddartha Mohanadoss5d49cec2011-09-21 10:26:15 -0700431 MSM_CHIP_DEVICE(QFPROM, MSM9615),
Rohit Vaswani99fb6f22011-08-15 13:37:32 -0700432};
433
434void __init msm_map_msm9615_io(void)
435{
436 msm_map_io(msm9615_io_desc, ARRAY_SIZE(msm9615_io_desc));
437}
438#endif /* CONFIG_ARCH_MSM9615 */
439
Taniya Das43bcdd62011-12-02 17:33:27 +0530440#ifdef CONFIG_ARCH_MSM8625
441static struct map_desc msm8625_io_desc[] __initdata = {
Taniya Das13b811a2011-12-09 18:33:45 +0530442 MSM_CHIP_DEVICE(CSR, MSM7XXX),
443 MSM_CHIP_DEVICE(GPIO1, MSM7XXX),
444 MSM_CHIP_DEVICE(GPIO2, MSM7XXX),
445 MSM_CHIP_DEVICE(QGIC_DIST, MSM8625),
446 MSM_CHIP_DEVICE(QGIC_CPU, MSM8625),
447 MSM_CHIP_DEVICE(TMR, MSM8625),
448 MSM_CHIP_DEVICE(TMR0, MSM8625),
449 MSM_CHIP_DEVICE(SCU, MSM8625),
450 MSM_CHIP_DEVICE(CFG_CTL, MSM8625),
451 MSM_CHIP_DEVICE(CLK_CTL, MSM8625),
Taniya Das12df7bf2012-02-15 11:36:19 +0530452 MSM_CHIP_DEVICE(SAW0, MSM8625),
453 MSM_CHIP_DEVICE(SAW1, MSM8625),
Murali Nalajala1d1df9c2012-10-31 14:15:52 +0530454 MSM_CHIP_DEVICE(SAW2, MSM8625),
455 MSM_CHIP_DEVICE(SAW3, MSM8625),
Manish Dewangan504430a2012-02-29 17:34:38 +0530456 MSM_CHIP_DEVICE(AD5, MSM7XXX),
Taniya Dase3027e22012-02-27 16:32:27 +0530457 MSM_CHIP_DEVICE(MDC, MSM7XXX),
Taniya Das43bcdd62011-12-02 17:33:27 +0530458#if defined(CONFIG_DEBUG_MSM_UART1) || defined(CONFIG_DEBUG_MSM_UART2) || \
459 defined(CONFIG_DEBUG_MSM_UART3)
Taniya Dasfa4ee7f2012-02-21 15:04:51 +0530460 MSM_DEVICE(DEBUG_UART),
Taniya Das43bcdd62011-12-02 17:33:27 +0530461#endif
462#ifdef CONFIG_CACHE_L2X0
463 {
464 .virtual = (unsigned long) MSM_L2CC_BASE,
Taniya Das13b811a2011-12-09 18:33:45 +0530465 .pfn = __phys_to_pfn(MSM7XXX_L2CC_PHYS),
466 .length = MSM7XXX_L2CC_SIZE,
Taniya Das43bcdd62011-12-02 17:33:27 +0530467 .type = MT_DEVICE,
468 },
469#endif
470 {
471 .virtual = (unsigned long) MSM_SHARED_RAM_BASE,
472 .length = MSM_SHARED_RAM_SIZE,
473 .type = MT_DEVICE,
474 },
475};
476
477void __init msm_map_msm8625_io(void)
478{
479 msm_map_io(msm8625_io_desc, ARRAY_SIZE(msm8625_io_desc));
Trilok Soni80c19362012-10-15 00:55:00 +0530480 map_page_strongly_ordered();
Taniya Das43bcdd62011-12-02 17:33:27 +0530481}
482#else
483void __init msm_map_msm8625_io(void) { return; }
484#endif /* CONFIG_ARCH_MSM8625 */
485
Rohit Vaswani58fc0c62012-04-23 18:50:26 -0700486#ifdef CONFIG_ARCH_MSM9625
487static struct map_desc msm9625_io_desc[] __initdata = {
Girish Mahadevan88170712012-10-09 15:27:06 -0700488 MSM_CHIP_DEVICE(QGIC_DIST, MSM9625),
Rohit Vaswani58fc0c62012-04-23 18:50:26 -0700489 MSM_CHIP_DEVICE(TLMM, MSM9625),
Abhimanyu Kapur46e5e2b2012-10-02 20:45:37 -0700490 MSM_CHIP_DEVICE(MPM2_PSHOLD, MSM9625),
Rohit Vaswani58fc0c62012-04-23 18:50:26 -0700491 MSM_CHIP_DEVICE(TMR, MSM9625),
492 {
493 .virtual = (unsigned long) MSM_SHARED_RAM_BASE,
494 .length = MSM_SHARED_RAM_SIZE,
495 .type = MT_DEVICE,
496 },
497#ifdef CONFIG_DEBUG_MSM9625_UART
498 MSM_DEVICE(DEBUG_UART),
499#endif
500};
501
502void __init msm_map_msm9625_io(void)
503{
504 msm_shared_ram_phys = MSM9625_SHARED_RAM_PHYS;
505 msm_map_io(msm9625_io_desc, ARRAY_SIZE(msm9625_io_desc));
Abhimanyu Kapur032b1f42013-01-18 00:10:50 -0800506 of_scan_flat_dt(msm_scan_dt_map_imem, NULL);
Rohit Vaswani58fc0c62012-04-23 18:50:26 -0700507}
508#endif /* CONFIG_ARCH_MSM9625 */
Ravi Kumar V8834dad2012-08-31 22:49:55 +0530509
510#ifdef CONFIG_ARCH_MPQ8092
511static struct map_desc mpq8092_io_desc[] __initdata = {
512 MSM_CHIP_DEVICE(QGIC_DIST, MPQ8092),
Ravi Kumar V8834dad2012-08-31 22:49:55 +0530513 MSM_CHIP_DEVICE(TLMM, MPQ8092),
514 {
515 .virtual = (unsigned long) MSM_SHARED_RAM_BASE,
516 .length = MSM_SHARED_RAM_SIZE,
517 .type = MT_DEVICE,
518 },
519#ifdef CONFIG_DEBUG_MPQ8092_UART
520 MSM_DEVICE(DEBUG_UART),
521#endif
522};
523
524void __init msm_map_mpq8092_io(void)
525{
Ravi Kumar V8485af62012-09-21 13:15:17 +0530526 msm_shared_ram_phys = MPQ8092_MSM_SHARED_RAM_PHYS;
Ravi Kumar V8834dad2012-08-31 22:49:55 +0530527 msm_map_io(mpq8092_io_desc, ARRAY_SIZE(mpq8092_io_desc));
528}
529#endif /* CONFIG_ARCH_MPQ8092 */
Syed Rameez Mustafa61c9a572012-08-23 16:10:07 -0700530
531#ifdef CONFIG_ARCH_MSM8226
532static struct map_desc msm_8226_io_desc[] __initdata = {
533 MSM_CHIP_DEVICE(QGIC_DIST, MSM8226),
Syed Rameez Mustafa61c9a572012-08-23 16:10:07 -0700534 MSM_CHIP_DEVICE(APCS_GCC, MSM8226),
535 MSM_CHIP_DEVICE(TLMM, MSM8226),
Syed Rameez Mustafa17838192012-11-19 16:42:29 -0800536 MSM_CHIP_DEVICE(MPM2_PSHOLD, MSM8226),
Syed Rameez Mustafa61c9a572012-08-23 16:10:07 -0700537 {
538 .virtual = (unsigned long) MSM_SHARED_RAM_BASE,
539 .length = MSM_SHARED_RAM_SIZE,
540 .type = MT_DEVICE,
541 },
Syed Rameez Mustafa16b1bf32012-09-10 19:21:45 -0700542#ifdef CONFIG_DEBUG_MSM8226_UART
Syed Rameez Mustafa61c9a572012-08-23 16:10:07 -0700543 MSM_DEVICE(DEBUG_UART),
544#endif
545};
546
547
548void __init msm_map_msm8226_io(void)
549{
550 msm_shared_ram_phys = MSM8226_MSM_SHARED_RAM_PHYS;
551 msm_map_io(msm_8226_io_desc, ARRAY_SIZE(msm_8226_io_desc));
Abhimanyu Kapur032b1f42013-01-18 00:10:50 -0800552 of_scan_flat_dt(msm_scan_dt_map_imem, NULL);
Syed Rameez Mustafa61c9a572012-08-23 16:10:07 -0700553}
554#endif /* CONFIG_ARCH_MSM8226 */
Syed Rameez Mustafa8f210052012-09-21 18:28:31 -0700555
Syed Rameez Mustafa3971c142013-01-09 19:04:53 -0800556#ifdef CONFIG_ARCH_MSM8610
557static struct map_desc msm8610_io_desc[] __initdata = {
558 MSM_CHIP_DEVICE(APCS_GCC, MSM8610),
559 MSM_CHIP_DEVICE(TLMM, MSM8610),
560 MSM_CHIP_DEVICE(MPM2_PSHOLD, MSM8610),
Syed Rameez Mustafa8f210052012-09-21 18:28:31 -0700561 {
562 .virtual = (unsigned long) MSM_SHARED_RAM_BASE,
563 .length = MSM_SHARED_RAM_SIZE,
564 .type = MT_DEVICE,
565 },
566};
567
Syed Rameez Mustafa3971c142013-01-09 19:04:53 -0800568void __init msm_map_msm8610_io(void)
Syed Rameez Mustafa8f210052012-09-21 18:28:31 -0700569{
Syed Rameez Mustafa3971c142013-01-09 19:04:53 -0800570 msm_shared_ram_phys = MSM8610_MSM_SHARED_RAM_PHYS;
571 msm_map_io(msm8610_io_desc, ARRAY_SIZE(msm8610_io_desc));
Abhimanyu Kapur032b1f42013-01-18 00:10:50 -0800572 of_scan_flat_dt(msm_scan_dt_map_imem, NULL);
Syed Rameez Mustafa8f210052012-09-21 18:28:31 -0700573}
Syed Rameez Mustafa3971c142013-01-09 19:04:53 -0800574#endif /* CONFIG_ARCH_MSM8610 */