for (i = 0; i < 2; i++)
pwrlevel[i] = p_pwrlevel[i];
/* We only care about the path A for legacy. */ if (rtlefuse->eeprom_version < 2) {
pwrbase0 = pwrlevel[0] + (rtlefuse->legacy_ht_txpowerdiff & 0xf);
} else {
legacy_pwrdiff = rtlefuse->txpwr_legacyhtdiff
[RF90_PATH_A][chnl - 1];
/* For legacy OFDM, tx pwr always > HT OFDM pwr. * We do not care Path B * legacy OFDM pwr diff. NO BB register
* to notify HW. */
pwrbase0 = pwrlevel[0] + legacy_pwrdiff;
}
/* Index 0 & 1= legacy OFDM, 2-5=HT_MCS rate */ switch (rtlefuse->eeprom_regulatory) { case 0: /* Realtek better performance increase power diff
* defined by Realtek for large power */
chnlgroup = 0;
/* If path A and Path B coexist, we must limit Path A tx power. * Protect Path B pwr over or under flow. We need to calculate
* upper and lower bound of path A tx power. */ if (rtlphy->rf_type == RF_2T2R) {
rf_pwr_diff = rtlefuse->antenna_txpwdiff[0];
for (i = 0; i < 4; i++) {
rfa_pwr[i] = (u8)((writeval & (0x7f << (i * 8))) >> (i * 8)); if (rfa_pwr[i] > RF6052_MAX_TX_PWR)
rfa_pwr[i] = RF6052_MAX_TX_PWR;
/* If path A and Path B coexist, we must limit Path A tx power. * Protect Path B pwr over or under flow. We need to calculate
* upper and lower bound of path A tx power. */ if (rtlphy->rf_type == RF_2T2R) { /* Diff=-8~-1 */ if (rf_pwr_diff >= 8) { /* Prevent underflow!! */ if (rfa_pwr[i] < rfa_lower_bound)
rfa_pwr[i] = rfa_lower_bound; /* Diff = 0-7 */
} elseif (rf_pwr_diff >= 1) { /* Prevent overflow */ if (rfa_pwr[i] > rfa_upper_bound)
rfa_pwr[i] = rfa_upper_bound;
}
}
/* Store original RFENV control type */ switch (rfpath) { case RF90_PATH_A: case RF90_PATH_C:
u4reg_val = rtl92s_phy_query_bb_reg(hw,
pphyreg->rfintfs,
BRFSI_RFENV); break; case RF90_PATH_B: case RF90_PATH_D:
u4reg_val = rtl92s_phy_query_bb_reg(hw,
pphyreg->rfintfs,
BRFSI_RFENV << 16); break;
}
/* Set RF_ENV output high */
rtl92s_phy_set_bb_reg(hw, pphyreg->rfintfo, BRFSI_RFENV, 0x1);
/* Set bit number of Address and Data for RF register */
rtl92s_phy_set_bb_reg(hw, pphyreg->rfhssi_para2,
B3WIRE_ADDRESSLENGTH, 0x0);
rtl92s_phy_set_bb_reg(hw, pphyreg->rfhssi_para2,
B3WIRE_DATALENGTH, 0x0);
/* Initialize RF from configuration file */ switch (rfpath) { case RF90_PATH_A:
rtstatus = rtl92s_phy_config_rf(hw,
(enum radio_path)rfpath); break; case RF90_PATH_B:
rtstatus = rtl92s_phy_config_rf(hw,
(enum radio_path)rfpath); break; case RF90_PATH_C: break; case RF90_PATH_D: break;
}
/* Restore RFENV control type */ switch (rfpath) { case RF90_PATH_A: case RF90_PATH_C:
rtl92s_phy_set_bb_reg(hw, pphyreg->rfintfs, BRFSI_RFENV,
u4reg_val); break; case RF90_PATH_B: case RF90_PATH_D:
rtl92s_phy_set_bb_reg(hw, pphyreg->rfintfs,
BRFSI_RFENV << 16,
u4reg_val); break;
}
if (!rtstatus) {
pr_err("Radio[%d] Fail!!\n", rfpath); goto fail;
}
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.1Bemerkung:
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.