msm: qdss: consolidate initialization

Change-Id: I63e88174a34126288ed338f5a66a778d19f3e66b
Signed-off-by: Pratik Patel <pratikp@codeaurora.org>
diff --git a/arch/arm/mach-msm/qdss-etb.c b/arch/arm/mach-msm/qdss-etb.c
index 24419c6..39b7670 100644
--- a/arch/arm/mach-msm/qdss-etb.c
+++ b/arch/arm/mach-msm/qdss-etb.c
@@ -296,7 +296,7 @@
 	return ret;
 }
 
-static int __devexit etb_remove(struct platform_device *pdev)
+static int etb_remove(struct platform_device *pdev)
 {
 	if (etb.enabled)
 		etb_disable();
@@ -310,23 +310,18 @@
 
 static struct platform_driver etb_driver = {
 	.probe          = etb_probe,
-	.remove         = __devexit_p(etb_remove),
+	.remove         = etb_remove,
 	.driver         = {
 		.name   = "msm_etb",
 	},
 };
 
-static int __init etb_init(void)
+int __init etb_init(void)
 {
 	return platform_driver_register(&etb_driver);
 }
-module_init(etb_init);
 
-static void __exit etb_exit(void)
+void etb_exit(void)
 {
 	platform_driver_unregister(&etb_driver);
 }
-module_exit(etb_exit);
-
-MODULE_LICENSE("GPL v2");
-MODULE_DESCRIPTION("Coresight Embedded Trace Buffer");
diff --git a/arch/arm/mach-msm/qdss-funnel.c b/arch/arm/mach-msm/qdss-funnel.c
index c8b1f99..dd61c15 100644
--- a/arch/arm/mach-msm/qdss-funnel.c
+++ b/arch/arm/mach-msm/qdss-funnel.c
@@ -129,7 +129,7 @@
 	return ret;
 }
 
-static int __devexit funnel_remove(struct platform_device *pdev)
+static int funnel_remove(struct platform_device *pdev)
 {
 	if (funnel.enabled)
 		funnel_disable(0x0, 0xFF);
@@ -140,23 +140,18 @@
 
 static struct platform_driver funnel_driver = {
 	.probe          = funnel_probe,
-	.remove         = __devexit_p(funnel_remove),
+	.remove         = funnel_remove,
 	.driver         = {
 		.name   = "msm_funnel",
 	},
 };
 
-static int __init funnel_init(void)
+int __init funnel_init(void)
 {
 	return platform_driver_register(&funnel_driver);
 }
-module_init(funnel_init);
 
-static void __exit funnel_exit(void)
+void funnel_exit(void)
 {
 	platform_driver_unregister(&funnel_driver);
 }
-module_exit(funnel_exit);
-
-MODULE_LICENSE("GPL v2");
-MODULE_DESCRIPTION("Coresight Funnel");
diff --git a/arch/arm/mach-msm/qdss-ptm.c b/arch/arm/mach-msm/qdss-ptm.c
index 66d4555..d0d841a 100644
--- a/arch/arm/mach-msm/qdss-ptm.c
+++ b/arch/arm/mach-msm/qdss-ptm.c
@@ -673,7 +673,7 @@
 	return ret;
 }
 
-static int __devexit ptm_remove(struct platform_device *pdev)
+static int ptm_remove(struct platform_device *pdev)
 {
 	if (ptm.trace_enabled)
 		ptm_trace_disable();
@@ -687,23 +687,18 @@
 
 static struct platform_driver ptm_driver = {
 	.probe          = ptm_probe,
-	.remove         = __devexit_p(ptm_remove),
+	.remove         = ptm_remove,
 	.driver         = {
 		.name   = "msm_ptm",
 	},
 };
 
-static int __init ptm_init(void)
+int __init ptm_init(void)
 {
 	return platform_driver_register(&ptm_driver);
 }
-module_init(ptm_init);
 
-static void __exit ptm_exit(void)
+void ptm_exit(void)
 {
 	platform_driver_unregister(&ptm_driver);
 }
-module_exit(ptm_exit);
-
-MODULE_LICENSE("GPL v2");
-MODULE_DESCRIPTION("Coresight Program Flow Trace driver");
diff --git a/arch/arm/mach-msm/qdss-tpiu.c b/arch/arm/mach-msm/qdss-tpiu.c
index c6740e7..e4a61de 100644
--- a/arch/arm/mach-msm/qdss-tpiu.c
+++ b/arch/arm/mach-msm/qdss-tpiu.c
@@ -106,7 +106,7 @@
 	return ret;
 }
 
-static int __devexit tpiu_remove(struct platform_device *pdev)
+static int tpiu_remove(struct platform_device *pdev)
 {
 	if (tpiu.enabled)
 		tpiu_disable();
@@ -117,23 +117,18 @@
 
 static struct platform_driver tpiu_driver = {
 	.probe          = tpiu_probe,
-	.remove         = __devexit_p(tpiu_remove),
+	.remove         = tpiu_remove,
 	.driver         = {
 		.name   = "msm_tpiu",
 	},
 };
 
-static int __init tpiu_init(void)
+int __init tpiu_init(void)
 {
 	return platform_driver_register(&tpiu_driver);
 }
-module_init(tpiu_init);
 
-static void __exit tpiu_exit(void)
+void tpiu_exit(void)
 {
 	platform_driver_unregister(&tpiu_driver);
 }
-module_exit(tpiu_exit);
-
-MODULE_LICENSE("GPL v2");
-MODULE_DESCRIPTION("Coresight Trace Port Interface Unit");
diff --git a/arch/arm/mach-msm/qdss.c b/arch/arm/mach-msm/qdss.c
index 7fdc4d3..55d14cd 100644
--- a/arch/arm/mach-msm/qdss.c
+++ b/arch/arm/mach-msm/qdss.c
@@ -57,3 +57,45 @@
 	ret = msm_rpmrs_set(MSM_RPM_CTX_SET_0, &iv, 1);
 	WARN(ret, "qdss clks not disabled (%d)\n", ret);
 }
+
+static int __init qdss_init(void)
+{
+	int ret;
+
+	ret = etb_init();
+	if (ret)
+		goto err_etb;
+	ret = tpiu_init();
+	if (ret)
+		goto err_tpiu;
+	ret = funnel_init();
+	if (ret)
+		goto err_funnel;
+	ret = ptm_init();
+	if (ret)
+		goto err_ptm;
+
+	return 0;
+
+err_ptm:
+	funnel_exit();
+err_funnel:
+	tpiu_exit();
+err_tpiu:
+	etb_exit();
+err_etb:
+	return ret;
+}
+module_init(qdss_init);
+
+static void __exit qdss_exit(void)
+{
+	ptm_exit();
+	funnel_exit();
+	tpiu_exit();
+	etb_exit();
+}
+module_exit(qdss_exit);
+
+MODULE_LICENSE("GPL v2");
+MODULE_DESCRIPTION("Qualcomm Debug SubSystem Driver");
diff --git a/arch/arm/mach-msm/qdss.h b/arch/arm/mach-msm/qdss.h
index c883000..199222a 100644
--- a/arch/arm/mach-msm/qdss.h
+++ b/arch/arm/mach-msm/qdss.h
@@ -58,6 +58,15 @@
 #define BMVAL(val, lsb, msb)	((val & BM(lsb, msb)) >> lsb)
 #define BVAL(val, n)		((val & BIT(n)) >> n)
 
+int etb_init(void);
+void etb_exit(void);
+int tpiu_init(void);
+void tpiu_exit(void);
+int funnel_init(void);
+void funnel_exit(void);
+int ptm_init(void);
+void ptm_exit(void);
+
 void etb_enable(void);
 void etb_disable(void);
 void etb_dump(void);