revert changes to io access functions done in madwifi trunk
authorFelix Fietkau <nbd@openwrt.org>
Wed, 24 Oct 2007 17:56:21 +0000 (17:56 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Wed, 24 Oct 2007 17:56:21 +0000 (17:56 +0000)
(they seem wrong to me, and they break xscale)
fixes #2591

SVN-Revision: 9433

package/madwifi/patches/128-revert_ioaccess.patch [new file with mode: 0644]

diff --git a/package/madwifi/patches/128-revert_ioaccess.patch b/package/madwifi/patches/128-revert_ioaccess.patch
new file mode 100644 (file)
index 0000000..5aaa4dd
--- /dev/null
@@ -0,0 +1,59 @@
+Index: madwifi-ng-r2756-20071018/ath_hal/ah_os.h
+===================================================================
+--- madwifi-ng-r2756-20071018.orig/ath_hal/ah_os.h     2007-10-24 19:56:29.632449329 +0200
++++ madwifi-ng-r2756-20071018/ath_hal/ah_os.h  2007-10-24 19:56:39.192994154 +0200
+@@ -172,44 +172,25 @@
+  * never byte-swapped by PCI chipsets or bridges, but always 
+  * written directly (i.e. the format defined by the manufacturer).
+  */
+-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,12)
+-# if (AH_BYTE_ORDER == AH_BIG_ENDIAN)
++#if (AH_BYTE_ORDER == AH_BIG_ENDIAN)
+ #define _OS_REG_WRITE(_ah, _reg, _val) do {                   \
+       (0x4000 <= (_reg) && (_reg) < 0x5000) ?                 \
+-       iowrite32((_val), (_ah)->ah_sh + (_reg)) :             \
+-       iowrite32be((_val), (_ah)->ah_sh + (_reg));            \
+-      } while (0)
+-#define _OS_REG_READ(_ah, _reg)                                       \
+-      ((0x4000 <= (_reg) && (_reg) < 0x5000) ?                \
+-       ioread32((_ah)->ah_sh + (_reg)) :                      \
+-       ioread32be((_ah)->ah_sh + (_reg)));
+-# else /* AH_LITTLE_ENDIAN */
+-#define _OS_REG_WRITE(_ah, _reg, _val) do {                   \
+-      iowrite32(_val, (_ah)->ah_sh + (_reg));                 \
+-      } while (0)
+-#define _OS_REG_READ(_ah, _reg)                                       \
+-      ioread32((_ah)->ah_sh + (_reg))
+-      
+-# endif /* AH_BYTE_ORDER */
+-#else
+-# if (AH_BYTE_ORDER == AH_BIG_ENDIAN)
+-#define _OS_REG_WRITE(_ah, _reg, _val) do {                   \
+-       writel((0x4000 <= (_reg) && (_reg) < 0x5000) ?         \
+-              (_val) : cpu_to_le32(_val),                     \
+-              (_ah)->ah_sh + (_reg));                         \
+-      } while (0)
++       writel((_val), (_ah)->ah_sh + (_reg)) :                \
++       ({__raw_writel((_val), (_ah)->ah_sh + (_reg));         \
++         mb(); });                                            \
++} while (0)
+ #define _OS_REG_READ(_ah, _reg)                                       \
+       ((0x4000 <= (_reg) && (_reg) < 0x5000) ?                \
+        readl((_ah)->ah_sh + (_reg)) :                         \
+-       cpu_to_le32(readl((_ah)->ah_sh + (_reg))))
+-# else /* AH_LITTLE_ENDIAN */
++       ({unsigned long __v = __raw_readl((_ah)->ah_sh +       \
++        (_reg)); mb(); __v; }))
++#else /* AH_LITTLE_ENDIAN */
+ #define _OS_REG_WRITE(_ah, _reg, _val) do {                   \
+       writel(_val, (_ah)->ah_sh + (_reg));                    \
+-      } while (0)
++} while (0)
+ #define _OS_REG_READ(_ah, _reg)                                       \
+       readl((_ah)->ah_sh + (_reg))
+-# endif /* AH_BYTE_ORDER */
+-#endif /* KERNEL_VERSON(2,6,12) */
++#endif /* AH_BYTE_ORDER */
+ /* 
+ The functions in this section are not intended to be invoked by MadWifi driver