2010/11/26 Wojciech Dubowik <dubowoj@xxxxxxxxxxx>: > From: Felix Fietkau <nbd@xxxxxxxxxxx> > > Add bus dependent revision read function which is used to > determine chipset's MAC before hardware is initialized. > > Signed-off-by: Felix Fietkau <nbd@xxxxxxxxxxx> > Signed-off-by: Wojciech Dubowik <Wojciech.Dubowik@xxxxxxxxxxx> > --- > Âdrivers/net/wireless/ath/ath5k/ath5k.h Â|  Â5 +++-- > Âdrivers/net/wireless/ath/ath5k/attach.c |  11 +++++++---- > Âdrivers/net/wireless/ath/ath5k/pci.c  Â|  Â6 ++++++ > Â3 files changed, 16 insertions(+), 6 deletions(-) > > diff --git a/drivers/net/wireless/ath/ath5k/ath5k.h b/drivers/net/wireless/ath/ath5k/ath5k.h > index 946e54a..917deb4 100644 > --- a/drivers/net/wireless/ath/ath5k/ath5k.h > +++ b/drivers/net/wireless/ath/ath5k/ath5k.h > @@ -1035,6 +1035,7 @@ struct ath5k_hw { >    Âu32           ah_phy; >    Âu32           ah_mac_srev; >    Âu16           ah_mac_version; > +    u16           ah_mac_revision; >    Âu16           ah_phy_revision; >    Âu16           ah_radio_5ghz_revision; >    Âu16           ah_radio_2ghz_revision; > @@ -1143,9 +1144,9 @@ void ath5k_hw_deinit(struct ath5k_hw *ah); > Âint ath5k_sysfs_register(struct ath5k_softc *sc); > Âvoid ath5k_sysfs_unregister(struct ath5k_softc *sc); > > -/*Chip id helper function */ > +/*Chip id helper functions */ > Âconst char *ath5k_chip_name(enum ath5k_srev_type type, u_int16_t val); > - > +int ath5k_bus_read_srev(struct ath5k_hw *ah); > > Â/* LED functions */ > Âint ath5k_init_leds(struct ath5k_softc *sc); > diff --git a/drivers/net/wireless/ath/ath5k/attach.c b/drivers/net/wireless/ath/ath5k/attach.c > index fe7e6f1..9b5f6e4 100644 > --- a/drivers/net/wireless/ath/ath5k/attach.c > +++ b/drivers/net/wireless/ath/ath5k/attach.c > @@ -128,7 +128,8 @@ int ath5k_hw_init(struct ath5k_softc *sc) >    Â/* >     * Find the mac version >     */ > -    srev = ath5k_hw_reg_read(ah, AR5K_SREV); > +    ath5k_bus_read_srev(ah); > +    srev = ah->ah_mac_srev; >    Âif (srev < AR5K_SREV_AR5311) >        Âah->ah_version = AR5K_AR5210; >    Âelse if (srev < AR5K_SREV_AR5212) > @@ -136,6 +137,10 @@ int ath5k_hw_init(struct ath5k_softc *sc) >    Âelse >        Âah->ah_version = AR5K_AR5212; > > +    /* Get the MAC revision */ > +    ah->ah_mac_version = AR5K_REG_MS(srev, AR5K_SREV_VER); > +    ah->ah_mac_revision = AR5K_REG_MS(srev, AR5K_SREV_REV); > + >    Â/* Fill the ath5k_hw struct with the needed functions */ >    Âret = ath5k_hw_init_desc_functions(ah); >    Âif (ret) > @@ -146,9 +151,7 @@ int ath5k_hw_init(struct ath5k_softc *sc) >    Âif (ret) >        Âgoto err; > > -    /* Get MAC, PHY and RADIO revisions */ > -    ah->ah_mac_srev = srev; > -    ah->ah_mac_version = AR5K_REG_MS(srev, AR5K_SREV_VER); > +    /* Get PHY and RADIO revisions */ >    Âah->ah_phy_revision = ath5k_hw_reg_read(ah, AR5K_PHY_CHIP_ID) & >            Â0xffffffff; >    Âah->ah_radio_5ghz_revision = ath5k_hw_radio_revision(ah, > diff --git a/drivers/net/wireless/ath/ath5k/pci.c b/drivers/net/wireless/ath/ath5k/pci.c > index 3f26cf2..4eff891 100644 > --- a/drivers/net/wireless/ath/ath5k/pci.c > +++ b/drivers/net/wireless/ath/ath5k/pci.c > @@ -100,6 +100,12 @@ bool ath5k_pci_eeprom_read(struct ath_common *common, u32 offset, u16 *data) >    Âreturn -ETIMEDOUT; > Â} > > +int ath5k_bus_read_srev(struct ath5k_hw *ah) > +{ > +    ah->ah_mac_srev = ath5k_hw_reg_read(ah, AR5K_SREV); > +    return 0; > +} > + > Â/* Common ath_bus_opts structure */ > Âstatic const struct ath_bus_ops ath_pci_bus_ops = { >    Â.ath_bus_type = ATH_PCI, > -- > 1.7.1 > Why not naming that ath5k_hw_read_srev_pci and the other one ath5k_hw_read_srev_ahb and name both ath5k_bus_read_srev ? Also please at least follow the naming scheme, all hw related functions are ath5k_hw_*. -- GPG ID: 0xD21DB2DB As you read this post global entropy rises. Have Fun ;-) Nick -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html