OMAP system control module can be probed early, then omap_type is safe to use its APIs. TODO: add support for other omap versions Signed-off-by: Konstantin Baydarov <kbaidarov@xxxxxxxxxxxxx> --- arch/arm/mach-omap2/id.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) Index: linux-2.6/arch/arm/mach-omap2/id.c =================================================================== --- linux-2.6.orig/arch/arm/mach-omap2/id.c +++ linux-2.6/arch/arm/mach-omap2/id.c @@ -18,6 +18,7 @@ #include <linux/kernel.h> #include <linux/init.h> #include <linux/io.h> +#include <linux/mfd/omap_control.h> #include <asm/cputype.h> @@ -38,6 +39,8 @@ unsigned int omap_rev(void) } EXPORT_SYMBOL(omap_rev); +u32 omap_control_readl(u16 offset); + int omap_type(void) { u32 val = 0; @@ -49,7 +52,7 @@ int omap_type(void) } else if (cpu_is_omap34xx()) { val = omap_ctrl_readl(OMAP343X_CONTROL_STATUS); } else if (cpu_is_omap44xx()) { - val = omap_ctrl_readl(OMAP4_CTRL_MODULE_CORE_STATUS); + val = omap_control_readl(OMAP4_CTRL_MODULE_CORE_STATUS); } else { pr_err("Cannot detect omap type!\n"); goto out;