powerpc/mpic: Assume a device-node was passed in mpic_alloc()
authorKyle Moffett <Kyle.D.Moffett@boeing.com>
Fri, 2 Dec 2011 06:28:00 +0000 (06:28 +0000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Wed, 7 Dec 2011 02:43:07 +0000 (13:43 +1100)
All of the existing callers of mpic_alloc() pass in a non-NULL
device-node pointer, so the checks for a NULL device-node may be
removed.

Signed-off-by: Kyle Moffett <Kyle.D.Moffett@boeing.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/sysdev/mpic.c

index 8f24c6e8f535d2f79ad1dabda5d37575871b9730..59564dcaab146aa711259ad1f361068b8880997c 100644 (file)
@@ -1137,19 +1137,17 @@ struct mpic * __init mpic_alloc(struct device_node *node,
                                unsigned int irq_count,
                                const char *name)
 {
-       struct mpic     *mpic;
-       u32             greg_feature;
-       const char      *vers;
-       int             i;
-       int             intvec_top;
+       int i, psize, intvec_top;
+       struct mpic *mpic;
+       u32 greg_feature;
+       const char *vers;
+       const u32 *psrc;
 
-       /*
-        * If no phyiscal address was specified then all of the phyiscal
-        * addressing parameters must come from the device-tree.
-        */
-       if (!phys_addr) {
-               BUG_ON(!node);
+       /* This code assumes that a non-NULL device node is passed in */
+       BUG_ON(!node);
 
+       /* Pick the physical address from the device tree if unspecified */
+       if (!phys_addr) {
                /* Check if it is DCR-based */
                if (of_get_property(node, "dcr-reg", NULL)) {
                        flags |= MPIC_USES_DCR;
@@ -1211,28 +1209,22 @@ struct mpic * __init mpic_alloc(struct device_node *node,
        mpic->spurious_vec  = intvec_top;
 
        /* Check for "big-endian" in device-tree */
-       if (node && of_get_property(node, "big-endian", NULL) != NULL)
+       if (of_get_property(node, "big-endian", NULL) != NULL)
                mpic->flags |= MPIC_BIG_ENDIAN;
-       if (node && of_device_is_compatible(node, "fsl,mpic"))
+       if (of_device_is_compatible(node, "fsl,mpic"))
                mpic->flags |= MPIC_FSL;
 
        /* Look for protected sources */
-       if (node) {
-               int psize;
-               unsigned int bits, mapsize;
-               const u32 *psrc =
-                       of_get_property(node, "protected-sources", &psize);
-               if (psrc) {
-                       psize /= 4;
-                       bits = intvec_top + 1;
-                       mapsize = BITS_TO_LONGS(bits) * sizeof(unsigned long);
-                       mpic->protected = kzalloc(mapsize, GFP_KERNEL);
-                       BUG_ON(mpic->protected == NULL);
-                       for (i = 0; i < psize; i++) {
-                               if (psrc[i] > intvec_top)
-                                       continue;
-                               __set_bit(psrc[i], mpic->protected);
-                       }
+       psrc = of_get_property(node, "protected-sources", &psize);
+       if (psrc) {
+               /* Allocate a bitmap with one bit per interrupt */
+               unsigned int mapsize = BITS_TO_LONGS(intvec_top + 1);
+               mpic->protected = kzalloc(mapsize*sizeof(long), GFP_KERNEL);
+               BUG_ON(mpic->protected == NULL);
+               for (i = 0; i < psize/sizeof(u32); i++) {
+                       if (psrc[i] > intvec_top)
+                               continue;
+                       __set_bit(psrc[i], mpic->protected);
                }
        }