diff options
author | Zhao Qiang <B45475@freescale.com> | 2014-09-24 07:37:36 (GMT) |
---|---|---|
committer | Matthew Weigel <Matthew.Weigel@freescale.com> | 2014-12-11 18:37:47 (GMT) |
commit | d02fce78053a6efda2b6cf135606b6a41d413a28 (patch) | |
tree | a7420c163f6df6d371e3c5197912a82ba533916b /drivers/soc | |
parent | 36396c5901f1067d25d9ada16acbd36edb716759 (diff) | |
download | linux-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.c | 15 | ||||
-rw-r--r-- | drivers/soc/qe/qe_ic.c | 15 |
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); |