Lines Matching refs:dev

18 static ssize_t mt7615_thermal_show_temp(struct device *dev,
22 struct mt7615_dev *mdev = dev_get_drvdata(dev);
48 int mt7615_thermal_init(struct mt7615_dev *dev)
50 struct wiphy *wiphy = mt76_hw(dev)->wiphy;
57 name = devm_kasprintf(&wiphy->dev, GFP_KERNEL, "mt7615_%s",
59 hwmon = devm_hwmon_device_register_with_groups(&wiphy->dev, name, dev,
69 mt7615_phy_init(struct mt7615_dev *dev)
72 mt76_set(dev, MT_WF_PHY_WF2_RFCTRL0(0), MT_WF_PHY_WF2_RFCTRL0_LPBCN_EN);
73 mt76_set(dev, MT_WF_PHY_WF2_RFCTRL0(1), MT_WF_PHY_WF2_RFCTRL0_LPBCN_EN);
77 mt7615_init_mac_chain(struct mt7615_dev *dev, int chain)
87 mt76_set(dev, MT_CFG_CCR, val);
89 mt76_rmw(dev, MT_TMAC_TRCR(chain),
94 mt76_wr(dev, MT_AGG_ACR(chain),
99 mt76_wr(dev, MT_AGG_ARUCR(chain),
109 mt76_wr(dev, MT_AGG_ARDCR(chain),
119 mt76_clear(dev, MT_DMA_RCFR0(chain), MT_DMA_RCFR0_MCU_RX_TDLS);
120 if (!mt7615_firmware_offload(dev)) {
131 mt76_rmw(dev, MT_DMA_RCFR0(chain), mask, set);
136 mt7615_mac_init(struct mt7615_dev *dev)
140 mt7615_init_mac_chain(dev, 0);
142 mt76_rmw_field(dev, MT_TMAC_CTCR0,
144 mt76_rmw_field(dev, MT_TMAC_CTCR0,
146 mt76_rmw(dev, MT_TMAC_CTCR0,
152 mt76_connac_mcu_set_rts_thresh(&dev->mt76, 0x92b, 0);
153 mt7615_mac_set_scs(&dev->phy, true);
155 mt76_rmw(dev, MT_AGG_SCR, MT_AGG_SCR_NLNAV_MID_PTEC_DIS,
158 mt76_wr(dev, MT_AGG_ARCR,
165 mt7615_mac_wtbl_update(dev, i,
168 mt76_set(dev, MT_WF_RMAC_MIB_TIME0, MT_WF_RMAC_MIB_RXTIME_EN);
169 mt76_set(dev, MT_WF_RMAC_MIB_AIRTIME0, MT_WF_RMAC_MIB_RXTIME_EN);
171 mt76_wr(dev, MT_DMA_DCR0,
176 mt76_clear(dev, MT_WF_PFCR, MT_WF_PFCR_TDLS_EN);
177 mt76_set(dev, MT_WF_MIB_SCR0, MT_MIB_SCR0_AGG_CNT_RANGE_EN);
178 if (is_mt7663(&dev->mt76)) {
179 mt76_wr(dev, MT_WF_AGG(0x160), 0x5c341c02);
180 mt76_wr(dev, MT_WF_AGG(0x164), 0x70708040);
182 mt7615_init_mac_chain(dev, 1);
184 mt7615_mcu_set_rx_hdr_trans_blacklist(dev);
188 mt7615_check_offload_capability(struct mt7615_dev *dev)
190 struct ieee80211_hw *hw = mt76_hw(dev);
193 if (mt7615_firmware_offload(dev)) {
205 dev->ops->hw_scan = NULL;
206 dev->ops->cancel_hw_scan = NULL;
207 dev->ops->sched_scan_start = NULL;
208 dev->ops->sched_scan_stop = NULL;
209 dev->ops->set_rekey_data = NULL;
210 dev->ops->remain_on_channel = NULL;
211 dev->ops->cancel_remain_on_channel = NULL;
222 bool mt7615_wait_for_mcu_init(struct mt7615_dev *dev)
224 flush_work(&dev->mcu_work);
226 return test_bit(MT76_STATE_MCU_RUNNING, &dev->mphy.state);
272 void mt7615_init_txpower(struct mt7615_dev *dev,
275 int i, n_chains = hweight8(dev->mphy.antenna_mask), target_chains;
277 u8 *eep = (u8 *)dev->mt76.eeprom.data;
282 delta_idx = mt7615_eeprom_get_power_delta_index(dev, band);
288 if (!is_mt7663(&dev->mt76) && mt7615_ext_pa_enabled(dev, band))
301 index = mt7615_eeprom_get_target_power_index(dev, chan, j);
308 target_power = mt76_get_rate_power_limits(&dev->mphy, chan,
320 void mt7615_init_work(struct mt7615_dev *dev)
322 mt7615_mcu_set_eeprom(dev);
323 mt7615_mac_init(dev);
324 mt7615_phy_init(dev);
325 mt7615_mcu_del_wtbl_all(dev);
326 mt7615_check_offload_capability(dev);
335 struct mt7615_dev *dev = mt7615_hw_dev(hw);
340 memcpy(dev->mt76.alpha2, request->alpha2, sizeof(dev->mt76.alpha2));
341 dev->mt76.region = request->dfs_region;
343 mt7615_init_txpower(dev, &mphy->sband_2g.sband);
344 mt7615_init_txpower(dev, &mphy->sband_5g.sband);
346 mt7615_mutex_acquire(dev);
351 if (mt7615_firmware_offload(phy->dev)) {
356 mt7615_mutex_release(dev);
379 if (is_mt7663(&phy->dev->mt76)) {
400 if (!is_mt7622(&phy->dev->mt76))
409 if (is_mt7615(&phy->dev->mt76))
421 mt7615_cap_dbdc_enable(struct mt7615_dev *dev)
423 dev->mphy.sband_5g.sband.vht_cap.cap &=
426 if (dev->chainmask == 0xf)
427 dev->mphy.antenna_mask = dev->chainmask >> 2;
429 dev->mphy.antenna_mask = dev->chainmask >> 1;
430 dev->mphy.chainmask = dev->mphy.antenna_mask;
431 dev->mphy.hw->wiphy->available_antennas_rx = dev->mphy.chainmask;
432 dev->mphy.hw->wiphy->available_antennas_tx = dev->mphy.chainmask;
433 mt76_set_stream_caps(&dev->mphy, true);
437 mt7615_cap_dbdc_disable(struct mt7615_dev *dev)
439 dev->mphy.sband_5g.sband.vht_cap.cap |=
442 dev->mphy.antenna_mask = dev->chainmask;
443 dev->mphy.chainmask = dev->chainmask;
444 dev->mphy.hw->wiphy->available_antennas_rx = dev->chainmask;
445 dev->mphy.hw->wiphy->available_antennas_tx = dev->chainmask;
446 mt76_set_stream_caps(&dev->mphy, true);
449 u32 mt7615_reg_map(struct mt7615_dev *dev, u32 addr)
453 if (is_mt7663(&dev->mt76)) {
460 mt76_wr(dev, MT_MCU_PCIE_REMAP_2, base);
470 struct mt7615_dev *dev;
476 dev = container_of(mphy->dev, struct mt7615_dev, mt76);
478 if (!mt76_connac_pm_ref(mphy, &dev->pm))
485 index = dev->dbdc_support ? mphy->band_idx : mphy->leds.pin;
486 addr = mt7615_reg_map(dev, MT_LED_STATUS_0(index));
487 mt76_wr(dev, addr, val);
488 addr = mt7615_reg_map(dev, MT_LED_STATUS_1(index));
489 mt76_wr(dev, addr, val);
492 if (dev->mphy.leds.al)
497 addr = mt7615_reg_map(dev, MT_LED_CTRL);
498 mt76_wr(dev, addr, val);
500 mt76_connac_pm_unref(mphy, &dev->pm);
528 int mt7615_register_ext_phy(struct mt7615_dev *dev)
530 struct mt7615_phy *phy = mt7615_ext_phy(dev);
534 if (!is_mt7615(&dev->mt76))
537 if (test_bit(MT76_STATE_RUNNING, &dev->mphy.state))
543 mt7615_cap_dbdc_enable(dev);
544 mphy = mt76_alloc_phy(&dev->mt76, sizeof(*phy), &mt7615_ops, MT_BAND1);
549 phy->dev = dev;
551 mphy->chainmask = dev->chainmask & ~dev->mphy.chainmask;
569 memcpy(mphy->macaddr, dev->mt76.eeprom.data + MT_EE_MAC_ADDR,
580 mphy->q_tx[i] = dev->mphy.q_tx[i];
597 void mt7615_unregister_ext_phy(struct mt7615_dev *dev)
599 struct mt7615_phy *phy = mt7615_ext_phy(dev);
600 struct mt76_phy *mphy = dev->mt76.phys[MT_BAND1];
605 mt7615_cap_dbdc_disable(dev);
611 void mt7615_init_device(struct mt7615_dev *dev)
613 struct ieee80211_hw *hw = mt76_hw(dev);
615 dev->phy.dev = dev;
616 dev->phy.mt76 = &dev->mt76.phy;
617 dev->mt76.phy.priv = &dev->phy;
618 dev->mt76.tx_worker.fn = mt7615_tx_worker;
620 INIT_DELAYED_WORK(&dev->pm.ps_work, mt7615_pm_power_save_work);
621 INIT_WORK(&dev->pm.wake_work, mt7615_pm_wake_work);
622 spin_lock_init(&dev->pm.wake.lock);
623 mutex_init(&dev->pm.mutex);
624 init_waitqueue_head(&dev->pm.wait);
625 spin_lock_init(&dev->pm.txq_lock);
626 INIT_DELAYED_WORK(&dev->mphy.mac_work, mt7615_mac_work);
627 INIT_DELAYED_WORK(&dev->phy.scan_work, mt7615_scan_work);
628 INIT_DELAYED_WORK(&dev->coredump.work, mt7615_coredump_work);
629 skb_queue_head_init(&dev->phy.scan_event_list);
630 skb_queue_head_init(&dev->coredump.msg_list);
631 init_waitqueue_head(&dev->reset_wait);
632 init_waitqueue_head(&dev->phy.roc_wait);
634 INIT_WORK(&dev->phy.roc_work, mt7615_roc_work);
635 timer_setup(&dev->phy.roc_timer, mt7615_roc_timer, 0);
638 dev->pm.idle_timeout = MT7615_PM_TIMEOUT;
639 dev->pm.stats.last_wake_event = jiffies;
640 dev->pm.stats.last_doze_event = jiffies;
641 mt7615_cap_dbdc_disable(dev);
644 dev->mt76.test_ops = &mt7615_testmode_ops;