From 447a35a568a13a39d9e17fb23522f5a843617da5 Mon Sep 17 00:00:00 2001
From: Zhao Qiang <qiang.zhao@nxp.com>
Date: Mon, 8 Aug 2016 10:42:08 +0800
Subject: [PATCH] CPM1: use subsys_initcall to init cpm1

Signed-off-by: Zhao Qiang <qiang.zhao@nxp.com>
---
 arch/powerpc/platforms/8xx/adder875.c        |  1 -
 arch/powerpc/platforms/8xx/ep88xc.c          |  1 -
 arch/powerpc/platforms/8xx/mpc86xads_setup.c |  1 -
 arch/powerpc/platforms/8xx/mpc885ads_setup.c |  1 -
 arch/powerpc/platforms/8xx/tqm8xx_setup.c    |  1 -
 arch/powerpc/sysdev/cpm1.c                   | 13 +++++++++++++
 6 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/arch/powerpc/platforms/8xx/adder875.c b/arch/powerpc/platforms/8xx/adder875.c
index 333dece..9cd7f64 100644
--- a/arch/powerpc/platforms/8xx/adder875.c
+++ b/arch/powerpc/platforms/8xx/adder875.c
@@ -82,7 +82,6 @@ static void __init init_ioports(void)
 
 static void __init adder875_setup(void)
 {
-	cpm_reset();
 	init_ioports();
 }
 
diff --git a/arch/powerpc/platforms/8xx/ep88xc.c b/arch/powerpc/platforms/8xx/ep88xc.c
index cd0d90f..55ff53b 100644
--- a/arch/powerpc/platforms/8xx/ep88xc.c
+++ b/arch/powerpc/platforms/8xx/ep88xc.c
@@ -119,7 +119,6 @@ static void __init ep88xc_setup_arch(void)
 {
 	struct device_node *np;
 
-	cpm_reset();
 	init_ioports();
 
 	np = of_find_compatible_node(NULL, NULL, "fsl,ep88xc-bcsr");
diff --git a/arch/powerpc/platforms/8xx/mpc86xads_setup.c b/arch/powerpc/platforms/8xx/mpc86xads_setup.c
index 8d02f5f..7c5df6d 100644
--- a/arch/powerpc/platforms/8xx/mpc86xads_setup.c
+++ b/arch/powerpc/platforms/8xx/mpc86xads_setup.c
@@ -95,7 +95,6 @@ static void __init mpc86xads_setup_arch(void)
 	struct device_node *np;
 	u32 __iomem *bcsr_io;
 
-	cpm_reset();
 	init_ioports();
 
 	np = of_find_compatible_node(NULL, NULL, "fsl,mpc866ads-bcsr");
diff --git a/arch/powerpc/platforms/8xx/mpc885ads_setup.c b/arch/powerpc/platforms/8xx/mpc885ads_setup.c
index e821a42..99c1b9a 100644
--- a/arch/powerpc/platforms/8xx/mpc885ads_setup.c
+++ b/arch/powerpc/platforms/8xx/mpc885ads_setup.c
@@ -130,7 +130,6 @@ static void __init mpc885ads_setup_arch(void)
 {
 	struct device_node *np;
 
-	cpm_reset();
 	init_ioports();
 
 	np = of_find_compatible_node(NULL, NULL, "fsl,mpc885ads-bcsr");
diff --git a/arch/powerpc/platforms/8xx/tqm8xx_setup.c b/arch/powerpc/platforms/8xx/tqm8xx_setup.c
index 4cea8b1..8eb5a1d 100644
--- a/arch/powerpc/platforms/8xx/tqm8xx_setup.c
+++ b/arch/powerpc/platforms/8xx/tqm8xx_setup.c
@@ -113,7 +113,6 @@ static void __init init_ioports(void)
 
 static void __init tqm8xx_setup_arch(void)
 {
-	cpm_reset();
 	init_ioports();
 }
 
diff --git a/arch/powerpc/sysdev/cpm1.c b/arch/powerpc/sysdev/cpm1.c
index 6c11099..a696173 100644
--- a/arch/powerpc/sysdev/cpm1.c
+++ b/arch/powerpc/sysdev/cpm1.c
@@ -777,4 +777,17 @@ static int cpm_init_par_io(void)
 }
 arch_initcall(cpm_init_par_io);
 
+static int __init cpm_init(void)
+{
+	struct device_node *np;
+
+	np = of_find_compatible_node(NULL, NULL, "fsl,cpm1");
+	if (!np)
+		return -ENODEV;
+	cpm_reset();
+	of_node_put(np);
+	return 0;
+}
+subsys_initcall(cpm_init);
+
 #endif /* CONFIG_8xx_GPIO */
-- 
2.1.0.27.g96db324

