PNP: introduce pnp_irq_mask_t typedef
Bjorn Helgaas [Fri, 27 Jun 2008 22:57:05 +0000 (16:57 -0600)]
This adds a typedef for the IRQ bitmap, which should cause
no functional change, but will make it easier to pass a
pointer to a bitmap to pnp_register_irq_resource().

Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
Signed-off-by: Andi Kleen <ak@linux.intel.com>
Acked-by: Rene Herman <rene.herman@gmail.com>
Signed-off-by: Len Brown <len.brown@intel.com>

drivers/pnp/base.h
drivers/pnp/interface.c
drivers/pnp/isapnp/core.c
drivers/pnp/manager.c
drivers/pnp/pnpacpi/rsparser.c
drivers/pnp/pnpbios/rsparser.c
drivers/pnp/quirks.c
drivers/pnp/resource.c

index 3126e45..a9ee0a9 100644 (file)
@@ -30,8 +30,10 @@ struct pnp_port {
 };
 
 #define PNP_IRQ_NR 256
+typedef struct { DECLARE_BITMAP(bits, PNP_IRQ_NR); } pnp_irq_mask_t;
+
 struct pnp_irq {
-       DECLARE_BITMAP(map, PNP_IRQ_NR);        /* bitmask for IRQ lines */
+       pnp_irq_mask_t map;     /* bitmap for IRQ lines */
        unsigned char flags;    /* IRQ flags */
        unsigned char pad;      /* pad */
        struct pnp_irq *next;   /* next IRQ */
index c172b6d..249b407 100644 (file)
@@ -67,7 +67,7 @@ static void pnp_print_irq(pnp_info_buffer_t * buffer, char *space,
 
        pnp_printf(buffer, "%sirq ", space);
        for (i = 0; i < PNP_IRQ_NR; i++)
-               if (test_bit(i, irq->map)) {
+               if (test_bit(i, irq->map.bits)) {
                        if (!first) {
                                pnp_printf(buffer, ",");
                        } else {
@@ -78,7 +78,7 @@ static void pnp_print_irq(pnp_info_buffer_t * buffer, char *space,
                        else
                                pnp_printf(buffer, "%i", i);
                }
-       if (bitmap_empty(irq->map, PNP_IRQ_NR))
+       if (bitmap_empty(irq->map.bits, PNP_IRQ_NR))
                pnp_printf(buffer, "<none>");
        if (irq->flags & IORESOURCE_IRQ_HIGHEDGE)
                pnp_printf(buffer, " High-Edge");
index c5b9252..e0caa71 100644 (file)
@@ -441,7 +441,7 @@ static void __init isapnp_parse_irq_resource(struct pnp_dev *dev,
        if (!irq)
                return;
        bits = (tmp[1] << 8) | tmp[0];
-       bitmap_copy(irq->map, &bits, 16);
+       bitmap_copy(irq->map.bits, &bits, 16);
        if (size > 2)
                irq->flags = tmp[2];
        else
index 165b624..e758dd2 100644 (file)
@@ -128,20 +128,20 @@ static int pnp_assign_irq(struct pnp_dev *dev, struct pnp_irq *rule, int idx)
        res->start = -1;
        res->end = -1;
 
-       if (bitmap_empty(rule->map, PNP_IRQ_NR)) {
+       if (bitmap_empty(rule->map.bits, PNP_IRQ_NR)) {
                res->flags |= IORESOURCE_DISABLED;
                dev_dbg(&dev->dev, "  irq %d disabled\n", idx);
                goto __add;
        }
 
        /* TBD: need check for >16 IRQ */
-       res->start = find_next_bit(rule->map, PNP_IRQ_NR, 16);
+       res->start = find_next_bit(rule->map.bits, PNP_IRQ_NR, 16);
        if (res->start < PNP_IRQ_NR) {
                res->end = res->start;
                goto __add;
        }
        for (i = 0; i < 16; i++) {
-               if (test_bit(xtab[i], rule->map)) {
+               if (test_bit(xtab[i], rule->map.bits)) {
                        res->start = res->end = xtab[i];
                        if (pnp_check_irq(dev, res))
                                goto __add;
index 46069e6..ae65454 100644 (file)
@@ -442,7 +442,7 @@ static __init void pnpacpi_parse_irq_option(struct pnp_dev *dev,
 
        for (i = 0; i < p->interrupt_count; i++)
                if (p->interrupts[i])
-                       __set_bit(p->interrupts[i], irq->map);
+                       __set_bit(p->interrupts[i], irq->map.bits);
        irq->flags = irq_flags(p->triggering, p->polarity, p->sharable);
 
        pnp_register_irq_resource(dev, option, irq);
@@ -463,7 +463,7 @@ static __init void pnpacpi_parse_ext_irq_option(struct pnp_dev *dev,
 
        for (i = 0; i < p->interrupt_count; i++)
                if (p->interrupts[i])
-                       __set_bit(p->interrupts[i], irq->map);
+                       __set_bit(p->interrupts[i], irq->map.bits);
        irq->flags = irq_flags(p->triggering, p->polarity, p->sharable);
 
        pnp_register_irq_resource(dev, option, irq);
index 489fec3..dd2ea7b 100644 (file)
@@ -275,7 +275,7 @@ static __init void pnpbios_parse_irq_option(struct pnp_dev *dev,
        if (!irq)
                return;
        bits = (p[2] << 8) | p[1];
-       bitmap_copy(irq->map, &bits, 16);
+       bitmap_copy(irq->map.bits, &bits, 16);
        if (size > 2)
                irq->flags = p[3];
        else
index 21acb54..48e6017 100644 (file)
@@ -66,15 +66,18 @@ static void quirk_cmi8330_resources(struct pnp_dev *dev)
                struct pnp_irq *irq;
                struct pnp_dma *dma;
 
-               for (irq = res->irq; irq; irq = irq->next) {    // Valid irqs are 5, 7, 10
+               for (irq = res->irq; irq; irq = irq->next) {
+                       /* Valid irqs are 5, 7, 10 */
                        tmp = 0x04A0;
-                       bitmap_copy(irq->map, &tmp, 16);        // 0000 0100 1010 0000
+                       bitmap_copy(irq->map.bits, &tmp, 16);
                }
 
-               for (dma = res->dma; dma; dma = dma->next)      // Valid 8bit dma channels are 1,3
+               for (dma = res->dma; dma; dma = dma->next) {
+                       /* Valid 8bit dma channels are 1,3 */
                        if ((dma->flags & IORESOURCE_DMA_TYPE_MASK) ==
                            IORESOURCE_DMA_8BIT)
                                dma->map = 0x000A;
+               }
        }
        dev_info(&dev->dev, "CMI8330 quirk - forced possible IRQs to 5, 7, 10 "
                "and DMA channels to 1, 3\n");
@@ -187,7 +190,7 @@ static void quirk_ad1815_mpu_resources(struct pnp_dev *dev)
                if (!copy)
                        break;
 
-               memcpy(copy->map, irq->map, sizeof copy->map);
+               bitmap_copy(copy->map.bits, irq->map.bits, PNP_IRQ_NR);
                copy->flags = irq->flags;
 
                copy->next = res->irq; /* Yes, this is NULL */
index 786fd35..55a57cd 100644 (file)
@@ -98,13 +98,13 @@ int pnp_register_irq_resource(struct pnp_dev *dev, struct pnp_option *option,
                int i;
 
                for (i = 0; i < 16; i++)
-                       if (test_bit(i, data->map))
+                       if (test_bit(i, data->map.bits))
                                pcibios_penalize_isa_irq(i, 0);
        }
 #endif
 
 #ifdef DEBUG
-       bitmap_scnprintf(buf, sizeof(buf), data->map, PNP_IRQ_NR);
+       bitmap_scnprintf(buf, sizeof(buf), data->map.bits, PNP_IRQ_NR);
        dev_dbg(&dev->dev, "  irq bitmask %s flags %#x\n", buf,
                data->flags);
 #endif
@@ -653,7 +653,7 @@ static int pnp_possible_option(struct pnp_option *option, int type,
                case IORESOURCE_IRQ:
                        for (irq = tmp->irq; irq; irq = irq->next) {
                                if (start < PNP_IRQ_NR &&
-                                   test_bit(start, irq->map))
+                                   test_bit(start, irq->map.bits))
                                        return 1;
                        }
                        break;