Skip to contentSkip to conversation

ath5k: Add RF5413/5414 support

PATCH In review Nick Kossifidis 1 participant 1 message Nov 14, 2007 Networking drivers (wireless)

lore
Share & tools
lore
#0 lore raw

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

---

drivers/net/wireless/ath5k/ath5k.h +1 -0
index 7058b0a..c5e37d2 100644
@@ -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
index ead2d75..e7fecbb 100644
@@ -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
index ca12964..44c05f0 100644
@@ -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