xref: /linux/arch/arm/mach-imx/mach-imx27.c (revision 86fa07075cf3f9bd15ac7aa0a18915f26a442ce8)
1879c0e5eSFabio Estevam // SPDX-License-Identifier: GPL-2.0-or-later
2879c0e5eSFabio Estevam /*
3879c0e5eSFabio Estevam  * Copyright 2012 Sascha Hauer, Pengutronix
4879c0e5eSFabio Estevam  */
5879c0e5eSFabio Estevam 
6*86fa0707SFabio Estevam #include <linux/init.h>
7879c0e5eSFabio Estevam #include <linux/irq.h>
8879c0e5eSFabio Estevam #include <linux/of_irq.h>
9879c0e5eSFabio Estevam #include <linux/of_platform.h>
10*86fa0707SFabio Estevam #include <linux/mm.h>
11879c0e5eSFabio Estevam #include <asm/mach/arch.h>
12*86fa0707SFabio Estevam #include <asm/mach/map.h>
13879c0e5eSFabio Estevam #include <asm/mach/time.h>
14879c0e5eSFabio Estevam 
15879c0e5eSFabio Estevam #include "common.h"
16*86fa0707SFabio Estevam #include "devices/devices-common.h"
17*86fa0707SFabio Estevam #include "hardware.h"
18879c0e5eSFabio Estevam #include "mx27.h"
19879c0e5eSFabio Estevam 
20*86fa0707SFabio Estevam /* MX27 memory map definition */
21*86fa0707SFabio Estevam static struct map_desc imx27_io_desc[] __initdata = {
22*86fa0707SFabio Estevam 	/*
23*86fa0707SFabio Estevam 	 * this fixed mapping covers:
24*86fa0707SFabio Estevam 	 * - AIPI1
25*86fa0707SFabio Estevam 	 * - AIPI2
26*86fa0707SFabio Estevam 	 * - AITC
27*86fa0707SFabio Estevam 	 * - ROM Patch
28*86fa0707SFabio Estevam 	 * - and some reserved space
29*86fa0707SFabio Estevam 	 */
30*86fa0707SFabio Estevam 	imx_map_entry(MX27, AIPI, MT_DEVICE),
31*86fa0707SFabio Estevam 	/*
32*86fa0707SFabio Estevam 	 * this fixed mapping covers:
33*86fa0707SFabio Estevam 	 * - CSI
34*86fa0707SFabio Estevam 	 * - ATA
35*86fa0707SFabio Estevam 	 */
36*86fa0707SFabio Estevam 	imx_map_entry(MX27, SAHB1, MT_DEVICE),
37*86fa0707SFabio Estevam 	/*
38*86fa0707SFabio Estevam 	 * this fixed mapping covers:
39*86fa0707SFabio Estevam 	 * - EMI
40*86fa0707SFabio Estevam 	 */
41*86fa0707SFabio Estevam 	imx_map_entry(MX27, X_MEMC, MT_DEVICE),
42*86fa0707SFabio Estevam };
43*86fa0707SFabio Estevam 
44*86fa0707SFabio Estevam /*
45*86fa0707SFabio Estevam  * Initialize the memory map. It is called during the
46*86fa0707SFabio Estevam  * system startup to create static physical to virtual
47*86fa0707SFabio Estevam  * memory map for the IO modules.
48*86fa0707SFabio Estevam  */
49*86fa0707SFabio Estevam static void __init mx27_map_io(void)
50*86fa0707SFabio Estevam {
51*86fa0707SFabio Estevam 	iotable_init(imx27_io_desc, ARRAY_SIZE(imx27_io_desc));
52*86fa0707SFabio Estevam }
53*86fa0707SFabio Estevam 
54*86fa0707SFabio Estevam static void __init imx27_init_early(void)
55*86fa0707SFabio Estevam {
56*86fa0707SFabio Estevam 	mxc_set_cpu_type(MXC_CPU_MX27);
57*86fa0707SFabio Estevam }
58*86fa0707SFabio Estevam 
59*86fa0707SFabio Estevam static void __init mx27_init_irq(void)
60*86fa0707SFabio Estevam {
61*86fa0707SFabio Estevam 	mxc_init_irq(MX27_IO_ADDRESS(MX27_AVIC_BASE_ADDR));
62*86fa0707SFabio Estevam }
63*86fa0707SFabio Estevam 
64879c0e5eSFabio Estevam static const char * const imx27_dt_board_compat[] __initconst = {
65879c0e5eSFabio Estevam 	"fsl,imx27",
66879c0e5eSFabio Estevam 	NULL
67879c0e5eSFabio Estevam };
68879c0e5eSFabio Estevam 
69879c0e5eSFabio Estevam DT_MACHINE_START(IMX27_DT, "Freescale i.MX27 (Device Tree Support)")
70879c0e5eSFabio Estevam 	.map_io		= mx27_map_io,
71879c0e5eSFabio Estevam 	.init_early	= imx27_init_early,
72879c0e5eSFabio Estevam 	.init_irq	= mx27_init_irq,
73879c0e5eSFabio Estevam 	.init_late	= imx27_pm_init,
74879c0e5eSFabio Estevam 	.dt_compat	= imx27_dt_board_compat,
75879c0e5eSFabio Estevam MACHINE_END
76