[PATCH 01/14] 83xx: consolidate init_IRQ functions

Kumar Gala galak at kernel.crashing.org
Wed Jul 20 00:21:54 EST 2011


On Jul 19, 2011, at 3:53 AM, Dmitry Eremin-Solenikov wrote:

> On mpc83xx platform nearly all _init_IRQ functions look alike. They either
> just setup ipic, or setup ipic and QE PIC. Separate this to special functions
> to be either referenced from ppc_md, or called from board file.
> 
> Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov at gmail.com>
> ---
> arch/powerpc/platforms/83xx/asp834x.c     |   20 +------------
> arch/powerpc/platforms/83xx/km83xx.c      |   33 +--------------------
> arch/powerpc/platforms/83xx/misc.c        |   46 +++++++++++++++++++++++++++++
> arch/powerpc/platforms/83xx/mpc830x_rdb.c |   18 +----------
> arch/powerpc/platforms/83xx/mpc831x_rdb.c |   18 +----------
> arch/powerpc/platforms/83xx/mpc832x_mds.c |   30 +------------------
> arch/powerpc/platforms/83xx/mpc832x_rdb.c |   31 +-------------------
> arch/powerpc/platforms/83xx/mpc834x_itx.c |   18 +----------
> arch/powerpc/platforms/83xx/mpc834x_mds.c |   18 +----------
> arch/powerpc/platforms/83xx/mpc836x_mds.c |   30 +------------------
> arch/powerpc/platforms/83xx/mpc836x_rdk.c |   28 +-----------------
> arch/powerpc/platforms/83xx/mpc837x_mds.c |   18 +----------
> arch/powerpc/platforms/83xx/mpc837x_rdb.c |   18 +----------
> arch/powerpc/platforms/83xx/mpc83xx.h     |    9 +++++
> arch/powerpc/platforms/83xx/sbc834x.c     |   20 +------------
> 15 files changed, 68 insertions(+), 287 deletions(-)
> 
> diff --git a/arch/powerpc/platforms/83xx/asp834x.c b/arch/powerpc/platforms/83xx/asp834x.c
> index aa0d84d..90b6c06 100644
> --- a/arch/powerpc/platforms/83xx/asp834x.c
> +++ b/arch/powerpc/platforms/83xx/asp834x.c
> @@ -36,24 +36,6 @@ static void __init asp834x_setup_arch(void)
> 	mpc834x_usb_cfg();
> }
> 
> -static void __init asp834x_init_IRQ(void)
> -{
> -	struct device_node *np;
> -
> -	np = of_find_node_by_type(NULL, "ipic");
> -	if (!np)
> -		return;
> -
> -	ipic_init(np, 0);
> -
> -	of_node_put(np);
> -
> -	/* Initialize the default interrupt mapping priorities,
> -	 * in case the boot rom changed something on us.
> -	 */
> -	ipic_set_default_priority();
> -}
> -
> static struct __initdata of_device_id asp8347_ids[] = {
> 	{ .type = "soc", },
> 	{ .compatible = "soc", },
> @@ -82,7 +64,7 @@ define_machine(asp834x) {
> 	.name			= "ASP8347E",
> 	.probe			= asp834x_probe,
> 	.setup_arch		= asp834x_setup_arch,
> -	.init_IRQ		= asp834x_init_IRQ,
> +	.init_IRQ		= mpc83xx_ipic_init_IRQ,
> 	.get_irq		= ipic_get_irq,
> 	.restart		= mpc83xx_restart,
> 	.time_init		= mpc83xx_time_init,
> diff --git a/arch/powerpc/platforms/83xx/km83xx.c b/arch/powerpc/platforms/83xx/km83xx.c
> index a2b9b9e..71ba863 100644
> --- a/arch/powerpc/platforms/83xx/km83xx.c
> +++ b/arch/powerpc/platforms/83xx/km83xx.c
> @@ -140,37 +140,6 @@ static int __init kmeter_declare_of_platform_devices(void)
> }
> machine_device_initcall(mpc83xx_km, kmeter_declare_of_platform_devices);
> 
> -static void __init mpc83xx_km_init_IRQ(void)
> -{
> -	struct device_node *np;
> -
> -	np = of_find_compatible_node(NULL, NULL, "fsl,pq2pro-pic");
> -	if (!np) {
> -		np = of_find_node_by_type(NULL, "ipic");
> -		if (!np)
> -			return;
> -	}
> -
> -	ipic_init(np, 0);
> -
> -	/* Initialize the default interrupt mapping priorities,
> -	 * in case the boot rom changed something on us.
> -	 */
> -	ipic_set_default_priority();
> -	of_node_put(np);
> -
> -#ifdef CONFIG_QUICC_ENGINE
> -	np = of_find_compatible_node(NULL, NULL, "fsl,qe-ic");
> -	if (!np) {
> -		np = of_find_node_by_type(NULL, "qeic");
> -		if (!np)
> -			return;
> -	}
> -	qe_ic_init(np, 0, qe_ic_cascade_low_ipic, qe_ic_cascade_high_ipic);
> -	of_node_put(np);
> -#endif				/* CONFIG_QUICC_ENGINE */
> -}
> -
> /* list of the supported boards */
> static char *board[] __initdata = {
> 	"Keymile,KMETER1",
> @@ -198,7 +167,7 @@ define_machine(mpc83xx_km) {
> 	.name		= "mpc83xx-km-platform",
> 	.probe		= mpc83xx_km_probe,
> 	.setup_arch	= mpc83xx_km_setup_arch,
> -	.init_IRQ	= mpc83xx_km_init_IRQ,
> +	.init_IRQ	= mpc83xx_both_init_IRQ,

make this mpc83xx_ipic_and_qe_init_IRQ

> 	.get_irq	= ipic_get_irq,
> 	.restart	= mpc83xx_restart,
> 	.time_init	= mpc83xx_time_init,
> diff --git a/arch/powerpc/platforms/83xx/misc.c b/arch/powerpc/platforms/83xx/misc.c
> index f01806c..95f2274 100644
> --- a/arch/powerpc/platforms/83xx/misc.c
> +++ b/arch/powerpc/platforms/83xx/misc.c
> @@ -11,9 +11,12 @@
> 
> #include <linux/stddef.h>
> #include <linux/kernel.h>
> +#include <linux/of_platform.h>
> 
> #include <asm/io.h>
> #include <asm/hw_irq.h>
> +#include <asm/ipic.h>
> +#include <asm/qe_ic.h>
> #include <sysdev/fsl_soc.h>
> 
> #include "mpc83xx.h"
> @@ -65,3 +68,46 @@ long __init mpc83xx_time_init(void)
> 
> 	return 0;
> }
> +
> +void __init mpc83xx_ipic_init_IRQ(void)
> +{
> +	struct device_node *np;
> +
> +	/* looking for fsl,pq2pro-pic which is asl compatible with fsl,ipic */
> +	np = of_find_compatible_node(NULL, NULL, "fsl,ipic");
> +	if (!np)
> +		np = of_find_node_by_type(NULL, "ipic");
> +	if (!np)
> +		return;
> +
> +	ipic_init(np, 0);
> +
> +	of_node_put(np);
> +
> +	/* Initialize the default interrupt mapping priorities,
> +	 * in case the boot rom changed something on us.
> +	 */
> +	ipic_set_default_priority();
> +}
> +
> +#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;
> +	}
> +	qe_ic_init(np, 0, qe_ic_cascade_low_ipic, qe_ic_cascade_high_ipic);
> +	of_node_put(np);
> +}
> +
> +void __init mpc83xx_both_init_IRQ(void)

make this mpc83xx_ipic_and_qe_init_IRQ

> +{
> +	mpc83xx_ipic_init_IRQ();
> +	mpc83xx_qe_init_IRQ();
> +}
> +#endif /* CONFIG_QUICC_ENGINE */

- k



More information about the Linuxppc-dev mailing list