diff options
author | Gabor Juhos <juhosg@openwrt.org> | 2009-10-01 19:41:00 +0000 |
---|---|---|
committer | Gabor Juhos <juhosg@openwrt.org> | 2009-10-01 19:41:00 +0000 |
commit | 45e6e81be6bf47b6b1375fb5db782bcec163b56a (patch) | |
tree | 898a90cf7f0326038185a2e3b652a14c4c98032a | |
parent | 290284a0eaa10896876f399cad23311b3e08e01b (diff) | |
download | upstream-45e6e81be6bf47b6b1375fb5db782bcec163b56a.tar.gz upstream-45e6e81be6bf47b6b1375fb5db782bcec163b56a.tar.bz2 upstream-45e6e81be6bf47b6b1375fb5db782bcec163b56a.zip |
ar71xx: add PCI Host Controller fixup for ar724x
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@17808 3c298f89-4303-0410-b956-a3cf2f4a3e73
-rw-r--r-- | target/linux/ar71xx/files/arch/mips/pci/pci-ar724x.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/target/linux/ar71xx/files/arch/mips/pci/pci-ar724x.c b/target/linux/ar71xx/files/arch/mips/pci/pci-ar724x.c index 02f3a8cc4c..139af940a2 100644 --- a/target/linux/ar71xx/files/arch/mips/pci/pci-ar724x.c +++ b/target/linux/ar71xx/files/arch/mips/pci/pci-ar724x.c @@ -29,6 +29,7 @@ static void __iomem *ar724x_pci_localcfg_base; static void __iomem *ar724x_pci_devcfg_base; +static int ar724x_pci_fixup_enable; static DEFINE_SPINLOCK(ar724x_pci_lock); @@ -128,6 +129,27 @@ static int ar724x_pci_write_config(struct pci_bus *bus, unsigned int devfn, return PCIBIOS_SUCCESSFUL; } +static void ar724x_pci_fixup(struct pci_dev *dev) +{ + u32 t; + + if (!ar724x_pci_fixup_enable) + return; + + if (dev->bus->number != 0 || dev->devfn != 0) + return; + + DBG("PCI: fixup host controller %s (%04x:%04x)\n", pci_name(dev), + dev->vendor, dev->device); + + /* setup COMMAND register */ + t = PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER | PCI_COMMAND_INVALIDATE + | PCI_COMMAND_PARITY | PCI_COMMAND_SERR | PCI_COMMAND_FAST_BACK; + + pci_write_config_word(dev, PCI_COMMAND, t); +} +DECLARE_PCI_FIXUP_EARLY(PCI_ANY_ID, PCI_ANY_ID, ar724x_pci_fixup); + int __init ar724x_pcibios_map_irq(const struct pci_dev *dev, uint8_t slot, uint8_t pin) { @@ -195,6 +217,7 @@ int __init ar724x_pcibios_init(void) ar724x_pci_write(ar724x_pci_localcfg_base, PCI_COMMAND, 4, t); + ar724x_pci_fixup_enable = 1; register_pci_controller(&ar724x_pci_controller); return 0; |