ath5k: Add RF5413/5414 support
PATCH 3/4 ath5k: Add RF5413/5414 support
*Add support for RF5413/5414 single-chip solutions
This needs testing (also on 5424/2424) before we declare that's fully supported. It works for me and the RF5413 i got ;-)
Changes-licensed-under: ISC
Signed-off-by Nick Kossifidis <[email protected]>
---
drivers/net/wireless/ath5k/ath5k.h +1 -0
@@ -131,6 +131,7 @@ enum ath5k_radio {AR5K_RF5110 =0 ,AR5K_RF5111 =1 ,AR5K_RF5112 =2 , + AR5K_RF5413 = 3, };/*
drivers/net/wireless/ath5k/hw.c +13 -8
@@ -226,11 +226,15 @@ struct ath5k_hw *ath5k_hw_attach(struct ath5k_softc *sc, u8 mac_version) ah->ah_radio_2ghz_revision =0 ;/* Identify the radio chip*/ -if (ah->ah_version ==AR5K_AR5210 ) +if (ah->ah_version ==AR5K_AR5210 ) { ah->ah_radio =AR5K_RF5110 ; -else - ah->ah_radio = ah->ah_radio_5ghz_revision < -AR5K_SREV_RAD_5112 ?AR5K_RF5111 :AR5K_RF5112 ; + }else if (ah->ah_radio_5ghz_revision <AR5K_SREV_RAD_5112 ) { + ah->ah_radio =AR5K_RF5111 ; + }else if (ah->ah_radio_5ghz_revision <AR5K_SREV_RAD_SC1 ) { + ah->ah_radio =AR5K_RF5112 ; + }else { + ah->ah_radio =AR5K_RF5413 ; + } ah->ah_phy =AR5K_PHY (0 );
@@ -453,9 +457,9 @@ void ath5k_hw_detach(struct ath5k_hw *ah)kfree (ah); } -/* -* Reset function and helpers -*/ +/****************************\ +Reset function and helpers +\****************************/ /** * ath5k_hw_write_ofdm_timings - set OFDM timings on AR5212
@@ -637,7 +641,8 @@ int ath5k_hw_reset(struct ath5k_hw *ah, enum ieee80211_if_types op_mode,*/ if (ah->ah_version !=AR5K_AR5210 ) {if (ah->ah_radio !=AR5K_RF5111 && - ah->ah_radio !=AR5K_RF5112 ) { + ah->ah_radio !=AR5K_RF5112 && + ah->ah_radio !=AR5K_RF5413 ) {AR5K_PRINTF ("invalid phy radio: %u\n" , ah->ah_radio);return -EINVAL ; }
drivers/net/wireless/ath5k/initvals.c +2 -2
@@ -1054,7 +1054,7 @@ int ath5k_hw_write_initvals(struct ath5k_hw *ah, u8 mode, bool change_channel)ath5k_hw_ini_mode_registers (ah,ARRAY_SIZE (ar5212_rf5111_ini_mode), ar5212_rf5111_ini_mode, mode); - else if (ah->ah_radio == AR5K_RF5112) + else if (ah->ah_radio >= AR5K_RF5112) ath5k_hw_ini_mode_registers(ah, ARRAY_SIZE(ar5212_rf5112_ini_mode), ar5212_rf5112_ini_mode, mode);
@@ -1072,7 +1072,7 @@ int ath5k_hw_write_initvals(struct ath5k_hw *ah, u8 mode, bool change_channel)if (ah->ah_version ==AR5K_AR5212 ) {ath5k_hw_ini_registers (ah,ARRAY_SIZE (ar5212_ini), ar5212_ini, change_channel); -if (ah->ah_radio ==AR5K_RF5112 ) { +if (ah->ah_radio >=AR5K_RF5112 ) {ath5k_hw_reg_write (ah,AR5K_PHY_PAPD_PROBE_INI_5112 ,AR5K_PHY_PAPD_PROBE ); ath5k_hw_ini_registers(ah,
drivers/net/wireless/ath5k/phy.c +222 -2
278 lines not on this page · raw message