diff options
author | Andrew Isaacson <adi@broadcom.com> | 2005-10-20 02:59:46 -0400 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2005-10-29 14:32:49 -0400 |
commit | cb4262481fce1d43ac9a483be4faf36fdd1c7abb (patch) | |
tree | 04e3614f81b2ac7b3091969427160de127f8d4c3 /arch | |
parent | 8a1417de9e11f9f577499cd4fe89fa35f4bf54fa (diff) |
pci-expmem-hack
CFE 1.2.5 and earlier fails to turn on the ExpMemEn bit in the
PCIFeatureControl register, which means that DMA does not work
beyond physical address 01_0000_0000, ergo to DRAM beyond 1GB.
With ExpMemEn turned on, 01_0000_0000-0f_ffff_ffff is mapped,
so DMA works for up to 61 GB of DRAM.
Will be fixed in CFE 1.2.6 (yet to be released).
Signed-Off-By: Andy Isaacson <adi@broadcom.com>
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/mips/pci/pci-bcm1480.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/arch/mips/pci/pci-bcm1480.c b/arch/mips/pci/pci-bcm1480.c index 4905d8593d6d..f194b4e4f86a 100644 --- a/arch/mips/pci/pci-bcm1480.c +++ b/arch/mips/pci/pci-bcm1480.c | |||
@@ -232,6 +232,14 @@ static int __init bcm1480_pcibios_init(void) | |||
232 | bcm1480_bus_status |= PCI_BUS_ENABLED; | 232 | bcm1480_bus_status |= PCI_BUS_ENABLED; |
233 | } | 233 | } |
234 | 234 | ||
235 | /* turn on ExpMemEn */ | ||
236 | cmdreg = READCFG32(CFGOFFSET(0, PCI_DEVFN(PCI_BRIDGE_DEVICE, 0), 0x40)); | ||
237 | printk("PCIFeatureCtrl = %x\n", cmdreg); | ||
238 | WRITECFG32(CFGOFFSET(0, PCI_DEVFN(PCI_BRIDGE_DEVICE, 0), 0x40), | ||
239 | cmdreg | 0x10); | ||
240 | cmdreg = READCFG32(CFGOFFSET(0, PCI_DEVFN(PCI_BRIDGE_DEVICE, 0), 0x40)); | ||
241 | printk("PCIFeatureCtrl = %x\n", cmdreg); | ||
242 | |||
235 | /* | 243 | /* |
236 | * Establish mappings in KSEG2 (kernel virtual) to PCI I/O | 244 | * Establish mappings in KSEG2 (kernel virtual) to PCI I/O |
237 | * space. Use "match bytes" policy to make everything look | 245 | * space. Use "match bytes" policy to make everything look |