diff options
Diffstat (limited to 'drivers/pnp')
-rw-r--r-- | drivers/pnp/pnpacpi/rsparser.c | 41 |
1 files changed, 26 insertions, 15 deletions
diff --git a/drivers/pnp/pnpacpi/rsparser.c b/drivers/pnp/pnpacpi/rsparser.c index dc79b0a0059f..379048fdf05d 100644 --- a/drivers/pnp/pnpacpi/rsparser.c +++ b/drivers/pnp/pnpacpi/rsparser.c | |||
@@ -776,21 +776,32 @@ static void pnpacpi_encode_dma(struct acpi_resource *resource, | |||
776 | struct resource *p) | 776 | struct resource *p) |
777 | { | 777 | { |
778 | /* Note: pnp_assign_dma will copy pnp_dma->flags into p->flags */ | 778 | /* Note: pnp_assign_dma will copy pnp_dma->flags into p->flags */ |
779 | if (p->flags & IORESOURCE_DMA_COMPATIBLE) | 779 | switch (p->flags & IORESOURCE_DMA_SPEED_MASK) { |
780 | resource->data.dma.type = ACPI_COMPATIBILITY; | 780 | case IORESOURCE_DMA_TYPEA: |
781 | else if (p->flags & IORESOURCE_DMA_TYPEA) | 781 | resource->data.dma.type = ACPI_TYPE_A; |
782 | resource->data.dma.type = ACPI_TYPE_A; | 782 | break; |
783 | else if (p->flags & IORESOURCE_DMA_TYPEB) | 783 | case IORESOURCE_DMA_TYPEB: |
784 | resource->data.dma.type = ACPI_TYPE_B; | 784 | resource->data.dma.type = ACPI_TYPE_B; |
785 | else if (p->flags & IORESOURCE_DMA_TYPEF) | 785 | break; |
786 | resource->data.dma.type = ACPI_TYPE_F; | 786 | case IORESOURCE_DMA_TYPEF: |
787 | if (p->flags & IORESOURCE_DMA_8BIT) | 787 | resource->data.dma.type = ACPI_TYPE_F; |
788 | resource->data.dma.transfer = ACPI_TRANSFER_8; | 788 | break; |
789 | else if (p->flags & IORESOURCE_DMA_8AND16BIT) | 789 | default: |
790 | resource->data.dma.transfer = ACPI_TRANSFER_8_16; | 790 | resource->data.dma.type = ACPI_COMPATIBILITY; |
791 | else if (p->flags & IORESOURCE_DMA_16BIT) | 791 | } |
792 | resource->data.dma.transfer = ACPI_TRANSFER_16; | 792 | |
793 | resource->data.dma.bus_master = p->flags & IORESOURCE_DMA_MASTER; | 793 | switch (p->flags & IORESOURCE_DMA_TYPE_MASK) { |
794 | case IORESOURCE_DMA_8BIT: | ||
795 | resource->data.dma.transfer = ACPI_TRANSFER_8; | ||
796 | break; | ||
797 | case IORESOURCE_DMA_8AND16BIT: | ||
798 | resource->data.dma.transfer = ACPI_TRANSFER_8_16; | ||
799 | break; | ||
800 | default: | ||
801 | resource->data.dma.transfer = ACPI_TRANSFER_16; | ||
802 | } | ||
803 | |||
804 | resource->data.dma.bus_master = !!(p->flags & IORESOURCE_DMA_MASTER); | ||
794 | resource->data.dma.channel_count = 1; | 805 | resource->data.dma.channel_count = 1; |
795 | resource->data.dma.channels[0] = p->start; | 806 | resource->data.dma.channels[0] = p->start; |
796 | } | 807 | } |