Search Linux Wireless

[PATCH 10/26] ath9k: Configure pll control for AR9485

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Signed-off-by: Vasanthakumar Thiagarajan <vasanth@xxxxxxxxxxx>
---
 drivers/net/wireless/ath/ath9k/ar9003_phy.c |   16 ++++++++++------
 drivers/net/wireless/ath/ath9k/hw.c         |    7 ++++++-
 drivers/net/wireless/ath/ath9k/reg.h        |    2 ++
 3 files changed, 18 insertions(+), 7 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/ar9003_phy.c b/drivers/net/wireless/ath/ath9k/ar9003_phy.c
index b34a9e9..4e35bda 100644
--- a/drivers/net/wireless/ath/ath9k/ar9003_phy.c
+++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.c
@@ -390,14 +390,18 @@ static u32 ar9003_hw_compute_pll_control(struct ath_hw *ah,
 {
 	u32 pll;
 
-	pll = SM(0x5, AR_RTC_9300_PLL_REFDIV);
+	if (AR_SREV_9485(ah))
+		pll = 0x142c;
+	else {
+		pll = SM(0x5, AR_RTC_9300_PLL_REFDIV);
 
-	if (chan && IS_CHAN_HALF_RATE(chan))
-		pll |= SM(0x1, AR_RTC_9300_PLL_CLKSEL);
-	else if (chan && IS_CHAN_QUARTER_RATE(chan))
-		pll |= SM(0x2, AR_RTC_9300_PLL_CLKSEL);
+		if (chan && IS_CHAN_HALF_RATE(chan))
+			pll |= SM(0x1, AR_RTC_9300_PLL_CLKSEL);
+		else if (chan && IS_CHAN_QUARTER_RATE(chan))
+			pll |= SM(0x2, AR_RTC_9300_PLL_CLKSEL);
 
-	pll |= SM(0x2c, AR_RTC_9300_PLL_DIV);
+		pll |= SM(0x2c, AR_RTC_9300_PLL_DIV);
+	}
 
 	return pll;
 }
diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c
index b1d3c1e..79a4e70 100644
--- a/drivers/net/wireless/ath/ath9k/hw.c
+++ b/drivers/net/wireless/ath/ath9k/hw.c
@@ -676,7 +676,12 @@ static void ath9k_hw_init_qos(struct ath_hw *ah)
 static void ath9k_hw_init_pll(struct ath_hw *ah,
 			      struct ath9k_channel *chan)
 {
-	u32 pll = ath9k_hw_compute_pll_control(ah, chan);
+	u32 pll;
+
+	if (AR_SREV_9485(ah))
+		REG_WRITE(ah, AR_RTC_PLL_CONTROL2, 0x886666);
+
+	pll = ath9k_hw_compute_pll_control(ah, chan);
 
 	REG_WRITE(ah, AR_RTC_PLL_CONTROL, pll);
 
diff --git a/drivers/net/wireless/ath/ath9k/reg.h b/drivers/net/wireless/ath/ath9k/reg.h
index 0153ba1..d3257f7 100644
--- a/drivers/net/wireless/ath/ath9k/reg.h
+++ b/drivers/net/wireless/ath/ath9k/reg.h
@@ -1114,6 +1114,8 @@ enum {
 #define AR_RTC_PLL_CONTROL \
 	((AR_SREV_9100(ah)) ? (AR_RTC_BASE + 0x0014) : 0x7014)
 
+#define AR_RTC_PLL_CONTROL2	0x703c
+
 #define AR_RTC_PLL_DIV          0x0000001f
 #define AR_RTC_PLL_DIV_S        0
 #define AR_RTC_PLL_DIV2         0x00000020
-- 
1.7.0.4

--
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


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux