Lines Matching +full:mt7986 +full:- +full:wed

1 // SPDX-License-Identifier: ISC
6 #include <linux/hwmon-sysfs.h>
55 int i = to_sensor_dev_attr(attr)->index; in mt7915_thermal_temp_show()
68 phy->throttle_temp[i - 1] * 1000); in mt7915_thermal_temp_show()
70 return sprintf(buf, "%hhu\n", phy->throttle_state); in mt7915_thermal_temp_show()
72 return -EINVAL; in mt7915_thermal_temp_show()
81 int ret, i = to_sensor_dev_attr(attr)->index; in mt7915_thermal_temp_store()
88 mutex_lock(&phy->dev->mt76.mutex); in mt7915_thermal_temp_store()
91 if ((i - 1 == MT7915_CRIT_TEMP_IDX && in mt7915_thermal_temp_store()
92 val > phy->throttle_temp[MT7915_MAX_TEMP_IDX]) || in mt7915_thermal_temp_store()
93 (i - 1 == MT7915_MAX_TEMP_IDX && in mt7915_thermal_temp_store()
94 val < phy->throttle_temp[MT7915_CRIT_TEMP_IDX])) { in mt7915_thermal_temp_store()
95 dev_err(phy->dev->mt76.dev, in mt7915_thermal_temp_store()
97 mutex_unlock(&phy->dev->mt76.mutex); in mt7915_thermal_temp_store()
98 return -EINVAL; in mt7915_thermal_temp_store()
101 phy->throttle_temp[i - 1] = val; in mt7915_thermal_temp_store()
102 mutex_unlock(&phy->dev->mt76.mutex); in mt7915_thermal_temp_store()
138 struct mt7915_phy *phy = cdev->devdata; in mt7915_thermal_get_cur_throttle_state()
140 *state = phy->cdev_state; in mt7915_thermal_get_cur_throttle_state()
149 struct mt7915_phy *phy = cdev->devdata; in mt7915_thermal_set_cur_throttle_state()
150 u8 throttling = MT7915_THERMAL_THROTTLE_MAX - state; in mt7915_thermal_set_cur_throttle_state()
154 dev_err(phy->dev->mt76.dev, in mt7915_thermal_set_cur_throttle_state()
156 return -EINVAL; in mt7915_thermal_set_cur_throttle_state()
159 if (state == phy->cdev_state) in mt7915_thermal_set_cur_throttle_state()
170 phy->cdev_state = state; in mt7915_thermal_set_cur_throttle_state()
183 struct wiphy *wiphy = phy->mt76->hw->wiphy; in mt7915_unregister_thermal()
185 if (!phy->cdev) in mt7915_unregister_thermal()
188 sysfs_remove_link(&wiphy->dev.kobj, "cooling_device"); in mt7915_unregister_thermal()
189 thermal_cooling_device_unregister(phy->cdev); in mt7915_unregister_thermal()
196 struct wiphy *wiphy = phy->mt76->hw->wiphy; in mt7915_thermal_init()
201 name = devm_kasprintf(&wiphy->dev, GFP_KERNEL, "mt7915_%s", in mt7915_thermal_init()
206 if (sysfs_create_link(&wiphy->dev.kobj, &cdev->device.kobj, in mt7915_thermal_init()
210 phy->cdev = cdev; in mt7915_thermal_init()
214 phy->throttle_temp[MT7915_CRIT_TEMP_IDX] = MT7915_CRIT_TEMP; in mt7915_thermal_init()
215 phy->throttle_temp[MT7915_MAX_TEMP_IDX] = MT7915_MAX_TEMP; in mt7915_thermal_init()
220 hwmon = devm_hwmon_device_register_with_groups(&wiphy->dev, name, phy, in mt7915_thermal_init()
238 dev = container_of(mphy->dev, struct mt7915_dev, mt76); in mt7915_led_set_config()
244 mt76_wr(dev, MT_LED_STATUS_0(mphy->band_idx), val); in mt7915_led_set_config()
245 mt76_wr(dev, MT_LED_STATUS_1(mphy->band_idx), val); in mt7915_led_set_config()
248 mt76_wr(dev, MT_LED_EN(mphy->band_idx), 1); in mt7915_led_set_config()
252 if (dev->mphy.leds.al) in mt7915_led_set_config()
254 if (mphy->band_idx) in mt7915_led_set_config()
257 mt76_wr(dev, MT_LED_CTRL(mphy->band_idx), val); in mt7915_led_set_config()
258 mt76_clear(dev, MT_LED_CTRL(mphy->band_idx), MT_LED_CTRL_KICK); in mt7915_led_set_config()
297 int i, n_chains = hweight8(dev->mphy.antenna_mask); in mt7915_init_txpower()
299 int pwr_delta = mt7915_eeprom_get_power_delta(dev, sband->band); in mt7915_init_txpower()
302 for (i = 0; i < sband->n_channels; i++) { in mt7915_init_txpower()
303 struct ieee80211_channel *chan = &sband->channels[i]; in mt7915_init_txpower()
315 target_power = mt76_get_rate_power_limits(&dev->mphy, chan, in mt7915_init_txpower()
320 chan->max_power = min_t(int, chan->max_reg_power, in mt7915_init_txpower()
322 chan->orig_mpwr = target_power; in mt7915_init_txpower()
332 struct mt76_phy *mphy = hw->priv; in mt7915_regd_notifier()
333 struct mt7915_phy *phy = mphy->priv; in mt7915_regd_notifier()
335 memcpy(dev->mt76.alpha2, request->alpha2, sizeof(dev->mt76.alpha2)); in mt7915_regd_notifier()
336 dev->mt76.region = request->dfs_region; in mt7915_regd_notifier()
338 if (dev->mt76.region == NL80211_DFS_UNSET) in mt7915_regd_notifier()
341 mt7915_init_txpower(dev, &mphy->sband_2g.sband); in mt7915_regd_notifier()
342 mt7915_init_txpower(dev, &mphy->sband_5g.sband); in mt7915_regd_notifier()
343 mt7915_init_txpower(dev, &mphy->sband_6g.sband); in mt7915_regd_notifier()
345 mphy->dfs_state = MT_DFS_STATE_UNKNOWN; in mt7915_regd_notifier()
352 struct mt76_phy *mphy = phy->mt76; in mt7915_init_wiphy()
353 struct ieee80211_hw *hw = mphy->hw; in mt7915_init_wiphy()
355 struct mt76_dev *mdev = &phy->dev->mt76; in mt7915_init_wiphy()
357 struct wiphy *wiphy = hw->wiphy; in mt7915_init_wiphy()
358 struct mt7915_dev *dev = phy->dev; in mt7915_init_wiphy()
360 hw->queues = 4; in mt7915_init_wiphy()
361 hw->max_rx_aggregation_subframes = IEEE80211_MAX_AMPDU_BUF_HE; in mt7915_init_wiphy()
362 hw->max_tx_aggregation_subframes = IEEE80211_MAX_AMPDU_BUF_HE; in mt7915_init_wiphy()
363 hw->netdev_features = NETIF_F_RXCSUM; in mt7915_init_wiphy()
365 hw->radiotap_timestamp.units_pos = in mt7915_init_wiphy()
368 phy->slottime = 9; in mt7915_init_wiphy()
370 hw->sta_data_size = sizeof(struct mt7915_sta); in mt7915_init_wiphy()
371 hw->vif_data_size = sizeof(struct mt7915_vif); in mt7915_init_wiphy()
373 wiphy->iface_combinations = if_comb; in mt7915_init_wiphy()
374 wiphy->n_iface_combinations = ARRAY_SIZE(if_comb); in mt7915_init_wiphy()
375 wiphy->reg_notifier = mt7915_regd_notifier; in mt7915_init_wiphy()
376 wiphy->flags |= WIPHY_FLAG_HAS_CHANNEL_SWITCH; in mt7915_init_wiphy()
377 wiphy->mbssid_max_interfaces = 16; in mt7915_init_wiphy()
390 if (!is_mt7915(&dev->mt76)) in mt7915_init_wiphy()
394 if (!mdev->dev->of_node || in mt7915_init_wiphy()
395 !of_property_read_bool(mdev->dev->of_node, in mt7915_init_wiphy()
396 "mediatek,disable-radar-background")) in mt7915_init_wiphy()
407 hw->max_tx_fragments = 4; in mt7915_init_wiphy()
409 if (phy->mt76->cap.has_2ghz) { in mt7915_init_wiphy()
410 phy->mt76->sband_2g.sband.ht_cap.cap |= in mt7915_init_wiphy()
413 phy->mt76->sband_2g.sband.ht_cap.ampdu_density = in mt7915_init_wiphy()
417 if (phy->mt76->cap.has_5ghz) { in mt7915_init_wiphy()
420 vht_cap = &phy->mt76->sband_5g.sband.vht_cap; in mt7915_init_wiphy()
421 phy->mt76->sband_5g.sband.ht_cap.cap |= in mt7915_init_wiphy()
424 phy->mt76->sband_5g.sband.ht_cap.ampdu_density = in mt7915_init_wiphy()
427 if (is_mt7915(&dev->mt76)) { in mt7915_init_wiphy()
428 vht_cap->cap |= in mt7915_init_wiphy()
432 if (!dev->dbdc_support) in mt7915_init_wiphy()
433 vht_cap->cap |= in mt7915_init_wiphy()
437 vht_cap->cap |= in mt7915_init_wiphy()
442 vht_cap->cap |= in mt7915_init_wiphy()
447 if (!is_mt7915(&dev->mt76) || !dev->dbdc_support) in mt7915_init_wiphy()
451 mt76_set_stream_caps(phy->mt76, true); in mt7915_init_wiphy()
455 wiphy->available_antennas_rx = phy->mt76->antenna_mask; in mt7915_init_wiphy()
456 wiphy->available_antennas_tx = phy->mt76->antenna_mask; in mt7915_init_wiphy()
460 mphy->leds.cdev.brightness_set = mt7915_led_set_brightness; in mt7915_init_wiphy()
461 mphy->leds.cdev.blink_set = mt7915_led_set_blink; in mt7915_init_wiphy()
514 /* filter out non-resp frames and get instanstaeous signal reporting */ in mt7915_mac_init_band()
523 if (mtk_wed_device_active(&dev->mt76.mmio.wed)) in mt7915_mac_init_band()
533 if (dev->dbdc_support) { in mt7915_init_led_mux()
534 switch (mt76_chip(&dev->mt76)) { in mt7915_init_led_mux()
556 } else if (dev->mphy.leds.pin) { in mt7915_init_led_mux()
557 switch (mt76_chip(&dev->mt76)) { in mt7915_init_led_mux()
574 switch (mt76_chip(&dev->mt76)) { in mt7915_init_led_mux()
596 u32 rx_len = is_mt7915(&dev->mt76) ? 0x400 : 0x680; in mt7915_mac_init()
599 if (!is_mt7915(&dev->mt76) && dev->hif2) in mt7915_mac_init()
605 if (!is_mt7915(&dev->mt76)) in mt7915_mac_init()
610 /* enable hardware de-agg */ in mt7915_mac_init()
626 if (dev->dbdc_support) { in mt7915_txbf_init()
647 if (!dev->dbdc_support) in mt7915_alloc_ext_phy()
650 mphy = mt76_alloc_phy(&dev->mt76, sizeof(*phy), &mt7915_ops, MT_BAND1); in mt7915_alloc_ext_phy()
652 return ERR_PTR(-ENOMEM); in mt7915_alloc_ext_phy()
654 phy = mphy->priv; in mt7915_alloc_ext_phy()
655 phy->dev = dev; in mt7915_alloc_ext_phy()
656 phy->mt76 = mphy; in mt7915_alloc_ext_phy()
659 phy->mt76->band_idx = 1; in mt7915_alloc_ext_phy()
667 struct mt76_phy *mphy = phy->mt76; in mt7915_register_ext_phy()
670 INIT_DELAYED_WORK(&mphy->mac_work, mt7915_mac_work); in mt7915_register_ext_phy()
675 memcpy(mphy->macaddr, dev->mt76.eeprom.data + MT_EE_MAC_ADDR2, in mt7915_register_ext_phy()
677 memcpy(mphy->macaddr, (u8 *)dev->mt76.eeprom.data + MT_EE_MAC_ADDR2, in mt7915_register_ext_phy()
683 if (!is_valid_ether_addr(mphy->macaddr)) { in mt7915_register_ext_phy()
685 memcpy(mphy->macaddr, dev->mt76.eeprom.data + MT_EE_MAC_ADDR, in mt7915_register_ext_phy()
687 memcpy(mphy->macaddr, (u8 *)dev->mt76.eeprom.data + MT_EE_MAC_ADDR, in mt7915_register_ext_phy()
690 mphy->macaddr[0] |= 2; in mt7915_register_ext_phy()
691 mphy->macaddr[0] ^= BIT(7); in mt7915_register_ext_phy()
725 mt7915_init_txpower(dev, &dev->mphy.sband_2g.sband); in mt7915_init_work()
726 mt7915_init_txpower(dev, &dev->mphy.sband_5g.sband); in mt7915_init_work()
727 mt7915_init_txpower(dev, &dev->mphy.sband_6g.sband); in mt7915_init_work()
736 if (is_mt7915(&dev->mt76)) { in mt7915_wfsys_reset()
749 /* release wfsys then mcu re-executes romcode */ in mt7915_wfsys_reset()
762 dev_err(dev->mt76.dev, "wifi subsystem reset failure\n"); in mt7915_wfsys_reset()
770 } else if (is_mt798x(&dev->mt76)) { in mt7915_wfsys_reset()
789 dev->phy.mt76->band_idx = 0; in mt7915_band_config()
791 if (is_mt798x(&dev->mt76)) { in mt7915_band_config()
795 * for mt7986, dbdc support is determined by the number in mt7915_band_config()
800 dev->phy.mt76->band_idx = 1; in mt7915_band_config()
804 ret = is_mt7915(&dev->mt76) ? in mt7915_band_config()
819 INIT_WORK(&dev->init_work, mt7915_init_work); in mt7915_init_hardware()
825 set_bit(MT76_STATE_INITIALIZED, &dev->mphy.state); in mt7915_init_hardware()
835 if (dev->flash_mode) { in mt7915_init_hardware()
842 idx = mt76_wcid_alloc(dev->mt76.wcid_mask, MT7915_WTBL_STA); in mt7915_init_hardware()
844 return -ENOSPC; in mt7915_init_hardware()
846 dev->mt76.global_wcid.idx = idx; in mt7915_init_hardware()
847 dev->mt76.global_wcid.hw_key_idx = -1; in mt7915_init_hardware()
848 dev->mt76.global_wcid.tx_info |= MT_WCID_TX_INFO_SET; in mt7915_init_hardware()
849 rcu_assign_pointer(dev->mt76.wcid[idx], &dev->mt76.global_wcid); in mt7915_init_hardware()
859 if (!phy->mt76->cap.has_5ghz) in mt7915_set_stream_vht_txbf_caps()
862 sts = hweight8(phy->mt76->chainmask); in mt7915_set_stream_vht_txbf_caps()
863 cap = &phy->mt76->sband_5g.sband.vht_cap.cap; in mt7915_set_stream_vht_txbf_caps()
868 sts - 1); in mt7915_set_stream_vht_txbf_caps()
880 sts - 1); in mt7915_set_stream_vht_txbf_caps()
887 struct mt7915_dev *dev = phy->dev; in mt7915_set_stream_he_txbf_caps()
888 struct ieee80211_he_cap_elem *elem = &he_cap->he_cap_elem; in mt7915_set_stream_he_txbf_caps()
889 int sts = hweight8(phy->mt76->chainmask); in mt7915_set_stream_he_txbf_caps()
893 if (is_mt7915(&dev->mt76)) { in mt7915_set_stream_he_txbf_caps()
894 if (!dev->dbdc_support) in mt7915_set_stream_he_txbf_caps()
905 elem->phy_cap_info[3] &= ~IEEE80211_HE_PHY_CAP3_SU_BEAMFORMER; in mt7915_set_stream_he_txbf_caps()
906 elem->phy_cap_info[4] &= ~IEEE80211_HE_PHY_CAP4_MU_BEAMFORMER; in mt7915_set_stream_he_txbf_caps()
911 elem->phy_cap_info[5] &= ~c; in mt7915_set_stream_he_txbf_caps()
915 elem->phy_cap_info[6] &= ~c; in mt7915_set_stream_he_txbf_caps()
917 elem->phy_cap_info[7] &= ~IEEE80211_HE_PHY_CAP7_MAX_NC_MASK; in mt7915_set_stream_he_txbf_caps()
920 if (!is_mt7915(&dev->mt76)) in mt7915_set_stream_he_txbf_caps()
923 elem->phy_cap_info[2] |= c; in mt7915_set_stream_he_txbf_caps()
929 elem->phy_cap_info[4] |= c; in mt7915_set_stream_he_txbf_caps()
938 elem->phy_cap_info[6] |= c; in mt7915_set_stream_he_txbf_caps()
944 elem->phy_cap_info[7] |= min_t(int, sts - 1, 2) << 3; in mt7915_set_stream_he_txbf_caps()
949 elem->phy_cap_info[3] |= IEEE80211_HE_PHY_CAP3_SU_BEAMFORMER; in mt7915_set_stream_he_txbf_caps()
950 elem->phy_cap_info[4] |= IEEE80211_HE_PHY_CAP4_MU_BEAMFORMER; in mt7915_set_stream_he_txbf_caps()
953 sts - 1); in mt7915_set_stream_he_txbf_caps()
956 sts_160 - 1); in mt7915_set_stream_he_txbf_caps()
957 elem->phy_cap_info[5] |= c; in mt7915_set_stream_he_txbf_caps()
961 elem->phy_cap_info[6] |= c; in mt7915_set_stream_he_txbf_caps()
963 if (!is_mt7915(&dev->mt76)) { in mt7915_set_stream_he_txbf_caps()
966 elem->phy_cap_info[7] |= c; in mt7915_set_stream_he_txbf_caps()
974 struct mt7915_dev *dev = phy->dev; in mt7915_init_he_caps()
975 int i, idx = 0, nss = hweight8(phy->mt76->antenna_mask); in mt7915_init_he_caps()
980 if (!is_mt7915(&dev->mt76)) in mt7915_init_he_caps()
982 else if (!dev->dbdc_support) in mt7915_init_he_caps()
1004 &he_cap->he_cap_elem; in mt7915_init_he_caps()
1006 &he_cap->he_mcs_nss_supp; in mt7915_init_he_caps()
1020 he_cap->has_he = true; in mt7915_init_he_caps()
1022 he_cap_elem->mac_cap_info[0] = in mt7915_init_he_caps()
1024 he_cap_elem->mac_cap_info[3] = in mt7915_init_he_caps()
1027 he_cap_elem->mac_cap_info[4] = in mt7915_init_he_caps()
1031 he_cap_elem->phy_cap_info[0] = in mt7915_init_he_caps()
1034 he_cap_elem->phy_cap_info[0] = in mt7915_init_he_caps()
1038 he_cap_elem->phy_cap_info[0] = in mt7915_init_he_caps()
1041 he_cap_elem->phy_cap_info[1] = in mt7915_init_he_caps()
1043 he_cap_elem->phy_cap_info[2] = in mt7915_init_he_caps()
1049 he_cap_elem->mac_cap_info[0] |= in mt7915_init_he_caps()
1051 he_cap_elem->mac_cap_info[2] |= in mt7915_init_he_caps()
1053 he_cap_elem->mac_cap_info[4] |= in mt7915_init_he_caps()
1055 he_cap_elem->mac_cap_info[5] |= in mt7915_init_he_caps()
1057 he_cap_elem->phy_cap_info[3] |= in mt7915_init_he_caps()
1060 he_cap_elem->phy_cap_info[6] |= in mt7915_init_he_caps()
1063 he_cap_elem->phy_cap_info[9] |= in mt7915_init_he_caps()
1068 he_cap_elem->mac_cap_info[1] |= in mt7915_init_he_caps()
1072 he_cap_elem->phy_cap_info[0] |= in mt7915_init_he_caps()
1075 he_cap_elem->phy_cap_info[0] |= in mt7915_init_he_caps()
1078 he_cap_elem->phy_cap_info[1] |= in mt7915_init_he_caps()
1081 he_cap_elem->phy_cap_info[3] |= in mt7915_init_he_caps()
1084 he_cap_elem->phy_cap_info[6] |= in mt7915_init_he_caps()
1088 he_cap_elem->phy_cap_info[7] |= in mt7915_init_he_caps()
1091 he_cap_elem->phy_cap_info[8] |= in mt7915_init_he_caps()
1095 he_cap_elem->phy_cap_info[8] |= in mt7915_init_he_caps()
1098 he_cap_elem->phy_cap_info[9] |= in mt7915_init_he_caps()
1109 he_mcs->rx_mcs_80 = cpu_to_le16(mcs_map); in mt7915_init_he_caps()
1110 he_mcs->tx_mcs_80 = cpu_to_le16(mcs_map); in mt7915_init_he_caps()
1111 he_mcs->rx_mcs_160 = cpu_to_le16(mcs_map_160); in mt7915_init_he_caps()
1112 he_mcs->tx_mcs_160 = cpu_to_le16(mcs_map_160); in mt7915_init_he_caps()
1116 memset(he_cap->ppe_thres, 0, sizeof(he_cap->ppe_thres)); in mt7915_init_he_caps()
1117 if (he_cap_elem->phy_cap_info[6] & in mt7915_init_he_caps()
1119 mt76_connac_gen_ppe_thresh(he_cap->ppe_thres, nss); in mt7915_init_he_caps()
1121 he_cap_elem->phy_cap_info[9] |= in mt7915_init_he_caps()
1152 if (phy->mt76->cap.has_2ghz) { in mt7915_set_stream_he_caps()
1153 data = phy->iftype[NL80211_BAND_2GHZ]; in mt7915_set_stream_he_caps()
1156 band = &phy->mt76->sband_2g.sband; in mt7915_set_stream_he_caps()
1157 band->iftype_data = data; in mt7915_set_stream_he_caps()
1158 band->n_iftype_data = n; in mt7915_set_stream_he_caps()
1161 if (phy->mt76->cap.has_5ghz) { in mt7915_set_stream_he_caps()
1162 data = phy->iftype[NL80211_BAND_5GHZ]; in mt7915_set_stream_he_caps()
1165 band = &phy->mt76->sband_5g.sband; in mt7915_set_stream_he_caps()
1166 band->iftype_data = data; in mt7915_set_stream_he_caps()
1167 band->n_iftype_data = n; in mt7915_set_stream_he_caps()
1170 if (phy->mt76->cap.has_6ghz) { in mt7915_set_stream_he_caps()
1171 data = phy->iftype[NL80211_BAND_6GHZ]; in mt7915_set_stream_he_caps()
1174 band = &phy->mt76->sband_6g.sband; in mt7915_set_stream_he_caps()
1175 band->iftype_data = data; in mt7915_set_stream_he_caps()
1176 band->n_iftype_data = n; in mt7915_set_stream_he_caps()
1183 struct mt76_phy *mphy = dev->mt76.phys[MT_BAND1]; in mt7915_unregister_ext_phy()
1192 ieee80211_free_hw(mphy->hw); in mt7915_unregister_ext_phy()
1198 mt76_connac2_tx_token_put(&dev->mt76); in mt7915_stop_hardware()
1200 tasklet_disable(&dev->mt76.irq_tasklet); in mt7915_stop_hardware()
1202 if (is_mt798x(&dev->mt76)) in mt7915_stop_hardware()
1211 dev->phy.dev = dev; in mt7915_register_device()
1212 dev->phy.mt76 = &dev->mt76.phy; in mt7915_register_device()
1213 dev->mt76.phy.priv = &dev->phy; in mt7915_register_device()
1214 INIT_WORK(&dev->rc_work, mt7915_mac_sta_rc_work); in mt7915_register_device()
1215 INIT_DELAYED_WORK(&dev->mphy.mac_work, mt7915_mac_work); in mt7915_register_device()
1216 INIT_LIST_HEAD(&dev->sta_rc_list); in mt7915_register_device()
1217 INIT_LIST_HEAD(&dev->twt_list); in mt7915_register_device()
1219 init_waitqueue_head(&dev->reset_wait); in mt7915_register_device()
1220 INIT_WORK(&dev->reset_work, mt7915_mac_reset_work); in mt7915_register_device()
1221 INIT_WORK(&dev->dump_work, mt7915_mac_dump_work); in mt7915_register_device()
1222 mutex_init(&dev->dump_mutex); in mt7915_register_device()
1224 dev->dbdc_support = mt7915_band_config(dev); in mt7915_register_device()
1234 mt7915_init_wiphy(&dev->phy); in mt7915_register_device()
1237 dev->mt76.test_ops = &mt7915_testmode_ops; in mt7915_register_device()
1240 ret = mt76_register_device(&dev->mt76, true, mt76_rates, in mt7915_register_device()
1245 ret = mt7915_thermal_init(&dev->phy); in mt7915_register_device()
1249 ieee80211_queue_work(mt76_hw(dev), &dev->init_work); in mt7915_register_device()
1257 dev->recovery.hw_init_done = true; in mt7915_register_device()
1260 ret = mt7915_init_debugfs(&dev->phy); in mt7915_register_device()
1273 mt7915_unregister_thermal(&dev->phy); in mt7915_register_device()
1276 mt76_unregister_device(&dev->mt76); in mt7915_register_device()
1281 ieee80211_free_hw(phy2->mt76->hw); in mt7915_register_device()
1290 mt7915_unregister_thermal(&dev->phy); in mt7915_unregister_device()
1292 mt76_unregister_device(&dev->mt76); in mt7915_unregister_device()
1295 mt76_free_device(&dev->mt76); in mt7915_unregister_device()