blob: 01dff26c10072c6d3153ac70604986f8c8d10966 [file] [log] [blame]
Amit Kucheriaa329b482010-02-04 12:21:53 -08001/*
2 * Copyright 2008-2009 Freescale Semiconductor, Inc. All Rights Reserved.
3 *
4 * The code contained herein is licensed under the GNU General Public
5 * License. You may obtain a copy of the GNU General Public License
6 * Version 2 or later at the following locations:
7 *
8 * http://www.opensource.org/licenses/gpl-license.html
9 * http://www.gnu.org/copyleft/gpl.html
10 *
11 * Create static mapping between physical to virtual memory.
12 */
13
14#include <linux/mm.h>
15#include <linux/init.h>
16
17#include <asm/mach/map.h>
18
19#include <mach/hardware.h>
20#include <mach/common.h>
21#include <mach/iomux-v3.h>
22
23/*
24 * Define the MX51 memory map.
25 */
Uwe Kleine-König08ff97b2010-10-25 15:38:09 +020026static struct map_desc mx51_io_desc[] __initdata = {
27 imx_map_entry(MX51, IRAM, MT_DEVICE),
28 imx_map_entry(MX51, DEBUG, MT_DEVICE),
29 imx_map_entry(MX51, AIPS1, MT_DEVICE),
30 imx_map_entry(MX51, SPBA0, MT_DEVICE),
31 imx_map_entry(MX51, AIPS2, MT_DEVICE),
Amit Kucheriaa329b482010-02-04 12:21:53 -080032};
33
34/*
35 * This function initializes the memory map. It is called during the
36 * system startup to create static physical to virtual memory mappings
37 * for the IO modules.
38 */
39void __init mx51_map_io(void)
40{
Amit Kucheriaa329b482010-02-04 12:21:53 -080041 mxc_set_cpu_type(MXC_CPU_MX51);
42 mxc_iomux_v3_init(MX51_IO_ADDRESS(MX51_IOMUXC_BASE_ADDR));
43 mxc_arch_reset_init(MX51_IO_ADDRESS(MX51_WDOG_BASE_ADDR));
Uwe Kleine-König08ff97b2010-10-25 15:38:09 +020044 iotable_init(mx51_io_desc, ARRAY_SIZE(mx51_io_desc));
Amit Kucheriaa329b482010-02-04 12:21:53 -080045}
46
Uwe Kleine-König9a763bf2010-06-10 17:11:06 +020047int imx51_register_gpios(void);
48
Amit Kucheriaa329b482010-02-04 12:21:53 -080049void __init mx51_init_irq(void)
50{
Sascha Hauer3d1bc862010-03-18 16:56:30 +010051 unsigned long tzic_addr;
52 void __iomem *tzic_virt;
53
54 if (mx51_revision() < MX51_CHIP_REV_2_0)
55 tzic_addr = MX51_TZIC_BASE_ADDR_TO1;
56 else
57 tzic_addr = MX51_TZIC_BASE_ADDR;
58
59 tzic_virt = ioremap(tzic_addr, SZ_16K);
60 if (!tzic_virt)
61 panic("unable to map TZIC interrupt controller\n");
62
63 tzic_init_irq(tzic_virt);
Jason Wang84659ab2010-07-13 21:02:42 +080064 imx51_register_gpios();
Amit Kucheriaa329b482010-02-04 12:21:53 -080065}