powerpc/mpic: Remove duplicate MPIC_WANTS_RESET flag
authorKyle Moffett <Kyle.D.Moffett@boeing.com>
Thu, 22 Dec 2011 10:19:14 +0000 (10:19 +0000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Wed, 22 Feb 2012 23:50:00 +0000 (10:50 +1100)
There are two separate flags controlling whether or not the MPIC is
reset during initialization, which is completely unnecessary, and only
one of them can be specified in the device tree.

Also, most platforms in-tree right now do actually want to reset the
MPIC during initialization anyways, which means lots of duplicate code
passing the MPIC_WANTS_RESET flag.

Fix all of the callers which currently do not pass the MPIC_WANTS_RESET
flag to pass the MPIC_NO_RESET flag, then remove the MPIC_WANTS_RESET
flag and make the code reset the MPIC by default.

Signed-off-by: Kyle Moffett <Kyle.D.Moffett@boeing.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
32 files changed:
arch/powerpc/include/asm/mpic.h
arch/powerpc/platforms/44x/currituck.c
arch/powerpc/platforms/44x/iss4xx.c
arch/powerpc/platforms/85xx/corenet_ds.c
arch/powerpc/platforms/85xx/ksi8560.c
arch/powerpc/platforms/85xx/mpc8536_ds.c
arch/powerpc/platforms/85xx/mpc85xx_ads.c
arch/powerpc/platforms/85xx/mpc85xx_cds.c
arch/powerpc/platforms/85xx/mpc85xx_ds.c
arch/powerpc/platforms/85xx/mpc85xx_mds.c
arch/powerpc/platforms/85xx/mpc85xx_rdb.c
arch/powerpc/platforms/85xx/p1010rdb.c
arch/powerpc/platforms/85xx/p1022_ds.c
arch/powerpc/platforms/85xx/p1023_rds.c
arch/powerpc/platforms/85xx/sbc8548.c
arch/powerpc/platforms/85xx/sbc8560.c
arch/powerpc/platforms/85xx/socrates.c
arch/powerpc/platforms/85xx/stx_gp3.c
arch/powerpc/platforms/85xx/tqm85xx.c
arch/powerpc/platforms/85xx/xes_mpc85xx.c
arch/powerpc/platforms/86xx/pic.c
arch/powerpc/platforms/cell/setup.c
arch/powerpc/platforms/chrp/setup.c
arch/powerpc/platforms/embedded6xx/holly.c
arch/powerpc/platforms/embedded6xx/linkstation.c
arch/powerpc/platforms/embedded6xx/mpc7448_hpc2.c
arch/powerpc/platforms/embedded6xx/storcenter.c
arch/powerpc/platforms/maple/setup.c
arch/powerpc/platforms/pasemi/setup.c
arch/powerpc/platforms/powermac/pic.c
arch/powerpc/platforms/pseries/setup.c
arch/powerpc/sysdev/mpic.c

index 2ebac31..d7e3fec 100644 (file)
@@ -348,8 +348,6 @@ struct mpic
 #define MPIC_U3_HT_IRQS                        0x00000004
 /* Broken IPI registers (autodetected) */
 #define MPIC_BROKEN_IPI                        0x00000008
-/* MPIC wants a reset */
-#define MPIC_WANTS_RESET               0x00000010
 /* Spurious vector requires EOI */
 #define MPIC_SPV_EOI                   0x00000020
 /* No passthrough disable */
@@ -366,9 +364,7 @@ struct mpic
 #define MPIC_SINGLE_DEST_CPU           0x00001000
 /* Enable CoreInt delivery of interrupts */
 #define MPIC_ENABLE_COREINT            0x00002000
-/* Disable resetting of the MPIC.
- * NOTE: This flag trumps MPIC_WANTS_RESET.
- */
+/* Do not reset the MPIC during initialization */
 #define MPIC_NO_RESET                  0x00004000
 /* Freescale MPIC (compatible includes "fsl,mpic") */
 #define MPIC_FSL                       0x00008000
index 3f6229b..583e67f 100644 (file)
@@ -83,7 +83,7 @@ static void __init ppc47x_init_irq(void)
                 * device-tree, just pass 0 to all arguments
                 */
                struct mpic *mpic =
-                       mpic_alloc(np, 0, 0, 0, 0, " MPIC     ");
+                       mpic_alloc(np, 0, MPIC_NO_RESET, 0, 0, " MPIC     ");
                BUG_ON(mpic == NULL);
                mpic_init(mpic);
                ppc_md.get_irq = mpic_get_irq;
index 5b8cdbb..a28a862 100644 (file)
@@ -71,8 +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, 0, 0, 0,
-                                              " MPIC     ");
+               struct mpic *mpic = mpic_alloc(np, 0, MPIC_NO_RESET, 0, 0, " MPIC     ");
                BUG_ON(mpic == NULL);
                mpic_init(mpic);
                ppc_md.get_irq = mpic_get_irq;
index 768479b..df69e99 100644 (file)
@@ -36,7 +36,8 @@
 void __init corenet_ds_pic_init(void)
 {
        struct mpic *mpic;
-       unsigned int flags = MPIC_BIG_ENDIAN | MPIC_SINGLE_DEST_CPU;
+       unsigned int flags = MPIC_BIG_ENDIAN | MPIC_SINGLE_DEST_CPU |
+               MPIC_NO_RESET;
 
        if (ppc_md.get_irq == mpic_get_coreint_irq)
                flags |= MPIC_ENABLE_COREINT;
index 20f75d7..60120e5 100644 (file)
@@ -57,8 +57,7 @@ static void machine_restart(char *cmd)
 
 static void __init ksi8560_pic_init(void)
 {
-       struct mpic *mpic = mpic_alloc(NULL, 0,
-                       MPIC_WANTS_RESET | MPIC_BIG_ENDIAN,
+       struct mpic *mpic = mpic_alloc(NULL, 0, MPIC_BIG_ENDIAN,
                        0, 256, " OpenPIC  ");
        BUG_ON(mpic == NULL);
        mpic_init(mpic);
index d5373e0..f588726 100644 (file)
@@ -36,9 +36,7 @@
 
 void __init mpc8536_ds_pic_init(void)
 {
-       struct mpic *mpic = mpic_alloc(NULL, 0,
-                         MPIC_WANTS_RESET |
-                         MPIC_BIG_ENDIAN,
+       struct mpic *mpic = mpic_alloc(NULL, 0, MPIC_BIG_ENDIAN,
                        0, 256, " OpenPIC  ");
        BUG_ON(mpic == NULL);
        mpic_init(mpic);
index 3bebb51..d19f675 100644 (file)
@@ -50,8 +50,7 @@ static int mpc85xx_exclude_device(struct pci_controller *hose,
 
 static void __init mpc85xx_ads_pic_init(void)
 {
-       struct mpic *mpic = mpic_alloc(NULL, 0,
-                       MPIC_WANTS_RESET | MPIC_BIG_ENDIAN,
+       struct mpic *mpic = mpic_alloc(NULL, 0, MPIC_BIG_ENDIAN,
                        0, 256, " OpenPIC  ");
        BUG_ON(mpic == NULL);
        mpic_init(mpic);
index 40f03da..02d97e3 100644 (file)
@@ -188,8 +188,7 @@ static struct irqaction mpc85xxcds_8259_irqaction = {
 static void __init mpc85xx_cds_pic_init(void)
 {
        struct mpic *mpic;
-       mpic = mpic_alloc(NULL, 0,
-                       MPIC_WANTS_RESET | MPIC_BIG_ENDIAN,
+       mpic = mpic_alloc(NULL, 0, MPIC_BIG_ENDIAN,
                        0, 256, " OpenPIC  ");
        BUG_ON(mpic == NULL);
        mpic_init(mpic);
index 528b9a0..6e23e3e 100644 (file)
@@ -72,12 +72,12 @@ void __init mpc85xx_ds_pic_init(void)
 
        if (of_flat_dt_is_compatible(root, "fsl,MPC8572DS-CAMP")) {
                mpic = mpic_alloc(NULL, 0,
+                       MPIC_NO_RESET |
                        MPIC_BIG_ENDIAN |
                        MPIC_SINGLE_DEST_CPU,
                        0, 256, " OpenPIC  ");
        } else {
                mpic = mpic_alloc(NULL, 0,
-                         MPIC_WANTS_RESET |
                          MPIC_BIG_ENDIAN |
                          MPIC_SINGLE_DEST_CPU,
                        0, 256, " OpenPIC  ");
index a0cb770..57aceb5 100644 (file)
@@ -434,8 +434,7 @@ machine_arch_initcall(p1021_mds, swiotlb_setup_bus_notifier);
 
 static void __init mpc85xx_mds_pic_init(void)
 {
-       struct mpic *mpic = mpic_alloc(NULL, 0,
-                       MPIC_WANTS_RESET | MPIC_BIG_ENDIAN |
+       struct mpic *mpic = mpic_alloc(NULL, 0, MPIC_BIG_ENDIAN |
                        MPIC_SINGLE_DEST_CPU,
                        0, 256, " OpenPIC  ");
        BUG_ON(mpic == NULL);
index a23f6f3..407c739 100644 (file)
@@ -48,13 +48,12 @@ void __init mpc85xx_rdb_pic_init(void)
        unsigned long root = of_get_flat_dt_root();
 
        if (of_flat_dt_is_compatible(root, "fsl,MPC85XXRDB-CAMP")) {
-               mpic = mpic_alloc(NULL, 0,
+               mpic = mpic_alloc(NULL, 0, MPIC_NO_RESET |
                        MPIC_BIG_ENDIAN |
                        MPIC_SINGLE_DEST_CPU,
                        0, 256, " OpenPIC  ");
        } else {
                mpic = mpic_alloc(NULL, 0,
-                 MPIC_WANTS_RESET |
                  MPIC_BIG_ENDIAN |
                  MPIC_SINGLE_DEST_CPU,
                  0, 256, " OpenPIC  ");
index 8650773..d8bd656 100644 (file)
@@ -32,8 +32,7 @@
 
 void __init p1010_rdb_pic_init(void)
 {
-       struct mpic *mpic = mpic_alloc(NULL, 0,
-         MPIC_WANTS_RESET | MPIC_BIG_ENDIAN |
+       struct mpic *mpic = mpic_alloc(NULL, 0, MPIC_BIG_ENDIAN |
          MPIC_SINGLE_DEST_CPU,
          0, 256, " OpenPIC  ");
 
index 28266ab..63ba790 100644 (file)
@@ -242,9 +242,7 @@ p1022ds_valid_monitor_port(enum fsl_diu_monitor_port port)
 
 void __init p1022_ds_pic_init(void)
 {
-       struct mpic *mpic = mpic_alloc(NULL, 0,
-               MPIC_WANTS_RESET |
-               MPIC_BIG_ENDIAN |
+       struct mpic *mpic = mpic_alloc(NULL, 0, MPIC_BIG_ENDIAN |
                MPIC_SINGLE_DEST_CPU,
                0, 256, " OpenPIC  ");
        BUG_ON(mpic == NULL);
index b1cd6a2..6b07398 100644 (file)
@@ -93,8 +93,7 @@ machine_device_initcall(p1023_rds, mpc85xx_common_publish_devices);
 
 static void __init mpc85xx_rds_pic_init(void)
 {
-       struct mpic *mpic = mpic_alloc(NULL, 0,
-               MPIC_WANTS_RESET | MPIC_BIG_ENDIAN |
+       struct mpic *mpic = mpic_alloc(NULL, 0, MPIC_BIG_ENDIAN |
                MPIC_SINGLE_DEST_CPU,
                0, 256, " OpenPIC  ");
 
index 184a507..1677b8a 100644 (file)
@@ -54,8 +54,7 @@ static int sbc_rev;
 
 static void __init sbc8548_pic_init(void)
 {
-       struct mpic *mpic = mpic_alloc(NULL, 0,
-                       MPIC_WANTS_RESET | MPIC_BIG_ENDIAN,
+       struct mpic *mpic = mpic_alloc(NULL, 0, MPIC_BIG_ENDIAN,
                        0, 256, " OpenPIC  ");
        BUG_ON(mpic == NULL);
        mpic_init(mpic);
index 940752e..3c3bbcc 100644 (file)
@@ -41,8 +41,7 @@
 
 static void __init sbc8560_pic_init(void)
 {
-       struct mpic *mpic = mpic_alloc(NULL, 0,
-                       MPIC_WANTS_RESET | MPIC_BIG_ENDIAN,
+       struct mpic *mpic = mpic_alloc(NULL, 0, MPIC_BIG_ENDIAN,
                        0, 256, " OpenPIC  ");
        BUG_ON(mpic == NULL);
        mpic_init(mpic);
index 18f6359..b719192 100644 (file)
@@ -48,8 +48,7 @@ static void __init socrates_pic_init(void)
 {
        struct device_node *np;
 
-       struct mpic *mpic = mpic_alloc(NULL, 0,
-                       MPIC_WANTS_RESET | MPIC_BIG_ENDIAN,
+       struct mpic *mpic = mpic_alloc(NULL, 0, MPIC_BIG_ENDIAN,
                        0, 256, " OpenPIC  ");
        BUG_ON(mpic == NULL);
        mpic_init(mpic);
index e9e5234..27ca3a7 100644 (file)
@@ -48,8 +48,7 @@
 
 static void __init stx_gp3_pic_init(void)
 {
-       struct mpic *mpic = mpic_alloc(NULL, 0,
-                       MPIC_WANTS_RESET | MPIC_BIG_ENDIAN,
+       struct mpic *mpic = mpic_alloc(NULL, 0, MPIC_BIG_ENDIAN,
                        0, 256, " OpenPIC  ");
        BUG_ON(mpic == NULL);
        mpic_init(mpic);
index bf7c89f..d7504ce 100644 (file)
@@ -47,7 +47,7 @@
 static void __init tqm85xx_pic_init(void)
 {
        struct mpic *mpic = mpic_alloc(NULL, 0,
-                       MPIC_WANTS_RESET | MPIC_BIG_ENDIAN,
+                       MPIC_BIG_ENDIAN,
                        0, 256, " OpenPIC  ");
        BUG_ON(mpic == NULL);
        mpic_init(mpic);
index 1ab4e02..503c215 100644 (file)
@@ -43,9 +43,7 @@
 
 void __init xes_mpc85xx_pic_init(void)
 {
-       struct mpic *mpic = mpic_alloc(NULL, 0,
-                         MPIC_WANTS_RESET |
-                         MPIC_BIG_ENDIAN,
+       struct mpic *mpic = mpic_alloc(NULL, 0, MPIC_BIG_ENDIAN,
                        0, 256, " OpenPIC  ");
        BUG_ON(mpic == NULL);
        mpic_init(mpic);
index 27959d6..22cc357 100644 (file)
@@ -37,8 +37,7 @@ void __init mpc86xx_init_irq(void)
        int cascade_irq;
 #endif
 
-       struct mpic *mpic = mpic_alloc(NULL, 0,
-                       MPIC_WANTS_RESET | MPIC_BIG_ENDIAN |
+       struct mpic *mpic = mpic_alloc(NULL, 0, MPIC_BIG_ENDIAN |
                        MPIC_SINGLE_DEST_CPU,
                        0, 256, " MPIC     ");
        BUG_ON(mpic == NULL);
index 62002a7..fa3e294 100644 (file)
@@ -197,7 +197,8 @@ static void __init mpic_init_IRQ(void)
                /* The MPIC driver will get everything it needs from the
                 * device-tree, just pass 0 to all arguments
                 */
-               mpic = mpic_alloc(dn, 0, MPIC_SECONDARY, 0, 0, " MPIC     ");
+               mpic = mpic_alloc(dn, 0, MPIC_SECONDARY | MPIC_NO_RESET,
+                               0, 0, " MPIC     ");
                if (mpic == NULL)
                        continue;
                mpic_init(mpic);
index f1f17bb..c665d7d 100644 (file)
@@ -435,7 +435,8 @@ static void __init chrp_find_openpic(void)
        if (len > 1)
                isu_size = iranges[3];
 
-       chrp_mpic = mpic_alloc(np, opaddr, 0, isu_size, 0, " MPIC    ");
+       chrp_mpic = mpic_alloc(np, opaddr, MPIC_NO_RESET,
+                       isu_size, 0, " MPIC    ");
        if (chrp_mpic == NULL) {
                printk(KERN_ERR "Failed to allocate MPIC structure\n");
                goto bail;
index d7727de..ab51b21 100644 (file)
@@ -154,8 +154,7 @@ static void __init holly_init_IRQ(void)
        struct device_node *cascade_node = NULL;
 #endif
 
-       mpic = mpic_alloc(NULL, 0,
-                       MPIC_BIG_ENDIAN | MPIC_WANTS_RESET |
+       mpic = mpic_alloc(NULL, 0, MPIC_BIG_ENDIAN |
                        MPIC_SPV_EOI | MPIC_NO_PTHROU_DIS | MPIC_REGSET_TSI108,
                        24, 0,
                        "Tsi108_PIC");
index 9479f4e..455e7c0 100644 (file)
@@ -82,8 +82,7 @@ static void __init linkstation_init_IRQ(void)
 {
        struct mpic *mpic;
 
-       mpic = mpic_alloc(NULL, 0, MPIC_WANTS_RESET,
-                       4, 0, " EPIC     ");
+       mpic = mpic_alloc(NULL, 0, 0, 4, 0, " EPIC     ");
        BUG_ON(mpic == NULL);
 
        /* PCI IRQs */
index 90acb54..74ccce3 100644 (file)
@@ -108,8 +108,7 @@ static void __init mpc7448_hpc2_init_IRQ(void)
        struct device_node *cascade_node = NULL;
 #endif
 
-       mpic = mpic_alloc(NULL, 0,
-                       MPIC_BIG_ENDIAN | MPIC_WANTS_RESET |
+       mpic = mpic_alloc(NULL, 0, MPIC_BIG_ENDIAN |
                        MPIC_SPV_EOI | MPIC_NO_PTHROU_DIS | MPIC_REGSET_TSI108,
                        24, 0,
                        "Tsi108_PIC");
index 451dce4..e0ed3c7 100644 (file)
@@ -84,8 +84,7 @@ static void __init storcenter_init_IRQ(void)
 {
        struct mpic *mpic;
 
-       mpic = mpic_alloc(NULL, 0, MPIC_WANTS_RESET,
-                       16, 0, " OpenPIC  ");
+       mpic = mpic_alloc(NULL, 0, 0, 16, 0, " OpenPIC  ");
        BUG_ON(mpic == NULL);
 
        /*
index 0bcbfe7..3b7545a 100644 (file)
@@ -262,7 +262,7 @@ static void __init maple_init_IRQ(void)
                flags |= MPIC_BIG_ENDIAN;
 
        /* XXX Maple specific bits */
-       flags |= MPIC_U3_HT_IRQS | MPIC_WANTS_RESET;
+       flags |= MPIC_U3_HT_IRQS;
        /* All U3/U4 are big-endian, older SLOF firmware doesn't encode this */
        flags |= MPIC_BIG_ENDIAN;
 
index 98b7a7c..e777ad4 100644 (file)
@@ -224,7 +224,7 @@ static __init void pas_init_IRQ(void)
        openpic_addr = of_read_number(opprop, naddr);
        printk(KERN_DEBUG "OpenPIC addr: %lx\n", openpic_addr);
 
-       mpic_flags = MPIC_LARGE_VECTORS | MPIC_NO_BIAS;
+       mpic_flags = MPIC_LARGE_VECTORS | MPIC_NO_BIAS | MPIC_NO_RESET;
 
        nmiprop = of_get_property(mpic_node, "nmi-source", NULL);
        if (nmiprop)
index 7761aab..0293d7a 100644 (file)
@@ -469,7 +469,6 @@ static struct mpic * __init pmac_setup_one_mpic(struct device_node *np,
 
        pmac_call_feature(PMAC_FTR_ENABLE_MPIC, np, 0, 0);
 
-       flags |= MPIC_WANTS_RESET;
        if (of_get_property(np, "big-endian", NULL))
                flags |= MPIC_BIG_ENDIAN;
 
index 6d0a5df..d928412 100644 (file)
@@ -190,7 +190,8 @@ static void __init pseries_mpic_init_IRQ(void)
        BUG_ON(openpic_addr == 0);
 
        /* Setup the openpic driver */
-       mpic = mpic_alloc(pSeries_mpic_node, openpic_addr, 0, 16, 0, " MPIC     ");
+       mpic = mpic_alloc(pSeries_mpic_node, openpic_addr,
+                       MPIC_NO_RESET, 16, 0, " MPIC     ");
        BUG_ON(mpic == NULL);
 
        /* Add ISUs */
index 90171d4..b9b989d 100644 (file)
@@ -1286,7 +1286,7 @@ struct mpic * __init mpic_alloc(struct device_node *node,
        /* When using a device-node, reset requests are only honored if the MPIC
         * is allowed to reset.
         */
-       if ((mpic->flags & MPIC_WANTS_RESET) && !(mpic->flags & MPIC_NO_RESET)) {
+       if (!(mpic->flags & MPIC_NO_RESET)) {
                printk(KERN_DEBUG "mpic: Resetting\n");
                mpic_write(mpic->gregs, MPIC_INFO(GREG_GLOBAL_CONF_0),
                           mpic_read(mpic->gregs, MPIC_INFO(GREG_GLOBAL_CONF_0))