summaryrefslogtreecommitdiff
path: root/drivers/soc
diff options
context:
space:
mode:
authorZhao Qiang <B45475@freescale.com>2014-09-24 07:37:36 (GMT)
committerMatthew Weigel <Matthew.Weigel@freescale.com>2014-12-11 18:37:47 (GMT)
commitd02fce78053a6efda2b6cf135606b6a41d413a28 (patch)
treea7420c163f6df6d371e3c5197912a82ba533916b /drivers/soc
parent36396c5901f1067d25d9ada16acbd36edb716759 (diff)
downloadlinux-fsl-qoriq-d02fce78053a6efda2b6cf135606b6a41d413a28.tar.xz
qe: run qe_init and qe_ic_init
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@freescale.com> --- upstream link: http://patchwork.ozlabs.org/patch/398469/ it is under discussion Change-Id: If59edcf3d4ecaaa18cf2a835bcaff842718c187b Reviewed-on: http://git.am.freescale.net:8181/21120 Tested-by: Review Code-CDREVIEW <CDREVIEW@freescale.com> Reviewed-by: Xiaobo Xie <X.Xie@freescale.com> Reviewed-by: Zhengxiong Jin <Jason.Jin@freescale.com>
Diffstat (limited to 'drivers/soc')
-rw-r--r--drivers/soc/qe/qe.c15
-rw-r--r--drivers/soc/qe/qe_ic.c15
2 files changed, 30 insertions, 0 deletions
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);