diff --git a/[refs] b/[refs] index 56d37e81ecd9..f79ed8525a43 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 67644c547fef2739f49c80e5eb1ace82f3e916e2 +refs/heads/master: ec9502599cd837c8e4e279585817d1ffb1249126 diff --git a/trunk/arch/mips/ath79/Kconfig b/trunk/arch/mips/ath79/Kconfig index 123cc3773b49..ea28e89d0a3c 100644 --- a/trunk/arch/mips/ath79/Kconfig +++ b/trunk/arch/mips/ath79/Kconfig @@ -72,6 +72,8 @@ config SOC_AR933X config SOC_AR934X select USB_ARCH_HAS_EHCI + select HW_HAS_PCI + select PCI_AR724X if PCI def_bool n config PCI_AR724X diff --git a/trunk/arch/mips/ath79/pci.c b/trunk/arch/mips/ath79/pci.c index bc40070e45c9..ca83abd9d31e 100644 --- a/trunk/arch/mips/ath79/pci.c +++ b/trunk/arch/mips/ath79/pci.c @@ -14,6 +14,7 @@ #include #include +#include #include #include #include @@ -57,7 +58,9 @@ int __init pcibios_map_irq(const struct pci_dev *dev, uint8_t slot, uint8_t pin) if (soc_is_ar71xx()) { ath79_pci_irq_map = ar71xx_pci_irq_map; ath79_pci_nr_irqs = ARRAY_SIZE(ar71xx_pci_irq_map); - } else if (soc_is_ar724x()) { + } else if (soc_is_ar724x() || + soc_is_ar9342() || + soc_is_ar9344()) { ath79_pci_irq_map = ar724x_pci_irq_map; ath79_pci_nr_irqs = ARRAY_SIZE(ar724x_pci_irq_map); } else { @@ -115,5 +118,13 @@ int __init ath79_register_pci(void) if (soc_is_ar724x()) return ar724x_pcibios_init(ATH79_CPU_IRQ_IP2); + if (soc_is_ar9342() || soc_is_ar9344()) { + u32 bootstrap; + + bootstrap = ath79_reset_rr(AR934X_RESET_REG_BOOTSTRAP); + if (bootstrap & AR934X_BOOTSTRAP_PCIE_RC) + return ar724x_pcibios_init(ATH79_IP2_IRQ(0)); + } + return -ENODEV; }