diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2012-10-09 22:36:39 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2013-06-25 11:52:05 +0200 |
commit | a4daf503059d05b5275bd12cade6bcb54e9d4e03 (patch) | |
tree | 82681fd4fe3b20f4e8ce1979338c6d614ac520f1 /arch/arm/mach-imx/imx.c | |
parent | f887536147ac892751a18752f34764daf7267845 (diff) | |
download | barebox-a4daf503059d05b5275bd12cade6bcb54e9d4e03.tar.gz barebox-a4daf503059d05b5275bd12cade6bcb54e9d4e03.tar.xz |
ARM: i.MX: adopt cpu_is_* for multiple SoCs
This makes cpu_is_* functions when necessary for upcoming multisoc
support. When only one SoC type is compiled in cpu_is_* still expand
to static values.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch/arm/mach-imx/imx.c')
-rw-r--r-- | arch/arm/mach-imx/imx.c | 38 |
1 files changed, 37 insertions, 1 deletions
diff --git a/arch/arm/mach-imx/imx.c b/arch/arm/mach-imx/imx.c index d6e30a8aa0..be44339f7d 100644 --- a/arch/arm/mach-imx/imx.c +++ b/arch/arm/mach-imx/imx.c @@ -32,9 +32,45 @@ void imx_set_silicon_revision(const char *soc, int revision) revision & 0xf); } +unsigned int __imx_cpu_type; + +static int imx_soc_from_dt(void) +{ + if (of_machine_is_compatible("fsl,imx1")) + return IMX_CPU_IMX1; + if (of_machine_is_compatible("fsl,imx21")) + return IMX_CPU_IMX21; + if (of_machine_is_compatible("fsl,imx25")) + return IMX_CPU_IMX25; + if (of_machine_is_compatible("fsl,imx27")) + return IMX_CPU_IMX27; + if (of_machine_is_compatible("fsl,imx31")) + return IMX_CPU_IMX31; + if (of_machine_is_compatible("fsl,imx35")) + return IMX_CPU_IMX35; + if (of_machine_is_compatible("fsl,imx51")) + return IMX_CPU_IMX51; + if (of_machine_is_compatible("fsl,imx53")) + return IMX_CPU_IMX53; + if (of_machine_is_compatible("fsl,imx6q")) + return IMX_CPU_IMX6; + if (of_machine_is_compatible("fsl,imx6dl")) + return IMX_CPU_IMX6; + + return 0; +} + static int imx_init(void) { int ret; + struct device_node *root; + + root = of_get_root_node(); + if (root) { + __imx_cpu_type = imx_soc_from_dt(); + if (!__imx_cpu_type) + hang(); + } if (cpu_is_mx1()) ret = imx1_init(); @@ -57,7 +93,7 @@ static int imx_init(void) else return -EINVAL; - if (of_get_root_node()) + if (root) return ret; if (cpu_is_mx1()) |