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()
200 if (sysfs_create_link(&wiphy->dev.kobj, &cdev->device.kobj, in mt7915_thermal_init()
214 hwmon = devm_hwmon_device_register_with_groups(&wiphy->dev, name, phy, in mt7915_thermal_init()
225 struct mt7915_dev *dev; in mt7915_led_set_config() local
230 dev = container_of(mphy->dev, struct mt7915_dev, mt76); in mt7915_led_set_config()
236 mt76_wr(dev, MT_LED_STATUS_0(mphy->band_idx), val); in mt7915_led_set_config()
237 mt76_wr(dev, MT_LED_STATUS_1(mphy->band_idx), val); in mt7915_led_set_config()
240 mt76_wr(dev, MT_LED_EN(mphy->band_idx), 1); in mt7915_led_set_config()
244 if (dev->mphy.leds.al) in mt7915_led_set_config()
249 mt76_wr(dev, MT_LED_CTRL(mphy->band_idx), val); in mt7915_led_set_config()
250 mt76_clear(dev, MT_LED_CTRL(mphy->band_idx), MT_LED_CTRL_KICK); in mt7915_led_set_config()
281 void mt7915_init_txpower(struct mt7915_dev *dev, in mt7915_init_txpower() argument
284 int i, n_chains = hweight8(dev->mphy.antenna_mask); in mt7915_init_txpower()
286 int pwr_delta = mt7915_eeprom_get_power_delta(dev, sband->band); in mt7915_init_txpower()
297 val = mt7915_eeprom_get_target_power(dev, chan, j); in mt7915_init_txpower()
302 target_power = mt76_get_rate_power_limits(&dev->mphy, chan, in mt7915_init_txpower()
318 struct mt7915_dev *dev = mt7915_hw_dev(hw); in mt7915_regd_notifier() local
322 memcpy(dev->mt76.alpha2, request->alpha2, sizeof(dev->mt76.alpha2)); in mt7915_regd_notifier()
323 dev->mt76.region = request->dfs_region; in mt7915_regd_notifier()
325 if (dev->mt76.region == NL80211_DFS_UNSET) in mt7915_regd_notifier()
328 mt7915_init_txpower(dev, &mphy->sband_2g.sband); in mt7915_regd_notifier()
329 mt7915_init_txpower(dev, &mphy->sband_5g.sband); in mt7915_regd_notifier()
330 mt7915_init_txpower(dev, &mphy->sband_6g.sband); in mt7915_regd_notifier()
341 struct mt76_dev *mdev = &phy->dev->mt76; in mt7915_init_wiphy()
343 struct mt7915_dev *dev = phy->dev; in mt7915_init_wiphy() local
375 if (!is_mt7915(&dev->mt76)) in mt7915_init_wiphy()
378 if (!mdev->dev->of_node || in mt7915_init_wiphy()
379 !of_property_read_bool(mdev->dev->of_node, in mt7915_init_wiphy()
410 if (is_mt7915(&dev->mt76)) { in mt7915_init_wiphy()
415 if (!dev->dbdc_support) in mt7915_init_wiphy()
430 if (!is_mt7915(&dev->mt76) || !dev->dbdc_support) in mt7915_init_wiphy()
449 mt7915_mac_init_band(struct mt7915_dev *dev, u8 band) in mt7915_mac_init_band() argument
453 mt76_rmw_field(dev, MT_TMAC_CTCR0(band), in mt7915_mac_init_band()
455 mt76_set(dev, MT_TMAC_CTCR0(band), in mt7915_mac_init_band()
465 mt76_rmw(dev, MT_MDP_BNRCFR0(band), mask, set); in mt7915_mac_init_band()
473 mt76_rmw(dev, MT_MDP_BNRCFR1(band), mask, set); in mt7915_mac_init_band()
475 mt76_rmw_field(dev, MT_DMA_DCR0(band), MT_DMA_DCR0_MAX_RX_LEN, 0x680); in mt7915_mac_init_band()
478 mt76_clear(dev, MT_DMA_DCR0(band), MT_DMA_DCR0_RXD_G5_EN); in mt7915_mac_init_band()
481 mt76_wr(dev, MT_WF_RMAC_RSVD0(band), MT_WF_RMAC_RSVD0_EIFS_CLR); in mt7915_mac_init_band()
484 mt76_clear(dev, MT_WF_RMAC_MIB_AIRTIME1(band), in mt7915_mac_init_band()
486 mt76_clear(dev, MT_WF_RMAC_MIB_AIRTIME3(band), in mt7915_mac_init_band()
488 mt76_clear(dev, MT_WF_RMAC_MIB_AIRTIME4(band), in mt7915_mac_init_band()
495 mt76_rmw(dev, MT_WF_RMAC_MIB_AIRTIME0(band), mask, set); in mt7915_mac_init_band()
501 mt76_rmw(dev, MT_WTBLOFF_TOP_RSCR(band), mask, set); in mt7915_mac_init_band()
506 if (mtk_wed_device_active(&dev->mt76.mmio.wed)) in mt7915_mac_init_band()
507 mt76_set(dev, MT_AGG_ACR4(band), MT_AGG_ACR_PPDU_TXS2H); in mt7915_mac_init_band()
511 mt7915_init_led_mux(struct mt7915_dev *dev) in mt7915_init_led_mux() argument
516 if (dev->dbdc_support) { in mt7915_init_led_mux()
517 switch (mt76_chip(&dev->mt76)) { in mt7915_init_led_mux()
519 mt76_rmw_field(dev, MT_LED_GPIO_MUX2, in mt7915_init_led_mux()
521 mt76_rmw_field(dev, MT_LED_GPIO_MUX3, in mt7915_init_led_mux()
525 mt76_rmw_field(dev, MT_LED_GPIO_MUX0, in mt7915_init_led_mux()
527 mt76_rmw_field(dev, MT_LED_GPIO_MUX0, in mt7915_init_led_mux()
531 mt76_rmw_field(dev, MT_LED_GPIO_MUX1, in mt7915_init_led_mux()
533 mt76_rmw_field(dev, MT_LED_GPIO_MUX1, in mt7915_init_led_mux()
539 } else if (dev->mphy.leds.pin) { in mt7915_init_led_mux()
540 switch (mt76_chip(&dev->mt76)) { in mt7915_init_led_mux()
542 mt76_rmw_field(dev, MT_LED_GPIO_MUX3, in mt7915_init_led_mux()
546 mt76_rmw_field(dev, MT_LED_GPIO_MUX0, in mt7915_init_led_mux()
550 mt76_rmw_field(dev, MT_LED_GPIO_MUX1, in mt7915_init_led_mux()
557 switch (mt76_chip(&dev->mt76)) { in mt7915_init_led_mux()
559 mt76_rmw_field(dev, MT_LED_GPIO_MUX2, in mt7915_init_led_mux()
563 mt76_rmw_field(dev, MT_LED_GPIO_MUX0, in mt7915_init_led_mux()
567 mt76_rmw_field(dev, MT_LED_GPIO_MUX1, in mt7915_init_led_mux()
576 void mt7915_mac_init(struct mt7915_dev *dev) in mt7915_mac_init() argument
579 u32 rx_len = is_mt7915(&dev->mt76) ? 0x400 : 0x680; in mt7915_mac_init()
582 if (!is_mt7915(&dev->mt76) && dev->hif2) in mt7915_mac_init()
583 mt76_rmw(dev, MT_WF_PP_TOP_RXQ_WFDMA_CF_5, 0, in mt7915_mac_init()
586 mt76_rmw_field(dev, MT_MDP_DCR1, MT_MDP_DCR1_MAX_RX_LEN, rx_len); in mt7915_mac_init()
588 if (!is_mt7915(&dev->mt76)) in mt7915_mac_init()
589 mt76_clear(dev, MT_MDP_DCR2, MT_MDP_DCR2_RX_TRANS_SHORT); in mt7915_mac_init()
591 mt76_clear(dev, MT_PLE_HOST_RPT0, MT_PLE_HOST_RPT0_TX_LATENCY); in mt7915_mac_init()
594 mt76_set(dev, MT_MDP_DCR0, MT_MDP_DCR0_DAMSDU_EN); in mt7915_mac_init()
596 for (i = 0; i < mt7915_wtbl_size(dev); i++) in mt7915_mac_init()
597 mt7915_mac_wtbl_update(dev, i, in mt7915_mac_init()
600 mt7915_mac_init_band(dev, i); in mt7915_mac_init()
602 mt7915_init_led_mux(dev); in mt7915_mac_init()
605 int mt7915_txbf_init(struct mt7915_dev *dev) in mt7915_txbf_init() argument
609 if (dev->dbdc_support) { in mt7915_txbf_init()
610 ret = mt7915_mcu_set_txbf(dev, MT_BF_MODULE_UPDATE); in mt7915_txbf_init()
616 ret = mt7915_mcu_set_txbf(dev, MT_BF_SOUNDING_ON); in mt7915_txbf_init()
621 return mt7915_mcu_set_txbf(dev, MT_BF_TYPE_UPDATE); in mt7915_txbf_init()
625 mt7915_alloc_ext_phy(struct mt7915_dev *dev) in mt7915_alloc_ext_phy() argument
630 if (!dev->dbdc_support) in mt7915_alloc_ext_phy()
633 mphy = mt76_alloc_phy(&dev->mt76, sizeof(*phy), &mt7915_ops, MT_BAND1); in mt7915_alloc_ext_phy()
638 phy->dev = dev; in mt7915_alloc_ext_phy()
648 mt7915_register_ext_phy(struct mt7915_dev *dev, struct mt7915_phy *phy) in mt7915_register_ext_phy() argument
655 mt7915_eeprom_parse_hw_cap(dev, phy); in mt7915_register_ext_phy()
657 memcpy(mphy->macaddr, dev->mt76.eeprom.data + MT_EE_MAC_ADDR2, in mt7915_register_ext_phy()
663 memcpy(mphy->macaddr, dev->mt76.eeprom.data + MT_EE_MAC_ADDR, in mt7915_register_ext_phy()
693 struct mt7915_dev *dev = container_of(work, struct mt7915_dev, in mt7915_init_work() local
696 mt7915_mcu_set_eeprom(dev); in mt7915_init_work()
697 mt7915_mac_init(dev); in mt7915_init_work()
698 mt7915_init_txpower(dev, &dev->mphy.sband_2g.sband); in mt7915_init_work()
699 mt7915_init_txpower(dev, &dev->mphy.sband_5g.sband); in mt7915_init_work()
700 mt7915_init_txpower(dev, &dev->mphy.sband_6g.sband); in mt7915_init_work()
701 mt7915_txbf_init(dev); in mt7915_init_work()
704 void mt7915_wfsys_reset(struct mt7915_dev *dev) in mt7915_wfsys_reset() argument
709 if (is_mt7915(&dev->mt76)) { in mt7915_wfsys_reset()
712 mt76_wr(dev, MT_MCU_WFDMA0_DUMMY_CR, MT_MCU_DUMMY_RANDOM); in mt7915_wfsys_reset()
716 mt76_wr(dev, MT_TOP_PWR_CTRL, val); in mt7915_wfsys_reset()
720 mt76_wr(dev, MT_TOP_PWR_CTRL, val); in mt7915_wfsys_reset()
724 mt76_wr(dev, MT_TOP_PWR_CTRL, val); in mt7915_wfsys_reset()
729 mt76_wr(dev, MT_TOP_PWR_CTRL, val); in mt7915_wfsys_reset()
732 if (!mt76_poll_msec(dev, MT_MCU_WFDMA0_DUMMY_CR, in mt7915_wfsys_reset()
735 dev_err(dev->mt76.dev, "wifi subsystem reset failure\n"); in mt7915_wfsys_reset()
740 mt76_clear(dev, MT_TOP_MISC, MT_TOP_MISC_FW_STATE); in mt7915_wfsys_reset()
743 } else if (is_mt798x(&dev->mt76)) { in mt7915_wfsys_reset()
744 mt7986_wmac_disable(dev); in mt7915_wfsys_reset()
747 mt7986_wmac_enable(dev); in mt7915_wfsys_reset()
750 mt76_set(dev, MT_WF_SUBSYS_RST, 0x1); in mt7915_wfsys_reset()
753 mt76_clear(dev, MT_WF_SUBSYS_RST, 0x1); in mt7915_wfsys_reset()
758 static bool mt7915_band_config(struct mt7915_dev *dev) in mt7915_band_config() argument
762 dev->phy.mt76->band_idx = 0; in mt7915_band_config()
764 if (is_mt798x(&dev->mt76)) { in mt7915_band_config()
765 u32 sku = mt7915_check_adie(dev, true); in mt7915_band_config()
773 dev->phy.mt76->band_idx = 1; in mt7915_band_config()
777 ret = is_mt7915(&dev->mt76) ? in mt7915_band_config()
778 !!(mt76_rr(dev, MT_HW_BOUND) & BIT(5)) : true; in mt7915_band_config()
785 mt7915_init_hardware(struct mt7915_dev *dev, struct mt7915_phy *phy2) in mt7915_init_hardware() argument
789 mt76_wr(dev, MT_INT_MASK_CSR, 0); in mt7915_init_hardware()
790 mt76_wr(dev, MT_INT_SOURCE_CSR, ~0); in mt7915_init_hardware()
792 INIT_WORK(&dev->init_work, mt7915_init_work); in mt7915_init_hardware()
794 ret = mt7915_dma_init(dev, phy2); in mt7915_init_hardware()
798 set_bit(MT76_STATE_INITIALIZED, &dev->mphy.state); in mt7915_init_hardware()
800 ret = mt7915_mcu_init(dev); in mt7915_init_hardware()
804 ret = mt7915_eeprom_init(dev); in mt7915_init_hardware()
808 if (dev->flash_mode) { in mt7915_init_hardware()
809 ret = mt7915_mcu_apply_group_cal(dev); in mt7915_init_hardware()
815 idx = mt76_wcid_alloc(dev->mt76.wcid_mask, MT7915_WTBL_STA); in mt7915_init_hardware()
819 dev->mt76.global_wcid.idx = idx; in mt7915_init_hardware()
820 dev->mt76.global_wcid.hw_key_idx = -1; in mt7915_init_hardware()
821 dev->mt76.global_wcid.tx_info |= MT_WCID_TX_INFO_SET; in mt7915_init_hardware()
822 rcu_assign_pointer(dev->mt76.wcid[idx], &dev->mt76.global_wcid); in mt7915_init_hardware()
860 struct mt7915_dev *dev = phy->dev; in mt7915_set_stream_he_txbf_caps() local
866 if (is_mt7915(&dev->mt76)) { in mt7915_set_stream_he_txbf_caps()
867 if (!dev->dbdc_support) in mt7915_set_stream_he_txbf_caps()
893 if (!is_mt7915(&dev->mt76)) in mt7915_set_stream_he_txbf_caps()
936 if (!is_mt7915(&dev->mt76)) { in mt7915_set_stream_he_txbf_caps()
947 struct mt7915_dev *dev = phy->dev; in mt7915_init_he_caps() local
953 if (!is_mt7915(&dev->mt76)) in mt7915_init_he_caps()
955 else if (!dev->dbdc_support) in mt7915_init_he_caps()
1153 static void mt7915_unregister_ext_phy(struct mt7915_dev *dev) in mt7915_unregister_ext_phy() argument
1155 struct mt7915_phy *phy = mt7915_ext_phy(dev); in mt7915_unregister_ext_phy()
1156 struct mt76_phy *mphy = dev->mt76.phys[MT_BAND1]; in mt7915_unregister_ext_phy()
1166 static void mt7915_stop_hardware(struct mt7915_dev *dev) in mt7915_stop_hardware() argument
1168 mt7915_mcu_exit(dev); in mt7915_stop_hardware()
1169 mt76_connac2_tx_token_put(&dev->mt76); in mt7915_stop_hardware()
1170 mt7915_dma_cleanup(dev); in mt7915_stop_hardware()
1171 tasklet_disable(&dev->mt76.irq_tasklet); in mt7915_stop_hardware()
1173 if (is_mt798x(&dev->mt76)) in mt7915_stop_hardware()
1174 mt7986_wmac_disable(dev); in mt7915_stop_hardware()
1177 int mt7915_register_device(struct mt7915_dev *dev) in mt7915_register_device() argument
1182 dev->phy.dev = dev; in mt7915_register_device()
1183 dev->phy.mt76 = &dev->mt76.phy; in mt7915_register_device()
1184 dev->mt76.phy.priv = &dev->phy; in mt7915_register_device()
1185 INIT_WORK(&dev->rc_work, mt7915_mac_sta_rc_work); in mt7915_register_device()
1186 INIT_DELAYED_WORK(&dev->mphy.mac_work, mt7915_mac_work); in mt7915_register_device()
1187 INIT_LIST_HEAD(&dev->sta_rc_list); in mt7915_register_device()
1188 INIT_LIST_HEAD(&dev->twt_list); in mt7915_register_device()
1190 init_waitqueue_head(&dev->reset_wait); in mt7915_register_device()
1191 INIT_WORK(&dev->reset_work, mt7915_mac_reset_work); in mt7915_register_device()
1192 INIT_WORK(&dev->dump_work, mt7915_mac_dump_work); in mt7915_register_device()
1193 mutex_init(&dev->dump_mutex); in mt7915_register_device()
1195 dev->dbdc_support = mt7915_band_config(dev); in mt7915_register_device()
1197 phy2 = mt7915_alloc_ext_phy(dev); in mt7915_register_device()
1201 ret = mt7915_init_hardware(dev, phy2); in mt7915_register_device()
1205 mt7915_init_wiphy(&dev->phy); in mt7915_register_device()
1208 dev->mt76.test_ops = &mt7915_testmode_ops; in mt7915_register_device()
1211 ret = mt76_register_device(&dev->mt76, true, mt76_rates, in mt7915_register_device()
1216 ret = mt7915_thermal_init(&dev->phy); in mt7915_register_device()
1220 ieee80211_queue_work(mt76_hw(dev), &dev->init_work); in mt7915_register_device()
1223 ret = mt7915_register_ext_phy(dev, phy2); in mt7915_register_device()
1228 dev->recovery.hw_init_done = true; in mt7915_register_device()
1230 ret = mt7915_init_debugfs(&dev->phy); in mt7915_register_device()
1234 ret = mt7915_coredump_register(dev); in mt7915_register_device()
1241 mt7915_unregister_thermal(&dev->phy); in mt7915_register_device()
1243 mt76_unregister_device(&dev->mt76); in mt7915_register_device()
1245 mt7915_stop_hardware(dev); in mt7915_register_device()
1252 void mt7915_unregister_device(struct mt7915_dev *dev) in mt7915_unregister_device() argument
1254 mt7915_unregister_ext_phy(dev); in mt7915_unregister_device()
1255 mt7915_coredump_unregister(dev); in mt7915_unregister_device()
1256 mt7915_unregister_thermal(&dev->phy); in mt7915_unregister_device()
1257 mt76_unregister_device(&dev->mt76); in mt7915_unregister_device()
1258 mt7915_stop_hardware(dev); in mt7915_unregister_device()
1260 mt76_free_device(&dev->mt76); in mt7915_unregister_device()