On 07/05/2016 11:19 AM, Jason Cooper <ja...@lakedaemon.net> wrote: > -----Original Message----- > From: Jason Cooper [mailto:ja...@lakedaemon.net] > Sent: Tuesday, July 05, 2016 11:19 AM > To: Qiang Zhao <qiang.z...@nxp.com> > Cc: o...@buserror.net; t...@linutronix.de; marc.zyng...@arm.com; linuxppc- > d...@lists.ozlabs.org; linux-ker...@vger.kernel.org; Xiaobo Xie > <xiaobo....@nxp.com> > Subject: Re: [PATCH 1/2] qe/ic: move qe_ic_init from platforms to irqchip > > Hi Zhao Qiang, > > Please reword your subject line to conform to the standard in irqchip (since > that's where the code is added). Also, please adjust the subject line to > express > *why* the change is being made. > > On Tue, Jul 05, 2016 at 09:46:58AM +0800, Zhao Qiang wrote: > > The codes of qe_ic_init in platforms are redundant, move them to qe_ic > > under irqchip > > This needs to be a lot more clear. How is backwards compatibility preserved? > Why is lookup by type "qeic" dropped? In short, please explain everything > that > looks funny so we don't have to guess.
Thank you for your review and feedback. > > > Signed-off-by: Zhao Qiang <qiang.z...@nxp.com> > > --- > > arch/powerpc/platforms/83xx/misc.c | 15 --------------- > > arch/powerpc/platforms/85xx/corenet_generic.c | 9 --------- > > arch/powerpc/platforms/85xx/mpc85xx_mds.c | 14 -------------- > > arch/powerpc/platforms/85xx/mpc85xx_rdb.c | 16 ---------------- > > arch/powerpc/platforms/85xx/twr_p102x.c | 14 -------------- > > drivers/irqchip/qe_ic.c | 14 ++++++++++++++ > > 6 files changed, 14 insertions(+), 68 deletions(-) > > > > diff --git a/arch/powerpc/platforms/83xx/misc.c > > b/arch/powerpc/platforms/83xx/misc.c > > index 7e923ca..9431fc7 100644 > > --- a/arch/powerpc/platforms/83xx/misc.c > > +++ b/arch/powerpc/platforms/83xx/misc.c > > @@ -93,24 +93,9 @@ void __init mpc83xx_ipic_init_IRQ(void) } > > > > #ifdef CONFIG_QUICC_ENGINE > > -void __init mpc83xx_qe_init_IRQ(void) -{ > > - struct device_node *np; > > - > > - np = of_find_compatible_node(NULL, NULL, "fsl,qe-ic"); > > - if (!np) { > > - np = of_find_node_by_type(NULL, "qeic"); > > - if (!np) > > - return; > > - } > > This block isn't preserved in the irqchip driver. Why not? I grep qeic in arch/powerpc/boot/dts/*, doesn't find which board use qeic as type. > > > - qe_ic_init(np, 0, qe_ic_cascade_low_ipic, qe_ic_cascade_high_ipic); > > - of_node_put(np); > > -} > > - > > void __init mpc83xx_ipic_and_qe_init_IRQ(void) > > { > > mpc83xx_ipic_init_IRQ(); > > - mpc83xx_qe_init_IRQ(); > > } > > #endif /* CONFIG_QUICC_ENGINE */ > > > > diff --git a/arch/powerpc/platforms/85xx/corenet_generic.c > > b/arch/powerpc/platforms/85xx/corenet_generic.c > > index a2b0bc8..526fc2b 100644 > > --- a/arch/powerpc/platforms/85xx/corenet_generic.c > > +++ b/arch/powerpc/platforms/85xx/corenet_generic.c > > @@ -41,8 +41,6 @@ void __init corenet_gen_pic_init(void) > > unsigned int flags = MPIC_BIG_ENDIAN | MPIC_SINGLE_DEST_CPU | > > MPIC_NO_RESET; > > > > - struct device_node *np; > > - > > if (ppc_md.get_irq == mpic_get_coreint_irq) > > flags |= MPIC_ENABLE_COREINT; > > > > @@ -50,13 +48,6 @@ void __init corenet_gen_pic_init(void) > > BUG_ON(mpic == NULL); > > > > mpic_init(mpic); > > - > > - 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); > > - } > > } > > > > /* > > diff --git a/arch/powerpc/platforms/85xx/mpc85xx_mds.c > > b/arch/powerpc/platforms/85xx/mpc85xx_mds.c > > index f61cbe2..7ae4901 100644 > > --- a/arch/powerpc/platforms/85xx/mpc85xx_mds.c > > +++ b/arch/powerpc/platforms/85xx/mpc85xx_mds.c > > @@ -279,20 +279,6 @@ static void __init mpc85xx_mds_qeic_init(void) > > of_node_put(np); > > return; > > } > > - > > - np = of_find_compatible_node(NULL, NULL, "fsl,qe-ic"); > > - if (!np) { > > - np = of_find_node_by_type(NULL, "qeic"); > > - if (!np) > > - return; > > - } > > - > > - if (machine_is(p1021_mds)) > > - qe_ic_init(np, 0, qe_ic_cascade_low_mpic, > > - qe_ic_cascade_high_mpic); > > - else > > - qe_ic_init(np, 0, qe_ic_cascade_muxed_mpic, NULL); > > This block is also not preserved. Nor explained in the commit log. Is it > really ok > to drop it? If so, why? on non-p1021_mds mpc85xx_mds boards(mpc8568 and mpc8569). The qeic has the same interrupt number for low and high. So use qe_ic_cascade_muxed_mpic for this situation. qeic: interrupt-controller@80 { interrupt-controller; compatible = "fsl,qe-ic"; #address-cells = <0>; #interrupt-cells = <1>; reg = <0x80 0x80>; interrupts = <46 2 0 0 46 2 0 0>; //high:30 low:30 interrupt-parent = <&mpic>; }; In qe_ic_init, the code(as below) can handle this situation. If " qe_ic->virq_high != qe_ic->virq_low ", then set chaned handler for high handler. if (qe_ic->virq_high != NO_IRQ && qe_ic->virq_high != qe_ic->virq_low) { irq_set_handler_data(qe_ic->virq_high, qe_ic); irq_set_chained_handler(qe_ic->virq_high, high_handler); } > > > - of_node_put(np); > > } > > #else > > static void __init mpc85xx_mds_qe_init(void) { } diff --git > > a/arch/powerpc/platforms/85xx/mpc85xx_rdb.c > > b/arch/powerpc/platforms/85xx/mpc85xx_rdb.c > > index 3f4dad1..779f54f 100644 > > --- a/arch/powerpc/platforms/85xx/mpc85xx_rdb.c > > +++ b/arch/powerpc/platforms/85xx/mpc85xx_rdb.c > > @@ -49,10 +49,6 @@ void __init mpc85xx_rdb_pic_init(void) > > struct mpic *mpic; > > unsigned long root = of_get_flat_dt_root(); > > > > -#ifdef CONFIG_QUICC_ENGINE > > - struct device_node *np; > > -#endif > > - > > if (of_flat_dt_is_compatible(root, "fsl,MPC85XXRDB-CAMP")) { > > mpic = mpic_alloc(NULL, 0, MPIC_NO_RESET | > > MPIC_BIG_ENDIAN | > > @@ -67,18 +63,6 @@ void __init mpc85xx_rdb_pic_init(void) > > > > BUG_ON(mpic == NULL); > > mpic_init(mpic); > > - > > -#ifdef CONFIG_QUICC_ENGINE > > - 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); > > - > > - } else > > - pr_err("%s: Could not find qe-ic node\n", __func__); > > -#endif > > - > > } > > > > /* > > diff --git a/arch/powerpc/platforms/85xx/twr_p102x.c > > b/arch/powerpc/platforms/85xx/twr_p102x.c > > index 71bc255..603e244 100644 > > --- a/arch/powerpc/platforms/85xx/twr_p102x.c > > +++ b/arch/powerpc/platforms/85xx/twr_p102x.c > > @@ -35,26 +35,12 @@ static void __init twr_p1025_pic_init(void) { > > struct mpic *mpic; > > > > -#ifdef CONFIG_QUICC_ENGINE > > - struct device_node *np; > > -#endif > > - > > mpic = mpic_alloc(NULL, 0, MPIC_BIG_ENDIAN | > > MPIC_SINGLE_DEST_CPU, > > 0, 256, " OpenPIC "); > > > > BUG_ON(mpic == NULL); > > mpic_init(mpic); > > - > > -#ifdef CONFIG_QUICC_ENGINE > > - 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); > > - } else > > - pr_err("Could not find qe-ic node\n"); > > -#endif > > } > > > > /* > > > ************************************************************ > ********** > > ** diff --git a/drivers/irqchip/qe_ic.c b/drivers/irqchip/qe_ic.c > > index ec2ca86..f7f9a81 100644 > > --- a/drivers/irqchip/qe_ic.c > > +++ b/drivers/irqchip/qe_ic.c > > @@ -509,4 +509,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); > > Was this tested on systems with dtbs containing type "qeic" but missing > "fsl,qe- > ic"? What about non-p1021_mds mpc85xx_mds boards? In kernel, there are no boards containing type "qeic" in dtb. -Zhao Qiang BR _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev