Loading arch/powerpc/include/asm/mpic.h +10 −4 Original line number Diff line number Diff line Loading @@ -251,6 +251,9 @@ struct mpic_irq_save { /* The instance data of a given MPIC */ struct mpic { /* The OpenFirmware dt node for this MPIC */ struct device_node *node; /* The remapper for this MPIC */ struct irq_host *irqhost; Loading Loading @@ -293,6 +296,9 @@ struct mpic /* Register access method */ enum mpic_reg_type reg_type; /* The physical base address of the MPIC */ phys_addr_t paddr; /* The various ioremap'ed bases */ struct mpic_reg_bank gregs; struct mpic_reg_bank tmregs; Loading Loading @@ -331,11 +337,11 @@ struct mpic * Note setting any ID (leaving those bits to 0) means standard MPIC */ /* This is the primary controller, only that one has IPIs and * has afinity control. A non-primary MPIC always uses CPU0 * registers only /* * This is a secondary ("chained") controller; it only uses the CPU0 * registers. Primary controllers have IPIs and affinity control. */ #define MPIC_PRIMARY 0x00000001 #define MPIC_SECONDARY 0x00000001 /* Set this for a big-endian MPIC */ #define MPIC_BIG_ENDIAN 0x00000002 Loading arch/powerpc/platforms/44x/iss4xx.c +1 −1 Original line number Diff line number Diff line Loading @@ -71,7 +71,7 @@ static void __init iss4xx_init_irq(void) /* The MPIC driver will get everything it needs from the * device-tree, just pass 0 to all arguments */ struct mpic *mpic = mpic_alloc(np, 0, MPIC_PRIMARY, 0, 0, struct mpic *mpic = mpic_alloc(np, 0, 0, 0, 0, " MPIC "); BUG_ON(mpic == NULL); mpic_init(mpic); Loading arch/powerpc/platforms/85xx/corenet_ds.c +3 −23 Original line number Diff line number Diff line Loading @@ -31,32 +31,18 @@ #include <linux/of_platform.h> #include <sysdev/fsl_soc.h> #include <sysdev/fsl_pci.h> #include "smp.h" void __init corenet_ds_pic_init(void) { struct mpic *mpic; struct resource r; struct device_node *np = NULL; unsigned int flags = MPIC_PRIMARY | MPIC_BIG_ENDIAN | unsigned int flags = MPIC_BIG_ENDIAN | MPIC_BROKEN_FRR_NIRQS | MPIC_SINGLE_DEST_CPU; np = of_find_node_by_type(np, "open-pic"); if (np == NULL) { printk(KERN_ERR "Could not find open-pic node\n"); return; } if (of_address_to_resource(np, 0, &r)) { printk(KERN_ERR "Failed to map mpic register space\n"); of_node_put(np); return; } if (ppc_md.get_irq == mpic_get_coreint_irq) flags |= MPIC_ENABLE_COREINT; mpic = mpic_alloc(np, r.start, flags, 0, 256, " OpenPIC "); mpic = mpic_alloc(NULL, 0, flags, 0, 256, " OpenPIC "); BUG_ON(mpic == NULL); mpic_init(mpic); Loading @@ -65,10 +51,6 @@ void __init corenet_ds_pic_init(void) /* * Setup the architecture */ #ifdef CONFIG_SMP void __init mpc85xx_smp_init(void); #endif void __init corenet_ds_setup_arch(void) { #ifdef CONFIG_PCI Loading @@ -77,9 +59,7 @@ void __init corenet_ds_setup_arch(void) #endif dma_addr_t max = 0xffffffff; #ifdef CONFIG_SMP mpc85xx_smp_init(); #endif #ifdef CONFIG_PCI for_each_node_by_type(np, "pci") { Loading arch/powerpc/platforms/85xx/ksi8560.c +2 −21 Original line number Diff line number Diff line Loading @@ -57,29 +57,10 @@ static void machine_restart(char *cmd) static void __init ksi8560_pic_init(void) { struct mpic *mpic; struct resource r; struct device_node *np; np = of_find_node_by_type(NULL, "open-pic"); if (np == NULL) { printk(KERN_ERR "Could not find open-pic node\n"); return; } if (of_address_to_resource(np, 0, &r)) { printk(KERN_ERR "Could not map mpic register space\n"); of_node_put(np); return; } mpic = mpic_alloc(np, r.start, MPIC_PRIMARY | MPIC_WANTS_RESET | MPIC_BIG_ENDIAN, struct mpic *mpic = mpic_alloc(NULL, 0, MPIC_WANTS_RESET | MPIC_BIG_ENDIAN, 0, 256, " OpenPIC "); BUG_ON(mpic == NULL); of_node_put(np); mpic_init(mpic); mpc85xx_cpm2_pic_init(); Loading arch/powerpc/platforms/85xx/mpc8536_ds.c +2 −20 Original line number Diff line number Diff line Loading @@ -36,29 +36,11 @@ void __init mpc8536_ds_pic_init(void) { struct mpic *mpic; struct resource r; struct device_node *np; np = of_find_node_by_type(NULL, "open-pic"); if (np == NULL) { printk(KERN_ERR "Could not find open-pic node\n"); return; } if (of_address_to_resource(np, 0, &r)) { printk(KERN_ERR "Failed to map mpic register space\n"); of_node_put(np); return; } mpic = mpic_alloc(np, r.start, MPIC_PRIMARY | MPIC_WANTS_RESET | struct mpic *mpic = mpic_alloc(NULL, 0, MPIC_WANTS_RESET | MPIC_BIG_ENDIAN | MPIC_BROKEN_FRR_NIRQS, 0, 256, " OpenPIC "); BUG_ON(mpic == NULL); of_node_put(np); mpic_init(mpic); } Loading Loading
arch/powerpc/include/asm/mpic.h +10 −4 Original line number Diff line number Diff line Loading @@ -251,6 +251,9 @@ struct mpic_irq_save { /* The instance data of a given MPIC */ struct mpic { /* The OpenFirmware dt node for this MPIC */ struct device_node *node; /* The remapper for this MPIC */ struct irq_host *irqhost; Loading Loading @@ -293,6 +296,9 @@ struct mpic /* Register access method */ enum mpic_reg_type reg_type; /* The physical base address of the MPIC */ phys_addr_t paddr; /* The various ioremap'ed bases */ struct mpic_reg_bank gregs; struct mpic_reg_bank tmregs; Loading Loading @@ -331,11 +337,11 @@ struct mpic * Note setting any ID (leaving those bits to 0) means standard MPIC */ /* This is the primary controller, only that one has IPIs and * has afinity control. A non-primary MPIC always uses CPU0 * registers only /* * This is a secondary ("chained") controller; it only uses the CPU0 * registers. Primary controllers have IPIs and affinity control. */ #define MPIC_PRIMARY 0x00000001 #define MPIC_SECONDARY 0x00000001 /* Set this for a big-endian MPIC */ #define MPIC_BIG_ENDIAN 0x00000002 Loading
arch/powerpc/platforms/44x/iss4xx.c +1 −1 Original line number Diff line number Diff line Loading @@ -71,7 +71,7 @@ static void __init iss4xx_init_irq(void) /* The MPIC driver will get everything it needs from the * device-tree, just pass 0 to all arguments */ struct mpic *mpic = mpic_alloc(np, 0, MPIC_PRIMARY, 0, 0, struct mpic *mpic = mpic_alloc(np, 0, 0, 0, 0, " MPIC "); BUG_ON(mpic == NULL); mpic_init(mpic); Loading
arch/powerpc/platforms/85xx/corenet_ds.c +3 −23 Original line number Diff line number Diff line Loading @@ -31,32 +31,18 @@ #include <linux/of_platform.h> #include <sysdev/fsl_soc.h> #include <sysdev/fsl_pci.h> #include "smp.h" void __init corenet_ds_pic_init(void) { struct mpic *mpic; struct resource r; struct device_node *np = NULL; unsigned int flags = MPIC_PRIMARY | MPIC_BIG_ENDIAN | unsigned int flags = MPIC_BIG_ENDIAN | MPIC_BROKEN_FRR_NIRQS | MPIC_SINGLE_DEST_CPU; np = of_find_node_by_type(np, "open-pic"); if (np == NULL) { printk(KERN_ERR "Could not find open-pic node\n"); return; } if (of_address_to_resource(np, 0, &r)) { printk(KERN_ERR "Failed to map mpic register space\n"); of_node_put(np); return; } if (ppc_md.get_irq == mpic_get_coreint_irq) flags |= MPIC_ENABLE_COREINT; mpic = mpic_alloc(np, r.start, flags, 0, 256, " OpenPIC "); mpic = mpic_alloc(NULL, 0, flags, 0, 256, " OpenPIC "); BUG_ON(mpic == NULL); mpic_init(mpic); Loading @@ -65,10 +51,6 @@ void __init corenet_ds_pic_init(void) /* * Setup the architecture */ #ifdef CONFIG_SMP void __init mpc85xx_smp_init(void); #endif void __init corenet_ds_setup_arch(void) { #ifdef CONFIG_PCI Loading @@ -77,9 +59,7 @@ void __init corenet_ds_setup_arch(void) #endif dma_addr_t max = 0xffffffff; #ifdef CONFIG_SMP mpc85xx_smp_init(); #endif #ifdef CONFIG_PCI for_each_node_by_type(np, "pci") { Loading
arch/powerpc/platforms/85xx/ksi8560.c +2 −21 Original line number Diff line number Diff line Loading @@ -57,29 +57,10 @@ static void machine_restart(char *cmd) static void __init ksi8560_pic_init(void) { struct mpic *mpic; struct resource r; struct device_node *np; np = of_find_node_by_type(NULL, "open-pic"); if (np == NULL) { printk(KERN_ERR "Could not find open-pic node\n"); return; } if (of_address_to_resource(np, 0, &r)) { printk(KERN_ERR "Could not map mpic register space\n"); of_node_put(np); return; } mpic = mpic_alloc(np, r.start, MPIC_PRIMARY | MPIC_WANTS_RESET | MPIC_BIG_ENDIAN, struct mpic *mpic = mpic_alloc(NULL, 0, MPIC_WANTS_RESET | MPIC_BIG_ENDIAN, 0, 256, " OpenPIC "); BUG_ON(mpic == NULL); of_node_put(np); mpic_init(mpic); mpc85xx_cpm2_pic_init(); Loading
arch/powerpc/platforms/85xx/mpc8536_ds.c +2 −20 Original line number Diff line number Diff line Loading @@ -36,29 +36,11 @@ void __init mpc8536_ds_pic_init(void) { struct mpic *mpic; struct resource r; struct device_node *np; np = of_find_node_by_type(NULL, "open-pic"); if (np == NULL) { printk(KERN_ERR "Could not find open-pic node\n"); return; } if (of_address_to_resource(np, 0, &r)) { printk(KERN_ERR "Failed to map mpic register space\n"); of_node_put(np); return; } mpic = mpic_alloc(np, r.start, MPIC_PRIMARY | MPIC_WANTS_RESET | struct mpic *mpic = mpic_alloc(NULL, 0, MPIC_WANTS_RESET | MPIC_BIG_ENDIAN | MPIC_BROKEN_FRR_NIRQS, 0, 256, " OpenPIC "); BUG_ON(mpic == NULL); of_node_put(np); mpic_init(mpic); } Loading