Commit 4fc44156 authored by Lorenzo Bianconi's avatar Lorenzo Bianconi Committed by Felix Fietkau
Browse files

wifi: mt76: add mt76_connac_irq_enable utility routine



Most of connac based drivers (mt7921, mt7615, mt7663) share the same
code to enable interrupts. Move it in mt76_connac module.

Signed-off-by: default avatarLorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: default avatarFelix Fietkau <nbd@nbd.name>
parent ec193b41
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -76,7 +76,8 @@ static int mt7615_poll_tx(struct napi_struct *napi, int budget)

	mt76_queue_tx_cleanup(dev, dev->mt76.q_mcu[MT_MCUQ_WM], false);
	if (napi_complete(napi))
		mt7615_irq_enable(dev, mt7615_tx_mcu_int_mask(dev));
		mt76_connac_irq_enable(&dev->mt76,
				       mt7615_tx_mcu_int_mask(dev));

	mt76_connac_pm_unref(&dev->mphy, &dev->pm);

@@ -297,7 +298,7 @@ int mt7615_dma_init(struct mt7615_dev *dev)
	else
	    mask |= MT_INT_MCU_CMD;

	mt7615_irq_enable(dev, mask);
	mt76_connac_irq_enable(&dev->mt76, mask);

	mt7615_dma_start(dev);

+1 −3
Original line number Diff line number Diff line
@@ -66,9 +66,7 @@ const u32 mt7663e_reg_map[] = {
static void
mt7615_rx_poll_complete(struct mt76_dev *mdev, enum mt76_rxq_id q)
{
	struct mt7615_dev *dev = container_of(mdev, struct mt7615_dev, mt76);

	mt7615_irq_enable(dev, MT_INT_RX_DONE(q));
	mt76_connac_irq_enable(mdev, MT_INT_RX_DONE(q));
}

static irqreturn_t mt7615_irq_handler(int irq, void *dev_instance)
+0 −7
Original line number Diff line number Diff line
@@ -410,13 +410,6 @@ void mt7615_mcu_rx_event(struct mt7615_dev *dev, struct sk_buff *skb);
int mt7615_mcu_rdd_send_pattern(struct mt7615_dev *dev);
int mt7615_mcu_fw_log_2_host(struct mt7615_dev *dev, u8 ctrl);

static inline void mt7615_irq_enable(struct mt7615_dev *dev, u32 mask)
{
	mt76_set_irq_mask(&dev->mt76, 0, 0, mask);

	tasklet_schedule(&dev->mt76.irq_tasklet);
}

static inline bool mt7615_firmware_offload(struct mt7615_dev *dev)
{
	return dev->fw_ver > MT7615_FIRMWARE_V2;
+6 −0
Original line number Diff line number Diff line
@@ -279,6 +279,12 @@ static inline u8 mt76_connac_spe_idx(u8 antenna_mask)
	return ant_to_spe[antenna_mask];
}

static inline void mt76_connac_irq_enable(struct mt76_dev *dev, u32 mask)
{
	mt76_set_irq_mask(dev, 0, 0, mask);
	tasklet_schedule(&dev->irq_tasklet);
}

int mt76_connac_pm_wake(struct mt76_phy *phy, struct mt76_connac_pm *pm);
void mt76_connac_power_save_sched(struct mt76_phy *phy,
				  struct mt76_connac_pm *pm);
+4 −4
Original line number Diff line number Diff line
@@ -19,7 +19,7 @@ static int mt7921_poll_tx(struct napi_struct *napi, int budget)

	mt76_connac_tx_cleanup(&dev->mt76);
	if (napi_complete(napi))
		mt7921_irq_enable(dev, MT_INT_TX_DONE_ALL);
		mt76_connac_irq_enable(&dev->mt76, MT_INT_TX_DONE_ALL);
	mt76_connac_pm_unref(&dev->mphy, &dev->pm);

	return 0;
@@ -123,7 +123,7 @@ static int mt7921_dma_enable(struct mt7921_dev *dev)
	mt76_set(dev, MT_WFDMA_DUMMY_CR, MT_WFDMA_NEED_REINIT);

	/* enable interrupts for TX/RX rings */
	mt7921_irq_enable(dev,
	mt76_connac_irq_enable(&dev->mt76,
			       MT_INT_RX_DONE_ALL | MT_INT_TX_DONE_ALL |
			       MT_INT_MCU_CMD);
	mt76_set(dev, MT_MCU2HOST_SW_INT_ENA, MT_MCU_CMD_WAKE_RX_PCIE);
Loading