mt76: introduce mt792x-usb support
Subsystems (3)
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.cSignature · 1 line
2.18.0
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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
PATCH 2/11 wifi: mt76: mt7921: move hif_ops macro in mt792x.h
In reply to Deren WuFrom: 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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
PATCH 3/11 wifi: mt76: mt7921: move shared runtime-pm code on mt792x-lib
In reply to Deren WuFrom: 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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
PATCH 4/11 wifi: mt76: mt7921: move runtime-pm pci code in mt792x-lib
In reply to Deren WuFrom: 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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
PATCH 5/11 wifi: mt76: mt7921: move acpi_sar code in mt792x-lib module
In reply to Deren WuFrom: 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.hdrivers/net/wireless/mediatek/mt76/Makefile +1 -0
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
PATCH 6/11 wifi: mt76: mt792x: introduce mt792x-usb module
In reply to Deren WuFrom: 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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
PATCH 7/11 wifi: mt76: mt792x: move mt7921_load_firmware in mt792x-lib module
In reply to Deren WuFrom: 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
@@ -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
@@ -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
@@ -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
@@ -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
PATCH 8/11 wifi: mt76: mt76_connac3: move lmac queue enumeration in mt76_connac3_mac.h
In reply to Deren WuFrom: 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
@@ -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
@@ -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
PATCH 9/11 wifi: mt76: mt792x: move MT7921_PM_TIMEOUT and MT7921_HW_SCAN_TIMEOUT in common code
In reply to Deren WuFrom: 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
@@ -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
@@ -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
@@ -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
@@ -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
PATCH 10/11 wifi: mt76: mt7921: move mt7921_dma_init in pci.c
In reply to Deren WuFrom: 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
@@ -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
@@ -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
PATCH 11/11 wifi: mt76: mt7921: move mt7921u_disconnect mt792x-lib
In reply to Deren WuFrom: 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
@@ -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
@@ -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
@@ -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