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);
 
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to