Commit:     756813cac1d0172e1f93d977fe8bd1cd5086be21
Parent:     a38d6181ff27824c79fc7df825164a212eff6a3f
Author:     Andrzej Zaborowski <[EMAIL PROTECTED]>
AuthorDate: Tue Jun 26 14:31:23 2007 +0100
Committer:  Russell King <[EMAIL PROTECTED]>
CommitDate: Mon Jul 2 13:39:35 2007 +0100

    [ARM] 4454/1: Use word accesses in Versatile PCI config reads
    ARM Versatile PCI config reads of one byte width have the lowest two
    bits of the address cleared and result in reading from a wrong place
    in the config space.  This change is to use word size accesses like it is 
done for halfword reads.
    Byte reads are used for retrieving the IRQ number of a PCI device and the 
problem was not exposed until 2.6.20 because the value read was discarded in 
drivers/pci/setup-irq.c (recently fixed).
    Signed-off-by: Andrzej Zaborowski <[EMAIL PROTECTED]>
    Acked-by: Paul Brook <[EMAIL PROTECTED]>
    Signed-off-by: Russell King <[EMAIL PROTECTED]>
 arch/arm/mach-versatile/pci.c |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/arch/arm/mach-versatile/pci.c b/arch/arm/mach-versatile/pci.c
index ba58223..ca82901 100644
--- a/arch/arm/mach-versatile/pci.c
+++ b/arch/arm/mach-versatile/pci.c
@@ -117,7 +117,10 @@ static int versatile_read_config(struct pci_bus *bus, 
unsigned int devfn, int wh
        } else {
                switch (size) {
                case 1:
-                       v = __raw_readb(addr);
+                       v = __raw_readl(addr);
+                       if (where & 2) v >>= 16;
+                       if (where & 1) v >>= 8;
+                       v &= 0xff;
                case 2:
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at

Reply via email to