Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 957068c2 authored by Lorenzo Bianconi's avatar Lorenzo Bianconi Committed by Felix Fietkau
Browse files

mt76: move mt76x02_set_irq_mask in mt76x02_mmio.c



Move mt76x02_set_irq_mask, mt76x02_irq_enable and mt76x02_irq_disable
in mt76x02-lib module in order to be reused by mt76x0 driver.
Moreover move irq_lock and irqmask in mt76_mmio data structure

Signed-off-by: default avatarLorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: default avatarFelix Fietkau <nbd@nbd.name>
parent 20885649
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -60,6 +60,7 @@ void mt76_mmio_init(struct mt76_dev *dev, void __iomem *regs)

	skb_queue_head_init(&dev->mmio.mcu.res_q);
	init_waitqueue_head(&dev->mmio.mcu.wait);
	spin_lock_init(&dev->mmio.irq_lock);
	mutex_init(&dev->mmio.mcu.mutex);
}
EXPORT_SYMBOL_GPL(mt76_mmio_init);
+2 −0
Original line number Diff line number Diff line
@@ -363,6 +363,8 @@ struct mt76_mmio {
		u32 msg_seq;
	} mcu;
	void __iomem *regs;
	spinlock_t irq_lock;
	u32 irqmask;
};

struct mt76_dev {
+12 −0
Original line number Diff line number Diff line
@@ -21,6 +21,18 @@
#include "mt76x02_dma.h"
#include "mt76x02_regs.h"

void mt76x02_set_irq_mask(struct mt76_dev *dev, u32 clear, u32 set)
{
	unsigned long flags;

	spin_lock_irqsave(&dev->mmio.irq_lock, flags);
	dev->mmio.irqmask &= ~clear;
	dev->mmio.irqmask |= set;
	__mt76_wr(dev, MT_INT_MASK_CSR, dev->mmio.irqmask);
	spin_unlock_irqrestore(&dev->mmio.irq_lock, flags);
}
EXPORT_SYMBOL_GPL(mt76x02_set_irq_mask);

void mt76x02_dma_enable(struct mt76_dev *dev)
{
	u32 val;
+13 −0
Original line number Diff line number Diff line
@@ -51,4 +51,17 @@ void mt76x02_tx_complete(struct mt76_dev *dev, struct sk_buff *skb);
void mt76x02_tx_complete_skb(struct mt76_dev *mdev, struct mt76_queue *q,
			    struct mt76_queue_entry *e, bool flush);
bool mt76x02_tx_status_data(struct mt76_dev *dev, u8 *update);

void mt76x02_set_irq_mask(struct mt76_dev *dev, u32 clear, u32 set);

static inline void mt76x02_irq_enable(struct mt76_dev *dev, u32 mask)
{
	mt76x02_set_irq_mask(dev, 0, mask);
}

static inline void mt76x02_irq_disable(struct mt76_dev *dev, u32 mask)
{
	mt76x02_set_irq_mask(dev, mask, 0);
}

#endif
+0 −15
Original line number Diff line number Diff line
@@ -95,9 +95,6 @@ struct mt76x2_dev {

	u32 aggr_stats[32];

	spinlock_t irq_lock;
	u32 irqmask;

	struct sk_buff *beacons[8];
	u8 beacon_mask;
	u8 beacon_data_mask;
@@ -124,8 +121,6 @@ static inline bool is_mt7612(struct mt76x2_dev *dev)
	return mt76_chip(&dev->mt76) == 0x7612;
}

void mt76x2_set_irq_mask(struct mt76x2_dev *dev, u32 clear, u32 set);

static inline bool mt76x2_channel_silent(struct mt76x2_dev *dev)
{
	struct ieee80211_channel *chan = dev->mt76.chandef.chan;
@@ -134,16 +129,6 @@ static inline bool mt76x2_channel_silent(struct mt76x2_dev *dev)
		chan->dfs_state != NL80211_DFS_AVAILABLE);
}

static inline void mt76x2_irq_enable(struct mt76x2_dev *dev, u32 mask)
{
	mt76x2_set_irq_mask(dev, 0, mask);
}

static inline void mt76x2_irq_disable(struct mt76x2_dev *dev, u32 mask)
{
	mt76x2_set_irq_mask(dev, mask, 0);
}

static inline bool mt76x2_wait_for_bbp(struct mt76x2_dev *dev)
{
	return mt76_poll_msec(dev, MT_MAC_STATUS,
Loading