]> git.karo-electronics.de Git - linux-beck.git/commitdiff
ACPI: Fix ioremap size for MMIO reads and writes
authorMyron Stowe <myron.stowe@hp.com>
Thu, 21 Oct 2010 20:23:48 +0000 (14:23 -0600)
committerLen Brown <len.brown@intel.com>
Mon, 25 Oct 2010 03:24:54 +0000 (23:24 -0400)
The size used for I/O remapping MMIO read and write accesses has not
accounted for the basis of ACPI's Generic Address Structure (GAS)
'Register Bit Width' field which is bits, not bytes.  This patch
adjusts the ioremap() 'size' argument accordingly.

ACPI "Generic Register" reference:
  ACPI Specification, Revision 4.0, Section 5.2.3.1, "Generic Address
  Structure".

Signed-off-by: Myron Stowe <myron.stowe@hp.com>
Signed-off-by: Len Brown <len.brown@intel.com>
drivers/acpi/osl.c

index 65b25a303b86e495d3f539e94d6a912ae3252325..58842fb9fd90fea28093258a4f499adeeedfb837 100644 (file)
@@ -496,7 +496,7 @@ acpi_os_read_memory(acpi_physical_address phys_addr, u32 * value, u32 width)
        u32 dummy;
        void __iomem *virt_addr;
 
-       virt_addr = ioremap(phys_addr, width);
+       virt_addr = ioremap(phys_addr, width / 8);
        if (!value)
                value = &dummy;
 
@@ -524,7 +524,7 @@ acpi_os_write_memory(acpi_physical_address phys_addr, u32 value, u32 width)
 {
        void __iomem *virt_addr;
 
-       virt_addr = ioremap(phys_addr, width);
+       virt_addr = ioremap(phys_addr, width / 8);
 
        switch (width) {
        case 8: