aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorAndrew Isaacson <adi@broadcom.com>2005-10-20 02:59:46 -0400
committerRalf Baechle <ralf@linux-mips.org>2005-10-29 14:32:49 -0400
commitcb4262481fce1d43ac9a483be4faf36fdd1c7abb (patch)
tree04e3614f81b2ac7b3091969427160de127f8d4c3 /arch
parent8a1417de9e11f9f577499cd4fe89fa35f4bf54fa (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.c8
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