Messages in this thread Patch in this message | | | From | David Howells <> | Subject | [PATCH] Fix FRV PCI config space write | Date | Mon, 22 Nov 2004 16:14:51 +0000 |
| |
The attached patch makes byte and word writes to PCI config space work. The problem was that the pointer to the appropriate chunk of the config port needs to be juggled to allow for the fact that FRV is big endian in this case.
Signed-Off-By: David Howells <dhowells@redhat.com> --- warthog>diffstat pci-write-2610rc2mm3.diff pci-vdk.c | 11 ++++++++--- 1 files changed, 8 insertions(+), 3 deletions(-)
diff -uNr /warthog/kernels/linux-2.6.10-rc2-mm3/arch/frv/mb93090-mb00/pci-vdk.c linux-2.6.10-rc2-mm3-frv/arch/frv/mb93090-mb00/pci-vdk.c --- /warthog/kernels/linux-2.6.10-rc2-mm3/arch/frv/mb93090-mb00/pci-vdk.c 2004-11-22 10:53:41.000000000 +0000 +++ linux-2.6.10-rc2-mm3-frv/arch/frv/mb93090-mb00/pci-vdk.c 2004-11-22 11:45:09.905240995 +0000 @@ -44,9 +44,14 @@ #define __get_PciCfgDataW(A) readw((volatile void __iomem *) __region_CS1 + 0x88 + ((A) & 2)) #define __get_PciCfgDataL(A) readl((volatile void __iomem *) __region_CS1 + 0x88) -#define __set_PciCfgDataB(A,V) writeb((V), (volatile void __iomem *) __region_CS1 + 0x88 + ((A) & 3)) -#define __set_PciCfgDataW(A,V) writew((V), (volatile void __iomem *) __region_CS1 + 0x88 + ((A) & 2)) -#define __set_PciCfgDataL(A,V) writel((V), (volatile void __iomem *) __region_CS1 + 0x88) +#define __set_PciCfgDataB(A,V) \ + writeb((V), (volatile void __iomem *) __region_CS1 + 0x88 + (3 - ((A) & 3))) + +#define __set_PciCfgDataW(A,V) \ + writew((V), (volatile void __iomem *) __region_CS1 + 0x88 + (2 - ((A) & 2))) + +#define __set_PciCfgDataL(A,V) \ + writel((V), (volatile void __iomem *) __region_CS1 + 0x88) #define __get_PciBridgeDataB(A) readb((volatile void __iomem *) __region_CS1 + 0x800 + (A)) #define __get_PciBridgeDataW(A) readw((volatile void __iomem *) __region_CS1 + 0x800 + (A)) - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |