[PATCH 2/3] qe: run qe_init and qe_ic_init
Zhao Qiang
B45475 at freescale.com
Fri Oct 10 17:48:45 AEDT 2014
qe and qe_ic need to be initialized before the
qe app drivers, using subsys_initcall to run
qe_init and qe_ic_init
Signed-off-by: Zhao Qiang <B45475 at freescale.com>
---
drivers/soc/qe/qe.c | 15 +++++++++++++++
drivers/soc/qe/qe_ic.c | 15 +++++++++++++++
2 files changed, 30 insertions(+)
diff --git a/drivers/soc/qe/qe.c b/drivers/soc/qe/qe.c
index 2aaa5b2..bfea0f8 100644
--- a/drivers/soc/qe/qe.c
+++ b/drivers/soc/qe/qe.c
@@ -683,6 +683,21 @@ unsigned int qe_get_num_of_snums(void)
}
EXPORT_SYMBOL(qe_get_num_of_snums);
+static int __init qe_init(void)
+{
+ struct device_node *np;
+
+ np = of_find_compatible_node(NULL, NULL, "fsl,qe");
+ if (!np) {
+ pr_err("%s: Could not find Quicc Engine node\n", __func__);
+ return -ENODEV;
+ }
+ qe_reset();
+ of_node_put(np);
+ return 0;
+}
+subsys_initcall(qe_init);
+
#if defined(CONFIG_SUSPEND) && defined(CONFIG_PPC_85xx)
static int qe_resume(struct platform_device *ofdev)
{
diff --git a/drivers/soc/qe/qe_ic.c b/drivers/soc/qe/qe_ic.c
index cc1b8d5..11fe98c 100644
--- a/drivers/soc/qe/qe_ic.c
+++ b/drivers/soc/qe/qe_ic.c
@@ -34,6 +34,7 @@
#include <linux/fsl/qe_ic.h>
#include "qe_ic.h"
+#include "../../irqchip/irqchip.h"
static DEFINE_RAW_SPINLOCK(qe_ic_lock);
@@ -501,4 +502,18 @@ static int __init init_qe_ic_sysfs(void)
return 0;
}
+static int __init qeic_of_init(void)
+{
+ struct device_node *np;
+
+ np = of_find_compatible_node(NULL, NULL, "fsl,qe-ic");
+ if (np) {
+ qe_ic_init(np, 0, qe_ic_cascade_low_mpic,
+ qe_ic_cascade_high_mpic);
+ of_node_put(np);
+ }
+ return 0;
+}
+subsys_initcall(qeic_of_init);
+
subsys_initcall(init_qe_ic_sysfs);
--
2.1.0.27.g96db324
More information about the Linuxppc-dev
mailing list