Lines Matching +full:disable +full:- +full:radar +full:- +full:background
1 // SPDX-License-Identifier: ISC
6 #include <linux/hwmon-sysfs.h>
51 int i = to_sensor_dev_attr(attr)->index; in mt7915_thermal_temp_show()
64 phy->throttle_temp[i - 1] * 1000); in mt7915_thermal_temp_show()
66 return sprintf(buf, "%hhu\n", phy->throttle_state); in mt7915_thermal_temp_show()
68 return -EINVAL; in mt7915_thermal_temp_show()
77 int ret, i = to_sensor_dev_attr(attr)->index; in mt7915_thermal_temp_store()
84 mutex_lock(&phy->dev->mt76.mutex); in mt7915_thermal_temp_store()
87 if ((i - 1 == MT7915_CRIT_TEMP_IDX && in mt7915_thermal_temp_store()
88 val > phy->throttle_temp[MT7915_MAX_TEMP_IDX]) || in mt7915_thermal_temp_store()
89 (i - 1 == MT7915_MAX_TEMP_IDX && in mt7915_thermal_temp_store()
90 val < phy->throttle_temp[MT7915_CRIT_TEMP_IDX])) { in mt7915_thermal_temp_store()
91 dev_err(phy->dev->mt76.dev, in mt7915_thermal_temp_store()
93 mutex_unlock(&phy->dev->mt76.mutex); in mt7915_thermal_temp_store()
94 return -EINVAL; in mt7915_thermal_temp_store()
97 phy->throttle_temp[i - 1] = val; in mt7915_thermal_temp_store()
98 mutex_unlock(&phy->dev->mt76.mutex); in mt7915_thermal_temp_store()
134 struct mt7915_phy *phy = cdev->devdata; in mt7915_thermal_get_cur_throttle_state()
136 *state = phy->cdev_state; in mt7915_thermal_get_cur_throttle_state()
145 struct mt7915_phy *phy = cdev->devdata; in mt7915_thermal_set_cur_throttle_state()
146 u8 throttling = MT7915_THERMAL_THROTTLE_MAX - state; in mt7915_thermal_set_cur_throttle_state()
150 dev_err(phy->dev->mt76.dev, in mt7915_thermal_set_cur_throttle_state()
152 return -EINVAL; in mt7915_thermal_set_cur_throttle_state()
155 if (state == phy->cdev_state) in mt7915_thermal_set_cur_throttle_state()
166 phy->cdev_state = state; in mt7915_thermal_set_cur_throttle_state()
179 struct wiphy *wiphy = phy->mt76->hw->wiphy; in mt7915_unregister_thermal()
181 if (!phy->cdev) in mt7915_unregister_thermal()
184 sysfs_remove_link(&wiphy->dev.kobj, "cooling_device"); in mt7915_unregister_thermal()
185 thermal_cooling_device_unregister(phy->cdev); in mt7915_unregister_thermal()
190 struct wiphy *wiphy = phy->mt76->hw->wiphy; in mt7915_thermal_init()
195 name = devm_kasprintf(&wiphy->dev, GFP_KERNEL, "mt7915_%s", in mt7915_thermal_init()
198 return -ENOMEM; in mt7915_thermal_init()
202 if (sysfs_create_link(&wiphy->dev.kobj, &cdev->device.kobj, in mt7915_thermal_init()
206 phy->cdev = cdev; in mt7915_thermal_init()
210 phy->throttle_temp[MT7915_CRIT_TEMP_IDX] = MT7915_CRIT_TEMP; in mt7915_thermal_init()
211 phy->throttle_temp[MT7915_MAX_TEMP_IDX] = MT7915_MAX_TEMP; in mt7915_thermal_init()
216 hwmon = devm_hwmon_device_register_with_groups(&wiphy->dev, name, phy, in mt7915_thermal_init()
229 dev = container_of(mphy->dev, struct mt7915_dev, mt76); in mt7915_led_set_config()
235 mt76_wr(dev, MT_LED_STATUS_0(mphy->band_idx), val); in mt7915_led_set_config()
236 mt76_wr(dev, MT_LED_STATUS_1(mphy->band_idx), val); in mt7915_led_set_config()
239 mt76_wr(dev, MT_LED_EN(mphy->band_idx), 1); in mt7915_led_set_config()
243 if (dev->mphy.leds.al) in mt7915_led_set_config()
245 if (mphy->band_idx) in mt7915_led_set_config()
248 mt76_wr(dev, MT_LED_CTRL(mphy->band_idx), val); in mt7915_led_set_config()
249 mt76_clear(dev, MT_LED_CTRL(mphy->band_idx), MT_LED_CTRL_KICK); in mt7915_led_set_config()
283 struct mt7915_dev *dev = phy->dev; in __mt7915_init_txpower()
284 int i, n_chains = hweight16(phy->mt76->chainmask); in __mt7915_init_txpower()
286 int pwr_delta = mt7915_eeprom_get_power_delta(dev, sband->band); in __mt7915_init_txpower()
289 for (i = 0; i < sband->n_channels; i++) { in __mt7915_init_txpower()
290 struct ieee80211_channel *chan = &sband->channels[i]; in __mt7915_init_txpower()
302 target_power = mt76_get_rate_power_limits(phy->mt76, chan, in __mt7915_init_txpower()
307 chan->max_power = min_t(int, chan->max_reg_power, in __mt7915_init_txpower()
309 chan->orig_mpwr = target_power; in __mt7915_init_txpower()
318 if (phy->mt76->cap.has_2ghz) in mt7915_init_txpower()
319 __mt7915_init_txpower(phy, &phy->mt76->sband_2g.sband); in mt7915_init_txpower()
320 if (phy->mt76->cap.has_5ghz) in mt7915_init_txpower()
321 __mt7915_init_txpower(phy, &phy->mt76->sband_5g.sband); in mt7915_init_txpower()
322 if (phy->mt76->cap.has_6ghz) in mt7915_init_txpower()
323 __mt7915_init_txpower(phy, &phy->mt76->sband_6g.sband); 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()
343 mphy->dfs_state = MT_DFS_STATE_UNKNOWN; in mt7915_regd_notifier()
350 struct mt76_phy *mphy = phy->mt76; in mt7915_init_wiphy()
351 struct ieee80211_hw *hw = mphy->hw; in mt7915_init_wiphy()
352 struct mt76_dev *mdev = &phy->dev->mt76; in mt7915_init_wiphy()
353 struct wiphy *wiphy = hw->wiphy; in mt7915_init_wiphy()
354 struct mt7915_dev *dev = phy->dev; in mt7915_init_wiphy()
356 hw->queues = 4; in mt7915_init_wiphy()
357 hw->max_rx_aggregation_subframes = IEEE80211_MAX_AMPDU_BUF_HE; in mt7915_init_wiphy()
358 hw->max_tx_aggregation_subframes = IEEE80211_MAX_AMPDU_BUF_HE; in mt7915_init_wiphy()
359 hw->netdev_features = NETIF_F_RXCSUM; in mt7915_init_wiphy()
361 if (mtk_wed_device_active(&mdev->mmio.wed)) in mt7915_init_wiphy()
362 hw->netdev_features |= NETIF_F_HW_TC; in mt7915_init_wiphy()
364 hw->radiotap_timestamp.units_pos = in mt7915_init_wiphy()
367 phy->slottime = 9; in mt7915_init_wiphy()
369 hw->sta_data_size = sizeof(struct mt7915_sta); in mt7915_init_wiphy()
370 hw->vif_data_size = sizeof(struct mt7915_vif); in mt7915_init_wiphy()
372 wiphy->iface_combinations = if_comb; in mt7915_init_wiphy()
373 wiphy->n_iface_combinations = ARRAY_SIZE(if_comb); in mt7915_init_wiphy()
374 wiphy->reg_notifier = mt7915_regd_notifier; in mt7915_init_wiphy()
375 wiphy->flags |= WIPHY_FLAG_HAS_CHANNEL_SWITCH; in mt7915_init_wiphy()
376 wiphy->mbssid_max_interfaces = 16; in mt7915_init_wiphy()
389 if (!is_mt7915(&dev->mt76)) in mt7915_init_wiphy()
392 if (!mdev->dev->of_node || in mt7915_init_wiphy()
393 !of_property_read_bool(mdev->dev->of_node, in mt7915_init_wiphy()
394 "mediatek,disable-radar-background")) in mt7915_init_wiphy()
405 hw->max_tx_fragments = 4; in mt7915_init_wiphy()
407 if (phy->mt76->cap.has_2ghz) { in mt7915_init_wiphy()
408 phy->mt76->sband_2g.sband.ht_cap.cap |= in mt7915_init_wiphy()
411 if (is_mt7915(&dev->mt76)) in mt7915_init_wiphy()
412 phy->mt76->sband_2g.sband.ht_cap.ampdu_density = in mt7915_init_wiphy()
415 phy->mt76->sband_2g.sband.ht_cap.ampdu_density = in mt7915_init_wiphy()
419 if (phy->mt76->cap.has_5ghz) { in mt7915_init_wiphy()
422 vht_cap = &phy->mt76->sband_5g.sband.vht_cap; in mt7915_init_wiphy()
423 phy->mt76->sband_5g.sband.ht_cap.cap |= in mt7915_init_wiphy()
427 if (is_mt7915(&dev->mt76)) { in mt7915_init_wiphy()
428 phy->mt76->sband_5g.sband.ht_cap.ampdu_density = in mt7915_init_wiphy()
431 vht_cap->cap |= in mt7915_init_wiphy()
435 if (!dev->dbdc_support) in mt7915_init_wiphy()
436 vht_cap->cap |= in mt7915_init_wiphy()
440 phy->mt76->sband_5g.sband.ht_cap.ampdu_density = in mt7915_init_wiphy()
443 vht_cap->cap |= in mt7915_init_wiphy()
448 vht_cap->cap |= in mt7915_init_wiphy()
453 if (!is_mt7915(&dev->mt76) || !dev->dbdc_support) in mt7915_init_wiphy()
457 mt76_set_stream_caps(phy->mt76, true); in mt7915_init_wiphy()
462 wiphy->available_antennas_rx = phy->mt76->antenna_mask; in mt7915_init_wiphy()
463 wiphy->available_antennas_tx = phy->mt76->antenna_mask; in mt7915_init_wiphy()
467 mphy->leds.cdev.brightness_set = mt7915_led_set_brightness; in mt7915_init_wiphy()
468 mphy->leds.cdev.blink_set = mt7915_led_set_blink; in mt7915_init_wiphy()
501 /* mt7915: disable rx rate report by default due to hw issues */ in mt7915_mac_init_band()
521 /* filter out non-resp frames and get instanstaeous signal reporting */ in mt7915_mac_init_band()
530 if (mtk_wed_device_active(&dev->mt76.mmio.wed)) in mt7915_mac_init_band()
540 if (dev->dbdc_support) { in mt7915_init_led_mux()
541 switch (mt76_chip(&dev->mt76)) { in mt7915_init_led_mux()
563 } else if (dev->mphy.leds.pin) { in mt7915_init_led_mux()
564 switch (mt76_chip(&dev->mt76)) { in mt7915_init_led_mux()
581 switch (mt76_chip(&dev->mt76)) { in mt7915_init_led_mux()
603 u32 rx_len = is_mt7915(&dev->mt76) ? 0x400 : 0x680; in mt7915_mac_init()
606 if (!is_mt7915(&dev->mt76) && dev->hif2) in mt7915_mac_init()
612 if (!is_mt7915(&dev->mt76)) in mt7915_mac_init()
617 /* enable hardware de-agg */ in mt7915_mac_init()
633 if (dev->dbdc_support) { in mt7915_txbf_init()
654 if (!dev->dbdc_support) in mt7915_alloc_ext_phy()
657 mphy = mt76_alloc_phy(&dev->mt76, sizeof(*phy), &mt7915_ops, MT_BAND1); in mt7915_alloc_ext_phy()
659 return ERR_PTR(-ENOMEM); in mt7915_alloc_ext_phy()
661 phy = mphy->priv; in mt7915_alloc_ext_phy()
662 phy->dev = dev; in mt7915_alloc_ext_phy()
663 phy->mt76 = mphy; in mt7915_alloc_ext_phy()
666 phy->mt76->band_idx = 1; in mt7915_alloc_ext_phy()
674 struct mt76_phy *mphy = phy->mt76; in mt7915_register_ext_phy()
677 INIT_DELAYED_WORK(&mphy->mac_work, mt7915_mac_work); in mt7915_register_ext_phy()
681 memcpy(mphy->macaddr, dev->mt76.eeprom.data + MT_EE_MAC_ADDR2, in mt7915_register_ext_phy()
686 if (!is_valid_ether_addr(mphy->macaddr)) { in mt7915_register_ext_phy()
687 memcpy(mphy->macaddr, dev->mt76.eeprom.data + MT_EE_MAC_ADDR, in mt7915_register_ext_phy()
689 mphy->macaddr[0] |= 2; in mt7915_register_ext_phy()
690 mphy->macaddr[0] ^= BIT(7); in mt7915_register_ext_phy()
730 if (is_mt7915(&dev->mt76)) { in mt7915_wfsys_reset()
743 /* release wfsys then mcu re-executes romcode */ in mt7915_wfsys_reset()
756 dev_err(dev->mt76.dev, "wifi subsystem reset failure\n"); in mt7915_wfsys_reset()
764 } else if (is_mt798x(&dev->mt76)) { in mt7915_wfsys_reset()
783 dev->phy.mt76->band_idx = 0; in mt7915_band_config()
785 if (is_mt798x(&dev->mt76)) { in mt7915_band_config()
794 dev->phy.mt76->band_idx = 1; in mt7915_band_config()
798 ret = is_mt7915(&dev->mt76) ? in mt7915_band_config()
813 INIT_WORK(&dev->init_work, mt7915_init_work); in mt7915_init_hardware()
819 set_bit(MT76_STATE_INITIALIZED, &dev->mphy.state); in mt7915_init_hardware()
829 if (dev->cal) { in mt7915_init_hardware()
836 idx = mt76_wcid_alloc(dev->mt76.wcid_mask, MT7915_WTBL_STA); in mt7915_init_hardware()
838 return -ENOSPC; in mt7915_init_hardware()
840 dev->mt76.global_wcid.idx = idx; in mt7915_init_hardware()
841 dev->mt76.global_wcid.hw_key_idx = -1; in mt7915_init_hardware()
842 dev->mt76.global_wcid.tx_info |= MT_WCID_TX_INFO_SET; in mt7915_init_hardware()
843 rcu_assign_pointer(dev->mt76.wcid[idx], &dev->mt76.global_wcid); in mt7915_init_hardware()
853 if (!phy->mt76->cap.has_5ghz) in mt7915_set_stream_vht_txbf_caps()
856 sts = hweight8(phy->mt76->chainmask); in mt7915_set_stream_vht_txbf_caps()
857 cap = &phy->mt76->sband_5g.sband.vht_cap.cap; in mt7915_set_stream_vht_txbf_caps()
862 sts - 1); in mt7915_set_stream_vht_txbf_caps()
874 sts - 1); in mt7915_set_stream_vht_txbf_caps()
881 struct mt7915_dev *dev = phy->dev; in mt7915_set_stream_he_txbf_caps()
882 struct ieee80211_he_cap_elem *elem = &he_cap->he_cap_elem; in mt7915_set_stream_he_txbf_caps()
883 int sts = hweight8(phy->mt76->chainmask); in mt7915_set_stream_he_txbf_caps()
887 if (is_mt7915(&dev->mt76)) { in mt7915_set_stream_he_txbf_caps()
888 if (!dev->dbdc_support) in mt7915_set_stream_he_txbf_caps()
899 elem->phy_cap_info[3] &= ~IEEE80211_HE_PHY_CAP3_SU_BEAMFORMER; in mt7915_set_stream_he_txbf_caps()
900 elem->phy_cap_info[4] &= ~IEEE80211_HE_PHY_CAP4_MU_BEAMFORMER; in mt7915_set_stream_he_txbf_caps()
905 elem->phy_cap_info[5] &= ~c; in mt7915_set_stream_he_txbf_caps()
909 elem->phy_cap_info[6] &= ~c; in mt7915_set_stream_he_txbf_caps()
911 elem->phy_cap_info[7] &= ~IEEE80211_HE_PHY_CAP7_MAX_NC_MASK; in mt7915_set_stream_he_txbf_caps()
914 if (!is_mt7915(&dev->mt76)) in mt7915_set_stream_he_txbf_caps()
917 elem->phy_cap_info[2] |= c; in mt7915_set_stream_he_txbf_caps()
923 elem->phy_cap_info[4] |= c; in mt7915_set_stream_he_txbf_caps()
932 elem->phy_cap_info[6] |= c; in mt7915_set_stream_he_txbf_caps()
938 elem->phy_cap_info[7] |= min_t(int, sts - 1, 2) << 3; in mt7915_set_stream_he_txbf_caps()
943 elem->phy_cap_info[3] |= IEEE80211_HE_PHY_CAP3_SU_BEAMFORMER; in mt7915_set_stream_he_txbf_caps()
946 sts - 1); in mt7915_set_stream_he_txbf_caps()
949 sts_160 - 1); in mt7915_set_stream_he_txbf_caps()
950 elem->phy_cap_info[5] |= c; in mt7915_set_stream_he_txbf_caps()
955 elem->phy_cap_info[4] |= IEEE80211_HE_PHY_CAP4_MU_BEAMFORMER; in mt7915_set_stream_he_txbf_caps()
959 elem->phy_cap_info[6] |= c; in mt7915_set_stream_he_txbf_caps()
961 if (!is_mt7915(&dev->mt76)) { in mt7915_set_stream_he_txbf_caps()
964 elem->phy_cap_info[7] |= c; in mt7915_set_stream_he_txbf_caps()
972 struct mt7915_dev *dev = phy->dev; in mt7915_init_he_caps()
973 int i, idx = 0, nss = hweight8(phy->mt76->antenna_mask); in mt7915_init_he_caps()
978 if (!is_mt7915(&dev->mt76)) in mt7915_init_he_caps()
980 else if (!dev->dbdc_support) in mt7915_init_he_caps()
1002 &he_cap->he_cap_elem; in mt7915_init_he_caps()
1004 &he_cap->he_mcs_nss_supp; in mt7915_init_he_caps()
1018 he_cap->has_he = true; in mt7915_init_he_caps()
1020 he_cap_elem->mac_cap_info[0] = in mt7915_init_he_caps()
1022 he_cap_elem->mac_cap_info[3] = in mt7915_init_he_caps()
1025 he_cap_elem->mac_cap_info[4] = in mt7915_init_he_caps()
1029 he_cap_elem->phy_cap_info[0] = in mt7915_init_he_caps()
1032 he_cap_elem->phy_cap_info[0] = in mt7915_init_he_caps()
1036 he_cap_elem->phy_cap_info[0] = in mt7915_init_he_caps()
1039 he_cap_elem->phy_cap_info[1] = in mt7915_init_he_caps()
1041 he_cap_elem->phy_cap_info[2] = in mt7915_init_he_caps()
1047 he_cap_elem->mac_cap_info[0] |= in mt7915_init_he_caps()
1049 he_cap_elem->mac_cap_info[2] |= in mt7915_init_he_caps()
1051 he_cap_elem->mac_cap_info[4] |= in mt7915_init_he_caps()
1053 he_cap_elem->mac_cap_info[5] |= in mt7915_init_he_caps()
1055 he_cap_elem->phy_cap_info[3] |= in mt7915_init_he_caps()
1058 he_cap_elem->phy_cap_info[6] |= in mt7915_init_he_caps()
1061 he_cap_elem->phy_cap_info[9] |= in mt7915_init_he_caps()
1066 he_cap_elem->mac_cap_info[1] |= in mt7915_init_he_caps()
1070 he_cap_elem->phy_cap_info[0] |= in mt7915_init_he_caps()
1073 he_cap_elem->phy_cap_info[0] |= in mt7915_init_he_caps()
1076 he_cap_elem->phy_cap_info[1] |= in mt7915_init_he_caps()
1079 he_cap_elem->phy_cap_info[3] |= in mt7915_init_he_caps()
1082 he_cap_elem->phy_cap_info[6] |= in mt7915_init_he_caps()
1086 he_cap_elem->phy_cap_info[7] |= in mt7915_init_he_caps()
1089 he_cap_elem->phy_cap_info[8] |= in mt7915_init_he_caps()
1093 he_cap_elem->phy_cap_info[8] |= in mt7915_init_he_caps()
1096 he_cap_elem->phy_cap_info[9] |= in mt7915_init_he_caps()
1107 he_mcs->rx_mcs_80 = cpu_to_le16(mcs_map); in mt7915_init_he_caps()
1108 he_mcs->tx_mcs_80 = cpu_to_le16(mcs_map); in mt7915_init_he_caps()
1109 he_mcs->rx_mcs_160 = cpu_to_le16(mcs_map_160); in mt7915_init_he_caps()
1110 he_mcs->tx_mcs_160 = cpu_to_le16(mcs_map_160); in mt7915_init_he_caps()
1114 memset(he_cap->ppe_thres, 0, sizeof(he_cap->ppe_thres)); in mt7915_init_he_caps()
1115 if (he_cap_elem->phy_cap_info[6] & in mt7915_init_he_caps()
1117 mt76_connac_gen_ppe_thresh(he_cap->ppe_thres, nss); in mt7915_init_he_caps()
1119 he_cap_elem->phy_cap_info[9] |= in mt7915_init_he_caps()
1150 if (phy->mt76->cap.has_2ghz) { in mt7915_set_stream_he_caps()
1151 data = phy->iftype[NL80211_BAND_2GHZ]; in mt7915_set_stream_he_caps()
1154 band = &phy->mt76->sband_2g.sband; in mt7915_set_stream_he_caps()
1158 if (phy->mt76->cap.has_5ghz) { in mt7915_set_stream_he_caps()
1159 data = phy->iftype[NL80211_BAND_5GHZ]; in mt7915_set_stream_he_caps()
1162 band = &phy->mt76->sband_5g.sband; in mt7915_set_stream_he_caps()
1166 if (phy->mt76->cap.has_6ghz) { in mt7915_set_stream_he_caps()
1167 data = phy->iftype[NL80211_BAND_6GHZ]; in mt7915_set_stream_he_caps()
1170 band = &phy->mt76->sband_6g.sband; in mt7915_set_stream_he_caps()
1178 struct mt76_phy *mphy = dev->mt76.phys[MT_BAND1]; in mt7915_unregister_ext_phy()
1185 ieee80211_free_hw(mphy->hw); in mt7915_unregister_ext_phy()
1191 mt76_connac2_tx_token_put(&dev->mt76); in mt7915_stop_hardware()
1193 tasklet_disable(&dev->mt76.irq_tasklet); in mt7915_stop_hardware()
1195 if (is_mt798x(&dev->mt76)) in mt7915_stop_hardware()
1204 dev->phy.dev = dev; in mt7915_register_device()
1205 dev->phy.mt76 = &dev->mt76.phy; in mt7915_register_device()
1206 dev->mt76.phy.priv = &dev->phy; in mt7915_register_device()
1207 INIT_WORK(&dev->rc_work, mt7915_mac_sta_rc_work); in mt7915_register_device()
1208 INIT_DELAYED_WORK(&dev->mphy.mac_work, mt7915_mac_work); in mt7915_register_device()
1209 INIT_LIST_HEAD(&dev->sta_rc_list); in mt7915_register_device()
1210 INIT_LIST_HEAD(&dev->twt_list); in mt7915_register_device()
1212 init_waitqueue_head(&dev->reset_wait); in mt7915_register_device()
1213 INIT_WORK(&dev->reset_work, mt7915_mac_reset_work); in mt7915_register_device()
1214 INIT_WORK(&dev->dump_work, mt7915_mac_dump_work); in mt7915_register_device()
1215 mutex_init(&dev->dump_mutex); in mt7915_register_device()
1217 dev->dbdc_support = mt7915_band_config(dev); in mt7915_register_device()
1227 mt7915_init_wiphy(&dev->phy); in mt7915_register_device()
1230 dev->mt76.test_ops = &mt7915_testmode_ops; in mt7915_register_device()
1233 ret = mt76_register_device(&dev->mt76, true, mt76_rates, in mt7915_register_device()
1238 ret = mt7915_thermal_init(&dev->phy); in mt7915_register_device()
1242 ieee80211_queue_work(mt76_hw(dev), &dev->init_work); in mt7915_register_device()
1250 dev->recovery.hw_init_done = true; in mt7915_register_device()
1252 ret = mt7915_init_debugfs(&dev->phy); in mt7915_register_device()
1263 mt7915_unregister_thermal(&dev->phy); in mt7915_register_device()
1265 mt76_unregister_device(&dev->mt76); in mt7915_register_device()
1270 ieee80211_free_hw(phy2->mt76->hw); in mt7915_register_device()
1278 mt7915_unregister_thermal(&dev->phy); in mt7915_unregister_device()
1279 mt76_unregister_device(&dev->mt76); in mt7915_unregister_device()
1282 mt76_free_device(&dev->mt76); in mt7915_unregister_device()