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