4cbdad0e9d
SVN-Revision: 26281
109 lines
3.4 KiB
Diff
109 lines
3.4 KiB
Diff
--- a/drivers/net/wireless/ath/ath9k/hw.h
|
|
+++ b/drivers/net/wireless/ath/ath9k/hw.h
|
|
@@ -65,24 +65,24 @@
|
|
|
|
/* Register read/write primitives */
|
|
#define REG_WRITE(_ah, _reg, _val) \
|
|
- ath9k_hw_common(_ah)->ops->write((_ah), (_val), (_reg))
|
|
+ (_ah)->reg_ops.write((_ah), (_val), (_reg))
|
|
|
|
#define REG_READ(_ah, _reg) \
|
|
- ath9k_hw_common(_ah)->ops->read((_ah), (_reg))
|
|
+ (_ah)->reg_ops.read((_ah), (_reg))
|
|
|
|
#define REG_READ_MULTI(_ah, _addr, _val, _cnt) \
|
|
- ath9k_hw_common(_ah)->ops->multi_read((_ah), (_addr), (_val), (_cnt))
|
|
+ (_ah)->reg_ops.multi_read((_ah), (_addr), (_val), (_cnt))
|
|
|
|
#define ENABLE_REGWRITE_BUFFER(_ah) \
|
|
do { \
|
|
- if (ath9k_hw_common(_ah)->ops->enable_write_buffer) \
|
|
- ath9k_hw_common(_ah)->ops->enable_write_buffer((_ah)); \
|
|
+ if ((_ah)->reg_ops.enable_write_buffer) \
|
|
+ (_ah)->reg_ops.enable_write_buffer((_ah)); \
|
|
} while (0)
|
|
|
|
#define REGWRITE_BUFFER_FLUSH(_ah) \
|
|
do { \
|
|
- if (ath9k_hw_common(_ah)->ops->write_flush) \
|
|
- ath9k_hw_common(_ah)->ops->write_flush((_ah)); \
|
|
+ if ((_ah)->reg_ops.write_flush) \
|
|
+ (_ah)->reg_ops.write_flush((_ah)); \
|
|
} while (0)
|
|
|
|
#define SM(_v, _f) (((_v) << _f##_S) & _f)
|
|
@@ -659,6 +659,8 @@ struct ath_nf_limits {
|
|
#define AH_UNPLUGGED 0x2 /* The card has been physically removed. */
|
|
|
|
struct ath_hw {
|
|
+ struct ath_ops reg_ops;
|
|
+
|
|
struct ieee80211_hw *hw;
|
|
struct ath_common common;
|
|
struct ath9k_hw_version hw_version;
|
|
--- a/drivers/net/wireless/ath/ath9k/htc_drv_init.c
|
|
+++ b/drivers/net/wireless/ath/ath9k/htc_drv_init.c
|
|
@@ -430,14 +430,6 @@ static void ath9k_regwrite_flush(void *h
|
|
mutex_unlock(&priv->wmi->multi_write_mutex);
|
|
}
|
|
|
|
-static const struct ath_ops ath9k_common_ops = {
|
|
- .read = ath9k_regread,
|
|
- .multi_read = ath9k_multi_regread,
|
|
- .write = ath9k_regwrite,
|
|
- .enable_write_buffer = ath9k_enable_regwrite_buffer,
|
|
- .write_flush = ath9k_regwrite_flush,
|
|
-};
|
|
-
|
|
static void ath_usb_read_cachesize(struct ath_common *common, int *csz)
|
|
{
|
|
*csz = L1_CACHE_BYTES >> 2;
|
|
@@ -658,10 +650,15 @@ static int ath9k_init_priv(struct ath9k_
|
|
ah->hw_version.subsysid = 0; /* FIXME */
|
|
ah->hw_version.usbdev = drv_info;
|
|
ah->ah_flags |= AH_USE_EEPROM;
|
|
+ ah->reg_ops.read = ath9k_regread;
|
|
+ ah->reg_ops.multi_read = ath9k_multi_regread;
|
|
+ ah->reg_ops.write = ath9k_regwrite;
|
|
+ ah->reg_ops.enable_write_buffer = ath9k_enable_regwrite_buffer;
|
|
+ ah->reg_ops.write_flush = ath9k_regwrite_flush;
|
|
priv->ah = ah;
|
|
|
|
common = ath9k_hw_common(ah);
|
|
- common->ops = &ath9k_common_ops;
|
|
+ common->ops = &ah->reg_ops;
|
|
common->bus_ops = &ath9k_usb_bus_ops;
|
|
common->ah = ah;
|
|
common->hw = priv->hw;
|
|
--- a/drivers/net/wireless/ath/ath9k/init.c
|
|
+++ b/drivers/net/wireless/ath/ath9k/init.c
|
|
@@ -196,11 +196,6 @@ static unsigned int ath9k_ioread32(void
|
|
return val;
|
|
}
|
|
|
|
-static const struct ath_ops ath9k_common_ops = {
|
|
- .read = ath9k_ioread32,
|
|
- .write = ath9k_iowrite32,
|
|
-};
|
|
-
|
|
/**************************/
|
|
/* Initialization */
|
|
/**************************/
|
|
@@ -551,6 +546,8 @@ static int ath9k_init_softc(u16 devid, s
|
|
ah->hw = sc->hw;
|
|
ah->hw_version.devid = devid;
|
|
ah->hw_version.subsysid = subsysid;
|
|
+ ah->reg_ops.read = ath9k_ioread32;
|
|
+ ah->reg_ops.write = ath9k_iowrite32;
|
|
sc->sc_ah = ah;
|
|
|
|
if (!pdata) {
|
|
@@ -563,7 +560,7 @@ static int ath9k_init_softc(u16 devid, s
|
|
}
|
|
|
|
common = ath9k_hw_common(ah);
|
|
- common->ops = &ath9k_common_ops;
|
|
+ common->ops = &ah->reg_ops;
|
|
common->bus_ops = bus_ops;
|
|
common->ah = ah;
|
|
common->hw = sc->hw;
|