Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=df7e70a2b0899845bb9a53548beeed05b9947705
Commit:     df7e70a2b0899845bb9a53548beeed05b9947705
Parent:     a14c4508f4bb1bb7772b1976a82646be8d8b515a
Author:     Olof Johansson <[EMAIL PROTECTED]>
AuthorDate: Mon Apr 16 16:26:34 2007 +1000
Committer:  Paul Mackerras <[EMAIL PROTECTED]>
CommitDate: Tue Apr 24 21:31:48 2007 +1000

    [POWERPC] pasemi: Allow 8KB config space for I/O bridge
    
    Device 0 function 0 on the root bus is really a two-function bus agent,
    but only the first function is visible. Because of this, we need to
    allow config accesses into the second range. Modify the check for valid
    offsets accordingly.
    
    Signed-off-by: Olof Johansson <[EMAIL PROTECTED]>
    Signed-off-by: Paul Mackerras <[EMAIL PROTECTED]>
---
 arch/powerpc/platforms/pasemi/pci.c |   16 +++++++++++++---
 1 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/arch/powerpc/platforms/pasemi/pci.c 
b/arch/powerpc/platforms/pasemi/pci.c
index 7ecb2ba..056243d 100644
--- a/arch/powerpc/platforms/pasemi/pci.c
+++ b/arch/powerpc/platforms/pasemi/pci.c
@@ -33,7 +33,17 @@
 
 #define PA_PXP_CFA(bus, devfn, off) (((bus) << 20) | ((devfn) << 12) | (off))
 
-#define CONFIG_OFFSET_VALID(off) ((off) < 4096)
+static inline int pa_pxp_offset_valid(u8 bus, u8 devfn, int offset)
+{
+       /* Device 0 Function 0 is special: It's config space spans function 1 as
+        * well, so allow larger offset. It's really a two-function device but 
the
+        * second function does not probe.
+        */
+       if (bus == 0 && devfn == 0)
+               return offset < 8192;
+       else
+               return offset < 4096;
+}
 
 static void volatile __iomem *pa_pxp_cfg_addr(struct pci_controller *hose,
                                       u8 bus, u8 devfn, int offset)
@@ -51,7 +61,7 @@ static int pa_pxp_read_config(struct pci_bus *bus, unsigned 
int devfn,
        if (!hose)
                return PCIBIOS_DEVICE_NOT_FOUND;
 
-       if (!CONFIG_OFFSET_VALID(offset))
+       if (!pa_pxp_offset_valid(bus->number, devfn, offset))
                return PCIBIOS_BAD_REGISTER_NUMBER;
 
        addr = pa_pxp_cfg_addr(hose, bus->number, devfn, offset);
@@ -85,7 +95,7 @@ static int pa_pxp_write_config(struct pci_bus *bus, unsigned 
int devfn,
        if (!hose)
                return PCIBIOS_DEVICE_NOT_FOUND;
 
-       if (!CONFIG_OFFSET_VALID(offset))
+       if (!pa_pxp_offset_valid(bus->number, devfn, offset))
                return PCIBIOS_BAD_REGISTER_NUMBER;
 
        addr = pa_pxp_cfg_addr(hose, bus->number, devfn, offset);
-
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  http://vger.kernel.org/majordomo-info.html

Reply via email to