svn commit: r195426 - head/sys/dev/ath/ath_hal/ar5416

Sam Leffler sam at FreeBSD.org
Tue Jul 7 18:11:06 UTC 2009


Author: sam
Date: Tue Jul  7 18:11:05 2009
New Revision: 195426
URL: http://svn.freebsd.org/changeset/base/195426

Log:
  Fix ar5416 and later parts on big-endian platforms: setup the h/w byte
  swizzler using the same technique used everywhere else.
  
  Approved by:	re (kib)

Modified:
  head/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c

Modified: head/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c
==============================================================================
--- head/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c	Tue Jul  7 16:10:53 2009	(r195425)
+++ head/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c	Tue Jul  7 18:11:05 2009	(r195426)
@@ -1045,7 +1045,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
@@ -1091,23 +1091,22 @@ ar5416SetReset(struct ath_hal *ah, int t
     /* 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);
 


More information about the svn-src-all mailing list