]> git.karo-electronics.de Git - linux-beck.git/commitdiff
brcmsmac: handle non PCI devices in the phy code
authorHauke Mehrtens <hauke@hauke-m.de>
Sat, 30 Jun 2012 13:16:21 +0000 (15:16 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 10 Jul 2012 16:16:57 +0000 (12:16 -0400)
Some code in write_{radio,radio}_reg() should just be run if this is a
pci based device. Add the condition again which was removed in commit:
commit 821e4e93172e4f7d5ac1eade04665c3dc5049c4a
Author: Roland Vossen <rvossen@broadcom.com>
Date:   Mon Aug 8 15:58:58 2011 +0200

    staging: brcm80211: removed unused bus code from softmac

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Acked-by: Arend van Spriel <arend@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/brcm80211/brcmsmac/phy/phy_cmn.c

index 1703e7d7f828e9b0f0e6d2b7789d37fc2905a574..91937c5025ceaf5f2a00738c9800ee1247984da4 100644 (file)
@@ -198,6 +198,8 @@ u16 read_radio_reg(struct brcms_phy *pi, u16 addr)
 
 void write_radio_reg(struct brcms_phy *pi, u16 addr, u16 val)
 {
+       struct si_info *sii = container_of(pi->sh->sih, struct si_info, pub);
+
        if ((D11REV_GE(pi->sh->corerev, 24)) ||
            (D11REV_IS(pi->sh->corerev, 22)
             && (pi->pubpi.phy_type != PHY_TYPE_SSN))) {
@@ -209,7 +211,8 @@ void write_radio_reg(struct brcms_phy *pi, u16 addr, u16 val)
                bcma_write16(pi->d11core, D11REGOFFS(phy4wdatalo), val);
        }
 
-       if (++pi->phy_wreg >= pi->phy_wreg_limit) {
+       if ((sii->icbus->hosttype == BCMA_HOSTTYPE_PCI) &&
+           (++pi->phy_wreg >= pi->phy_wreg_limit)) {
                (void)bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
                pi->phy_wreg = 0;
        }
@@ -294,8 +297,11 @@ void write_phy_reg(struct brcms_phy *pi, u16 addr, u16 val)
        if (addr == 0x72)
                (void)bcma_read16(pi->d11core, D11REGOFFS(phyregdata));
 #else
+       struct si_info *sii = container_of(pi->sh->sih, struct si_info, pub);
+
        bcma_write32(pi->d11core, D11REGOFFS(phyregaddr), addr | (val << 16));
-       if (++pi->phy_wreg >= pi->phy_wreg_limit) {
+       if ((sii->icbus->hosttype == BCMA_HOSTTYPE_PCI) &&
+           (++pi->phy_wreg >= pi->phy_wreg_limit)) {
                pi->phy_wreg = 0;
                (void)bcma_read16(pi->d11core, D11REGOFFS(phyversion));
        }