Date: Mon, 12 Jul 2010 11:10:33 +0000 (UTC) From: Adrian Chadd <adrian@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r209940 - user/adrian/if_ath_devel/sys/dev/ath/ath_hal/ar5416 Message-ID: <201007121110.o6CBAXXj078822@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201007121110.o6CBAXXj078822>