Skip to contentSkip to conversation

mt76: introduce mt792x-usb support

PATCH New Deren Wu 1 participant 12 messages Jun 28, 2023

Subsystems (3)
lore
Share & tools
lore

Deren Wu

author
#0 lore raw

cover mt76: introduce mt792x-usb support

This patch set includes the new module mt792x-usb support.

Move some common header/functions from mt7921 to mt792x and also rename prefix to mt792x. The new module would integrate the common functionalities of mt76 station driver mt7921 and upcoming WiFi7 solution.

(This patch set is based on preceding series "mt76: introduce mt792x-lib support")

Lorenzo Bianconi (11):
wifi: mt76: mt792x: move more dma shared code in mt792x_dma
wifi: mt76: mt7921: move hif_ops macro in mt792x.h
wifi: mt76: mt7921: move shared runtime-pm code on mt792x-lib
wifi: mt76: mt7921: move runtime-pm pci code in mt792x-lib
wifi: mt76: mt7921: move acpi_sar code in mt792x-lib module
wifi: mt76: mt792x: introduce mt792x-usb module
wifi: mt76: mt792x: move mt7921_load_firmware in mt792x-lib module
wifi: mt76: mt76_connac3: move lmac queue enumeration in

    mt76_connac3_mac.h

wifi: mt76: mt792x: move MT7921_PM_TIMEOUT and MT7921_HW_SCAN_TIMEOUT
in common code
wifi: mt76: mt7921: move mt7921_dma_init in pci.c
wifi: mt76: mt7921: move mt7921u_disconnect mt792x-lib

 drivers/net/wireless/mediatek/mt76/Kconfig    |   4 +
 drivers/net/wireless/mediatek/mt76/Makefile   |   5 +-
 .../wireless/mediatek/mt76/mt76_connac3_mac.h |  14 +
 .../net/wireless/mediatek/mt76/mt7921/Kconfig |   2 +-
 .../wireless/mediatek/mt76/mt7921/Makefile    |   5 +-
 .../wireless/mediatek/mt76/mt7921/acpi_sar.h  | 105 ------
 .../net/wireless/mediatek/mt76/mt7921/dma.c   | 223 ------------
 .../net/wireless/mediatek/mt76/mt7921/init.c  |  16 +-
 .../net/wireless/mediatek/mt76/mt7921/mac.c   |  72 +---
 .../net/wireless/mediatek/mt76/mt7921/main.c  |  11 +-
 .../net/wireless/mediatek/mt76/mt7921/mcu.c   | 111 +-----
 .../wireless/mediatek/mt76/mt7921/mt7921.h    |  61 ----
 .../net/wireless/mediatek/mt76/mt7921/pci.c   | 170 +++++----
 .../wireless/mediatek/mt76/mt7921/pci_mac.c   |   4 +-
 .../wireless/mediatek/mt76/mt7921/pci_mcu.c   |  65 ----
 .../net/wireless/mediatek/mt76/mt7921/sdio.c  |   6 +-
 .../wireless/mediatek/mt76/mt7921/testmode.c  |   2 +-
 .../net/wireless/mediatek/mt76/mt7921/usb.c   | 179 ++++-----
 .../wireless/mediatek/mt76/mt7921/usb_mac.c   | 255 -------------
 drivers/net/wireless/mediatek/mt76/mt792x.h   |  94 ++++-
 .../{mt7921/acpi_sar.c => mt792x_acpi_sar.c}  | 125 ++++---
 .../wireless/mediatek/mt76/mt792x_acpi_sar.h  | 105 ++++++
 .../net/wireless/mediatek/mt76/mt792x_core.c  | 244 ++++++++-----
 .../net/wireless/mediatek/mt76/mt792x_dma.c   | 344 ++++++++++++++++++
 .../net/wireless/mediatek/mt76/mt792x_mac.c   |  72 ++++
 .../net/wireless/mediatek/mt76/mt792x_usb.c   | 309 ++++++++++++++++
 .../wireless/mediatek/mt76/mt7996/mt7996.h    |  14 -
 27 files changed, 1334 insertions(+), 1283 deletions(-)
 delete mode 100644 drivers/net/wireless/mediatek/mt76/mt7921/acpi_sar.h
 delete mode 100644 drivers/net/wireless/mediatek/mt76/mt7921/dma.c
 delete mode 100644 drivers/net/wireless/mediatek/mt76/mt7921/usb_mac.c
 rename drivers/net/wireless/mediatek/mt76/{mt7921/acpi_sar.c => mt792x_acpi_sar.c} (64%)
 create mode 100644 drivers/net/wireless/mediatek/mt76/mt792x_acpi_sar.h
 create mode 100644 drivers/net/wireless/mediatek/mt76/mt792x_dma.c
 create mode 100644 drivers/net/wireless/mediatek/mt76/mt792x_usb.c
Signature · 1 line
2.18.0
author
#1 lore raw

PATCH 1/11 wifi: mt76: mt792x: move more dma shared code in mt792x_dma

From: Lorenzo Bianconi <[email protected]>

Rely on irq_map support, move more dma shared code between mt7921 and mt7925 in mt792x_dma.c
Move the following dma code in mt792x-lib
- mt792x_dma_enable
- mt792x_dma_reset
- mt792x_wpdma_reset
- mt792x_wpdma_reinit_cond

---
 drivers/net/wireless/mediatek/mt76/Makefile   |   2 +-
 .../net/wireless/mediatek/mt76/mt7921/dma.c   | 156 +-------
 .../wireless/mediatek/mt76/mt7921/mt7921.h    |   2 -
 .../net/wireless/mediatek/mt76/mt7921/pci.c   |  88 +----
 .../wireless/mediatek/mt76/mt7921/pci_mac.c   |   2 +-
 .../wireless/mediatek/mt76/mt7921/pci_mcu.c   |   2 +-
 drivers/net/wireless/mediatek/mt76/mt792x.h   |   9 +-
 .../net/wireless/mediatek/mt76/mt792x_core.c  |  96 -----
 .../net/wireless/mediatek/mt76/mt792x_dma.c   | 344 ++++++++++++++++++
 9 files changed, 364 insertions(+), 337 deletions(-)
 create mode 100644 drivers/net/wireless/mediatek/mt76/mt792x_dma.c
drivers/net/wireless/mediatek/mt76/Makefile +1 -1
index a45853ab958f..d6231948dd6e 100644
@@ -32,7 +32,7 @@ mt76x02-usb-y := mt76x02_usb_mcu.o mt76x02_usb_core.o
 mt76-connac-lib-y := mt76_connac_mcu.o mt76_connac_mac.o mt76_connac3_mac.o
 
 mt792x-lib-y := mt792x_core.o mt792x_mac.o mt792x_trace.o \
-		mt792x_debugfs.o
+		mt792x_debugfs.o mt792x_dma.o
 
 obj-$(CONFIG_MT76x0_COMMON) += mt76x0/
 obj-$(CONFIG_MT76x2_COMMON) += mt76x2/
drivers/net/wireless/mediatek/mt76/mt7921/dma.c +2 -154

168 lines not on this page · raw message

drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h +0 -2
index fc952c30ca07..b797d8bab5e2 100644
@@ -203,8 +203,6 @@ int __mt7921_start(struct mt792x_phy *phy);
 int mt7921_register_device(struct mt792x_dev *dev);
 void mt7921_unregister_device(struct mt792x_dev *dev);
 int mt7921_dma_init(struct mt792x_dev *dev);
-int mt7921_wpdma_reset(struct mt792x_dev *dev, bool force);
-int mt7921_wpdma_reinit_cond(struct mt792x_dev *dev);
 int mt7921_run_firmware(struct mt792x_dev *dev);
 int mt7921_mcu_set_bss_pm(struct mt792x_dev *dev, struct ieee80211_vif *vif,
 			  bool enable);
drivers/net/wireless/mediatek/mt76/mt7921/pci.c +7 -81

138 lines not on this page · raw message

drivers/net/wireless/mediatek/mt76/mt7921/pci_mac.c +1 -1
index 1f508244d615..bd3f004d1a18 100644
@@ -80,7 +80,7 @@ int mt7921e_mac_reset(struct mt792x_dev *dev)
 	mt76_connac2_tx_token_put(&dev->mt76);
 	idr_init(&dev->mt76.token);
 
-	mt7921_wpdma_reset(dev, true);
+	mt792x_wpdma_reset(dev, true);
 
 	local_bh_disable();
 	mt76_for_each_q_rx(&dev->mt76, i) {
drivers/net/wireless/mediatek/mt76/mt7921/pci_mcu.c +1 -1
index 5a30cd0b9382..57bd02746f5f 100644
@@ -91,7 +91,7 @@ int mt7921e_mcu_drv_pmctrl(struct mt792x_dev *dev)
 	if (err < 0)
 		goto out;
 
-	mt7921_wpdma_reinit_cond(dev);
+	mt792x_wpdma_reinit_cond(dev);
 	clear_bit(MT76_STATE_PM, &mphy->state);
 
 	pm->stats.last_wake_event = jiffies;
drivers/net/wireless/mediatek/mt76/mt792x.h +8 -1
index 6fd1f542da17..894fb0fe8cba 100644
@@ -256,9 +256,16 @@ void mt792x_sta_statistics(struct ieee80211_hw *hw,
 			   struct station_info *sinfo);
 void mt792x_set_coverage_class(struct ieee80211_hw *hw, s16 coverage_class);
 void mt792x_dma_cleanup(struct mt792x_dev *dev);
+int mt792x_dma_enable(struct mt792x_dev *dev);
+int mt792x_wpdma_reset(struct mt792x_dev *dev, bool force);
+int mt792x_wpdma_reinit_cond(struct mt792x_dev *dev);
 int mt792x_dma_disable(struct mt792x_dev *dev, bool force);
+irqreturn_t mt792x_irq_handler(int irq, void *dev_instance);
+void mt792x_rx_poll_complete(struct mt76_dev *mdev, enum mt76_rxq_id q);
+int mt792x_poll_tx(struct napi_struct *napi, int budget);
 int mt792x_poll_rx(struct napi_struct *napi, int budget);
-int mt792x_wfsys_reset(struct mt792x_dev *dev, u32 addr);
+void mt792x_irq_tasklet(unsigned long data);
+int mt792x_wfsys_reset(struct mt792x_dev *dev);
 int mt792x_tx_stats_show(struct seq_file *file, void *data);
 int mt792x_queues_acq(struct seq_file *s, void *data);
 int mt792x_queues_read(struct seq_file *s, void *data);
drivers/net/wireless/mediatek/mt76/mt792x_core.c +0 -96

102 lines not on this page · raw message

drivers/net/wireless/mediatek/mt76/mt792x_dma.c new file +344 -0

344 lines not on this page · raw message

Signature · 1 line
2.18.0
author
#2 lore raw

PATCH 2/11 wifi: mt76: mt7921: move hif_ops macro in mt792x.h

In reply to Deren Wu

From: Lorenzo Bianconi <[email protected]>

Move the following hif_ops macro in mt792x.h:
- mt7925_init_reset
- mt7925_dev_reset
- mt7925_mcu_init
- __mt7925_mcu_drv_pmctrl
- __mt7925_mcu_fw_pmctrl

---
 drivers/net/wireless/mediatek/mt76/mt7921/init.c     | 4 ++--
 drivers/net/wireless/mediatek/mt76/mt7921/mac.c      | 2 +-
 drivers/net/wireless/mediatek/mt76/mt7921/mcu.c      | 8 ++++----
 drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h   | 6 ------
 drivers/net/wireless/mediatek/mt76/mt7921/pci.c      | 2 +-
 drivers/net/wireless/mediatek/mt76/mt7921/testmode.c | 2 +-
 drivers/net/wireless/mediatek/mt76/mt792x.h          | 6 ++++++
 7 files changed, 15 insertions(+), 15 deletions(-)
drivers/net/wireless/mediatek/mt76/mt7921/init.c +2 -2
index 0a6f8f42b2e4..6b8e31110fdf 100644
@@ -107,7 +107,7 @@ static int __mt7921_init_hardware(struct mt792x_dev *dev)
 	 * which should be set before firmware download stage.
 	 */
 	mt76_wr(dev, MT_SWDEF_MODE, MT_SWDEF_NORMAL_MODE);
-	ret = mt7921_mcu_init(dev);
+	ret = mt792x_mcu_init(dev);
 	if (ret)
 		goto out;
 
@@ -133,7 +133,7 @@ static int mt7921_init_hardware(struct mt792x_dev *dev)
 		if (!ret)
 			break;
 
-		mt7921_init_reset(dev);
+		mt792x_init_reset(dev);
 	}
 
 	if (i == MT7921_MCU_INIT_RETRY_COUNT) {
drivers/net/wireless/mediatek/mt76/mt7921/mac.c +1 -1
index 70382194825a..25d853a75a23 100644
@@ -672,7 +672,7 @@ void mt7921_mac_reset_work(struct work_struct *work)
 
 	for (i = 0; i < 10; i++) {
 		mutex_lock(&dev->mt76.mutex);
-		ret = mt7921_dev_reset(dev);
+		ret = mt792x_dev_reset(dev);
 		mutex_unlock(&dev->mt76.mutex);
 
 		if (!ret)
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c +4 -4
index ed02fa48841c..9bfa79893b10 100644
@@ -482,9 +482,9 @@ static int mt7921_load_firmware(struct mt792x_dev *dev)
 
 	if (mt76_is_sdio(&dev->mt76)) {
 		/* activate again */
-		ret = __mt7921_mcu_fw_pmctrl(dev);
+		ret = __mt792x_mcu_fw_pmctrl(dev);
 		if (!ret)
-			ret = __mt7921_mcu_drv_pmctrl(dev);
+			ret = __mt792x_mcu_drv_pmctrl(dev);
 	}
 
 	ret = mt76_connac2_load_ram(&dev->mt76, mt7921_ram_name(dev), NULL);
@@ -953,7 +953,7 @@ int mt7921_mcu_drv_pmctrl(struct mt792x_dev *dev)
 	if (!test_bit(MT76_STATE_PM, &mphy->state))
 		goto out;
 
-	err = __mt7921_mcu_drv_pmctrl(dev);
+	err = __mt792x_mcu_drv_pmctrl(dev);
 out:
 	mutex_unlock(&pm->mutex);
 
@@ -975,7 +975,7 @@ int mt7921_mcu_fw_pmctrl(struct mt792x_dev *dev)
 	if (mt76_connac_skip_fw_pmctrl(mphy, pm))
 		goto out;
 
-	err = __mt7921_mcu_fw_pmctrl(dev);
+	err = __mt792x_mcu_fw_pmctrl(dev);
 out:
 	mutex_unlock(&pm->mutex);
 
drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h +0 -6
index b797d8bab5e2..86b8c98e3f69 100644
@@ -159,12 +159,6 @@ enum mt7921_eeprom_field {
 
 #define MT_EE_HW_TYPE_ENCAP			BIT(0)
 
-#define mt7921_init_reset(dev)		((dev)->hif_ops->init_reset(dev))
-#define mt7921_dev_reset(dev)		((dev)->hif_ops->reset(dev))
-#define mt7921_mcu_init(dev)		((dev)->hif_ops->mcu_init(dev))
-#define __mt7921_mcu_drv_pmctrl(dev)	((dev)->hif_ops->drv_own(dev))
-#define	__mt7921_mcu_fw_pmctrl(dev)	((dev)->hif_ops->fw_own(dev))
-
 enum {
 	TXPWR_USER,
 	TXPWR_EEPROM,
drivers/net/wireless/mediatek/mt76/mt7921/pci.c +1 -1
index d11406c87df7..7e9bb1879f9c 100644
@@ -46,7 +46,7 @@ static void mt7921e_unregister_device(struct mt792x_dev *dev)
 	cancel_work_sync(&dev->reset_work);
 
 	mt76_connac2_tx_token_put(&dev->mt76);
-	__mt7921_mcu_drv_pmctrl(dev);
+	__mt792x_mcu_drv_pmctrl(dev);
 	mt792x_dma_cleanup(dev);
 	mt792x_wfsys_reset(dev);
 	skb_queue_purge(&dev->mt76.mcu.res_q);
drivers/net/wireless/mediatek/mt76/mt7921/testmode.c +1 -1
index 3c2165095ddd..e838d93477c1 100644
@@ -57,7 +57,7 @@ mt7921_tm_set(struct mt792x_dev *dev, struct mt7921_tm_cmd *req)
 		pm->enable = false;
 		cancel_delayed_work_sync(&pm->ps_work);
 		cancel_work_sync(&pm->wake_work);
-		__mt7921_mcu_drv_pmctrl(dev);
+		__mt792x_mcu_drv_pmctrl(dev);
 
 		phy->test.state = MT76_TM_STATE_ON;
 	}
drivers/net/wireless/mediatek/mt76/mt792x.h +6 -0
index 894fb0fe8cba..1c2829cd954d 100644
@@ -127,6 +127,12 @@ struct mt792x_irq_map {
 	} rx;
 };
 
+#define mt792x_init_reset(dev)		((dev)->hif_ops->init_reset(dev))
+#define mt792x_dev_reset(dev)		((dev)->hif_ops->reset(dev))
+#define mt792x_mcu_init(dev)		((dev)->hif_ops->mcu_init(dev))
+#define __mt792x_mcu_drv_pmctrl(dev)	((dev)->hif_ops->drv_own(dev))
+#define	__mt792x_mcu_fw_pmctrl(dev)	((dev)->hif_ops->fw_own(dev))
+
 struct mt792x_hif_ops {
 	int (*init_reset)(struct mt792x_dev *dev);
 	int (*reset)(struct mt792x_dev *dev);
Signature · 1 line
2.18.0
author
#3 lore raw

PATCH 3/11 wifi: mt76: mt7921: move shared runtime-pm code on mt792x-lib

In reply to Deren Wu

From: Lorenzo Bianconi <[email protected]>

Moving hif_ops marcos in mt792x.h, we can move shared runtime-pm code between mt7925 and mt7921 in mt792x-lib module.

---
 .../net/wireless/mediatek/mt76/mt7921/init.c  |  4 +-
 .../net/wireless/mediatek/mt76/mt7921/mac.c   | 70 ------------------
 .../net/wireless/mediatek/mt76/mt7921/mcu.c   | 44 ------------
 .../wireless/mediatek/mt76/mt7921/mt7921.h    |  4 --
 .../net/wireless/mediatek/mt76/mt7921/pci.c   |  6 +-
 .../net/wireless/mediatek/mt76/mt7921/sdio.c  |  6 +-
 drivers/net/wireless/mediatek/mt76/mt792x.h   |  4 ++
 .../net/wireless/mediatek/mt76/mt792x_core.c  | 44 ++++++++++++
 .../net/wireless/mediatek/mt76/mt792x_mac.c   | 72 +++++++++++++++++++
 9 files changed, 128 insertions(+), 126 deletions(-)
drivers/net/wireless/mediatek/mt76/mt7921/init.c +2 -2
index 6b8e31110fdf..c47fb07fcb2e 100644
@@ -192,8 +192,8 @@ int mt7921_register_device(struct mt792x_dev *dev)
 	dev->mt76.phy.priv = &dev->phy;
 	dev->mt76.tx_worker.fn = mt792x_tx_worker;
 
-	INIT_DELAYED_WORK(&dev->pm.ps_work, mt7921_pm_power_save_work);
-	INIT_WORK(&dev->pm.wake_work, mt7921_pm_wake_work);
+	INIT_DELAYED_WORK(&dev->pm.ps_work, mt792x_pm_power_save_work);
+	INIT_WORK(&dev->pm.wake_work, mt792x_pm_wake_work);
 	spin_lock_init(&dev->pm.wake.lock);
 	mutex_init(&dev->pm.mutex);
 	init_waitqueue_head(&dev->pm.wait);
drivers/net/wireless/mediatek/mt76/mt7921/mac.c +0 -70

76 lines not on this page · raw message

drivers/net/wireless/mediatek/mt76/mt7921/mcu.c +0 -44

50 lines not on this page · raw message

drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h +0 -4
index 86b8c98e3f69..4a3416a28711 100644
@@ -297,10 +297,6 @@ int mt7921_mcu_uni_rx_ba(struct mt792x_dev *dev,
 void mt7921_scan_work(struct work_struct *work);
 void mt7921_roc_work(struct work_struct *work);
 int mt7921_mcu_uni_bss_ps(struct mt792x_dev *dev, struct ieee80211_vif *vif);
-int mt7921_mcu_drv_pmctrl(struct mt792x_dev *dev);
-int mt7921_mcu_fw_pmctrl(struct mt792x_dev *dev);
-void mt7921_pm_wake_work(struct work_struct *work);
-void mt7921_pm_power_save_work(struct work_struct *work);
 void mt7921_coredump_work(struct work_struct *work);
 int mt7921_get_txpwr_info(struct mt792x_dev *dev, struct mt7921_txpwr *txpwr);
 int mt7921_testmode_cmd(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
drivers/net/wireless/mediatek/mt76/mt7921/pci.c +3 -3
index 7e9bb1879f9c..7419076b77cb 100644
@@ -337,7 +337,7 @@ static int mt7921_pci_suspend(struct device *device)
 	cancel_delayed_work_sync(&pm->ps_work);
 	cancel_work_sync(&pm->wake_work);
 
-	err = mt7921_mcu_drv_pmctrl(dev);
+	err = mt792x_mcu_drv_pmctrl(dev);
 	if (err < 0)
 		goto restore_suspend;
 
@@ -372,7 +372,7 @@ static int mt7921_pci_suspend(struct device *device)
 	synchronize_irq(pdev->irq);
 	tasklet_kill(&mdev->irq_tasklet);
 
-	err = mt7921_mcu_fw_pmctrl(dev);
+	err = mt792x_mcu_fw_pmctrl(dev);
 	if (err)
 		goto restore_napi;
 
@@ -406,7 +406,7 @@ static int mt7921_pci_resume(struct device *device)
 	struct mt76_connac_pm *pm = &dev->pm;
 	int i, err;
 
-	err = mt7921_mcu_drv_pmctrl(dev);
+	err = mt792x_mcu_drv_pmctrl(dev);
 	if (err < 0)
 		goto failed;
 
drivers/net/wireless/mediatek/mt76/mt7921/sdio.c +3 -3
index 84b388656941..dc1beb76df3e 100644
@@ -216,7 +216,7 @@ static int mt7921s_suspend(struct device *__dev)
 	cancel_delayed_work_sync(&pm->ps_work);
 	cancel_work_sync(&pm->wake_work);
 
-	err = mt7921_mcu_drv_pmctrl(dev);
+	err = mt792x_mcu_drv_pmctrl(dev);
 	if (err < 0)
 		goto restore_suspend;
 
@@ -244,7 +244,7 @@ static int mt7921s_suspend(struct device *__dev)
 	mt76_worker_disable(&mdev->sdio.txrx_worker);
 	mt76_worker_disable(&mdev->sdio.net_worker);
 
-	err = mt7921_mcu_fw_pmctrl(dev);
+	err = mt792x_mcu_fw_pmctrl(dev);
 	if (err)
 		goto restore_txrx_worker;
 
@@ -284,7 +284,7 @@ static int mt7921s_resume(struct device *__dev)
 
 	clear_bit(MT76_STATE_SUSPEND, &mdev->phy.state);
 
-	err = mt7921_mcu_drv_pmctrl(dev);
+	err = mt792x_mcu_drv_pmctrl(dev);
 	if (err < 0)
 		goto failed;
 
drivers/net/wireless/mediatek/mt76/mt792x.h +4 -0
index 1c2829cd954d..470017f6f982 100644
@@ -215,6 +215,8 @@ static inline bool mt792x_dma_need_reinit(struct mt792x_dev *dev)
 #define mt792x_mutex_release(dev)	\
 	mt76_connac_mutex_release(&(dev)->mt76, &(dev)->pm)
 
+void mt792x_pm_wake_work(struct work_struct *work);
+void mt792x_pm_power_save_work(struct work_struct *work);
 void mt792x_reset(struct mt76_dev *mdev);
 void mt792x_update_channel(struct mt76_phy *mphy);
 void mt792x_mac_reset_counters(struct mt792x_phy *phy);
@@ -284,5 +286,7 @@ mt792x_get_mac80211_ops(struct device *dev,
 			const struct ieee80211_ops *mac80211_ops,
 			void *drv_data, u8 *fw_features);
 int mt792x_init_wcid(struct mt792x_dev *dev);
+int mt792x_mcu_drv_pmctrl(struct mt792x_dev *dev);
+int mt792x_mcu_fw_pmctrl(struct mt792x_dev *dev);
 
 #endif /* __MT7925_H */
drivers/net/wireless/mediatek/mt76/mt792x_core.c +44 -0

49 lines not on this page · raw message

drivers/net/wireless/mediatek/mt76/mt792x_mac.c +72 -0

75 lines not on this page · raw message

Signature · 1 line
2.18.0
author
#4 lore raw

PATCH 4/11 wifi: mt76: mt7921: move runtime-pm pci code in mt792x-lib

In reply to Deren Wu

From: Lorenzo Bianconi <[email protected]>

Move the following runtime-pm pci routines in mt792x-lib since they are shared between mt7921 and mt7925 chipsets:
- __mt7921e_mcu_drv_pmctrl
- mt7921e_mcu_drv_pmctrl
- mt7921e_mcu_fw_pmctrl

---
 .../net/wireless/mediatek/mt76/mt7921/init.c  |  4 +-
 .../wireless/mediatek/mt76/mt7921/mt7921.h    |  7 --
 .../net/wireless/mediatek/mt76/mt7921/pci.c   |  8 +--
 .../wireless/mediatek/mt76/mt7921/pci_mac.c   |  2 +-
 .../wireless/mediatek/mt76/mt7921/pci_mcu.c   | 65 ------------------
 .../wireless/mediatek/mt76/mt7921/usb_mac.c   |  4 +-
 drivers/net/wireless/mediatek/mt76/mt792x.h   |  8 +++
 .../net/wireless/mediatek/mt76/mt792x_core.c  | 68 +++++++++++++++++++
 8 files changed, 85 insertions(+), 81 deletions(-)
drivers/net/wireless/mediatek/mt76/mt7921/init.c +2 -2
index c47fb07fcb2e..3ff0205919c2 100644
@@ -128,7 +128,7 @@ static int mt7921_init_hardware(struct mt792x_dev *dev)
 
 	set_bit(MT76_STATE_INITIALIZED, &dev->mphy.state);
 
-	for (i = 0; i < MT7921_MCU_INIT_RETRY_COUNT; i++) {
+	for (i = 0; i < MT792x_MCU_INIT_RETRY_COUNT; i++) {
 		ret = __mt7921_init_hardware(dev);
 		if (!ret)
 			break;
@@ -136,7 +136,7 @@ static int mt7921_init_hardware(struct mt792x_dev *dev)
 		mt792x_init_reset(dev);
 	}
 
-	if (i == MT7921_MCU_INIT_RETRY_COUNT) {
+	if (i == MT792x_MCU_INIT_RETRY_COUNT) {
 		dev_err(dev->mt76.dev, "hardware init failed\n");
 		return ret;
 	}
drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h +0 -7
index 4a3416a28711..0c60a1559041 100644
@@ -18,10 +18,6 @@
 #define MT7921_RX_RING_SIZE		1536
 #define MT7921_RX_MCU_RING_SIZE		512
 
-#define MT7921_DRV_OWN_RETRY_COUNT	10
-#define MT7921_MCU_INIT_RETRY_COUNT	10
-#define MT7921_WFSYS_INIT_RETRY_COUNT	2
-
 #define MT7921_FIRMWARE_WM		"mediatek/WIFI_RAM_CODE_MT7961_1.bin"
 #define MT7921_ROM_PATCH		"mediatek/WIFI_MT7961_patch_mcu_1_2_hdr.bin"
 
@@ -312,9 +308,6 @@ int mt7921e_mcu_init(struct mt792x_dev *dev);
 int mt7921s_wfsys_reset(struct mt792x_dev *dev);
 int mt7921s_mac_reset(struct mt792x_dev *dev);
 int mt7921s_init_reset(struct mt792x_dev *dev);
-int __mt7921e_mcu_drv_pmctrl(struct mt792x_dev *dev);
-int mt7921e_mcu_drv_pmctrl(struct mt792x_dev *dev);
-int mt7921e_mcu_fw_pmctrl(struct mt792x_dev *dev);
 
 int mt7921s_mcu_init(struct mt792x_dev *dev);
 int mt7921s_mcu_drv_pmctrl(struct mt792x_dev *dev);
drivers/net/wireless/mediatek/mt76/mt7921/pci.c +4 -4
index 7419076b77cb..c3f22ce9f5c4 100644
@@ -181,8 +181,8 @@ static int mt7921_pci_probe(struct pci_dev *pdev,
 		.init_reset = mt7921e_init_reset,
 		.reset = mt7921e_mac_reset,
 		.mcu_init = mt7921e_mcu_init,
-		.drv_own = mt7921e_mcu_drv_pmctrl,
-		.fw_own = mt7921e_mcu_fw_pmctrl,
+		.drv_own = mt792xe_mcu_drv_pmctrl,
+		.fw_own = mt792xe_mcu_fw_pmctrl,
 	};
 	static const struct mt792x_irq_map irq_map = {
 		.host_irq_enable = MT_WFDMA0_HOST_INT_ENA,
@@ -268,11 +268,11 @@ static int mt7921_pci_probe(struct pci_dev *pdev,
 	bus_ops->rmw = mt7921_rmw;
 	dev->mt76.bus = bus_ops;
 
-	ret = mt7921e_mcu_fw_pmctrl(dev);
+	ret = mt792xe_mcu_fw_pmctrl(dev);
 	if (ret)
 		goto err_free_dev;
 
-	ret = __mt7921e_mcu_drv_pmctrl(dev);
+	ret = __mt792xe_mcu_drv_pmctrl(dev);
 	if (ret)
 		goto err_free_dev;
 
drivers/net/wireless/mediatek/mt76/mt7921/pci_mac.c +1 -1
index bd3f004d1a18..e7a995e7e70a 100644
@@ -57,7 +57,7 @@ int mt7921e_mac_reset(struct mt792x_dev *dev)
 {
 	int i, err;
 
-	mt7921e_mcu_drv_pmctrl(dev);
+	mt792xe_mcu_drv_pmctrl(dev);
 
 	mt76_connac_free_pending_tx_skbs(&dev->pm, NULL);
 
drivers/net/wireless/mediatek/mt76/mt7921/pci_mcu.c +0 -65

68 lines not on this page · raw message

drivers/net/wireless/mediatek/mt76/mt7921/usb_mac.c +2 -2
index f612873c704b..f7cb6c542af5 100644
@@ -166,7 +166,7 @@ int mt7921u_wfsys_reset(struct mt792x_dev *dev)
 	mt7921u_uhw_wr(&dev->mt76, MT_CBTOP_RGU_WF_SUBSYS_RST, val);
 
 	mt7921u_uhw_wr(&dev->mt76, MT_UDMA_CONN_INFRA_STATUS_SEL, 0);
-	for (i = 0; i < MT7921_WFSYS_INIT_RETRY_COUNT; i++) {
+	for (i = 0; i < MT792x_WFSYS_INIT_RETRY_COUNT; i++) {
 		val = mt7921u_uhw_rr(&dev->mt76, MT_UDMA_CONN_INFRA_STATUS);
 		if (val & MT_UDMA_CONN_WFSYS_INIT_DONE)
 			break;
@@ -174,7 +174,7 @@ int mt7921u_wfsys_reset(struct mt792x_dev *dev)
 		msleep(100);
 	}
 
-	if (i == MT7921_WFSYS_INIT_RETRY_COUNT)
+	if (i == MT792x_WFSYS_INIT_RETRY_COUNT)
 		return -ETIMEDOUT;
 
 	return 0;
drivers/net/wireless/mediatek/mt76/mt792x.h +8 -0
index 470017f6f982..54ff9627530f 100644
@@ -26,6 +26,10 @@
 
 #define MT792x_WATCHDOG_TIME	(HZ / 4)
 
+#define MT792x_DRV_OWN_RETRY_COUNT	10
+#define MT792x_MCU_INIT_RETRY_COUNT	10
+#define MT792x_WFSYS_INIT_RETRY_COUNT	2
+
 struct mt792x_vif;
 struct mt792x_sta;
 
@@ -289,4 +293,8 @@ int mt792x_init_wcid(struct mt792x_dev *dev);
 int mt792x_mcu_drv_pmctrl(struct mt792x_dev *dev);
 int mt792x_mcu_fw_pmctrl(struct mt792x_dev *dev);
 
+int __mt792xe_mcu_drv_pmctrl(struct mt792x_dev *dev);
+int mt792xe_mcu_drv_pmctrl(struct mt792x_dev *dev);
+int mt792xe_mcu_fw_pmctrl(struct mt792x_dev *dev);
+
 #endif /* __MT7925_H */
drivers/net/wireless/mediatek/mt76/mt792x_core.c +68 -0

73 lines not on this page · raw message

Signature · 1 line
2.18.0
author
#5 lore raw

PATCH 5/11 wifi: mt76: mt7921: move acpi_sar code in mt792x-lib module

In reply to Deren Wu

From: Lorenzo Bianconi <[email protected]>

Move acpi_sar code in mt792x-lib module since it is shared between mt7921 and mt7925 driver.

---
 drivers/net/wireless/mediatek/mt76/Makefile   |   1 +
 .../wireless/mediatek/mt76/mt7921/Makefile    |   1 -
 .../wireless/mediatek/mt76/mt7921/acpi_sar.h  | 105 ---------------
 .../net/wireless/mediatek/mt76/mt7921/init.c  |   2 +-
 .../net/wireless/mediatek/mt76/mt7921/main.c  |  11 +-
 .../net/wireless/mediatek/mt76/mt7921/mcu.c   |   2 +-
 .../wireless/mediatek/mt76/mt7921/mt7921.h    |  24 ----
 drivers/net/wireless/mediatek/mt76/mt792x.h   |  23 ++++
 .../{mt7921/acpi_sar.c => mt792x_acpi_sar.c}  | 125 ++++++++++--------
 .../wireless/mediatek/mt76/mt792x_acpi_sar.h  | 105 +++++++++++++++
 10 files changed, 202 insertions(+), 197 deletions(-)
 delete mode 100644 drivers/net/wireless/mediatek/mt76/mt7921/acpi_sar.h
 rename drivers/net/wireless/mediatek/mt76/{mt7921/acpi_sar.c => mt792x_acpi_sar.c} (64%)
 create mode 100644 drivers/net/wireless/mediatek/mt76/mt792x_acpi_sar.h
drivers/net/wireless/mediatek/mt76/Makefile +1 -0
index d6231948dd6e..f8a1928d62b2 100644
@@ -33,6 +33,7 @@ mt76-connac-lib-y := mt76_connac_mcu.o mt76_connac_mac.o mt76_connac3_mac.o
 
 mt792x-lib-y := mt792x_core.o mt792x_mac.o mt792x_trace.o \
 		mt792x_debugfs.o mt792x_dma.o
+mt792x-lib-$(CONFIG_ACPI) += mt792x_acpi_sar.o
 
 obj-$(CONFIG_MT76x0_COMMON) += mt76x0/
 obj-$(CONFIG_MT76x2_COMMON) += mt76x2/
drivers/net/wireless/mediatek/mt76/mt7921/Makefile +0 -1
index fd82dff76dae..f380ec4b6de1 100644
@@ -7,7 +7,6 @@ obj-$(CONFIG_MT7921U) += mt7921u.o
 
 mt7921-common-y := mac.o mcu.o main.o init.o debugfs.o
 mt7921-common-$(CONFIG_NL80211_TESTMODE) += testmode.o
-mt7921-common-$(CONFIG_ACPI) += acpi_sar.o
 mt7921e-y := pci.o pci_mac.o pci_mcu.o dma.o
 mt7921s-y := sdio.o sdio_mac.o sdio_mcu.o
 mt7921u-y := usb.o usb_mac.o
drivers/net/wireless/mediatek/mt76/mt7921/acpi_sar.h deleted +0 -105

105 lines not on this page · raw message

drivers/net/wireless/mediatek/mt76/mt7921/init.c +1 -1
index 3ff0205919c2..7b8876bf8fc8 100644
@@ -230,7 +230,7 @@ int mt7921_register_device(struct mt792x_dev *dev)
 	if (!mt76_is_mmio(&dev->mt76))
 		hw->extra_tx_headroom += MT_SDIO_TXD_SIZE + MT_SDIO_HDR_SIZE;
 
-	mt7921_init_acpi_sar(dev);
+	mt792x_init_acpi_sar(dev);
 
 	ret = mt792x_init_wcid(dev);
 	if (ret)
drivers/net/wireless/mediatek/mt76/mt7921/main.c +4 -7
index 73f29fed216f..0844d28b3223 100644
@@ -1153,19 +1153,16 @@ int mt7921_set_tx_sar_pwr(struct ieee80211_hw *hw,
 			  const struct cfg80211_sar_specs *sar)
 {
 	struct mt76_phy *mphy = hw->priv;
-	int err;
 
 	if (sar) {
-		err = mt76_init_sar_power(hw, sar);
+		int err = mt76_init_sar_power(hw, sar);
+
 		if (err)
 			return err;
 	}
+	mt792x_init_acpi_sar_power(mt792x_hw_phy(hw), !sar);
 
-	mt7921_init_acpi_sar_power(mt792x_hw_phy(hw), !sar);
-
-	err = mt76_connac_mcu_set_rate_txpower(mphy);
-
-	return err;
+	return mt76_connac_mcu_set_rate_txpower(mphy);
 }
 
 static int mt7921_set_sar_specs(struct ieee80211_hw *hw,
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c +1 -1
index bd40ca489447..e9caf750bca5 100644
@@ -1197,7 +1197,7 @@ int __mt7921_mcu_set_clc(struct mt792x_dev *dev, u8 *alpha2,
 	} __packed req = {
 		.idx = idx,
 		.env = env_cap,
-		.acpi_conf = mt7921_acpi_get_flags(&dev->phy),
+		.acpi_conf = mt792x_acpi_get_flags(&dev->phy),
 	};
 	int ret, valid_cnt = 0;
 	u8 i, *pos;
drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h +0 -24
index 0c60a1559041..3ba873ec6bc4 100644
@@ -6,7 +6,6 @@
 
 #include "../mt792x.h"
 #include "regs.h"
-#include "acpi_sar.h"
 
 #define MT7921_PM_TIMEOUT		(HZ / 12)
 #define MT7921_HW_SCAN_TIMEOUT		(HZ / 10)
@@ -345,29 +344,6 @@ int mt7921_mcu_uni_add_beacon_offload(struct mt792x_dev *dev,
 				      struct ieee80211_hw *hw,
 				      struct ieee80211_vif *vif,
 				      bool enable);
-#ifdef CONFIG_ACPI
-int mt7921_init_acpi_sar(struct mt792x_dev *dev);
-int mt7921_init_acpi_sar_power(struct mt792x_phy *phy, bool set_default);
-u8 mt7921_acpi_get_flags(struct mt792x_phy *phy);
-#else
-static inline int
-mt7921_init_acpi_sar(struct mt792x_dev *dev)
-{
-	return 0;
-}
-
-static inline int
-mt7921_init_acpi_sar_power(struct mt792x_phy *phy, bool set_default)
-{
-	return 0;
-}
-
-static inline u8
-mt7921_acpi_get_flags(struct mt792x_phy *phy)
-{
-	return 0;
-}
-#endif
 int mt7921_set_tx_sar_pwr(struct ieee80211_hw *hw,
 			  const struct cfg80211_sar_specs *sar);
 
drivers/net/wireless/mediatek/mt76/mt792x.h +23 -0
index 54ff9627530f..1ed688186fe7 100644
@@ -9,6 +9,7 @@
 
 #include "mt76_connac_mcu.h"
 #include "mt792x_regs.h"
+#include "mt792x_acpi_sar.h"
 
 #define MT792x_MAX_INTERFACES	4
 #define MT792x_WTBL_SIZE	20
@@ -297,4 +298,26 @@ int __mt792xe_mcu_drv_pmctrl(struct mt792x_dev *dev);
 int mt792xe_mcu_drv_pmctrl(struct mt792x_dev *dev);
 int mt792xe_mcu_fw_pmctrl(struct mt792x_dev *dev);
 
+#ifdef CONFIG_ACPI
+int mt792x_init_acpi_sar(struct mt792x_dev *dev);
+int mt792x_init_acpi_sar_power(struct mt792x_phy *phy, bool set_default);
+u8 mt792x_acpi_get_flags(struct mt792x_phy *phy);
+#else
+static inline int mt792x_init_acpi_sar(struct mt792x_dev *dev)
+{
+	return 0;
+}
+
+static inline int mt792x_init_acpi_sar_power(struct mt792x_phy *phy,
+					     bool set_default)
+{
+	return 0;
+}
+
+static inline u8 mt792x_acpi_get_flags(struct mt792x_phy *phy)
+{
+	return 0;
+}
+#endif
+
 #endif /* __MT7925_H */
drivers/net/wireless/mediatek/mt76/mt792x_acpi_sar.c renamed from drivers/net/wireless/mediatek/mt76/mt7921/acpi_sar.c +67 -58

293 lines not on this page · raw message

drivers/net/wireless/mediatek/mt76/mt792x_acpi_sar.h new file +105 -0

105 lines not on this page · raw message

Signature · 1 line
2.18.0
author
#6 lore raw

PATCH 6/11 wifi: mt76: mt792x: introduce mt792x-usb module

In reply to Deren Wu

From: Lorenzo Bianconi <[email protected]>

Add usb shared code between mt7921 and mt7925 chipset to mt792x-usb module.

---
 drivers/net/wireless/mediatek/mt76/Kconfig    |   4 +
 drivers/net/wireless/mediatek/mt76/Makefile   |   2 +
 .../net/wireless/mediatek/mt76/mt7921/Kconfig |   2 +-
 .../wireless/mediatek/mt76/mt7921/Makefile    |   2 +-
 .../wireless/mediatek/mt76/mt7921/mt7921.h    |   8 -
 .../net/wireless/mediatek/mt76/mt7921/usb.c   | 162 ++++++--------
 drivers/net/wireless/mediatek/mt76/mt792x.h   |  13 ++
 .../mt76/{mt7921/usb_mac.c => mt792x_usb.c}   | 203 +++++++++++-------
 8 files changed, 208 insertions(+), 188 deletions(-)
 rename drivers/net/wireless/mediatek/mt76/{mt7921/usb_mac.c => mt792x_usb.c} (51%)
drivers/net/wireless/mediatek/mt76/Kconfig +4 -0
index 1ddf195597a8..7eb1b0b63d11 100644
@@ -33,6 +33,10 @@ config MT792x_LIB
 	tristate
 	select MT76_CONNAC_LIB
 
+config MT792x_USB
+	tristate
+	select MT76_USB
+
 source "drivers/net/wireless/mediatek/mt76/mt76x0/Kconfig"
 source "drivers/net/wireless/mediatek/mt76/mt76x2/Kconfig"
 source "drivers/net/wireless/mediatek/mt76/mt7603/Kconfig"
drivers/net/wireless/mediatek/mt76/Makefile +2 -0
index f8a1928d62b2..85c4799be954 100644
@@ -6,6 +6,7 @@ obj-$(CONFIG_MT76x02_LIB) += mt76x02-lib.o
 obj-$(CONFIG_MT76x02_USB) += mt76x02-usb.o
 obj-$(CONFIG_MT76_CONNAC_LIB) += mt76-connac-lib.o
 obj-$(CONFIG_MT792x_LIB) += mt792x-lib.o
+obj-$(CONFIG_MT792x_USB) += mt792x-usb.o
 
 mt76-y := \
 	mmio.o util.o trace.o dma.o mac80211.o debugfs.o eeprom.o \
@@ -34,6 +35,7 @@ mt76-connac-lib-y := mt76_connac_mcu.o mt76_connac_mac.o mt76_connac3_mac.o
 mt792x-lib-y := mt792x_core.o mt792x_mac.o mt792x_trace.o \
 		mt792x_debugfs.o mt792x_dma.o
 mt792x-lib-$(CONFIG_ACPI) += mt792x_acpi_sar.o
+mt792x-usb-y := mt792x_usb.o
 
 obj-$(CONFIG_MT76x0_COMMON) += mt76x0/
 obj-$(CONFIG_MT76x2_COMMON) += mt76x2/
drivers/net/wireless/mediatek/mt76/mt7921/Kconfig +1 -1
index b92630cdf88b..7ed51e057857 100644
@@ -27,7 +27,7 @@ config MT7921S
 
 config MT7921U
 	tristate "MediaTek MT7921U (USB) support"
-	select MT76_USB
+	select MT792x_USB
 	select MT7921_COMMON
 	depends on MAC80211
 	depends on USB
drivers/net/wireless/mediatek/mt76/mt7921/Makefile +1 -1
index f380ec4b6de1..964eb55824cd 100644
@@ -9,4 +9,4 @@ mt7921-common-y := mac.o mcu.o main.o init.o debugfs.o
 mt7921-common-$(CONFIG_NL80211_TESTMODE) += testmode.o
 mt7921e-y := pci.o pci_mac.o pci_mcu.o dma.o
 mt7921s-y := sdio.o sdio_mac.o sdio_mcu.o
-mt7921u-y := usb.o usb_mac.o
+mt7921u-y := usb.o
drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h +0 -8
index 3ba873ec6bc4..cb22be083242 100644
@@ -332,14 +332,6 @@ void mt7921_usb_sdio_tx_complete_skb(struct mt76_dev *mdev,
 bool mt7921_usb_sdio_tx_status_data(struct mt76_dev *mdev, u8 *update);
 
 /* usb */
-#define MT_USB_TYPE_VENDOR	(USB_TYPE_VENDOR | 0x1f)
-#define MT_USB_TYPE_UHW_VENDOR	(USB_TYPE_VENDOR | 0x1e)
-
-int mt7921u_mcu_power_on(struct mt792x_dev *dev);
-int mt7921u_wfsys_reset(struct mt792x_dev *dev);
-int mt7921u_dma_init(struct mt792x_dev *dev, bool resume);
-int mt7921u_init_reset(struct mt792x_dev *dev);
-int mt7921u_mac_reset(struct mt792x_dev *dev);
 int mt7921_mcu_uni_add_beacon_offload(struct mt792x_dev *dev,
 				      struct ieee80211_hw *hw,
 				      struct ieee80211_vif *vif,
drivers/net/wireless/mediatek/mt76/mt7921/usb.c +67 -95

218 lines not on this page · raw message

drivers/net/wireless/mediatek/mt76/mt792x.h +13 -0
index 1ed688186fe7..b226a863e5de 100644
@@ -294,6 +294,19 @@ int mt792x_init_wcid(struct mt792x_dev *dev);
 int mt792x_mcu_drv_pmctrl(struct mt792x_dev *dev);
 int mt792x_mcu_fw_pmctrl(struct mt792x_dev *dev);
 
+/* usb */
+#define MT_USB_TYPE_VENDOR	(USB_TYPE_VENDOR | 0x1f)
+#define MT_USB_TYPE_UHW_VENDOR	(USB_TYPE_VENDOR | 0x1e)
+int mt792xu_dma_init(struct mt792x_dev *dev, bool resume);
+int mt792xu_mcu_power_on(struct mt792x_dev *dev);
+int mt792xu_wfsys_reset(struct mt792x_dev *dev);
+int mt792xu_init_reset(struct mt792x_dev *dev);
+u32 mt792xu_rr(struct mt76_dev *dev, u32 addr);
+void mt792xu_wr(struct mt76_dev *dev, u32 addr, u32 val);
+u32 mt792xu_rmw(struct mt76_dev *dev, u32 addr, u32 mask, u32 val);
+void mt792xu_copy(struct mt76_dev *dev, u32 offset, const void *data, int len);
+void mt792xu_cleanup(struct mt792x_dev *dev);
+
 int __mt792xe_mcu_drv_pmctrl(struct mt792x_dev *dev);
 int mt792xe_mcu_drv_pmctrl(struct mt792x_dev *dev);
 int mt792xe_mcu_fw_pmctrl(struct mt792x_dev *dev);
drivers/net/wireless/mediatek/mt76/mt792x_usb.c renamed from drivers/net/wireless/mediatek/mt76/mt7921/usb_mac.c +120 -83

301 lines not on this page · raw message

Signature · 1 line
2.18.0
author
#7 lore raw

PATCH 7/11 wifi: mt76: mt792x: move mt7921_load_firmware in mt792x-lib module

In reply to Deren Wu

From: Lorenzo Bianconi <[email protected]>

mt7921_load_firmware routine is shared between mt7921 and mt7925 chipset so move it in mt792x-lib module.

---
 .../net/wireless/mediatek/mt76/mt7921/mcu.c   | 63 +------------------
 .../wireless/mediatek/mt76/mt7921/mt7921.h    |  6 --
 drivers/net/wireless/mediatek/mt76/mt792x.h   | 28 +++++++++
 .../net/wireless/mediatek/mt76/mt792x_core.c  | 36 +++++++++++
 4 files changed, 66 insertions(+), 67 deletions(-)
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c +2 -61
index e9caf750bca5..4b77d95af958 100644
@@ -364,30 +364,6 @@ int mt7921_mcu_uni_rx_ba(struct mt792x_dev *dev,
 				      enable, false);
 }
 
-static char *mt7921_patch_name(struct mt792x_dev *dev)
-{
-	char *ret;
-
-	if (is_mt7922(&dev->mt76))
-		ret = MT7922_ROM_PATCH;
-	else
-		ret = MT7921_ROM_PATCH;
-
-	return ret;
-}
-
-static char *mt7921_ram_name(struct mt792x_dev *dev)
-{
-	char *ret;
-
-	if (is_mt7922(&dev->mt76))
-		ret = MT7922_FIRMWARE_WM;
-	else
-		ret = MT7921_FIRMWARE_WM;
-
-	return ret;
-}
-
 static int mt7921_load_clc(struct mt792x_dev *dev, const char *fw_name)
 {
 	const struct mt76_connac2_fw_trailer *hdr;
@@ -472,41 +448,6 @@ static int mt7921_load_clc(struct mt792x_dev *dev, const char *fw_name)
 	return ret;
 }
 
-static int mt7921_load_firmware(struct mt792x_dev *dev)
-{
-	int ret;
-
-	ret = mt76_connac2_load_patch(&dev->mt76, mt7921_patch_name(dev));
-	if (ret)
-		return ret;
-
-	if (mt76_is_sdio(&dev->mt76)) {
-		/* activate again */
-		ret = __mt792x_mcu_fw_pmctrl(dev);
-		if (!ret)
-			ret = __mt792x_mcu_drv_pmctrl(dev);
-	}
-
-	ret = mt76_connac2_load_ram(&dev->mt76, mt7921_ram_name(dev), NULL);
-	if (ret)
-		return ret;
-
-	if (!mt76_poll_msec(dev, MT_CONN_ON_MISC, MT_TOP_MISC2_FW_N9_RDY,
-			    MT_TOP_MISC2_FW_N9_RDY, 1500)) {
-		dev_err(dev->mt76.dev, "Timeout for initializing firmware\n");
-
-		return -EIO;
-	}
-
-#ifdef CONFIG_PM
-	dev->mt76.hw->wiphy->wowlan = &mt76_connac_wowlan_support;
-#endif /* CONFIG_PM */
-
-	dev_dbg(dev->mt76.dev, "Firmware init done\n");
-
-	return 0;
-}
-
 int mt7921_mcu_fw_log_2_host(struct mt792x_dev *dev, u8 ctrl)
 {
 	struct {
@@ -524,7 +465,7 @@ int mt7921_run_firmware(struct mt792x_dev *dev)
 {
 	int err;
 
-	err = mt7921_load_firmware(dev);
+	err = mt792x_load_firmware(dev);
 	if (err)
 		return err;
 
@@ -533,7 +474,7 @@ int mt7921_run_firmware(struct mt792x_dev *dev)
 		return err;
 
 	set_bit(MT76_STATE_MCU_RUNNING, &dev->mphy.state);
-	err = mt7921_load_clc(dev, mt7921_ram_name(dev));
+	err = mt7921_load_clc(dev, mt792x_ram_name(dev));
 	if (err)
 		return err;
 
drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h +0 -6
index cb22be083242..e458ddb7d99a 100644
@@ -17,12 +17,6 @@
 #define MT7921_RX_RING_SIZE		1536
 #define MT7921_RX_MCU_RING_SIZE		512
 
-#define MT7921_FIRMWARE_WM		"mediatek/WIFI_RAM_CODE_MT7961_1.bin"
-#define MT7921_ROM_PATCH		"mediatek/WIFI_MT7961_patch_mcu_1_2_hdr.bin"
-
-#define MT7922_FIRMWARE_WM		"mediatek/WIFI_RAM_CODE_MT7922_1.bin"
-#define MT7922_ROM_PATCH		"mediatek/WIFI_MT7922_patch_mcu_1_1_hdr.bin"
-
 #define MT7921_EEPROM_SIZE		3584
 #define MT7921_TOKEN_SIZE		8192
 
drivers/net/wireless/mediatek/mt76/mt792x.h +28 -0
index b226a863e5de..700cd0ccc5d3 100644
@@ -31,6 +31,12 @@
 #define MT792x_MCU_INIT_RETRY_COUNT	10
 #define MT792x_WFSYS_INIT_RETRY_COUNT	2
 
+#define MT7921_FIRMWARE_WM	"mediatek/WIFI_RAM_CODE_MT7961_1.bin"
+#define MT7922_FIRMWARE_WM	"mediatek/WIFI_RAM_CODE_MT7922_1.bin"
+
+#define MT7921_ROM_PATCH	"mediatek/WIFI_MT7961_patch_mcu_1_2_hdr.bin"
+#define MT7922_ROM_PATCH	"mediatek/WIFI_MT7922_patch_mcu_1_1_hdr.bin"
+
 struct mt792x_vif;
 struct mt792x_sta;
 
@@ -294,6 +300,28 @@ int mt792x_init_wcid(struct mt792x_dev *dev);
 int mt792x_mcu_drv_pmctrl(struct mt792x_dev *dev);
 int mt792x_mcu_fw_pmctrl(struct mt792x_dev *dev);
 
+static inline char *mt792x_ram_name(struct mt792x_dev *dev)
+{
+	switch (mt76_chip(&dev->mt76)) {
+	case 0x7922:
+		return MT7922_FIRMWARE_WM;
+	default:
+		return MT7921_FIRMWARE_WM;
+	}
+}
+
+static inline char *mt792x_patch_name(struct mt792x_dev *dev)
+{
+	switch (mt76_chip(&dev->mt76)) {
+	case 0x7922:
+		return MT7922_ROM_PATCH;
+	default:
+		return MT7921_ROM_PATCH;
+	}
+}
+
+int mt792x_load_firmware(struct mt792x_dev *dev);
+
 /* usb */
 #define MT_USB_TYPE_VENDOR	(USB_TYPE_VENDOR | 0x1f)
 #define MT_USB_TYPE_UHW_VENDOR	(USB_TYPE_VENDOR | 0x1e)
drivers/net/wireless/mediatek/mt76/mt792x_core.c +36 -0
index f7dfc2189cc8..46be7f996c7e 100644
@@ -804,5 +804,41 @@ int mt792xe_mcu_fw_pmctrl(struct mt792x_dev *dev)
 }
 EXPORT_SYMBOL_GPL(mt792xe_mcu_fw_pmctrl);
 
+int mt792x_load_firmware(struct mt792x_dev *dev)
+{
+	int ret;
+
+	ret = mt76_connac2_load_patch(&dev->mt76, mt792x_patch_name(dev));
+	if (ret)
+		return ret;
+
+	if (mt76_is_sdio(&dev->mt76)) {
+		/* activate again */
+		ret = __mt792x_mcu_fw_pmctrl(dev);
+		if (!ret)
+			ret = __mt792x_mcu_drv_pmctrl(dev);
+	}
+
+	ret = mt76_connac2_load_ram(&dev->mt76, mt792x_ram_name(dev), NULL);
+	if (ret)
+		return ret;
+
+	if (!mt76_poll_msec(dev, MT_CONN_ON_MISC, MT_TOP_MISC2_FW_N9_RDY,
+			    MT_TOP_MISC2_FW_N9_RDY, 1500)) {
+		dev_err(dev->mt76.dev, "Timeout for initializing firmware\n");
+
+		return -EIO;
+	}
+
+#ifdef CONFIG_PM
+	dev->mt76.hw->wiphy->wowlan = &mt76_connac_wowlan_support;
+#endif /* CONFIG_PM */
+
+	dev_dbg(dev->mt76.dev, "Firmware init done\n");
+
+	return 0;
+}
+EXPORT_SYMBOL_GPL(mt792x_load_firmware);
+
 MODULE_LICENSE("Dual BSD/GPL");
 MODULE_AUTHOR("Lorenzo Bianconi <[email protected]>");
Signature · 1 line
2.18.0
author
#8 lore raw

PATCH 8/11 wifi: mt76: mt76_connac3: move lmac queue enumeration in mt76_connac3_mac.h

In reply to Deren Wu

From: Lorenzo Bianconi <[email protected]>

This is a preliminary patch to introduce mt7925 chip support

---
 .../net/wireless/mediatek/mt76/mt76_connac3_mac.h  | 14 ++++++++++++++
 drivers/net/wireless/mediatek/mt76/mt7996/mt7996.h | 14 --------------
 2 files changed, 14 insertions(+), 14 deletions(-)
drivers/net/wireless/mediatek/mt76/mt76_connac3_mac.h +14 -0
index 6663a0b46541..68ca0844cbbf 100644
@@ -4,6 +4,20 @@
 #ifndef __MT76_CONNAC3_MAC_H
 #define __MT76_CONNAC3_MAC_H
 
+enum {
+	MT_CTX0,
+	MT_HIF0 = 0x0,
+
+	MT_LMAC_AC00 = 0x0,
+	MT_LMAC_AC01,
+	MT_LMAC_AC02,
+	MT_LMAC_AC03,
+	MT_LMAC_ALTX0 = 0x10,
+	MT_LMAC_BMC0,
+	MT_LMAC_BCN0,
+	MT_LMAC_PSMP0,
+};
+
 #define MT_CT_PARSE_LEN			72
 #define MT_CT_DMA_BUF_NUM		2
 
drivers/net/wireless/mediatek/mt76/mt7996/mt7996.h +0 -14
index 726c222e8e1e..7354e5cf8e67 100644
@@ -254,20 +254,6 @@ enum {
 	__MT_WFDMA_MAX,
 };
 
-enum {
-	MT_CTX0,
-	MT_HIF0 = 0x0,
-
-	MT_LMAC_AC00 = 0x0,
-	MT_LMAC_AC01,
-	MT_LMAC_AC02,
-	MT_LMAC_AC03,
-	MT_LMAC_ALTX0 = 0x10,
-	MT_LMAC_BMC0,
-	MT_LMAC_BCN0,
-	MT_LMAC_PSMP0,
-};
-
 enum {
 	MT_RX_SEL0,
 	MT_RX_SEL1,
Signature · 1 line
2.18.0
author
#9 lore raw

PATCH 9/11 wifi: mt76: mt792x: move MT7921_PM_TIMEOUT and MT7921_HW_SCAN_TIMEOUT in common code

In reply to Deren Wu

From: Lorenzo Bianconi <[email protected]>

MT7921_PM_TIMEOUT is shared between mt7925 and mt7921 so move it in mt792x module.

---
 drivers/net/wireless/mediatek/mt76/mt7921/init.c   | 2 +-
 drivers/net/wireless/mediatek/mt76/mt7921/mcu.c    | 2 +-
 drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h | 3 ---
 drivers/net/wireless/mediatek/mt76/mt792x.h        | 3 +++
 4 files changed, 5 insertions(+), 5 deletions(-)
drivers/net/wireless/mediatek/mt76/mt7921/init.c +1 -1
index 7b8876bf8fc8..ff63f37f67d9 100644
@@ -217,7 +217,7 @@ int mt7921_register_device(struct mt792x_dev *dev)
 	timer_setup(&dev->phy.roc_timer, mt792x_roc_timer, 0);
 	init_waitqueue_head(&dev->phy.roc_wait);
 
-	dev->pm.idle_timeout = MT7921_PM_TIMEOUT;
+	dev->pm.idle_timeout = MT792x_PM_TIMEOUT;
 	dev->pm.stats.last_wake_event = jiffies;
 	dev->pm.stats.last_doze_event = jiffies;
 	if (!mt76_is_usb(&dev->mt76)) {
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c +1 -1
index 4b77d95af958..90c93970acab 100644
@@ -167,7 +167,7 @@ mt7921_mcu_scan_event(struct mt792x_dev *dev, struct sk_buff *skb)
 	spin_unlock_bh(&dev->mt76.lock);
 
 	ieee80211_queue_delayed_work(mphy->hw, &phy->scan_work,
-				     MT7921_HW_SCAN_TIMEOUT);
+				     MT792x_HW_SCAN_TIMEOUT);
 }
 
 static void
drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h +0 -3
index e458ddb7d99a..0f8b93a2be3a 100644
@@ -7,9 +7,6 @@
 #include "../mt792x.h"
 #include "regs.h"
 
-#define MT7921_PM_TIMEOUT		(HZ / 12)
-#define MT7921_HW_SCAN_TIMEOUT		(HZ / 10)
-
 #define MT7921_TX_RING_SIZE		2048
 #define MT7921_TX_MCU_RING_SIZE		256
 #define MT7921_TX_FWDL_RING_SIZE	128
drivers/net/wireless/mediatek/mt76/mt792x.h +3 -0
index 700cd0ccc5d3..d80f80bc7656 100644
@@ -11,6 +11,9 @@
 #include "mt792x_regs.h"
 #include "mt792x_acpi_sar.h"
 
+#define MT792x_PM_TIMEOUT	(HZ / 12)
+#define MT792x_HW_SCAN_TIMEOUT	(HZ / 10)
+
 #define MT792x_MAX_INTERFACES	4
 #define MT792x_WTBL_SIZE	20
 #define MT792x_WTBL_RESERVED	(MT792x_WTBL_SIZE - 1)
Signature · 1 line
2.18.0
author
#10 lore raw

PATCH 10/11 wifi: mt76: mt7921: move mt7921_dma_init in pci.c

In reply to Deren Wu

From: Lorenzo Bianconi <[email protected]>

Move mt7921_dma_init routine in pci.c and make it static since it is run just in mt7921_pci_probe(). Get rid of dma.c.

---
 .../wireless/mediatek/mt76/mt7921/Makefile    |  2 +-
 .../net/wireless/mediatek/mt76/mt7921/dma.c   | 71 -------------------
 .../wireless/mediatek/mt76/mt7921/mt7921.h    |  1 -
 .../net/wireless/mediatek/mt76/mt7921/pci.c   | 66 +++++++++++++++++
 4 files changed, 67 insertions(+), 73 deletions(-)
 delete mode 100644 drivers/net/wireless/mediatek/mt76/mt7921/dma.c
drivers/net/wireless/mediatek/mt76/mt7921/Makefile +1 -1
index 964eb55824cd..849be9e848e0 100644
@@ -7,6 +7,6 @@ obj-$(CONFIG_MT7921U) += mt7921u.o
 
 mt7921-common-y := mac.o mcu.o main.o init.o debugfs.o
 mt7921-common-$(CONFIG_NL80211_TESTMODE) += testmode.o
-mt7921e-y := pci.o pci_mac.o pci_mcu.o dma.o
+mt7921e-y := pci.o pci_mac.o pci_mcu.o
 mt7921s-y := sdio.o sdio_mac.o sdio_mcu.o
 mt7921u-y := usb.o
drivers/net/wireless/mediatek/mt76/mt7921/dma.c deleted +0 -71

71 lines not on this page · raw message

drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h +0 -1
index 0f8b93a2be3a..87dd06855f68 100644
@@ -182,7 +182,6 @@ u32 mt7921_reg_map(struct mt792x_dev *dev, u32 addr);
 int __mt7921_start(struct mt792x_phy *phy);
 int mt7921_register_device(struct mt792x_dev *dev);
 void mt7921_unregister_device(struct mt792x_dev *dev);
-int mt7921_dma_init(struct mt792x_dev *dev);
 int mt7921_run_firmware(struct mt792x_dev *dev);
 int mt7921_mcu_set_bss_pm(struct mt792x_dev *dev, struct ieee80211_vif *vif,
 			  bool enable);
drivers/net/wireless/mediatek/mt76/mt7921/pci.c +66 -0

78 lines not on this page · raw message

Signature · 1 line
2.18.0
author
#11 lore raw

PATCH 11/11 wifi: mt76: mt7921: move mt7921u_disconnect mt792x-lib

In reply to Deren Wu

From: Lorenzo Bianconi <[email protected]>

mt7921u_disconnect routine is shared between mt7921 and mt7925 so move it in mt792x-usb module.

---
 .../net/wireless/mediatek/mt76/mt7921/usb.c   | 19 +----------------
 drivers/net/wireless/mediatek/mt76/mt792x.h   |  2 +-
 .../net/wireless/mediatek/mt76/mt792x_usb.c   | 21 +++++++++++++++++--
 3 files changed, 21 insertions(+), 21 deletions(-)
drivers/net/wireless/mediatek/mt76/mt7921/usb.c +1 -18
index c3981bc893ac..59cd3d98bf90 100644
@@ -254,23 +254,6 @@ static int mt7921u_probe(struct usb_interface *usb_intf,
 	return ret;
 }
 
-static void mt7921u_disconnect(struct usb_interface *usb_intf)
-{
-	struct mt792x_dev *dev = usb_get_intfdata(usb_intf);
-
-	cancel_work_sync(&dev->init_work);
-	if (!test_bit(MT76_STATE_INITIALIZED, &dev->mphy.state))
-		return;
-
-	mt76_unregister_device(&dev->mt76);
-	mt792xu_cleanup(dev);
-
-	usb_set_intfdata(usb_intf, NULL);
-	usb_put_dev(interface_to_usbdev(usb_intf));
-
-	mt76_free_device(&dev->mt76);
-}
-
 #ifdef CONFIG_PM
 static int mt7921u_suspend(struct usb_interface *intf, pm_message_t state)
 {
@@ -350,7 +333,7 @@ static struct usb_driver mt7921u_driver = {
 	.name		= KBUILD_MODNAME,
 	.id_table	= mt7921u_device_table,
 	.probe		= mt7921u_probe,
-	.disconnect	= mt7921u_disconnect,
+	.disconnect	= mt792xu_disconnect,
 #ifdef CONFIG_PM
 	.suspend	= mt7921u_suspend,
 	.resume		= mt7921u_resume,
drivers/net/wireless/mediatek/mt76/mt792x.h +1 -1
index d80f80bc7656..5d5ab8630041 100644
@@ -336,7 +336,7 @@ u32 mt792xu_rr(struct mt76_dev *dev, u32 addr);
 void mt792xu_wr(struct mt76_dev *dev, u32 addr, u32 val);
 u32 mt792xu_rmw(struct mt76_dev *dev, u32 addr, u32 mask, u32 val);
 void mt792xu_copy(struct mt76_dev *dev, u32 offset, const void *data, int len);
-void mt792xu_cleanup(struct mt792x_dev *dev);
+void mt792xu_disconnect(struct usb_interface *usb_intf);
 
 int __mt792xe_mcu_drv_pmctrl(struct mt792x_dev *dev);
 int mt792xe_mcu_drv_pmctrl(struct mt792x_dev *dev);
drivers/net/wireless/mediatek/mt76/mt792x_usb.c +19 -2
index 97480c9c9974..20e7f9c7c88c 100644
@@ -91,14 +91,13 @@ int mt792xu_mcu_power_on(struct mt792x_dev *dev)
 }
 EXPORT_SYMBOL_GPL(mt792xu_mcu_power_on);
 
-void mt792xu_cleanup(struct mt792x_dev *dev)
+static void mt792xu_cleanup(struct mt792x_dev *dev)
 {
 	clear_bit(MT76_STATE_INITIALIZED, &dev->mphy.state);
 	mt792xu_wfsys_reset(dev);
 	skb_queue_purge(&dev->mt76.mcu.res_q);
 	mt76u_queues_deinit(&dev->mt76);
 }
-EXPORT_SYMBOL_GPL(mt792xu_cleanup);
 
 static u32 mt792xu_uhw_rr(struct mt76_dev *dev, u32 addr)
 {
@@ -288,5 +287,23 @@ int mt792xu_init_reset(struct mt792x_dev *dev)
 }
 EXPORT_SYMBOL_GPL(mt792xu_init_reset);
 
+void mt792xu_disconnect(struct usb_interface *usb_intf)
+{
+	struct mt792x_dev *dev = usb_get_intfdata(usb_intf);
+
+	cancel_work_sync(&dev->init_work);
+	if (!test_bit(MT76_STATE_INITIALIZED, &dev->mphy.state))
+		return;
+
+	mt76_unregister_device(&dev->mt76);
+	mt792xu_cleanup(dev);
+
+	usb_set_intfdata(usb_intf, NULL);
+	usb_put_dev(interface_to_usbdev(usb_intf));
+
+	mt76_free_device(&dev->mt76);
+}
+EXPORT_SYMBOL_GPL(mt792xu_disconnect);
+
 MODULE_LICENSE("Dual BSD/GPL");
 MODULE_AUTHOR("Lorenzo Bianconi <[email protected]>");
Signature · 1 line
2.18.0