Lines Matching refs:dev

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