You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless
Conflicts: drivers/net/wireless/ath/ath9k/Kconfig net/mac80211/iface.c
This commit is contained in:
@@ -84,6 +84,8 @@ static const struct bcma_device_id_name bcma_bcm_device_names[] = {
|
||||
{ BCMA_CORE_I2S, "I2S" },
|
||||
{ BCMA_CORE_SDR_DDR1_MEM_CTL, "SDR/DDR1 Memory Controller" },
|
||||
{ BCMA_CORE_SHIM, "SHIM" },
|
||||
{ BCMA_CORE_PCIE2, "PCIe Gen2" },
|
||||
{ BCMA_CORE_ARM_CR4, "ARM CR4" },
|
||||
{ BCMA_CORE_DEFAULT, "Default" },
|
||||
};
|
||||
|
||||
|
||||
@@ -201,7 +201,7 @@ config BT_MRVL
|
||||
The core driver to support Marvell Bluetooth devices.
|
||||
|
||||
This driver is required if you want to support
|
||||
Marvell Bluetooth devices, such as 8688/8787/8797.
|
||||
Marvell Bluetooth devices, such as 8688/8787/8797/8897.
|
||||
|
||||
Say Y here to compile Marvell Bluetooth driver
|
||||
into the kernel or say M to compile it as module.
|
||||
@@ -214,7 +214,7 @@ config BT_MRVL_SDIO
|
||||
The driver for Marvell Bluetooth chipsets with SDIO interface.
|
||||
|
||||
This driver is required if you want to use Marvell Bluetooth
|
||||
devices with SDIO interface. Currently SD8688/SD8787/SD8797
|
||||
devices with SDIO interface. Currently SD8688/SD8787/SD8797/SD8897
|
||||
chipsets are supported.
|
||||
|
||||
Say Y here to compile support for Marvell BT-over-SDIO driver
|
||||
|
||||
@@ -82,6 +82,23 @@ static const struct btmrvl_sdio_card_reg btmrvl_reg_87xx = {
|
||||
.io_port_2 = 0x7a,
|
||||
};
|
||||
|
||||
static const struct btmrvl_sdio_card_reg btmrvl_reg_88xx = {
|
||||
.cfg = 0x00,
|
||||
.host_int_mask = 0x02,
|
||||
.host_intstatus = 0x03,
|
||||
.card_status = 0x50,
|
||||
.sq_read_base_addr_a0 = 0x60,
|
||||
.sq_read_base_addr_a1 = 0x61,
|
||||
.card_revision = 0xbc,
|
||||
.card_fw_status0 = 0xc0,
|
||||
.card_fw_status1 = 0xc1,
|
||||
.card_rx_len = 0xc2,
|
||||
.card_rx_unit = 0xc3,
|
||||
.io_port_0 = 0xd8,
|
||||
.io_port_1 = 0xd9,
|
||||
.io_port_2 = 0xda,
|
||||
};
|
||||
|
||||
static const struct btmrvl_sdio_device btmrvl_sdio_sd8688 = {
|
||||
.helper = "mrvl/sd8688_helper.bin",
|
||||
.firmware = "mrvl/sd8688.bin",
|
||||
@@ -103,6 +120,13 @@ static const struct btmrvl_sdio_device btmrvl_sdio_sd8797 = {
|
||||
.sd_blksz_fw_dl = 256,
|
||||
};
|
||||
|
||||
static const struct btmrvl_sdio_device btmrvl_sdio_sd8897 = {
|
||||
.helper = NULL,
|
||||
.firmware = "mrvl/sd8897_uapsta.bin",
|
||||
.reg = &btmrvl_reg_88xx,
|
||||
.sd_blksz_fw_dl = 256,
|
||||
};
|
||||
|
||||
static const struct sdio_device_id btmrvl_sdio_ids[] = {
|
||||
/* Marvell SD8688 Bluetooth device */
|
||||
{ SDIO_DEVICE(SDIO_VENDOR_ID_MARVELL, 0x9105),
|
||||
@@ -116,6 +140,9 @@ static const struct sdio_device_id btmrvl_sdio_ids[] = {
|
||||
/* Marvell SD8797 Bluetooth device */
|
||||
{ SDIO_DEVICE(SDIO_VENDOR_ID_MARVELL, 0x912A),
|
||||
.driver_data = (unsigned long) &btmrvl_sdio_sd8797 },
|
||||
/* Marvell SD8897 Bluetooth device */
|
||||
{ SDIO_DEVICE(SDIO_VENDOR_ID_MARVELL, 0x912E),
|
||||
.driver_data = (unsigned long) &btmrvl_sdio_sd8897 },
|
||||
|
||||
{ } /* Terminating entry */
|
||||
};
|
||||
@@ -1194,3 +1221,4 @@ MODULE_FIRMWARE("mrvl/sd8688_helper.bin");
|
||||
MODULE_FIRMWARE("mrvl/sd8688.bin");
|
||||
MODULE_FIRMWARE("mrvl/sd8787_uapsta.bin");
|
||||
MODULE_FIRMWARE("mrvl/sd8797_uapsta.bin");
|
||||
MODULE_FIRMWARE("mrvl/sd8897_uapsta.bin");
|
||||
|
||||
@@ -17,7 +17,7 @@ config ATH9K_BTCOEX_SUPPORT
|
||||
|
||||
config ATH9K
|
||||
tristate "Atheros 802.11n wireless cards support"
|
||||
depends on MAC80211
|
||||
depends on MAC80211 && HAS_DMA
|
||||
select ATH9K_HW
|
||||
select MAC80211_LEDS
|
||||
select LEDS_CLASS
|
||||
@@ -84,13 +84,17 @@ config ATH9K_DFS_CERTIFIED
|
||||
developed. At this point enabling this option won't do anything
|
||||
except increase code size.
|
||||
|
||||
config ATH9K_RATE_CONTROL
|
||||
config ATH9K_LEGACY_RATE_CONTROL
|
||||
bool "Atheros ath9k rate control"
|
||||
depends on ATH9K
|
||||
default y
|
||||
default n
|
||||
---help---
|
||||
Say Y, if you want to use the ath9k specific rate control
|
||||
module instead of minstrel_ht.
|
||||
module instead of minstrel_ht. Be warned that there are various
|
||||
issues with the ath9k RC and minstrel is a more robust algorithm.
|
||||
Note that even if this option is selected, "ath9k_rate_control"
|
||||
has to be passed to mac80211 using the module parameter,
|
||||
ieee80211_default_rc_algo.
|
||||
|
||||
config ATH9K_HTC
|
||||
tristate "Atheros HTC based wireless cards support"
|
||||
|
||||
@@ -8,7 +8,7 @@ ath9k-y += beacon.o \
|
||||
antenna.o
|
||||
|
||||
ath9k-$(CONFIG_ATH9K_BTCOEX_SUPPORT) += mci.o
|
||||
ath9k-$(CONFIG_ATH9K_RATE_CONTROL) += rc.o
|
||||
ath9k-$(CONFIG_ATH9K_LEGACY_RATE_CONTROL) += rc.o
|
||||
ath9k-$(CONFIG_ATH9K_PCI) += pci.o
|
||||
ath9k-$(CONFIG_ATH9K_AHB) += ahb.o
|
||||
ath9k-$(CONFIG_ATH9K_DEBUGFS) += debug.o
|
||||
|
||||
@@ -958,11 +958,11 @@ static const u32 ar9300Common_rx_gain_table_2p2[][2] = {
|
||||
{0x0000a074, 0x00000000},
|
||||
{0x0000a078, 0x00000000},
|
||||
{0x0000a07c, 0x00000000},
|
||||
{0x0000a080, 0x1a1a1a1a},
|
||||
{0x0000a084, 0x1a1a1a1a},
|
||||
{0x0000a088, 0x1a1a1a1a},
|
||||
{0x0000a08c, 0x1a1a1a1a},
|
||||
{0x0000a090, 0x171a1a1a},
|
||||
{0x0000a080, 0x22222229},
|
||||
{0x0000a084, 0x1d1d1d1d},
|
||||
{0x0000a088, 0x1d1d1d1d},
|
||||
{0x0000a08c, 0x1d1d1d1d},
|
||||
{0x0000a090, 0x171d1d1d},
|
||||
{0x0000a094, 0x11111717},
|
||||
{0x0000a098, 0x00030311},
|
||||
{0x0000a09c, 0x00000000},
|
||||
|
||||
@@ -965,7 +965,7 @@ static void ar9003_hw_do_manual_peak_cal(struct ath_hw *ah,
|
||||
{
|
||||
int i;
|
||||
|
||||
if (!AR_SREV_9462(ah) && !AR_SREV_9565(ah))
|
||||
if (!AR_SREV_9462(ah) && !AR_SREV_9565(ah) && !AR_SREV_9485(ah))
|
||||
return;
|
||||
|
||||
for (i = 0; i < AR9300_MAX_CHAINS; i++) {
|
||||
|
||||
@@ -68,13 +68,16 @@
|
||||
#define AR9300_BASE_ADDR 0x3ff
|
||||
#define AR9300_BASE_ADDR_512 0x1ff
|
||||
|
||||
#define AR9300_OTP_BASE (AR_SREV_9340(ah) ? 0x30000 : 0x14000)
|
||||
#define AR9300_OTP_STATUS (AR_SREV_9340(ah) ? 0x30018 : 0x15f18)
|
||||
#define AR9300_OTP_BASE \
|
||||
((AR_SREV_9340(ah) || AR_SREV_9550(ah)) ? 0x30000 : 0x14000)
|
||||
#define AR9300_OTP_STATUS \
|
||||
((AR_SREV_9340(ah) || AR_SREV_9550(ah)) ? 0x30018 : 0x15f18)
|
||||
#define AR9300_OTP_STATUS_TYPE 0x7
|
||||
#define AR9300_OTP_STATUS_VALID 0x4
|
||||
#define AR9300_OTP_STATUS_ACCESS_BUSY 0x2
|
||||
#define AR9300_OTP_STATUS_SM_BUSY 0x1
|
||||
#define AR9300_OTP_READ_DATA (AR_SREV_9340(ah) ? 0x3001c : 0x15f1c)
|
||||
#define AR9300_OTP_READ_DATA \
|
||||
((AR_SREV_9340(ah) || AR_SREV_9550(ah)) ? 0x3001c : 0x15f1c)
|
||||
|
||||
enum targetPowerHTRates {
|
||||
HT_TARGET_RATE_0_8_16,
|
||||
|
||||
@@ -334,7 +334,8 @@ static void ar9003_hw_spur_ofdm(struct ath_hw *ah,
|
||||
REG_RMW_FIELD(ah, AR_PHY_SPUR_REG,
|
||||
AR_PHY_SPUR_REG_EN_VIT_SPUR_RSSI, 1);
|
||||
|
||||
if (REG_READ_FIELD(ah, AR_PHY_MODE,
|
||||
if (!AR_SREV_9340(ah) &&
|
||||
REG_READ_FIELD(ah, AR_PHY_MODE,
|
||||
AR_PHY_MODE_DYNAMIC) == 0x1)
|
||||
REG_RMW_FIELD(ah, AR_PHY_SPUR_REG,
|
||||
AR_PHY_SPUR_REG_ENABLE_NF_RSSI_SPUR_MIT, 1);
|
||||
|
||||
@@ -1020,7 +1020,7 @@ static const u32 ar9485_1_1_baseband_postamble[][5] = {
|
||||
{0x0000a284, 0x00000000, 0x00000000, 0x000002a0, 0x000002a0},
|
||||
{0x0000a288, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
|
||||
{0x0000a28c, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
|
||||
{0x0000a2c4, 0x00158d18, 0x00158d18, 0x00158d18, 0x00158d18},
|
||||
{0x0000a2c4, 0x00158d18, 0x00158d18, 0x00058d18, 0x00058d18},
|
||||
{0x0000a2d0, 0x00071981, 0x00071981, 0x00071982, 0x00071982},
|
||||
{0x0000a2d8, 0xf999a83a, 0xf999a83a, 0xf999a83a, 0xf999a83a},
|
||||
{0x0000a358, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
|
||||
|
||||
@@ -251,9 +251,9 @@ struct ath_atx_tid {
|
||||
int tidno;
|
||||
int baw_head; /* first un-acked tx buffer */
|
||||
int baw_tail; /* next unused tx buffer slot */
|
||||
int sched;
|
||||
int paused;
|
||||
u8 state;
|
||||
bool sched;
|
||||
bool paused;
|
||||
bool active;
|
||||
};
|
||||
|
||||
struct ath_node {
|
||||
@@ -274,10 +274,6 @@ struct ath_node {
|
||||
#endif
|
||||
};
|
||||
|
||||
#define AGGR_CLEANUP BIT(1)
|
||||
#define AGGR_ADDBA_COMPLETE BIT(2)
|
||||
#define AGGR_ADDBA_PROGRESS BIT(3)
|
||||
|
||||
struct ath_tx_control {
|
||||
struct ath_txq *txq;
|
||||
struct ath_node *an;
|
||||
|
||||
@@ -1723,6 +1723,14 @@ void ath9k_get_et_stats(struct ieee80211_hw *hw,
|
||||
WARN_ON(i != ATH9K_SSTATS_LEN);
|
||||
}
|
||||
|
||||
void ath9k_deinit_debug(struct ath_softc *sc)
|
||||
{
|
||||
if (config_enabled(CONFIG_ATH9K_DEBUGFS) && sc->rfs_chan_spec_scan) {
|
||||
relay_close(sc->rfs_chan_spec_scan);
|
||||
sc->rfs_chan_spec_scan = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
int ath9k_init_debug(struct ath_hw *ah)
|
||||
{
|
||||
struct ath_common *common = ath9k_hw_common(ah);
|
||||
|
||||
@@ -258,6 +258,7 @@ struct ath9k_debug {
|
||||
};
|
||||
|
||||
int ath9k_init_debug(struct ath_hw *ah);
|
||||
void ath9k_deinit_debug(struct ath_softc *sc);
|
||||
|
||||
void ath_debug_stat_interrupt(struct ath_softc *sc, enum ath9k_int status);
|
||||
void ath_debug_stat_tx(struct ath_softc *sc, struct ath_buf *bf,
|
||||
@@ -293,6 +294,10 @@ static inline int ath9k_init_debug(struct ath_hw *ah)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void ath9k_deinit_debug(struct ath_softc *sc)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void ath_debug_stat_interrupt(struct ath_softc *sc,
|
||||
enum ath9k_int status)
|
||||
{
|
||||
|
||||
@@ -1170,6 +1170,7 @@ u32 ath9k_regd_get_ctl(struct ath_regulatory *reg, struct ath9k_channel *chan)
|
||||
static inline void ath9k_hw_set_dma(struct ath_hw *ah)
|
||||
{
|
||||
struct ath_common *common = ath9k_hw_common(ah);
|
||||
int txbuf_size;
|
||||
|
||||
ENABLE_REGWRITE_BUFFER(ah);
|
||||
|
||||
@@ -1223,13 +1224,17 @@ static inline void ath9k_hw_set_dma(struct ath_hw *ah)
|
||||
* So set the usable tx buf size also to half to
|
||||
* avoid data/delimiter underruns
|
||||
*/
|
||||
REG_WRITE(ah, AR_PCU_TXBUF_CTRL,
|
||||
AR_9285_PCU_TXBUF_CTRL_USABLE_SIZE);
|
||||
} else if (!AR_SREV_9271(ah)) {
|
||||
REG_WRITE(ah, AR_PCU_TXBUF_CTRL,
|
||||
AR_PCU_TXBUF_CTRL_USABLE_SIZE);
|
||||
txbuf_size = AR_9285_PCU_TXBUF_CTRL_USABLE_SIZE;
|
||||
} else if (AR_SREV_9340_13_OR_LATER(ah)) {
|
||||
/* Uses fewer entries for AR934x v1.3+ to prevent rx overruns */
|
||||
txbuf_size = AR_9340_PCU_TXBUF_CTRL_USABLE_SIZE;
|
||||
} else {
|
||||
txbuf_size = AR_PCU_TXBUF_CTRL_USABLE_SIZE;
|
||||
}
|
||||
|
||||
if (!AR_SREV_9271(ah))
|
||||
REG_WRITE(ah, AR_PCU_TXBUF_CTRL, txbuf_size);
|
||||
|
||||
REGWRITE_BUFFER_FLUSH(ah);
|
||||
|
||||
if (AR_SREV_9300_20_OR_LATER(ah))
|
||||
@@ -1304,9 +1309,13 @@ static bool ath9k_hw_set_reset(struct ath_hw *ah, int type)
|
||||
AR_RTC_RC_COLD_RESET | AR_RTC_RC_WARM_RESET;
|
||||
} else {
|
||||
tmpReg = REG_READ(ah, AR_INTR_SYNC_CAUSE);
|
||||
if (tmpReg &
|
||||
(AR_INTR_SYNC_LOCAL_TIMEOUT |
|
||||
AR_INTR_SYNC_RADM_CPL_TIMEOUT)) {
|
||||
if (AR_SREV_9340(ah))
|
||||
tmpReg &= AR9340_INTR_SYNC_LOCAL_TIMEOUT;
|
||||
else
|
||||
tmpReg &= AR_INTR_SYNC_LOCAL_TIMEOUT |
|
||||
AR_INTR_SYNC_RADM_CPL_TIMEOUT;
|
||||
|
||||
if (tmpReg) {
|
||||
u32 val;
|
||||
REG_WRITE(ah, AR_INTR_SYNC_ENABLE, 0);
|
||||
|
||||
|
||||
@@ -792,8 +792,7 @@ void ath9k_set_hw_capab(struct ath_softc *sc, struct ieee80211_hw *hw)
|
||||
hw->wiphy->iface_combinations = if_comb;
|
||||
hw->wiphy->n_iface_combinations = ARRAY_SIZE(if_comb);
|
||||
|
||||
if (AR_SREV_5416(sc->sc_ah))
|
||||
hw->wiphy->flags &= ~WIPHY_FLAG_PS_ON_BY_DEFAULT;
|
||||
hw->wiphy->flags &= ~WIPHY_FLAG_PS_ON_BY_DEFAULT;
|
||||
|
||||
hw->wiphy->flags |= WIPHY_FLAG_IBSS_RSN;
|
||||
hw->wiphy->flags |= WIPHY_FLAG_SUPPORTS_TDLS;
|
||||
@@ -831,10 +830,6 @@ void ath9k_set_hw_capab(struct ath_softc *sc, struct ieee80211_hw *hw)
|
||||
sc->ant_rx = hw->wiphy->available_antennas_rx;
|
||||
sc->ant_tx = hw->wiphy->available_antennas_tx;
|
||||
|
||||
#ifdef CONFIG_ATH9K_RATE_CONTROL
|
||||
hw->rate_control_algorithm = "ath9k_rate_control";
|
||||
#endif
|
||||
|
||||
if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_2GHZ)
|
||||
hw->wiphy->bands[IEEE80211_BAND_2GHZ] =
|
||||
&sc->sbands[IEEE80211_BAND_2GHZ];
|
||||
@@ -907,7 +902,7 @@ int ath9k_init_device(u16 devid, struct ath_softc *sc,
|
||||
if (!ath_is_world_regd(reg)) {
|
||||
error = regulatory_hint(hw->wiphy, reg->alpha2);
|
||||
if (error)
|
||||
goto unregister;
|
||||
goto debug_cleanup;
|
||||
}
|
||||
|
||||
ath_init_leds(sc);
|
||||
@@ -915,6 +910,8 @@ int ath9k_init_device(u16 devid, struct ath_softc *sc,
|
||||
|
||||
return 0;
|
||||
|
||||
debug_cleanup:
|
||||
ath9k_deinit_debug(sc);
|
||||
unregister:
|
||||
ieee80211_unregister_hw(hw);
|
||||
rx_cleanup:
|
||||
@@ -943,11 +940,6 @@ static void ath9k_deinit_softc(struct ath_softc *sc)
|
||||
sc->dfs_detector->exit(sc->dfs_detector);
|
||||
|
||||
ath9k_eeprom_release(sc);
|
||||
|
||||
if (config_enabled(CONFIG_ATH9K_DEBUGFS) && sc->rfs_chan_spec_scan) {
|
||||
relay_close(sc->rfs_chan_spec_scan);
|
||||
sc->rfs_chan_spec_scan = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void ath9k_deinit_device(struct ath_softc *sc)
|
||||
@@ -961,6 +953,7 @@ void ath9k_deinit_device(struct ath_softc *sc)
|
||||
|
||||
ath9k_ps_restore(sc);
|
||||
|
||||
ath9k_deinit_debug(sc);
|
||||
ieee80211_unregister_hw(hw);
|
||||
ath_rx_cleanup(sc);
|
||||
ath9k_deinit_softc(sc);
|
||||
|
||||
@@ -410,7 +410,7 @@ bool ath9k_hw_resettxqueue(struct ath_hw *ah, u32 q)
|
||||
|
||||
REG_WRITE(ah, AR_QMISC(q), AR_Q_MISC_DCU_EARLY_TERM_REQ);
|
||||
|
||||
if (AR_SREV_9340(ah))
|
||||
if (AR_SREV_9340(ah) && !AR_SREV_9340_13_OR_LATER(ah))
|
||||
REG_WRITE(ah, AR_DMISC(q),
|
||||
AR_D_MISC_CW_BKOFF_EN | AR_D_MISC_FRAG_WAIT_EN | 0x1);
|
||||
else
|
||||
|
||||
@@ -1686,6 +1686,7 @@ static int ath9k_ampdu_action(struct ieee80211_hw *hw,
|
||||
u16 tid, u16 *ssn, u8 buf_size)
|
||||
{
|
||||
struct ath_softc *sc = hw->priv;
|
||||
bool flush = false;
|
||||
int ret = 0;
|
||||
|
||||
mutex_lock(&sc->mutex);
|
||||
@@ -1702,12 +1703,14 @@ static int ath9k_ampdu_action(struct ieee80211_hw *hw,
|
||||
ieee80211_start_tx_ba_cb_irqsafe(vif, sta->addr, tid);
|
||||
ath9k_ps_restore(sc);
|
||||
break;
|
||||
case IEEE80211_AMPDU_TX_STOP_CONT:
|
||||
case IEEE80211_AMPDU_TX_STOP_FLUSH:
|
||||
case IEEE80211_AMPDU_TX_STOP_FLUSH_CONT:
|
||||
flush = true;
|
||||
case IEEE80211_AMPDU_TX_STOP_CONT:
|
||||
ath9k_ps_wakeup(sc);
|
||||
ath_tx_aggr_stop(sc, sta, tid);
|
||||
ieee80211_stop_tx_ba_cb_irqsafe(vif, sta->addr, tid);
|
||||
if (!flush)
|
||||
ieee80211_stop_tx_ba_cb_irqsafe(vif, sta->addr, tid);
|
||||
ath9k_ps_restore(sc);
|
||||
break;
|
||||
case IEEE80211_AMPDU_TX_OPERATIONAL:
|
||||
|
||||
@@ -1227,10 +1227,7 @@ static bool ath_tx_aggr_check(struct ath_softc *sc, struct ieee80211_sta *sta,
|
||||
return false;
|
||||
|
||||
txtid = ATH_AN_2_TID(an, tidno);
|
||||
|
||||
if (!(txtid->state & (AGGR_ADDBA_COMPLETE | AGGR_ADDBA_PROGRESS)))
|
||||
return true;
|
||||
return false;
|
||||
return !txtid->active;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -231,7 +231,7 @@ static inline void ath_debug_stat_retries(struct ath_rate_priv *rc, int rix,
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_ATH9K_RATE_CONTROL
|
||||
#ifdef CONFIG_ATH9K_LEGACY_RATE_CONTROL
|
||||
int ath_rate_control_register(void);
|
||||
void ath_rate_control_unregister(void);
|
||||
#else
|
||||
|
||||
@@ -798,6 +798,10 @@
|
||||
#define AR_SREV_REVISION_9485_10 0
|
||||
#define AR_SREV_REVISION_9485_11 1
|
||||
#define AR_SREV_VERSION_9340 0x300
|
||||
#define AR_SREV_REVISION_9340_10 0
|
||||
#define AR_SREV_REVISION_9340_11 1
|
||||
#define AR_SREV_REVISION_9340_12 2
|
||||
#define AR_SREV_REVISION_9340_13 3
|
||||
#define AR_SREV_VERSION_9580 0x1C0
|
||||
#define AR_SREV_REVISION_9580_10 4 /* AR9580 1.0 */
|
||||
#define AR_SREV_VERSION_9462 0x280
|
||||
@@ -897,6 +901,10 @@
|
||||
#define AR_SREV_9340(_ah) \
|
||||
(((_ah)->hw_version.macVersion == AR_SREV_VERSION_9340))
|
||||
|
||||
#define AR_SREV_9340_13_OR_LATER(_ah) \
|
||||
(AR_SREV_9340((_ah)) && \
|
||||
((_ah)->hw_version.macRev >= AR_SREV_REVISION_9340_13))
|
||||
|
||||
#define AR_SREV_9285E_20(_ah) \
|
||||
(AR_SREV_9285_12_OR_LATER(_ah) && \
|
||||
((REG_READ(_ah, AR_AN_SYNTH9) & 0x7) == 0x1))
|
||||
@@ -1007,6 +1015,8 @@ enum {
|
||||
AR_INTR_SYNC_LOCAL_TIMEOUT |
|
||||
AR_INTR_SYNC_MAC_SLEEP_ACCESS),
|
||||
|
||||
AR9340_INTR_SYNC_LOCAL_TIMEOUT = 0x00000010,
|
||||
|
||||
AR_INTR_SYNC_SPURIOUS = 0xFFFFFFFF,
|
||||
|
||||
};
|
||||
@@ -1881,6 +1891,7 @@ enum {
|
||||
#define AR_PCU_TXBUF_CTRL_SIZE_MASK 0x7FF
|
||||
#define AR_PCU_TXBUF_CTRL_USABLE_SIZE 0x700
|
||||
#define AR_9285_PCU_TXBUF_CTRL_USABLE_SIZE 0x380
|
||||
#define AR_9340_PCU_TXBUF_CTRL_USABLE_SIZE 0x500
|
||||
|
||||
#define AR_PCU_MISC_MODE2 0x8344
|
||||
#define AR_PCU_MISC_MODE2_MGMT_CRYPTO_ENABLE 0x00000002
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user