Lines Matching +full:efuse +full:- +full:settings

1 // SPDX-License-Identifier: GPL-2.0-only
3 * RTL8XXXU mac80211 USB driver - 8710bu aka 8188gu specific subdriver
8 * Copyright (c) 2014 - 2017 Jes Sorensen <Jes.Sorensen@gmail.com>
11 * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
465 struct device *dev = &priv->udev->dev; in rtl8710b_indirect_read32()
475 mutex_lock(&priv->syson_indirect_access_mutex); in rtl8710b_indirect_read32()
482 while ((val32 & BIT(31)) && (--polling_count > 0)); in rtl8710b_indirect_read32()
490 mutex_unlock(&priv->syson_indirect_access_mutex); in rtl8710b_indirect_read32()
500 struct device *dev = &priv->udev->dev; in rtl8710b_indirect_write32()
510 mutex_lock(&priv->syson_indirect_access_mutex); in rtl8710b_indirect_write32()
518 while ((val32 & BIT(31)) && (--polling_count > 0)); in rtl8710b_indirect_write32()
524 mutex_unlock(&priv->syson_indirect_access_mutex); in rtl8710b_indirect_write32()
559 return -EIO; in rtl8710b_read_efuse8()
573 struct device *dev = &priv->udev->dev; in rtl8710bu_identify_chip()
577 sprintf(priv->chip_name, "8710BU"); in rtl8710bu_identify_chip()
578 priv->rtl_chip = RTL8710B; in rtl8710bu_identify_chip()
579 priv->rf_paths = 1; in rtl8710bu_identify_chip()
580 priv->rx_paths = 1; in rtl8710bu_identify_chip()
581 priv->tx_paths = 1; in rtl8710bu_identify_chip()
582 priv->has_wifi = 1; in rtl8710bu_identify_chip()
585 priv->chip_cut = cfg0 & 0xf; in rtl8710bu_identify_chip()
589 return -EOPNOTSUPP; in rtl8710bu_identify_chip()
597 sprintf(priv->chip_vendor, "SMIC"); in rtl8710bu_identify_chip()
598 priv->vendor_smic = 1; in rtl8710bu_identify_chip()
601 sprintf(priv->chip_vendor, "TSMC"); in rtl8710bu_identify_chip()
604 sprintf(priv->chip_vendor, "UMC"); in rtl8710bu_identify_chip()
605 priv->vendor_umc = 1; in rtl8710bu_identify_chip()
608 sprintf(priv->chip_vendor, "unknown"); in rtl8710bu_identify_chip()
617 if (priv->vendor_umc) { in rtl8710bu_identify_chip()
619 } else if (priv->vendor_smic) { in rtl8710bu_identify_chip()
643 priv->package_type = package_type; in rtl8710bu_identify_chip()
648 priv->rom_rev = cfg2 & 0xf; in rtl8710bu_identify_chip()
680 struct rtl8xxxu_priv *priv = hw->priv; in rtl8710bu_config_channel()
681 bool ht40 = conf_is_ht40(&hw->conf); in rtl8710bu_config_channel()
687 channel = (u8)hw->conf.chandef.chan->hw_value; in rtl8710bu_config_channel()
689 if (conf_is_ht40_plus(&hw->conf)) { in rtl8710bu_config_channel()
693 } else if (conf_is_ht40_minus(&hw->conf)) { in rtl8710bu_config_channel()
695 channel -= 2; in rtl8710bu_config_channel()
850 struct device *dev = &priv->udev->dev; in rtl8710b_read_efuse()
857 priv->boot_eeprom = u32_get_bits(val32, EEPROM_BOOT); in rtl8710b_read_efuse()
858 priv->has_eeprom = u32_get_bits(val32, EEPROM_ENABLE); in rtl8710b_read_efuse()
861 memset(priv->efuse_wifi.raw, 0xff, EFUSE_MAP_LEN); in rtl8710b_read_efuse()
903 if (map_addr >= EFUSE_MAP_LEN - 1) { in rtl8710b_read_efuse()
904 dev_warn(dev, "%s: Illegal map_addr (%04x), efuse corrupt!\n", in rtl8710b_read_efuse()
906 ret = -EINVAL; in rtl8710b_read_efuse()
909 priv->efuse_wifi.raw[map_addr++] = val8; in rtl8710b_read_efuse()
914 priv->efuse_wifi.raw[map_addr++] = val8; in rtl8710b_read_efuse()
925 struct rtl8710bu_efuse *efuse = &priv->efuse_wifi.efuse8710bu; in rtl8710bu_parse_efuse() local
927 if (efuse->rtl_id != cpu_to_le16(0x8195)) in rtl8710bu_parse_efuse()
928 return -EINVAL; in rtl8710bu_parse_efuse()
930 ether_addr_copy(priv->mac_addr, efuse->mac_addr); in rtl8710bu_parse_efuse()
932 memcpy(priv->cck_tx_power_index_A, efuse->tx_power_index_A.cck_base, in rtl8710bu_parse_efuse()
933 sizeof(efuse->tx_power_index_A.cck_base)); in rtl8710bu_parse_efuse()
935 memcpy(priv->ht40_1s_tx_power_index_A, in rtl8710bu_parse_efuse()
936 efuse->tx_power_index_A.ht40_base, in rtl8710bu_parse_efuse()
937 sizeof(efuse->tx_power_index_A.ht40_base)); in rtl8710bu_parse_efuse()
939 priv->ofdm_tx_power_diff[0].a = efuse->tx_power_index_A.ht20_ofdm_1s_diff.a; in rtl8710bu_parse_efuse()
940 priv->ht20_tx_power_diff[0].a = efuse->tx_power_index_A.ht20_ofdm_1s_diff.b; in rtl8710bu_parse_efuse()
942 priv->default_crystal_cap = efuse->xtal_k & 0x3f; in rtl8710bu_parse_efuse()
949 if (priv->vendor_smic) { in rtl8710bu_load_firmware()
951 } else if (priv->vendor_umc) { in rtl8710bu_load_firmware()
954 dev_err(&priv->udev->dev, "We have no suitable firmware for this chip.\n"); in rtl8710bu_load_firmware()
955 return -1; in rtl8710bu_load_firmware()
969 if (priv->package_type == PACKAGE_QFN48M_U) in rtl8710bu_init_phy_bb()
983 if (priv->package_type == PACKAGE_QFN48M_U) in rtl8710bu_init_phy_rf()
1030 /* path-A IQK setting */ in rtl8710bu_iqk_path_a()
1114 /* path-A IQK setting */ in rtl8710bu_rx_iqk_path_a()
1203 /* path-A IQK setting */ in rtl8710bu_rx_iqk_path_a()
1241 tmp = 0x400 - tmp; in rtl8710bu_rx_iqk_path_a()
1257 struct device *dev = &priv->udev->dev; in rtl8710bu_phy_iqcalibrate()
1292 rtl8xxxu_save_regs(priv, adda_regs, priv->adda_backup, in rtl8710bu_phy_iqcalibrate()
1294 rtl8xxxu_save_mac_regs(priv, iqk_mac_regs, priv->mac_backup); in rtl8710bu_phy_iqcalibrate()
1296 priv->bb_backup, RTL8XXXU_BB_REGS); in rtl8710bu_phy_iqcalibrate()
1303 priv->pi_enabled = u32_get_bits(val32, FPGA0_HSSI_PARM1_PI); in rtl8710bu_phy_iqcalibrate()
1306 if (!priv->pi_enabled) { in rtl8710bu_phy_iqcalibrate()
1312 /* MAC settings */ in rtl8710bu_phy_iqcalibrate()
1381 rtl8xxxu_restore_regs(priv, adda_regs, priv->adda_backup, RTL8XXXU_ADDA_REGS); in rtl8710bu_phy_iqcalibrate()
1384 rtl8xxxu_restore_mac_regs(priv, iqk_mac_regs, priv->mac_backup); in rtl8710bu_phy_iqcalibrate()
1387 rtl8xxxu_restore_regs(priv, iqk_bb_regs, priv->bb_backup, RTL8XXXU_BB_REGS); in rtl8710bu_phy_iqcalibrate()
1408 struct device *dev = &priv->udev->dev; in rtl8710bu_phy_iq_calibrate()
1421 candidate = -1; in rtl8710bu_phy_iq_calibrate()
1453 candidate = -1; in rtl8710bu_phy_iq_calibrate()
1476 priv->bb_recovery_backup, RTL8XXXU_BB_REGS); in rtl8710bu_phy_iq_calibrate()
1486 /* AFE power mode selection: 1: LDO mode, 0: Power-cut mode */ in rtl8710b_emu_to_active()
1501 for (count = RTL8XXXU_MAX_REG_POLL; count; count--) { in rtl8710b_emu_to_active()
1510 ret = -EBUSY; in rtl8710b_emu_to_active()
1536 for (count = RTL8XXXU_MAX_REG_POLL; count; count--) { in rtl8710bu_active_to_emu()
1546 ret = -EBUSY; in rtl8710bu_active_to_emu()
1553 struct device *dev = &priv->udev->dev; in rtl8710bu_active_to_lps()
1563 retval = -EBUSY; in rtl8710bu_active_to_lps()
1574 } while (retry--); in rtl8710bu_active_to_lps()
1578 retval = -EBUSY; in rtl8710bu_active_to_lps()
1763 struct rtl8xxxu_cfo_tracking *cfo = &priv->cfo_tracking; in rtl8710b_set_crystal_cap()
1766 if (crystal_cap == cfo->crystal_cap) in rtl8710b_set_crystal_cap()
1771 dev_dbg(&priv->udev->dev, in rtl8710b_set_crystal_cap()
1774 cfo->crystal_cap, in rtl8710b_set_crystal_cap()
1783 cfo->crystal_cap = crystal_cap; in rtl8710b_set_crystal_cap()
1789 u8 lna_idx = (phy_stats0->lna_h << 3) | phy_stats0->lna_l; in rtl8710b_cck_rssi()
1790 u8 vga_idx = phy_stats0->vga; in rtl8710b_cck_rssi()
1795 rx_pwr_all = -52 - (2 * vga_idx); in rtl8710b_cck_rssi()
1798 rx_pwr_all = -42 - (2 * vga_idx); in rtl8710b_cck_rssi()
1801 rx_pwr_all = -36 - (2 * vga_idx); in rtl8710b_cck_rssi()
1804 rx_pwr_all = -12 - (2 * vga_idx); in rtl8710b_cck_rssi()
1807 rx_pwr_all = 0 - (2 * vga_idx); in rtl8710b_cck_rssi()