Changeset 41856


Ignore:
Timestamp:
2014-07-28T13:12:25+02:00 (4 years ago)
Author:
jogo
Message:

brcm63xx: 3.14: fix ath9k_pci_fixup

Since kernel commit 928bea964827 ("PCI: Delay enabling bridges until
they're needed"), pci fixups are run with bridges (e.g. the pcie port)
disabled.

This causses hangs when ath9k_pci_fixup tries to manually enable the
device to apply the register fixups.

Fix this by enabling any parent bridges before trying to access the
device itself.

Fixes boot on DSL-274XB rev F1.

Reported-by: Matteo Croce <matteo@…>
Signed-off-by: Jonas Gorski <jogo@…>

Location:
trunk/target/linux/brcm63xx/patches-3.14
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/brcm63xx/patches-3.14/416-BCM63XX-add-a-fixup-for-ath9k-devices.patch

    r40380 r41856  
    2525--- /dev/null 
    2626+++ b/arch/mips/bcm63xx/pci-ath9k-fixup.c 
    27 @@ -0,0 +1,192 @@ 
     27@@ -0,0 +1,199 @@ 
    2828+/* 
    2929+ *  Broadcom BCM63XX Ath9k EEPROM fixup helper. 
     
    118118+       void __iomem *mem; 
    119119+       struct ath9k_platform_data *pdata = NULL; 
     120+       struct pci_dev *bridge = pci_upstream_bridge(dev); 
    120121+       u16 *cal_data = NULL; 
    121122+       u16 cmd; 
     
    162163+       } 
    163164+ 
     165+       if (bridge) 
     166+               pci_enable_device(bridge); 
     167+ 
    164168+       pci_read_config_dword(dev, PCI_BASE_ADDRESS_0, &bar0); 
    165169+       pci_read_config_dword(dev, PCI_BASE_ADDRESS_0, &bar0); 
     
    195199+ 
    196200+       pci_write_config_dword(dev, PCI_BASE_ADDRESS_0, bar0); 
     201+ 
     202+       if (bridge) 
     203+               pci_disable_device(bridge); 
    197204+ 
    198205+       iounmap(mem); 
  • trunk/target/linux/brcm63xx/patches-3.14/420-BCM63XX-add-endian-check-for-ath9k.patch

    r41296 r41856  
    2222--- a/arch/mips/bcm63xx/pci-ath9k-fixup.c 
    2323+++ b/arch/mips/bcm63xx/pci-ath9k-fixup.c 
    24 @@ -174,12 +174,14 @@ static void ath9k_pci_fixup(struct pci_d 
     24@@ -181,12 +181,14 @@ static void ath9k_pci_fixup(struct pci_d 
    2525 } 
    2626 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATHEROS, PCI_ANY_ID, ath9k_pci_fixup); 
  • trunk/target/linux/brcm63xx/patches-3.14/421-BCM63XX-add-led-pin-for-ath9k.patch

    r41296 r41856  
    1212--- a/arch/mips/bcm63xx/pci-ath9k-fixup.c 
    1313+++ b/arch/mips/bcm63xx/pci-ath9k-fixup.c 
    14 @@ -175,13 +175,14 @@ static void ath9k_pci_fixup(struct pci_d 
     14@@ -182,13 +182,14 @@ static void ath9k_pci_fixup(struct pci_d 
    1515 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATHEROS, PCI_ANY_ID, ath9k_pci_fixup); 
    1616  
Note: See TracChangeset for help on using the changeset viewer.