From owner-svn-src-user@FreeBSD.ORG Mon Jul 12 11:10:34 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 182D51065768; Mon, 12 Jul 2010 11:10:34 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 06EA88FC23; Mon, 12 Jul 2010 11:10:34 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o6CBAXqZ078826; Mon, 12 Jul 2010 11:10:33 GMT (envelope-from adrian@svn.freebsd.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o6CBAXXj078822; Mon, 12 Jul 2010 11:10:33 GMT (envelope-from adrian@svn.freebsd.org) Message-Id: <201007121110.o6CBAXXj078822@svn.freebsd.org> From: Adrian Chadd Date: Mon, 12 Jul 2010 11:10:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r209940 - user/adrian/if_ath_devel/sys/dev/ath/ath_hal/ar5416 X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Jul 2010 11:10:34 -0000 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)