]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/pnp/pnpacpi/rsparser.c
Merge git://git.infradead.org/~dwmw2/cafe-2.6
[linux-2.6-omap-h63xx.git] / drivers / pnp / pnpacpi / rsparser.c
index dc79b0a0059f6206c22dd6a611c591d62b83aa7a..379048fdf05dccf01575a5727219529ac7d39fac 100644 (file)
@@ -776,21 +776,32 @@ static void pnpacpi_encode_dma(struct acpi_resource *resource,
        struct resource *p)
 {
        /* Note: pnp_assign_dma will copy pnp_dma->flags into p->flags */
-       if (p->flags & IORESOURCE_DMA_COMPATIBLE)
-               resource->data.dma.type = ACPI_COMPATIBILITY;
-       else if (p->flags & IORESOURCE_DMA_TYPEA)
-               resource->data.dma.type = ACPI_TYPE_A;
-       else if (p->flags & IORESOURCE_DMA_TYPEB)
-               resource->data.dma.type = ACPI_TYPE_B;
-       else if (p->flags & IORESOURCE_DMA_TYPEF)
-               resource->data.dma.type = ACPI_TYPE_F;
-       if (p->flags & IORESOURCE_DMA_8BIT)
-               resource->data.dma.transfer = ACPI_TRANSFER_8;
-       else if (p->flags & IORESOURCE_DMA_8AND16BIT)
-               resource->data.dma.transfer = ACPI_TRANSFER_8_16;
-       else if (p->flags & IORESOURCE_DMA_16BIT)
-               resource->data.dma.transfer = ACPI_TRANSFER_16;
-       resource->data.dma.bus_master = p->flags & IORESOURCE_DMA_MASTER;
+       switch (p->flags & IORESOURCE_DMA_SPEED_MASK) {
+               case IORESOURCE_DMA_TYPEA:
+                       resource->data.dma.type = ACPI_TYPE_A;
+                       break;
+               case IORESOURCE_DMA_TYPEB:
+                       resource->data.dma.type = ACPI_TYPE_B;
+                       break;
+               case IORESOURCE_DMA_TYPEF:
+                       resource->data.dma.type = ACPI_TYPE_F;
+                       break;
+               default:
+                       resource->data.dma.type = ACPI_COMPATIBILITY;
+       }
+
+       switch (p->flags & IORESOURCE_DMA_TYPE_MASK) {
+               case IORESOURCE_DMA_8BIT:
+                       resource->data.dma.transfer = ACPI_TRANSFER_8;
+                       break;
+               case IORESOURCE_DMA_8AND16BIT:
+                       resource->data.dma.transfer = ACPI_TRANSFER_8_16;
+                       break;
+               default:
+                       resource->data.dma.transfer = ACPI_TRANSFER_16;
+       }
+
+       resource->data.dma.bus_master = !!(p->flags & IORESOURCE_DMA_MASTER);
        resource->data.dma.channel_count = 1;
        resource->data.dma.channels[0] = p->start;
 }