aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-imx/mach-imx53.c
diff options
context:
space:
mode:
authorShawn Guo <shawn.guo@linaro.org>2012-08-12 11:21:39 -0400
committerShawn Guo <shawn.guo@linaro.org>2012-09-11 04:26:55 -0400
commit442279da12c6e3eada16d604b866226b77876c30 (patch)
treefb8692ebc0523cdaf4573a542f2e12aba3327f1d /arch/arm/mach-imx/mach-imx53.c
parent721a44145aa789b9d2ee7927afa28c2d60ffa036 (diff)
ARM: imx53: support device tree boot only
With device tree kernel provides the equal support as those imx53 board files, it's time to remove the board files and get imx53 support device tree only. Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
Diffstat (limited to 'arch/arm/mach-imx/mach-imx53.c')
-rw-r--r--arch/arm/mach-imx/mach-imx53.c99
1 files changed, 99 insertions, 0 deletions
diff --git a/arch/arm/mach-imx/mach-imx53.c b/arch/arm/mach-imx/mach-imx53.c
new file mode 100644
index 000000000000..29711e95579f
--- /dev/null
+++ b/arch/arm/mach-imx/mach-imx53.c
@@ -0,0 +1,99 @@
1/*
2 * Copyright 2011 Freescale Semiconductor, Inc. All Rights Reserved.
3 * Copyright 2011 Linaro Ltd.
4 *
5 * The code contained herein is licensed under the GNU General Public
6 * License. You may obtain a copy of the GNU General Public License
7 * Version 2 or later at the following locations:
8 *
9 * http://www.opensource.org/licenses/gpl-license.html
10 * http://www.gnu.org/copyleft/gpl.html
11 */
12
13#include <linux/clk.h>
14#include <linux/clkdev.h>
15#include <linux/err.h>
16#include <linux/io.h>
17#include <linux/irq.h>
18#include <linux/of_irq.h>
19#include <linux/of_platform.h>
20#include <asm/mach/arch.h>
21#include <asm/mach/time.h>
22#include <mach/common.h>
23#include <mach/mx53.h>
24
25/*
26 * Lookup table for attaching a specific name and platform_data pointer to
27 * devices as they get created by of_platform_populate(). Ideally this table
28 * would not exist, but the current clock implementation depends on some devices
29 * having a specific name.
30 */
31static const struct of_dev_auxdata imx53_auxdata_lookup[] __initconst = {
32 OF_DEV_AUXDATA("fsl,imx53-uart", MX53_UART1_BASE_ADDR, "imx21-uart.0", NULL),
33 OF_DEV_AUXDATA("fsl,imx53-uart", MX53_UART2_BASE_ADDR, "imx21-uart.1", NULL),
34 OF_DEV_AUXDATA("fsl,imx53-uart", MX53_UART3_BASE_ADDR, "imx21-uart.2", NULL),
35 OF_DEV_AUXDATA("fsl,imx53-uart", MX53_UART4_BASE_ADDR, "imx21-uart.3", NULL),
36 OF_DEV_AUXDATA("fsl,imx53-uart", MX53_UART5_BASE_ADDR, "imx21-uart.4", NULL),
37 OF_DEV_AUXDATA("fsl,imx53-fec", MX53_FEC_BASE_ADDR, "imx25-fec.0", NULL),
38 OF_DEV_AUXDATA("fsl,imx53-esdhc", MX53_ESDHC1_BASE_ADDR, "sdhci-esdhc-imx53.0", NULL),
39 OF_DEV_AUXDATA("fsl,imx53-esdhc", MX53_ESDHC2_BASE_ADDR, "sdhci-esdhc-imx53.1", NULL),
40 OF_DEV_AUXDATA("fsl,imx53-esdhc", MX53_ESDHC3_BASE_ADDR, "sdhci-esdhc-imx53.2", NULL),
41 OF_DEV_AUXDATA("fsl,imx53-esdhc", MX53_ESDHC4_BASE_ADDR, "sdhci-esdhc-imx53.3", NULL),
42 OF_DEV_AUXDATA("fsl,imx53-ecspi", MX53_ECSPI1_BASE_ADDR, "imx51-ecspi.0", NULL),
43 OF_DEV_AUXDATA("fsl,imx53-ecspi", MX53_ECSPI2_BASE_ADDR, "imx51-ecspi.1", NULL),
44 OF_DEV_AUXDATA("fsl,imx53-cspi", MX53_CSPI_BASE_ADDR, "imx35-cspi.0", NULL),
45 OF_DEV_AUXDATA("fsl,imx53-i2c", MX53_I2C1_BASE_ADDR, "imx-i2c.0", NULL),
46 OF_DEV_AUXDATA("fsl,imx53-i2c", MX53_I2C2_BASE_ADDR, "imx-i2c.1", NULL),
47 OF_DEV_AUXDATA("fsl,imx53-i2c", MX53_I2C3_BASE_ADDR, "imx-i2c.2", NULL),
48 OF_DEV_AUXDATA("fsl,imx53-sdma", MX53_SDMA_BASE_ADDR, "imx35-sdma", NULL),
49 OF_DEV_AUXDATA("fsl,imx53-wdt", MX53_WDOG1_BASE_ADDR, "imx2-wdt.0", NULL),
50 { /* sentinel */ }
51};
52
53static void __init imx53_qsb_init(void)
54{
55 struct clk *clk;
56
57 clk = clk_get_sys(NULL, "ssi_ext1");
58 if (IS_ERR(clk)) {
59 pr_err("failed to get clk ssi_ext1\n");
60 return;
61 }
62
63 clk_register_clkdev(clk, NULL, "0-000a");
64}
65
66static void __init imx53_dt_init(void)
67{
68 if (of_machine_is_compatible("fsl,imx53-qsb"))
69 imx53_qsb_init();
70
71 of_platform_populate(NULL, of_default_bus_match_table,
72 imx53_auxdata_lookup, NULL);
73}
74
75static void __init imx53_timer_init(void)
76{
77 mx53_clocks_init_dt();
78}
79
80static struct sys_timer imx53_timer = {
81 .init = imx53_timer_init,
82};
83
84static const char *imx53_dt_board_compat[] __initdata = {
85 "fsl,imx53",
86 NULL
87};
88
89DT_MACHINE_START(IMX53_DT, "Freescale i.MX53 (Device Tree Support)")
90 .map_io = mx53_map_io,
91 .init_early = imx53_init_early,
92 .init_irq = mx53_init_irq,
93 .handle_irq = imx53_handle_irq,
94 .timer = &imx53_timer,
95 .init_machine = imx53_dt_init,
96 .init_late = imx53_init_late,
97 .dt_compat = imx53_dt_board_compat,
98 .restart = mxc_restart,
99MACHINE_END