From ec0aeb9411ee029d795b1db718d80064591cef4b Mon Sep 17 00:00:00 2001 From: proski Date: Tue, 11 Aug 2009 22:10:26 +0000 Subject: [PATCH] ar5416: initialize AR_CFG on little-endian systems Reference: FreeBSD r195426 git-svn-id: http://madwifi-project.org/svn/madwifi/trunk@4084 0192ed92-7a03-0410-a25b-9323aeb14dbd --- ath_hal/ar5416/ar5416_reset.c | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/ath_hal/ar5416/ar5416_reset.c b/ath_hal/ar5416/ar5416_reset.c index af59f64..43013f4 100644 --- a/ath_hal/ar5416/ar5416_reset.c +++ b/ath_hal/ar5416/ar5416_reset.c @@ -1738,7 +1738,7 @@ ar5416SetResetPowerOn(struct ath_hal *ah) static HAL_BOOL ar5416SetReset(struct ath_hal *ah, int type) { - uint32_t tmpReg; + uint32_t tmpReg, mask; /* * Force wake @@ -1784,23 +1784,22 @@ ar5416SetReset(struct ath_hal *ah, int type) /* Clear AHB reset */ OS_REG_WRITE(ah, AR_RC, 0); - /* Set register and descriptor swapping on - * Bigendian platforms on cold reset - */ -#ifdef __BIG_ENDIAN__ - if (type == HAL_RESET_COLD) { - uint32_t mask; - - HALDEBUG(ah, HAL_DEBUG_RESET, - "%s Applying descriptor swap\n", __func__); - - mask = INIT_CONFIG_STATUS | AR_CFG_SWRD | AR_CFG_SWRG; + if (type == HAL_RESET_COLD) { + if (isBigEndian()) { + /* + * Set CFG, little-endian for register + * and descriptor accesses. + */ + mask = INIT_CONFIG_STATUS | AR_CFG_SWRD | AR_CFG_SWRG; #ifndef AH_NEED_DESC_SWAP - mask |= AR_CFG_SWTD; + mask |= AR_CFG_SWTD; #endif - OS_REG_WRITE(ah, AR_CFG, LE_READ_4(&mask)); + HALDEBUG(ah, HAL_DEBUG_RESET, + "%s Applying descriptor swap\n", __func__); + OS_REG_WRITE(ah, AR_CFG, LE_READ_4(&mask)); + } else + OS_REG_WRITE(ah, AR_CFG, INIT_CONFIG_STATUS); } -#endif ar5416InitPLL(ah, AH_NULL);