From owner-svn-src-all@FreeBSD.ORG Wed Jan 26 10:48:29 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9548D106566C; Wed, 26 Jan 2011 10:48:29 +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 6A1238FC15; Wed, 26 Jan 2011 10:48:29 +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 p0QAmTwq074421; Wed, 26 Jan 2011 10:48:29 GMT (envelope-from adrian@svn.freebsd.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p0QAmTcf074418; Wed, 26 Jan 2011 10:48:29 GMT (envelope-from adrian@svn.freebsd.org) Message-Id: <201101261048.p0QAmTcf074418@svn.freebsd.org> From: Adrian Chadd Date: Wed, 26 Jan 2011 10:48:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r217882 - head/sys/dev/ath/ath_hal/ar5416 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 26 Jan 2011 10:48:29 -0000 Author: adrian Date: Wed Jan 26 10:48:29 2011 New Revision: 217882 URL: http://svn.freebsd.org/changeset/base/217882 Log: Add ar5416RestoreChainMask() which will undo any AR5416 specific chainmask overriding after calibration. This will get set for other two chain radios, such as AR9280 and later on, AR9287. It should however be a nul operation. Modified: head/sys/dev/ath/ath_hal/ar5416/ar5416.h head/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c Modified: head/sys/dev/ath/ath_hal/ar5416/ar5416.h ============================================================================== --- head/sys/dev/ath/ath_hal/ar5416/ar5416.h Wed Jan 26 10:36:43 2011 (r217881) +++ head/sys/dev/ath/ath_hal/ar5416/ar5416.h Wed Jan 26 10:48:29 2011 (r217882) @@ -202,6 +202,7 @@ extern void ar5416GetTargetPowersLeg(str uint16_t numChannels, CAL_TARGET_POWER_LEG *pNewPower, uint16_t numRates, HAL_BOOL isExtTarget); extern void ar5416InitChainMasks(struct ath_hal *ah); +extern void ar5416RestoreChainMask(struct ath_hal *ah); extern HAL_BOOL ar5416StopTxDma(struct ath_hal *ah, u_int q); extern HAL_BOOL ar5416SetupTxDesc(struct ath_hal *ah, struct ath_desc *ds, Modified: head/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c ============================================================================== --- head/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c Wed Jan 26 10:36:43 2011 (r217881) +++ head/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c Wed Jan 26 10:48:29 2011 (r217882) @@ -329,6 +329,8 @@ ar5416Reset(struct ath_hal *ah, HAL_OPMO if (!ar5416InitCal(ah, chan)) FAIL(HAL_ESELFTEST); + ar5416RestoreChainMask(ah); + AH_PRIVATE(ah)->ah_opmode = opmode; /* record operating mode */ if (bChannelChange && !IEEE80211_IS_CHAN_DFS(chan)) @@ -1124,6 +1126,18 @@ ar5416InitChainMasks(struct ath_hal *ah) OS_REG_WRITE(ah, AR_SELFGEN_MASK, AH5416(ah)->ah_tx_chainmask); } +void +ar5416RestoreChainMask(struct ath_hal *ah) +{ + int rx_chainmask = AH5416(ah)->ah_rx_chainmask; + + if ((rx_chainmask == 0x5) || (rx_chainmask == 0x3)) { + OS_REG_WRITE(ah, AR_PHY_RX_CHAINMASK, rx_chainmask); + OS_REG_WRITE(ah, AR_PHY_CAL_CHAINMASK, rx_chainmask); + } +} + + #ifndef IS_5GHZ_FAST_CLOCK_EN #define IS_5GHZ_FAST_CLOCK_EN(ah, chan) AH_FALSE #endif