Lines Matching refs:dev
46 static ssize_t mt7915_thermal_temp_show(struct device *dev, in mt7915_thermal_temp_show() argument
50 struct mt7915_phy *phy = dev_get_drvdata(dev); in mt7915_thermal_temp_show()
72 static ssize_t mt7915_thermal_temp_store(struct device *dev, in mt7915_thermal_temp_store() argument
76 struct mt7915_phy *phy = dev_get_drvdata(dev); in mt7915_thermal_temp_store()
84 mutex_lock(&phy->dev->mt76.mutex); 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()
98 mutex_unlock(&phy->dev->mt76.mutex); in mt7915_thermal_temp_store()
150 dev_err(phy->dev->mt76.dev, in mt7915_thermal_set_cur_throttle_state()
184 sysfs_remove_link(&wiphy->dev.kobj, "cooling_device"); in mt7915_unregister_thermal()
195 name = devm_kasprintf(&wiphy->dev, GFP_KERNEL, "mt7915_%s", in mt7915_thermal_init()
202 if (sysfs_create_link(&wiphy->dev.kobj, &cdev->device.kobj, in mt7915_thermal_init()
216 hwmon = devm_hwmon_device_register_with_groups(&wiphy->dev, name, phy, in mt7915_thermal_init()
227 struct mt7915_dev *dev; in mt7915_led_set_config() local
232 dev = container_of(mphy->dev, struct mt7915_dev, mt76); in mt7915_led_set_config()
238 mt76_wr(dev, MT_LED_STATUS_0(mphy->band_idx), val); in mt7915_led_set_config()
239 mt76_wr(dev, MT_LED_STATUS_1(mphy->band_idx), val); in mt7915_led_set_config()
242 mt76_wr(dev, MT_LED_EN(mphy->band_idx), 1); in mt7915_led_set_config()
246 if (dev->mphy.leds.al) in mt7915_led_set_config()
251 mt76_wr(dev, MT_LED_CTRL(mphy->band_idx), val); in mt7915_led_set_config()
252 mt76_clear(dev, MT_LED_CTRL(mphy->band_idx), MT_LED_CTRL_KICK); in mt7915_led_set_config()
283 void mt7915_init_txpower(struct mt7915_dev *dev, in mt7915_init_txpower() argument
286 int i, n_chains = hweight8(dev->mphy.antenna_mask); in mt7915_init_txpower()
288 int pwr_delta = mt7915_eeprom_get_power_delta(dev, sband->band); in mt7915_init_txpower()
299 val = mt7915_eeprom_get_target_power(dev, chan, j); in mt7915_init_txpower()
304 target_power = mt76_get_rate_power_limits(&dev->mphy, chan, in mt7915_init_txpower()
320 struct mt7915_dev *dev = mt7915_hw_dev(hw); in mt7915_regd_notifier() local
324 memcpy(dev->mt76.alpha2, request->alpha2, sizeof(dev->mt76.alpha2)); in mt7915_regd_notifier()
325 dev->mt76.region = request->dfs_region; in mt7915_regd_notifier()
327 if (dev->mt76.region == NL80211_DFS_UNSET) in mt7915_regd_notifier()
330 mt7915_init_txpower(dev, &mphy->sband_2g.sband); in mt7915_regd_notifier()
331 mt7915_init_txpower(dev, &mphy->sband_5g.sband); in mt7915_regd_notifier()
332 mt7915_init_txpower(dev, &mphy->sband_6g.sband); in mt7915_regd_notifier()
343 struct mt76_dev *mdev = &phy->dev->mt76; in mt7915_init_wiphy()
345 struct mt7915_dev *dev = phy->dev; in mt7915_init_wiphy() local
377 if (!is_mt7915(&dev->mt76)) in mt7915_init_wiphy()
380 if (!mdev->dev->of_node || in mt7915_init_wiphy()
381 !of_property_read_bool(mdev->dev->of_node, in mt7915_init_wiphy()
413 if (is_mt7915(&dev->mt76)) { in mt7915_init_wiphy()
418 if (!dev->dbdc_support) in mt7915_init_wiphy()
433 if (!is_mt7915(&dev->mt76) || !dev->dbdc_support) in mt7915_init_wiphy()
452 mt7915_mac_init_band(struct mt7915_dev *dev, u8 band) in mt7915_mac_init_band() argument
456 mt76_rmw_field(dev, MT_TMAC_CTCR0(band), in mt7915_mac_init_band()
458 mt76_set(dev, MT_TMAC_CTCR0(band), in mt7915_mac_init_band()
468 mt76_rmw(dev, MT_MDP_BNRCFR0(band), mask, set); in mt7915_mac_init_band()
476 mt76_rmw(dev, MT_MDP_BNRCFR1(band), mask, set); in mt7915_mac_init_band()
478 mt76_rmw_field(dev, MT_DMA_DCR0(band), MT_DMA_DCR0_MAX_RX_LEN, 0x680); in mt7915_mac_init_band()
481 mt76_clear(dev, MT_DMA_DCR0(band), MT_DMA_DCR0_RXD_G5_EN); in mt7915_mac_init_band()
484 mt76_wr(dev, MT_WF_RMAC_RSVD0(band), MT_WF_RMAC_RSVD0_EIFS_CLR); in mt7915_mac_init_band()
487 mt76_clear(dev, MT_WF_RMAC_MIB_AIRTIME1(band), in mt7915_mac_init_band()
489 mt76_clear(dev, MT_WF_RMAC_MIB_AIRTIME3(band), in mt7915_mac_init_band()
491 mt76_clear(dev, MT_WF_RMAC_MIB_AIRTIME4(band), in mt7915_mac_init_band()
498 mt76_rmw(dev, MT_WF_RMAC_MIB_AIRTIME0(band), mask, set); in mt7915_mac_init_band()
504 mt76_rmw(dev, MT_WTBLOFF_TOP_RSCR(band), mask, set); in mt7915_mac_init_band()
509 if (mtk_wed_device_active(&dev->mt76.mmio.wed)) in mt7915_mac_init_band()
510 mt76_set(dev, MT_AGG_ACR4(band), MT_AGG_ACR_PPDU_TXS2H); in mt7915_mac_init_band()
514 mt7915_init_led_mux(struct mt7915_dev *dev) in mt7915_init_led_mux() argument
519 if (dev->dbdc_support) { in mt7915_init_led_mux()
520 switch (mt76_chip(&dev->mt76)) { in mt7915_init_led_mux()
522 mt76_rmw_field(dev, MT_LED_GPIO_MUX2, in mt7915_init_led_mux()
524 mt76_rmw_field(dev, MT_LED_GPIO_MUX3, in mt7915_init_led_mux()
528 mt76_rmw_field(dev, MT_LED_GPIO_MUX0, in mt7915_init_led_mux()
530 mt76_rmw_field(dev, MT_LED_GPIO_MUX0, in mt7915_init_led_mux()
534 mt76_rmw_field(dev, MT_LED_GPIO_MUX1, in mt7915_init_led_mux()
536 mt76_rmw_field(dev, MT_LED_GPIO_MUX1, in mt7915_init_led_mux()
542 } else if (dev->mphy.leds.pin) { in mt7915_init_led_mux()
543 switch (mt76_chip(&dev->mt76)) { in mt7915_init_led_mux()
545 mt76_rmw_field(dev, MT_LED_GPIO_MUX3, in mt7915_init_led_mux()
549 mt76_rmw_field(dev, MT_LED_GPIO_MUX0, in mt7915_init_led_mux()
553 mt76_rmw_field(dev, MT_LED_GPIO_MUX1, in mt7915_init_led_mux()
560 switch (mt76_chip(&dev->mt76)) { in mt7915_init_led_mux()
562 mt76_rmw_field(dev, MT_LED_GPIO_MUX2, in mt7915_init_led_mux()
566 mt76_rmw_field(dev, MT_LED_GPIO_MUX0, in mt7915_init_led_mux()
570 mt76_rmw_field(dev, MT_LED_GPIO_MUX1, in mt7915_init_led_mux()
579 void mt7915_mac_init(struct mt7915_dev *dev) in mt7915_mac_init() argument
582 u32 rx_len = is_mt7915(&dev->mt76) ? 0x400 : 0x680; in mt7915_mac_init()
585 if (!is_mt7915(&dev->mt76) && dev->hif2) in mt7915_mac_init()
586 mt76_rmw(dev, MT_WF_PP_TOP_RXQ_WFDMA_CF_5, 0, in mt7915_mac_init()
589 mt76_rmw_field(dev, MT_MDP_DCR1, MT_MDP_DCR1_MAX_RX_LEN, rx_len); in mt7915_mac_init()
591 if (!is_mt7915(&dev->mt76)) in mt7915_mac_init()
592 mt76_clear(dev, MT_MDP_DCR2, MT_MDP_DCR2_RX_TRANS_SHORT); in mt7915_mac_init()
594 mt76_clear(dev, MT_PLE_HOST_RPT0, MT_PLE_HOST_RPT0_TX_LATENCY); in mt7915_mac_init()
597 mt76_set(dev, MT_MDP_DCR0, MT_MDP_DCR0_DAMSDU_EN); in mt7915_mac_init()
599 for (i = 0; i < mt7915_wtbl_size(dev); i++) in mt7915_mac_init()
600 mt7915_mac_wtbl_update(dev, i, in mt7915_mac_init()
603 mt7915_mac_init_band(dev, i); in mt7915_mac_init()
605 mt7915_init_led_mux(dev); in mt7915_mac_init()
608 int mt7915_txbf_init(struct mt7915_dev *dev) in mt7915_txbf_init() argument
612 if (dev->dbdc_support) { in mt7915_txbf_init()
613 ret = mt7915_mcu_set_txbf(dev, MT_BF_MODULE_UPDATE); in mt7915_txbf_init()
619 ret = mt7915_mcu_set_txbf(dev, MT_BF_SOUNDING_ON); in mt7915_txbf_init()
624 return mt7915_mcu_set_txbf(dev, MT_BF_TYPE_UPDATE); in mt7915_txbf_init()
628 mt7915_alloc_ext_phy(struct mt7915_dev *dev) in mt7915_alloc_ext_phy() argument
633 if (!dev->dbdc_support) in mt7915_alloc_ext_phy()
636 mphy = mt76_alloc_phy(&dev->mt76, sizeof(*phy), &mt7915_ops, MT_BAND1); in mt7915_alloc_ext_phy()
641 phy->dev = dev; in mt7915_alloc_ext_phy()
651 mt7915_register_ext_phy(struct mt7915_dev *dev, struct mt7915_phy *phy) in mt7915_register_ext_phy() argument
658 mt7915_eeprom_parse_hw_cap(dev, phy); in mt7915_register_ext_phy()
660 memcpy(mphy->macaddr, dev->mt76.eeprom.data + MT_EE_MAC_ADDR2, in mt7915_register_ext_phy()
666 memcpy(mphy->macaddr, dev->mt76.eeprom.data + MT_EE_MAC_ADDR, in mt7915_register_ext_phy()
696 struct mt7915_dev *dev = container_of(work, struct mt7915_dev, in mt7915_init_work() local
699 mt7915_mcu_set_eeprom(dev); in mt7915_init_work()
700 mt7915_mac_init(dev); in mt7915_init_work()
701 mt7915_init_txpower(dev, &dev->mphy.sband_2g.sband); in mt7915_init_work()
702 mt7915_init_txpower(dev, &dev->mphy.sband_5g.sband); in mt7915_init_work()
703 mt7915_init_txpower(dev, &dev->mphy.sband_6g.sband); in mt7915_init_work()
704 mt7915_txbf_init(dev); in mt7915_init_work()
707 void mt7915_wfsys_reset(struct mt7915_dev *dev) in mt7915_wfsys_reset() argument
712 if (is_mt7915(&dev->mt76)) { in mt7915_wfsys_reset()
715 mt76_wr(dev, MT_MCU_WFDMA0_DUMMY_CR, MT_MCU_DUMMY_RANDOM); in mt7915_wfsys_reset()
719 mt76_wr(dev, MT_TOP_PWR_CTRL, val); in mt7915_wfsys_reset()
723 mt76_wr(dev, MT_TOP_PWR_CTRL, val); in mt7915_wfsys_reset()
727 mt76_wr(dev, MT_TOP_PWR_CTRL, val); in mt7915_wfsys_reset()
732 mt76_wr(dev, MT_TOP_PWR_CTRL, val); in mt7915_wfsys_reset()
735 if (!mt76_poll_msec(dev, MT_MCU_WFDMA0_DUMMY_CR, in mt7915_wfsys_reset()
738 dev_err(dev->mt76.dev, "wifi subsystem reset failure\n"); in mt7915_wfsys_reset()
743 mt76_clear(dev, MT_TOP_MISC, MT_TOP_MISC_FW_STATE); in mt7915_wfsys_reset()
746 } else if (is_mt798x(&dev->mt76)) { in mt7915_wfsys_reset()
747 mt7986_wmac_disable(dev); in mt7915_wfsys_reset()
750 mt7986_wmac_enable(dev); in mt7915_wfsys_reset()
753 mt76_set(dev, MT_WF_SUBSYS_RST, 0x1); in mt7915_wfsys_reset()
756 mt76_clear(dev, MT_WF_SUBSYS_RST, 0x1); in mt7915_wfsys_reset()
761 static bool mt7915_band_config(struct mt7915_dev *dev) in mt7915_band_config() argument
765 dev->phy.mt76->band_idx = 0; in mt7915_band_config()
767 if (is_mt798x(&dev->mt76)) { in mt7915_band_config()
768 u32 sku = mt7915_check_adie(dev, true); in mt7915_band_config()
776 dev->phy.mt76->band_idx = 1; in mt7915_band_config()
780 ret = is_mt7915(&dev->mt76) ? in mt7915_band_config()
781 !!(mt76_rr(dev, MT_HW_BOUND) & BIT(5)) : true; in mt7915_band_config()
788 mt7915_init_hardware(struct mt7915_dev *dev, struct mt7915_phy *phy2) in mt7915_init_hardware() argument
792 mt76_wr(dev, MT_INT_MASK_CSR, 0); in mt7915_init_hardware()
793 mt76_wr(dev, MT_INT_SOURCE_CSR, ~0); in mt7915_init_hardware()
795 INIT_WORK(&dev->init_work, mt7915_init_work); in mt7915_init_hardware()
797 ret = mt7915_dma_init(dev, phy2); in mt7915_init_hardware()
801 set_bit(MT76_STATE_INITIALIZED, &dev->mphy.state); in mt7915_init_hardware()
803 ret = mt7915_mcu_init(dev); in mt7915_init_hardware()
807 ret = mt7915_eeprom_init(dev); in mt7915_init_hardware()
811 if (dev->flash_mode) { in mt7915_init_hardware()
812 ret = mt7915_mcu_apply_group_cal(dev); in mt7915_init_hardware()
818 idx = mt76_wcid_alloc(dev->mt76.wcid_mask, MT7915_WTBL_STA); in mt7915_init_hardware()
822 dev->mt76.global_wcid.idx = idx; in mt7915_init_hardware()
823 dev->mt76.global_wcid.hw_key_idx = -1; in mt7915_init_hardware()
824 dev->mt76.global_wcid.tx_info |= MT_WCID_TX_INFO_SET; in mt7915_init_hardware()
825 rcu_assign_pointer(dev->mt76.wcid[idx], &dev->mt76.global_wcid); in mt7915_init_hardware()
863 struct mt7915_dev *dev = phy->dev; in mt7915_set_stream_he_txbf_caps() local
869 if (is_mt7915(&dev->mt76)) { in mt7915_set_stream_he_txbf_caps()
870 if (!dev->dbdc_support) in mt7915_set_stream_he_txbf_caps()
896 if (!is_mt7915(&dev->mt76)) in mt7915_set_stream_he_txbf_caps()
939 if (!is_mt7915(&dev->mt76)) { in mt7915_set_stream_he_txbf_caps()
950 struct mt7915_dev *dev = phy->dev; in mt7915_init_he_caps() local
956 if (!is_mt7915(&dev->mt76)) in mt7915_init_he_caps()
958 else if (!dev->dbdc_support) in mt7915_init_he_caps()
1156 static void mt7915_unregister_ext_phy(struct mt7915_dev *dev) in mt7915_unregister_ext_phy() argument
1158 struct mt7915_phy *phy = mt7915_ext_phy(dev); in mt7915_unregister_ext_phy()
1159 struct mt76_phy *mphy = dev->mt76.phys[MT_BAND1]; in mt7915_unregister_ext_phy()
1169 static void mt7915_stop_hardware(struct mt7915_dev *dev) in mt7915_stop_hardware() argument
1171 mt7915_mcu_exit(dev); in mt7915_stop_hardware()
1172 mt76_connac2_tx_token_put(&dev->mt76); in mt7915_stop_hardware()
1173 mt7915_dma_cleanup(dev); in mt7915_stop_hardware()
1174 tasklet_disable(&dev->mt76.irq_tasklet); in mt7915_stop_hardware()
1176 if (is_mt798x(&dev->mt76)) in mt7915_stop_hardware()
1177 mt7986_wmac_disable(dev); in mt7915_stop_hardware()
1180 int mt7915_register_device(struct mt7915_dev *dev) in mt7915_register_device() argument
1185 dev->phy.dev = dev; in mt7915_register_device()
1186 dev->phy.mt76 = &dev->mt76.phy; in mt7915_register_device()
1187 dev->mt76.phy.priv = &dev->phy; in mt7915_register_device()
1188 INIT_WORK(&dev->rc_work, mt7915_mac_sta_rc_work); in mt7915_register_device()
1189 INIT_DELAYED_WORK(&dev->mphy.mac_work, mt7915_mac_work); in mt7915_register_device()
1190 INIT_LIST_HEAD(&dev->sta_rc_list); in mt7915_register_device()
1191 INIT_LIST_HEAD(&dev->twt_list); in mt7915_register_device()
1193 init_waitqueue_head(&dev->reset_wait); in mt7915_register_device()
1194 INIT_WORK(&dev->reset_work, mt7915_mac_reset_work); in mt7915_register_device()
1195 INIT_WORK(&dev->dump_work, mt7915_mac_dump_work); in mt7915_register_device()
1196 mutex_init(&dev->dump_mutex); in mt7915_register_device()
1198 dev->dbdc_support = mt7915_band_config(dev); in mt7915_register_device()
1200 phy2 = mt7915_alloc_ext_phy(dev); in mt7915_register_device()
1204 ret = mt7915_init_hardware(dev, phy2); in mt7915_register_device()
1208 mt7915_init_wiphy(&dev->phy); in mt7915_register_device()
1211 dev->mt76.test_ops = &mt7915_testmode_ops; in mt7915_register_device()
1214 ret = mt76_register_device(&dev->mt76, true, mt76_rates, in mt7915_register_device()
1219 ret = mt7915_thermal_init(&dev->phy); in mt7915_register_device()
1223 ieee80211_queue_work(mt76_hw(dev), &dev->init_work); in mt7915_register_device()
1226 ret = mt7915_register_ext_phy(dev, phy2); in mt7915_register_device()
1231 dev->recovery.hw_init_done = true; in mt7915_register_device()
1233 ret = mt7915_init_debugfs(&dev->phy); in mt7915_register_device()
1237 ret = mt7915_coredump_register(dev); in mt7915_register_device()
1244 mt7915_unregister_thermal(&dev->phy); in mt7915_register_device()
1246 mt76_unregister_device(&dev->mt76); in mt7915_register_device()
1248 mt7915_stop_hardware(dev); in mt7915_register_device()
1255 void mt7915_unregister_device(struct mt7915_dev *dev) in mt7915_unregister_device() argument
1257 mt7915_unregister_ext_phy(dev); in mt7915_unregister_device()
1258 mt7915_coredump_unregister(dev); in mt7915_unregister_device()
1259 mt7915_unregister_thermal(&dev->phy); in mt7915_unregister_device()
1260 mt76_unregister_device(&dev->mt76); in mt7915_unregister_device()
1261 mt7915_stop_hardware(dev); in mt7915_unregister_device()
1263 mt76_free_device(&dev->mt76); in mt7915_unregister_device()