ARM: mxs: call mxs_pm_init() as a machine_desc hook
authorShawn Guo <shawn.guo@linaro.org>
Fri, 29 Mar 2013 06:41:27 +0000 (14:41 +0800)
committerShawn Guo <shawn.guo@linaro.org>
Thu, 4 Apr 2013 13:15:57 +0000 (21:15 +0800)
The device_initcall is not a friend of multiplatform build.  Call
mxs_pm_init() as a machine_desc hook instead of device_initcall.

Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
arch/arm/mach-mxs/mach-mxs.c
arch/arm/mach-mxs/pm.c
arch/arm/mach-mxs/pm.h [new file with mode: 0644]

index 16870bf..b5c1bdd 100644 (file)
@@ -32,6 +32,8 @@
 #include <asm/mach/time.h>
 #include <asm/system_misc.h>
 
+#include "pm.h"
+
 /* MXS DIGCTL SAIF CLKMUX */
 #define MXS_DIGCTL_SAIF_CLKMUX_DIRECT          0x0
 #define MXS_DIGCTL_SAIF_CLKMUX_CROSSINPUT      0x1
@@ -607,6 +609,7 @@ DT_MACHINE_START(MXS, "Freescale MXS (Device Tree)")
        .handle_irq     = icoll_handle_irq,
        .init_time      = mxs_timer_init,
        .init_machine   = mxs_machine_init,
+       .init_late      = mxs_pm_init,
        .dt_compat      = mxs_dt_compat,
        .restart        = mxs_restart,
 MACHINE_END
index a9b4bbc..b2494d2 100644 (file)
@@ -34,9 +34,7 @@ static struct platform_suspend_ops mxs_suspend_ops = {
        .valid = suspend_valid_only_mem,
 };
 
-static int __init mxs_pm_init(void)
+void __init mxs_pm_init(void)
 {
        suspend_set_ops(&mxs_suspend_ops);
-       return 0;
 }
-device_initcall(mxs_pm_init);
diff --git a/arch/arm/mach-mxs/pm.h b/arch/arm/mach-mxs/pm.h
new file mode 100644 (file)
index 0000000..f57e7cd
--- /dev/null
@@ -0,0 +1,14 @@
+/*
+ * Copyright (C) 2013 Freescale Semiconductor, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#ifndef __ARCH_MXS_PM_H
+#define __ARCH_MXS_PM_H
+
+void mxs_pm_init(void);
+
+#endif