Revert r2852 as it uses the incorrect method to access IO memory and breaks on many archs.

git-svn-id: http://madwifi-project.org/svn/madwifi/trunk@2854 0192ed92-7a03-0410-a25b-9323aeb14dbd
This commit is contained in:
mentor 2007-11-15 16:32:01 +00:00
parent 035de65235
commit a068895300

View File

@ -172,25 +172,44 @@ extern u_int32_t __ahdecl ath_hal_getuptime(struct ath_hal *);
* never byte-swapped by PCI chipsets or bridges, but always * never byte-swapped by PCI chipsets or bridges, but always
* written directly (i.e. the format defined by the manufacturer). * written directly (i.e. the format defined by the manufacturer).
*/ */
#if (AH_BYTE_ORDER == AH_BIG_ENDIAN) #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,12)
# if (AH_BYTE_ORDER == AH_BIG_ENDIAN)
#define _OS_REG_WRITE(_ah, _reg, _val) do { \ #define _OS_REG_WRITE(_ah, _reg, _val) do { \
(0x4000 <= (_reg) && (_reg) < 0x5000) ? \ (0x4000 <= (_reg) && (_reg) < 0x5000) ? \
writel((_val), (_ah)->ah_sh + (_reg)) : \ iowrite32((_val), (_ah)->ah_sh + (_reg)) : \
({__raw_writel((_val), (_ah)->ah_sh + (_reg)); \ iowrite32be((_val), (_ah)->ah_sh + (_reg)); \
mb(); }); \ } while (0)
} 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)
#define _OS_REG_READ(_ah, _reg) \ #define _OS_REG_READ(_ah, _reg) \
((0x4000 <= (_reg) && (_reg) < 0x5000) ? \ ((0x4000 <= (_reg) && (_reg) < 0x5000) ? \
readl((_ah)->ah_sh + (_reg)) : \ readl((_ah)->ah_sh + (_reg)) : \
({unsigned long __v = __raw_readl((_ah)->ah_sh + \ cpu_to_le32(readl((_ah)->ah_sh + (_reg))))
(_reg)); mb(); __v; })) # else /* AH_LITTLE_ENDIAN */
#else /* AH_LITTLE_ENDIAN */
#define _OS_REG_WRITE(_ah, _reg, _val) do { \ #define _OS_REG_WRITE(_ah, _reg, _val) do { \
writel(_val, (_ah)->ah_sh + (_reg)); \ writel(_val, (_ah)->ah_sh + (_reg)); \
} while (0) } while (0)
#define _OS_REG_READ(_ah, _reg) \ #define _OS_REG_READ(_ah, _reg) \
readl((_ah)->ah_sh + (_reg)) readl((_ah)->ah_sh + (_reg))
#endif /* AH_BYTE_ORDER */ # endif /* AH_BYTE_ORDER */
#endif /* KERNEL_VERSON(2,6,12) */
/* /*
The functions in this section are not intended to be invoked by MadWifi driver The functions in this section are not intended to be invoked by MadWifi driver