Lines Matching full:dev

19 static ssize_t mt7615_thermal_show_temp(struct device *dev,
23 struct mt7615_dev *mdev = dev_get_drvdata(dev);
49 int mt7615_thermal_init(struct mt7615_dev *dev)
51 struct wiphy *wiphy = mt76_hw(dev)->wiphy;
58 name = devm_kasprintf(&wiphy->dev, GFP_KERNEL, "mt7615_%s",
60 hwmon = devm_hwmon_device_register_with_groups(&wiphy->dev, name, dev,
71 mt7615_phy_init(struct mt7615_dev *dev)
74 mt76_set(dev, MT_WF_PHY_WF2_RFCTRL0(0), MT_WF_PHY_WF2_RFCTRL0_LPBCN_EN);
75 mt76_set(dev, MT_WF_PHY_WF2_RFCTRL0(1), MT_WF_PHY_WF2_RFCTRL0_LPBCN_EN);
79 mt7615_init_mac_chain(struct mt7615_dev *dev, int chain)
89 mt76_set(dev, MT_CFG_CCR, val);
91 mt76_rmw(dev, MT_TMAC_TRCR(chain),
96 mt76_wr(dev, MT_AGG_ACR(chain),
101 mt76_wr(dev, MT_AGG_ARUCR(chain),
111 mt76_wr(dev, MT_AGG_ARDCR(chain),
121 mt76_clear(dev, MT_DMA_RCFR0(chain), MT_DMA_RCFR0_MCU_RX_TDLS);
122 if (!mt7615_firmware_offload(dev)) {
133 mt76_rmw(dev, MT_DMA_RCFR0(chain), mask, set);
138 mt7615_mac_init(struct mt7615_dev *dev)
142 mt7615_init_mac_chain(dev, 0);
144 mt76_rmw_field(dev, MT_TMAC_CTCR0,
146 mt76_rmw_field(dev, MT_TMAC_CTCR0,
148 mt76_rmw(dev, MT_TMAC_CTCR0,
154 mt76_connac_mcu_set_rts_thresh(&dev->mt76, 0x92b, 0);
155 mt7615_mac_set_scs(&dev->phy, true);
157 mt76_rmw(dev, MT_AGG_SCR, MT_AGG_SCR_NLNAV_MID_PTEC_DIS,
160 mt76_wr(dev, MT_AGG_ARCR,
167 mt7615_mac_wtbl_update(dev, i,
170 mt76_set(dev, MT_WF_RMAC_MIB_TIME0, MT_WF_RMAC_MIB_RXTIME_EN);
171 mt76_set(dev, MT_WF_RMAC_MIB_AIRTIME0, MT_WF_RMAC_MIB_RXTIME_EN);
173 mt76_wr(dev, MT_DMA_DCR0,
178 mt76_clear(dev, MT_WF_PFCR, MT_WF_PFCR_TDLS_EN);
179 mt76_set(dev, MT_WF_MIB_SCR0, MT_MIB_SCR0_AGG_CNT_RANGE_EN);
180 if (is_mt7663(&dev->mt76)) {
181 mt76_wr(dev, MT_WF_AGG(0x160), 0x5c341c02);
182 mt76_wr(dev, MT_WF_AGG(0x164), 0x70708040);
184 mt7615_init_mac_chain(dev, 1);
186 mt7615_mcu_set_rx_hdr_trans_blacklist(dev);
190 mt7615_check_offload_capability(struct mt7615_dev *dev)
192 struct ieee80211_hw *hw = mt76_hw(dev);
195 if (mt7615_firmware_offload(dev)) {
207 dev->ops->hw_scan = NULL;
208 dev->ops->cancel_hw_scan = NULL;
209 dev->ops->sched_scan_start = NULL;
210 dev->ops->sched_scan_stop = NULL;
211 dev->ops->set_rekey_data = NULL;
212 dev->ops->remain_on_channel = NULL;
213 dev->ops->cancel_remain_on_channel = NULL;
224 bool mt7615_wait_for_mcu_init(struct mt7615_dev *dev)
226 flush_work(&dev->mcu_work);
228 return test_bit(MT76_STATE_MCU_RUNNING, &dev->mphy.state);
274 void mt7615_init_txpower(struct mt7615_dev *dev,
277 int i, n_chains = hweight8(dev->mphy.antenna_mask), target_chains;
279 u8 *eep = (u8 *)dev->mt76.eeprom.data;
284 delta_idx = mt7615_eeprom_get_power_delta_index(dev, band);
290 if (!is_mt7663(&dev->mt76) && mt7615_ext_pa_enabled(dev, band))
303 index = mt7615_eeprom_get_target_power_index(dev, chan, j);
310 target_power = mt76_get_rate_power_limits(&dev->mphy, chan,
322 void mt7615_init_work(struct mt7615_dev *dev)
324 mt7615_mcu_set_eeprom(dev);
325 mt7615_mac_init(dev);
326 mt7615_phy_init(dev);
327 mt7615_mcu_del_wtbl_all(dev);
328 mt7615_check_offload_capability(dev);
337 struct mt7615_dev *dev = mt7615_hw_dev(hw);
342 memcpy(dev->mt76.alpha2, request->alpha2, sizeof(dev->mt76.alpha2));
343 dev->mt76.region = request->dfs_region;
345 mt7615_init_txpower(dev, &mphy->sband_2g.sband);
346 mt7615_init_txpower(dev, &mphy->sband_5g.sband);
348 mt7615_mutex_acquire(dev);
353 if (mt7615_firmware_offload(phy->dev)) {
358 mt7615_mutex_release(dev);
381 if (is_mt7663(&phy->dev->mt76)) {
402 if (!is_mt7622(&phy->dev->mt76))
411 if (is_mt7615(&phy->dev->mt76))
423 mt7615_cap_dbdc_enable(struct mt7615_dev *dev)
425 dev->mphy.sband_5g.sband.vht_cap.cap &=
428 if (dev->chainmask == 0xf)
429 dev->mphy.antenna_mask = dev->chainmask >> 2;
431 dev->mphy.antenna_mask = dev->chainmask >> 1;
432 dev->mphy.chainmask = dev->mphy.antenna_mask;
433 dev->mphy.hw->wiphy->available_antennas_rx = dev->mphy.chainmask;
434 dev->mphy.hw->wiphy->available_antennas_tx = dev->mphy.chainmask;
435 mt76_set_stream_caps(&dev->mphy, true);
439 mt7615_cap_dbdc_disable(struct mt7615_dev *dev)
441 dev->mphy.sband_5g.sband.vht_cap.cap |=
444 dev->mphy.antenna_mask = dev->chainmask;
445 dev->mphy.chainmask = dev->chainmask;
446 dev->mphy.hw->wiphy->available_antennas_rx = dev->chainmask;
447 dev->mphy.hw->wiphy->available_antennas_tx = dev->chainmask;
448 mt76_set_stream_caps(&dev->mphy, true);
451 u32 mt7615_reg_map(struct mt7615_dev *dev, u32 addr)
455 if (is_mt7663(&dev->mt76)) {
462 mt76_wr(dev, MT_MCU_PCIE_REMAP_2, base);
472 struct mt7615_dev *dev;
478 dev = container_of(mphy->dev, struct mt7615_dev, mt76);
480 if (!mt76_connac_pm_ref(mphy, &dev->pm))
487 index = dev->dbdc_support ? mphy->band_idx : mphy->leds.pin;
488 addr = mt7615_reg_map(dev, MT_LED_STATUS_0(index));
489 mt76_wr(dev, addr, val);
490 addr = mt7615_reg_map(dev, MT_LED_STATUS_1(index));
491 mt76_wr(dev, addr, val);
494 if (dev->mphy.leds.al)
499 addr = mt7615_reg_map(dev, MT_LED_CTRL);
500 mt76_wr(dev, addr, val);
502 mt76_connac_pm_unref(mphy, &dev->pm);
530 int mt7615_register_ext_phy(struct mt7615_dev *dev)
532 struct mt7615_phy *phy = mt7615_ext_phy(dev);
536 if (!is_mt7615(&dev->mt76))
539 if (test_bit(MT76_STATE_RUNNING, &dev->mphy.state))
545 mt7615_cap_dbdc_enable(dev);
546 mphy = mt76_alloc_phy(&dev->mt76, sizeof(*phy), &mt7615_ops, MT_BAND1);
551 phy->dev = dev;
553 mphy->chainmask = dev->chainmask & ~dev->mphy.chainmask;
572 memcpy(mphy->macaddr, dev->mt76.eeprom.data + MT_EE_MAC_ADDR,
574 memcpy(mphy->macaddr, (u8 *)dev->mt76.eeprom.data + MT_EE_MAC_ADDR,
586 mphy->q_tx[i] = dev->mphy.q_tx[i];
603 void mt7615_unregister_ext_phy(struct mt7615_dev *dev)
605 struct mt7615_phy *phy = mt7615_ext_phy(dev);
606 struct mt76_phy *mphy = dev->mt76.phys[MT_BAND1];
611 mt7615_cap_dbdc_disable(dev);
617 void mt7615_init_device(struct mt7615_dev *dev)
619 struct ieee80211_hw *hw = mt76_hw(dev);
621 dev->phy.dev = dev;
622 dev->phy.mt76 = &dev->mt76.phy;
623 dev->mt76.phy.priv = &dev->phy;
624 dev->mt76.tx_worker.fn = mt7615_tx_worker;
626 INIT_DELAYED_WORK(&dev->pm.ps_work, mt7615_pm_power_save_work);
627 INIT_WORK(&dev->pm.wake_work, mt7615_pm_wake_work);
628 spin_lock_init(&dev->pm.wake.lock);
629 mutex_init(&dev->pm.mutex);
630 init_waitqueue_head(&dev->pm.wait);
631 spin_lock_init(&dev->pm.txq_lock);
632 INIT_DELAYED_WORK(&dev->mphy.mac_work, mt7615_mac_work);
633 INIT_DELAYED_WORK(&dev->phy.scan_work, mt7615_scan_work);
634 INIT_DELAYED_WORK(&dev->coredump.work, mt7615_coredump_work);
635 skb_queue_head_init(&dev->phy.scan_event_list);
636 skb_queue_head_init(&dev->coredump.msg_list);
637 init_waitqueue_head(&dev->reset_wait);
638 init_waitqueue_head(&dev->phy.roc_wait);
640 INIT_WORK(&dev->phy.roc_work, mt7615_roc_work);
641 timer_setup(&dev->phy.roc_timer, mt7615_roc_timer, 0);
644 dev->pm.idle_timeout = MT7615_PM_TIMEOUT;
645 dev->pm.stats.last_wake_event = jiffies;
646 dev->pm.stats.last_doze_event = jiffies;
647 mt7615_cap_dbdc_disable(dev);
650 dev->mt76.test_ops = &mt7615_testmode_ops;