Lines Matching refs:dev

50 static ssize_t mt7915_thermal_temp_show(struct device *dev,
54 struct mt7915_phy *phy = dev_get_drvdata(dev);
76 static ssize_t mt7915_thermal_temp_store(struct device *dev,
80 struct mt7915_phy *phy = dev_get_drvdata(dev);
88 mutex_lock(&phy->dev->mt76.mutex);
95 dev_err(phy->dev->mt76.dev,
97 mutex_unlock(&phy->dev->mt76.mutex);
102 mutex_unlock(&phy->dev->mt76.mutex);
154 dev_err(phy->dev->mt76.dev,
188 sysfs_remove_link(&wiphy->dev.kobj, "cooling_device");
201 name = devm_kasprintf(&wiphy->dev, GFP_KERNEL, "mt7915_%s",
206 if (sysfs_create_link(&wiphy->dev.kobj, &cdev->device.kobj,
220 hwmon = devm_hwmon_device_register_with_groups(&wiphy->dev, name, phy,
233 struct mt7915_dev *dev;
238 dev = container_of(mphy->dev, struct mt7915_dev, mt76);
244 mt76_wr(dev, MT_LED_STATUS_0(mphy->band_idx), val);
245 mt76_wr(dev, MT_LED_STATUS_1(mphy->band_idx), val);
248 mt76_wr(dev, MT_LED_EN(mphy->band_idx), 1);
252 if (dev->mphy.leds.al)
257 mt76_wr(dev, MT_LED_CTRL(mphy->band_idx), val);
258 mt76_clear(dev, MT_LED_CTRL(mphy->band_idx), MT_LED_CTRL_KICK);
294 void mt7915_init_txpower(struct mt7915_dev *dev,
297 int i, n_chains = hweight8(dev->mphy.antenna_mask);
299 int pwr_delta = mt7915_eeprom_get_power_delta(dev, sband->band);
310 val = mt7915_eeprom_get_target_power(dev, chan, j);
315 target_power = mt76_get_rate_power_limits(&dev->mphy, chan,
331 struct mt7915_dev *dev = mt7915_hw_dev(hw);
335 memcpy(dev->mt76.alpha2, request->alpha2, sizeof(dev->mt76.alpha2));
336 dev->mt76.region = request->dfs_region;
338 if (dev->mt76.region == NL80211_DFS_UNSET)
341 mt7915_init_txpower(dev, &mphy->sband_2g.sband);
342 mt7915_init_txpower(dev, &mphy->sband_5g.sband);
343 mt7915_init_txpower(dev, &mphy->sband_6g.sband);
355 struct mt76_dev *mdev = &phy->dev->mt76;
358 struct mt7915_dev *dev = phy->dev;
390 if (!is_mt7915(&dev->mt76))
394 if (!mdev->dev->of_node ||
395 !of_property_read_bool(mdev->dev->of_node,
427 if (is_mt7915(&dev->mt76)) {
432 if (!dev->dbdc_support)
447 if (!is_mt7915(&dev->mt76) || !dev->dbdc_support)
466 mt7915_mac_init_band(struct mt7915_dev *dev, u8 band)
470 mt76_rmw_field(dev, MT_TMAC_CTCR0(band),
472 mt76_set(dev, MT_TMAC_CTCR0(band),
482 mt76_rmw(dev, MT_MDP_BNRCFR0(band), mask, set);
490 mt76_rmw(dev, MT_MDP_BNRCFR1(band), mask, set);
492 mt76_rmw_field(dev, MT_DMA_DCR0(band), MT_DMA_DCR0_MAX_RX_LEN, 0x680);
495 mt76_clear(dev, MT_DMA_DCR0(band), MT_DMA_DCR0_RXD_G5_EN);
498 mt76_wr(dev, MT_WF_RMAC_RSVD0(band), MT_WF_RMAC_RSVD0_EIFS_CLR);
501 mt76_clear(dev, MT_WF_RMAC_MIB_AIRTIME1(band),
503 mt76_clear(dev, MT_WF_RMAC_MIB_AIRTIME3(band),
505 mt76_clear(dev, MT_WF_RMAC_MIB_AIRTIME4(band),
512 mt76_rmw(dev, MT_WF_RMAC_MIB_AIRTIME0(band), mask, set);
518 mt76_rmw(dev, MT_WTBLOFF_TOP_RSCR(band), mask, set);
523 if (mtk_wed_device_active(&dev->mt76.mmio.wed))
524 mt76_set(dev, MT_AGG_ACR4(band), MT_AGG_ACR_PPDU_TXS2H);
528 mt7915_init_led_mux(struct mt7915_dev *dev)
533 if (dev->dbdc_support) {
534 switch (mt76_chip(&dev->mt76)) {
536 mt76_rmw_field(dev, MT_LED_GPIO_MUX2,
538 mt76_rmw_field(dev, MT_LED_GPIO_MUX3,
542 mt76_rmw_field(dev, MT_LED_GPIO_MUX0,
544 mt76_rmw_field(dev, MT_LED_GPIO_MUX0,
548 mt76_rmw_field(dev, MT_LED_GPIO_MUX1,
550 mt76_rmw_field(dev, MT_LED_GPIO_MUX1,
556 } else if (dev->mphy.leds.pin) {
557 switch (mt76_chip(&dev->mt76)) {
559 mt76_rmw_field(dev, MT_LED_GPIO_MUX3,
563 mt76_rmw_field(dev, MT_LED_GPIO_MUX0,
567 mt76_rmw_field(dev, MT_LED_GPIO_MUX1,
574 switch (mt76_chip(&dev->mt76)) {
576 mt76_rmw_field(dev, MT_LED_GPIO_MUX2,
580 mt76_rmw_field(dev, MT_LED_GPIO_MUX0,
584 mt76_rmw_field(dev, MT_LED_GPIO_MUX1,
593 void mt7915_mac_init(struct mt7915_dev *dev)
596 u32 rx_len = is_mt7915(&dev->mt76) ? 0x400 : 0x680;
599 if (!is_mt7915(&dev->mt76) && dev->hif2)
600 mt76_rmw(dev, MT_WF_PP_TOP_RXQ_WFDMA_CF_5, 0,
603 mt76_rmw_field(dev, MT_MDP_DCR1, MT_MDP_DCR1_MAX_RX_LEN, rx_len);
605 if (!is_mt7915(&dev->mt76))
606 mt76_clear(dev, MT_MDP_DCR2, MT_MDP_DCR2_RX_TRANS_SHORT);
608 mt76_clear(dev, MT_PLE_HOST_RPT0, MT_PLE_HOST_RPT0_TX_LATENCY);
611 mt76_set(dev, MT_MDP_DCR0, MT_MDP_DCR0_DAMSDU_EN);
613 for (i = 0; i < mt7915_wtbl_size(dev); i++)
614 mt7915_mac_wtbl_update(dev, i,
617 mt7915_mac_init_band(dev, i);
619 mt7915_init_led_mux(dev);
622 int mt7915_txbf_init(struct mt7915_dev *dev)
626 if (dev->dbdc_support) {
627 ret = mt7915_mcu_set_txbf(dev, MT_BF_MODULE_UPDATE);
633 ret = mt7915_mcu_set_txbf(dev, MT_BF_SOUNDING_ON);
638 return mt7915_mcu_set_txbf(dev, MT_BF_TYPE_UPDATE);
642 mt7915_alloc_ext_phy(struct mt7915_dev *dev)
647 if (!dev->dbdc_support)
650 mphy = mt76_alloc_phy(&dev->mt76, sizeof(*phy), &mt7915_ops, MT_BAND1);
655 phy->dev = dev;
665 mt7915_register_ext_phy(struct mt7915_dev *dev, struct mt7915_phy *phy)
672 mt7915_eeprom_parse_hw_cap(dev, phy);
675 memcpy(mphy->macaddr, dev->mt76.eeprom.data + MT_EE_MAC_ADDR2,
677 memcpy(mphy->macaddr, (u8 *)dev->mt76.eeprom.data + MT_EE_MAC_ADDR2,
685 memcpy(mphy->macaddr, dev->mt76.eeprom.data + MT_EE_MAC_ADDR,
687 memcpy(mphy->macaddr, (u8 *)dev->mt76.eeprom.data + MT_EE_MAC_ADDR,
720 struct mt7915_dev *dev = container_of(work, struct mt7915_dev,
723 mt7915_mcu_set_eeprom(dev);
724 mt7915_mac_init(dev);
725 mt7915_init_txpower(dev, &dev->mphy.sband_2g.sband);
726 mt7915_init_txpower(dev, &dev->mphy.sband_5g.sband);
727 mt7915_init_txpower(dev, &dev->mphy.sband_6g.sband);
728 mt7915_txbf_init(dev);
731 void mt7915_wfsys_reset(struct mt7915_dev *dev)
736 if (is_mt7915(&dev->mt76)) {
739 mt76_wr(dev, MT_MCU_WFDMA0_DUMMY_CR, MT_MCU_DUMMY_RANDOM);
743 mt76_wr(dev, MT_TOP_PWR_CTRL, val);
747 mt76_wr(dev, MT_TOP_PWR_CTRL, val);
751 mt76_wr(dev, MT_TOP_PWR_CTRL, val);
756 mt76_wr(dev, MT_TOP_PWR_CTRL, val);
759 if (!mt76_poll_msec(dev, MT_MCU_WFDMA0_DUMMY_CR,
762 dev_err(dev->mt76.dev, "wifi subsystem reset failure\n");
767 mt76_clear(dev, MT_TOP_MISC, MT_TOP_MISC_FW_STATE);
770 } else if (is_mt798x(&dev->mt76)) {
771 mt7986_wmac_disable(dev);
774 mt7986_wmac_enable(dev);
777 mt76_set(dev, MT_WF_SUBSYS_RST, 0x1);
780 mt76_clear(dev, MT_WF_SUBSYS_RST, 0x1);
785 static bool mt7915_band_config(struct mt7915_dev *dev)
789 dev->phy.mt76->band_idx = 0;
791 if (is_mt798x(&dev->mt76)) {
792 u32 sku = mt7915_check_adie(dev, true);
800 dev->phy.mt76->band_idx = 1;
804 ret = is_mt7915(&dev->mt76) ?
805 !!(mt76_rr(dev, MT_HW_BOUND) & BIT(5)) : true;
812 mt7915_init_hardware(struct mt7915_dev *dev, struct mt7915_phy *phy2)
816 mt76_wr(dev, MT_INT_MASK_CSR, 0);
817 mt76_wr(dev, MT_INT_SOURCE_CSR, ~0);
819 INIT_WORK(&dev->init_work, mt7915_init_work);
821 ret = mt7915_dma_init(dev, phy2);
825 set_bit(MT76_STATE_INITIALIZED, &dev->mphy.state);
827 ret = mt7915_mcu_init(dev);
831 ret = mt7915_eeprom_init(dev);
835 if (dev->flash_mode) {
836 ret = mt7915_mcu_apply_group_cal(dev);
842 idx = mt76_wcid_alloc(dev->mt76.wcid_mask, MT7915_WTBL_STA);
846 dev->mt76.global_wcid.idx = idx;
847 dev->mt76.global_wcid.hw_key_idx = -1;
848 dev->mt76.global_wcid.tx_info |= MT_WCID_TX_INFO_SET;
849 rcu_assign_pointer(dev->mt76.wcid[idx], &dev->mt76.global_wcid);
887 struct mt7915_dev *dev = phy->dev;
893 if (is_mt7915(&dev->mt76)) {
894 if (!dev->dbdc_support)
920 if (!is_mt7915(&dev->mt76))
963 if (!is_mt7915(&dev->mt76)) {
974 struct mt7915_dev *dev = phy->dev;
980 if (!is_mt7915(&dev->mt76))
982 else if (!dev->dbdc_support)
1180 static void mt7915_unregister_ext_phy(struct mt7915_dev *dev)
1182 struct mt7915_phy *phy = mt7915_ext_phy(dev);
1183 struct mt76_phy *mphy = dev->mt76.phys[MT_BAND1];
1195 static void mt7915_stop_hardware(struct mt7915_dev *dev)
1197 mt7915_mcu_exit(dev);
1198 mt76_connac2_tx_token_put(&dev->mt76);
1199 mt7915_dma_cleanup(dev);
1200 tasklet_disable(&dev->mt76.irq_tasklet);
1202 if (is_mt798x(&dev->mt76))
1203 mt7986_wmac_disable(dev);
1206 int mt7915_register_device(struct mt7915_dev *dev)
1211 dev->phy.dev = dev;
1212 dev->phy.mt76 = &dev->mt76.phy;
1213 dev->mt76.phy.priv = &dev->phy;
1214 INIT_WORK(&dev->rc_work, mt7915_mac_sta_rc_work);
1215 INIT_DELAYED_WORK(&dev->mphy.mac_work, mt7915_mac_work);
1216 INIT_LIST_HEAD(&dev->sta_rc_list);
1217 INIT_LIST_HEAD(&dev->twt_list);
1219 init_waitqueue_head(&dev->reset_wait);
1220 INIT_WORK(&dev->reset_work, mt7915_mac_reset_work);
1221 INIT_WORK(&dev->dump_work, mt7915_mac_dump_work);
1222 mutex_init(&dev->dump_mutex);
1224 dev->dbdc_support = mt7915_band_config(dev);
1226 phy2 = mt7915_alloc_ext_phy(dev);
1230 ret = mt7915_init_hardware(dev, phy2);
1234 mt7915_init_wiphy(&dev->phy);
1237 dev->mt76.test_ops = &mt7915_testmode_ops;
1240 ret = mt76_register_device(&dev->mt76, true, mt76_rates,
1245 ret = mt7915_thermal_init(&dev->phy);
1249 ieee80211_queue_work(mt76_hw(dev), &dev->init_work);
1252 ret = mt7915_register_ext_phy(dev, phy2);
1257 dev->recovery.hw_init_done = true;
1260 ret = mt7915_init_debugfs(&dev->phy);
1265 ret = mt7915_coredump_register(dev);
1273 mt7915_unregister_thermal(&dev->phy);
1276 mt76_unregister_device(&dev->mt76);
1278 mt7915_stop_hardware(dev);
1285 void mt7915_unregister_device(struct mt7915_dev *dev)
1287 mt7915_unregister_ext_phy(dev);
1288 mt7915_coredump_unregister(dev);
1290 mt7915_unregister_thermal(&dev->phy);
1292 mt76_unregister_device(&dev->mt76);
1293 mt7915_stop_hardware(dev);
1295 mt76_free_device(&dev->mt76);