mirror of
https://github.com/outbackdingo/mt76.git
synced 2026-10-24 21:36:52 +00:00
mt7603: initialize mac tx info template
Signed-off-by: Felix Fietkau <[email protected]>
This commit is contained in:
@@ -80,6 +80,9 @@ struct mt7603_dev {
|
||||
};
|
||||
|
||||
extern const struct ieee80211_ops mt7603_ops;
|
||||
|
||||
u32 mt7603_reg_map(struct mt7603_dev *dev, u32 addr);
|
||||
|
||||
struct mt7603_dev *mt7603_alloc_device(struct device *pdev);
|
||||
irqreturn_t mt7603_irq_handler(int irq, void *dev_instance);
|
||||
|
||||
|
||||
@@ -63,3 +63,13 @@ irqreturn_t mt7603_irq_handler(int irq, void *dev_instance)
|
||||
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
u32 mt7603_reg_map(struct mt7603_dev *dev, u32 addr)
|
||||
{
|
||||
u32 base = addr & GENMASK(31, 19);
|
||||
u32 offset = addr & GENMASK(18, 0);
|
||||
|
||||
mt76_wr(dev, MT_MCU_PCIE_REMAP_2, base);
|
||||
|
||||
return MT_PCIE_REMAP_BASE_2 + offset;
|
||||
}
|
||||
|
||||
@@ -28,4 +28,69 @@ enum rx_pkt_type {
|
||||
PKT_TYPE_RX_EVENT = 7,
|
||||
};
|
||||
|
||||
#define MT_TXD0_P_IDX BIT(31)
|
||||
#define MT_TXD0_Q_IDX GENMASK(30, 27)
|
||||
#define MT_TXD0_UTXB BIT(26)
|
||||
#define MT_TXD0_UNXV BIT(25)
|
||||
#define MT_TXD0_UDP_TCP_SUM BIT(24)
|
||||
#define MT_TXD0_IP_SUM BIT(23)
|
||||
#define MT_TXD0_ETH_TYPE_OFFSET GENMASK(22, 16)
|
||||
#define MT_TXD0_TX_BYTES GENMASK(15, 0)
|
||||
|
||||
#define MT_TXD1_OWN_MAC GENMASK(31, 26)
|
||||
#define MT_TXD1_PROTECTED BIT(23)
|
||||
#define MT_TXD1_TID GENMASK(22, 20)
|
||||
#define MT_TXD1_NO_ACK BIT(19)
|
||||
#define MT_TXD1_HDR_PAD GENMASK(18, 16)
|
||||
#define MT_TXD1_FT BIT(15)
|
||||
#define MT_TXD1_HDR_FORMAT GENMASK(14, 13)
|
||||
#define MT_TXD1_HDR_INFO GENMASK(12, 8)
|
||||
#define MT_TXD1_WLAN_IDX GENMASK(7, 0)
|
||||
|
||||
#define MT_TXD2_FIX_RATE BIT(31)
|
||||
#define MT_TXD2_TIMING_MEASURE BIT(30)
|
||||
#define MT_TXD2_BA_DISABLE BIT(29)
|
||||
#define MT_TXD2_POWER_OFFSET GENMASK(28, 24)
|
||||
#define MT_TXD2_MAX_TX_TIME GENMASK(23, 16)
|
||||
#define MT_TXD2_FRAG GENMASK(15, 14)
|
||||
#define MT_TXD2_HTC_VLD BIT(13)
|
||||
#define MT_TXD2_DURATION BIT(12)
|
||||
#define MT_TXD2_BIP BIT(11)
|
||||
#define MT_TXD2_MULTICAST BIT(10)
|
||||
#define MT_TXD2_RTS BIT(9)
|
||||
#define MT_TXD2_SOUNDING BIT(8)
|
||||
#define MT_TXD2_NDPA BIT(7)
|
||||
#define MT_TXD2_NDP BIT(6)
|
||||
#define MT_TXD2_FRAME_TYPE GENMASK(5, 4)
|
||||
#define MT_TXD2_SUB_TYPE GENMASK(3, 0)
|
||||
|
||||
#define MT_TXD3_SN_VALID BIT(31)
|
||||
#define MT_TXD3_PN_VALID BIT(30)
|
||||
#define MT_TXD3_SEQ GENMASK(27, 16)
|
||||
#define MT_TXD3_REM_TX_COUNT GENMASK(15, 11)
|
||||
#define MT_TXD3_TX_COUNT GENMASK(10, 6)
|
||||
|
||||
#define MT_TXD4_PN_LOW GENMASK(31, 0)
|
||||
|
||||
#define MT_TXD5_PN_HIGH GENMASK(31, 16)
|
||||
#define MT_TXD5_SW_POWER_MGMT BIT(13)
|
||||
#define MT_TXD5_BA_SEQ_CTRL BIT(12)
|
||||
#define MT_TXD5_DA_SELECT BIT(11)
|
||||
#define MT_TXD5_TX_STATUS_HOST BIT(10)
|
||||
#define MT_TXD5_TX_STATUS_MCU BIT(9)
|
||||
#define MT_TXD5_TX_STATUS_FMT BIT(8)
|
||||
#define MT_TXD5_PID GENMASK(7, 0)
|
||||
|
||||
#define MT_TXD6_SGI BIT(31)
|
||||
#define MT_TXD6_LDPC BIT(30)
|
||||
#define MT_TXD6_TX_RATE GENMASK(29, 18)
|
||||
#define MT_TXD6_I_TXBF BIT(17)
|
||||
#define MT_TXD6_E_TXBF BIT(16)
|
||||
#define MT_TXD6_DYN_BW BIT(15)
|
||||
#define MT_TXD6_ANT_PRI GENMASK(14, 12)
|
||||
#define MT_TXD6_SPE_EN BIT(11)
|
||||
#define MT_TXD6_BW GENMASK(10, 8)
|
||||
#define MT_TXD6_ANT_ID GENMASK(7, 2)
|
||||
#define MT_TXD6_FIXED_RATE BIT(0)
|
||||
|
||||
#endif
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
*/
|
||||
|
||||
#include "mt7603.h"
|
||||
#include "mt7603_dma.h"
|
||||
|
||||
struct mt7603_dev *mt7603_alloc_device(struct device *pdev)
|
||||
{
|
||||
@@ -38,6 +39,21 @@ wait_for_wpdma(struct mt7603_dev *dev)
|
||||
0, 1000);
|
||||
}
|
||||
|
||||
static void
|
||||
mt7603_set_tmac_template(struct mt7603_dev *dev)
|
||||
{
|
||||
u32 desc[5] = {
|
||||
[1] = MT76_SET(MT_TXD3_REM_TX_COUNT, 0xf),
|
||||
[3] = MT_TXD5_SW_POWER_MGMT
|
||||
};
|
||||
u32 addr;
|
||||
int i;
|
||||
|
||||
addr = mt7603_reg_map(dev, MT_TMAC_INFO_TEMPLATE);
|
||||
for (i = 0; i < ARRAY_SIZE(desc); i++)
|
||||
mt76_wr(dev, addr + 4 * i, desc[i]);
|
||||
}
|
||||
|
||||
static int
|
||||
mt7603_mac_reset(struct mt7603_dev *dev)
|
||||
{
|
||||
@@ -61,6 +77,8 @@ mt7603_mac_reset(struct mt7603_dev *dev)
|
||||
|
||||
mt76_wr(dev, MT_WF_RFCR1, 0);
|
||||
|
||||
mt7603_set_tmac_template(dev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -141,4 +141,6 @@
|
||||
#define MT_TX_HW_QUEUE_BCN 7
|
||||
#define MT_TX_HW_QUEUE_BMC 8
|
||||
|
||||
#define MT_TMAC_INFO_TEMPLATE 0x800c0040
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user