svn commit: r209940 - user/adrian/if_ath_devel/sys/dev/ath/ath_hal/ar5416

Adrian Chadd adrian at FreeBSD.org
Mon Jul 12 11:10:34 UTC 2010


Author: adrian
Date: Mon Jul 12 11:10:33 2010
New Revision: 209940
URL: http://svn.freebsd.org/changeset/base/209940

Log:
  Migrate the AR9160 specific initialisation code to use the linux-named arrays
  rather than the FreeBSD HAL named arrays.
  
  The Linux arrays are being left as untouched as possible for now to make it
  easier to merge in updates to the ath9k/initvals.h.
  
  Add "bank6tpc" init/setup logic from linux ath9k. I'm not 100% sure that
  I've ported the changes over correctly but the code has been tested
  on a 9160 in 11b/11g AP mode.
  
  This commit seems to resolve the majority of the "missed beacon" issues
  I was seeing when using the AR9160 on the Ubiqiti Routerstation Pro platform.
  I'm still able to trigger them by busying the CPU/bus. I haven't yet
  tested this in anything resembling heavy/varied production use.

Modified:
  user/adrian/if_ath_devel/sys/dev/ath/ath_hal/ar5416/ar2133.c
  user/adrian/if_ath_devel/sys/dev/ath/ath_hal/ar5416/ar5416.h
  user/adrian/if_ath_devel/sys/dev/ath/ath_hal/ar5416/ar9160_attach.c

Modified: user/adrian/if_ath_devel/sys/dev/ath/ath_hal/ar5416/ar2133.c
==============================================================================
--- user/adrian/if_ath_devel/sys/dev/ath/ath_hal/ar5416/ar2133.c	Mon Jul 12 11:05:36 2010	(r209939)
+++ user/adrian/if_ath_devel/sys/dev/ath/ath_hal/ar5416/ar2133.c	Mon Jul 12 11:10:33 2010	(r209940)
@@ -38,6 +38,7 @@ struct ar2133State {
 	uint32_t	*Bank2Data;
 	uint32_t	*Bank3Data;
 	uint32_t	*Bank6Data;
+	uint32_t	*Bank6TPCData;
 	uint32_t	*Bank7Data;
 
 	/* NB: Bank*Data storage follows */
@@ -184,8 +185,8 @@ ar2133SetRfRegs(struct ath_hal *ah, cons
 	ath_hal_ini_bank_setup(priv->Bank3Data, &AH5416(ah)->ah_ini_bank3, modesIndex);
 
 	/* Setup Bank 6 Write */
-	ath_hal_ini_bank_setup(priv->Bank6Data, &AH5416(ah)->ah_ini_bank6, modesIndex);
-	
+	ath_hal_ini_bank_setup(priv->Bank6Data, &AH5416(ah)->ah_ini_bank6tpc, modesIndex);
+
 	/* Only the 5 or 2 GHz OB/DB need to be set for a mode */
 	if (IEEE80211_IS_CHAN_2GHZ(chan)) {
 		ar5416ModifyRfBuffer(priv->Bank6Data,
@@ -202,18 +203,12 @@ ar2133SetRfRegs(struct ath_hal *ah, cons
 	ath_hal_ini_bank_setup(priv->Bank7Data, &AH5416(ah)->ah_ini_bank7, 1);
 
 	/* Write Analog registers */
-	writes = ath_hal_ini_bank_write(ah, &AH5416(ah)->ah_ini_bank0,
-	    priv->Bank0Data, 0);
-	writes = ath_hal_ini_bank_write(ah, &AH5416(ah)->ah_ini_bank1,
-	    priv->Bank1Data, writes);
-	writes = ath_hal_ini_bank_write(ah, &AH5416(ah)->ah_ini_bank2,
-	    priv->Bank2Data, writes);
-	writes = ath_hal_ini_bank_write(ah, &AH5416(ah)->ah_ini_bank3,
-	    priv->Bank3Data, writes);
-	writes = ath_hal_ini_bank_write(ah, &AH5416(ah)->ah_ini_bank6,
-	    priv->Bank6Data, writes);
-	(void) ath_hal_ini_bank_write(ah, &AH5416(ah)->ah_ini_bank7,
-	    priv->Bank7Data, writes);
+	writes = ath_hal_ini_bank_write(ah, &AH5416(ah)->ah_ini_bank0, priv->Bank0Data, 0);
+	writes = ath_hal_ini_bank_write(ah, &AH5416(ah)->ah_ini_bank1, priv->Bank1Data, writes);
+	writes = ath_hal_ini_bank_write(ah, &AH5416(ah)->ah_ini_bank2, priv->Bank2Data, writes);
+	writes = ath_hal_ini_bank_write(ah, &AH5416(ah)->ah_ini_bank3, priv->Bank3Data, writes);
+	writes = ath_hal_ini_bank_write(ah, &AH5416(ah)->ah_ini_bank6tpc, priv->Bank6Data, writes);
+	(void) ath_hal_ini_bank_write(ah, &AH5416(ah)->ah_ini_bank7, priv->Bank7Data, writes);
 
 	return AH_TRUE;
 #undef  RF_BANK_SETUP
@@ -424,6 +419,7 @@ ar2133RfAttach(struct ath_hal *ah, HAL_S
 	    + AH5416(ah)->ah_ini_bank2.rows * sizeof(uint32_t)
 	    + AH5416(ah)->ah_ini_bank3.rows * sizeof(uint32_t)
 	    + AH5416(ah)->ah_ini_bank6.rows * sizeof(uint32_t)
+	    + AH5416(ah)->ah_ini_bank6tpc.rows * sizeof(uint32_t)
 	    + AH5416(ah)->ah_ini_bank7.rows * sizeof(uint32_t)
 	);
 	if (priv == AH_NULL) {
@@ -447,6 +443,7 @@ ar2133RfAttach(struct ath_hal *ah, HAL_S
 	priv->Bank2Data = bankData, bankData += AH5416(ah)->ah_ini_bank2.rows;
 	priv->Bank3Data = bankData, bankData += AH5416(ah)->ah_ini_bank3.rows;
 	priv->Bank6Data = bankData, bankData += AH5416(ah)->ah_ini_bank6.rows;
+	priv->Bank6TPCData = bankData, bankData += AH5416(ah)->ah_ini_bank6tpc.rows;
 	priv->Bank7Data = bankData, bankData += AH5416(ah)->ah_ini_bank7.rows;
 
 	ahp->ah_pcdacTable = priv->pcdacTable;

Modified: user/adrian/if_ath_devel/sys/dev/ath/ath_hal/ar5416/ar5416.h
==============================================================================
--- user/adrian/if_ath_devel/sys/dev/ath/ath_hal/ar5416/ar5416.h	Mon Jul 12 11:05:36 2010	(r209939)
+++ user/adrian/if_ath_devel/sys/dev/ath/ath_hal/ar5416/ar5416.h	Mon Jul 12 11:10:33 2010	(r209940)
@@ -59,6 +59,7 @@ struct ath_hal_5416 {
 	HAL_INI_ARRAY	ah_ini_bank2;
 	HAL_INI_ARRAY	ah_ini_bank3;
 	HAL_INI_ARRAY	ah_ini_bank6;
+	HAL_INI_ARRAY	ah_ini_bank6tpc;
 	HAL_INI_ARRAY	ah_ini_bank7;
 	HAL_INI_ARRAY	ah_ini_addac;
 	HAL_INI_ARRAY	ah_ini_pcieserdes;

Modified: user/adrian/if_ath_devel/sys/dev/ath/ath_hal/ar5416/ar9160_attach.c
==============================================================================
--- user/adrian/if_ath_devel/sys/dev/ath/ath_hal/ar5416/ar9160_attach.c	Mon Jul 12 11:05:36 2010	(r209939)
+++ user/adrian/if_ath_devel/sys/dev/ath/ath_hal/ar5416/ar9160_attach.c	Mon Jul 12 11:10:33 2010	(r209940)
@@ -26,7 +26,11 @@
 #include "ar5416/ar5416reg.h"
 #include "ar5416/ar5416phy.h"
 
+#if 0
 #include "ar5416/ar9160.ini"
+#endif
+#include "ar5416/linux-9160.h"
+#include "ar5416/ar9160-pcie.h"
 
 static const HAL_PERCAL_DATA ar9160_iq_cal = {		/* multi sample */
 	.calName = "IQ", .calType = IQ_MISMATCH_CAL,
@@ -149,20 +153,22 @@ ar9160Attach(uint16_t devid, HAL_SOFTC s
 	AH_PRIVATE(ah)->ah_ispcie = (val & AR_XSREV_TYPE_HOST_MODE) == 0;
 
 	/* setup common ini data; rf backends handle remainder */
-	HAL_INI_INIT(&ahp->ah_ini_modes, ar9160Modes, 6);
-	HAL_INI_INIT(&ahp->ah_ini_common, ar9160Common, 2);
+	HAL_INI_INIT(&ahp->ah_ini_modes, ar5416Modes_9160, 6);
+	HAL_INI_INIT(&ahp->ah_ini_common, ar5416Common_9160, 2);
+
+	HAL_INI_INIT(&AH5416(ah)->ah_ini_bb_rfgain, ar5416BB_RfGain_9160, 3);
+	HAL_INI_INIT(&AH5416(ah)->ah_ini_bank0, ar5416Bank0_9160, 2);
+	HAL_INI_INIT(&AH5416(ah)->ah_ini_bank1, ar5416Bank1_9160, 2);
+	HAL_INI_INIT(&AH5416(ah)->ah_ini_bank2, ar5416Bank2_9160, 2);
+	HAL_INI_INIT(&AH5416(ah)->ah_ini_bank3, ar5416Bank3_9160, 3);
+	HAL_INI_INIT(&AH5416(ah)->ah_ini_bank6, ar5416Bank6_9160, 3);
+	HAL_INI_INIT(&AH5416(ah)->ah_ini_bank6tpc, ar5416Bank6TPC_9160, 3);
+	HAL_INI_INIT(&AH5416(ah)->ah_ini_bank7, ar5416Bank7_9160, 2);
 
-	HAL_INI_INIT(&AH5416(ah)->ah_ini_bb_rfgain, ar9160BB_RfGain, 3);
-	HAL_INI_INIT(&AH5416(ah)->ah_ini_bank0, ar9160Bank0, 2);
-	HAL_INI_INIT(&AH5416(ah)->ah_ini_bank1, ar9160Bank1, 2);
-	HAL_INI_INIT(&AH5416(ah)->ah_ini_bank2, ar9160Bank2, 2);
-	HAL_INI_INIT(&AH5416(ah)->ah_ini_bank3, ar9160Bank3, 3);
-	HAL_INI_INIT(&AH5416(ah)->ah_ini_bank6, ar9160Bank6, 3);
-	HAL_INI_INIT(&AH5416(ah)->ah_ini_bank7, ar9160Bank7, 2);
 	if (AR_SREV_SOWL_11(ah))
-		HAL_INI_INIT(&AH5416(ah)->ah_ini_addac, ar9160Addac_1_1, 2);
+		HAL_INI_INIT(&AH5416(ah)->ah_ini_addac, ar5416Addac_91601_1, 2);
 	else
-		HAL_INI_INIT(&AH5416(ah)->ah_ini_addac, ar9160Addac, 2);
+		HAL_INI_INIT(&AH5416(ah)->ah_ini_addac, ar5416Addac_9160, 2);
 
 	ecode = ath_hal_v14EepromAttach(ah);
 	if (ecode != HAL_OK)


More information about the svn-src-user mailing list