POWER TO PCDAC TABLE FUNCTIONS(9)
π Power to PCDAC table functions π
Okay so bestie, this is the Power to PCDAC table functions(9) page from the Kernel API Manual β yes, the header is a little truncated (Power to PCD...le functions(9)), but we move. Itβs giving deeply specific radio-table magic, and weβre gonna read it together π
For RF5111 we have an XPD -eXternal Power Detector- curve for each calibrated channel. Each curve has 0,5dB Power steps on x axis and PCDAC steps (offsets) on y axis and looks like an exponential function. To recreate the curve we read 11 points from eeprom (eeprom.c) and interpolate here.
For RF5112 we have 4 XPD -eXternal Power Detector- curves for each calibrated channel on 0, -6, -12 and -18dBm but we only use the higher (3) and the lower (0) curves. Each curve again has 0.5dB power steps on x axis and PCDAC steps on y axis and looks like a linear function. To recreate the curve and pass the power values on hw, we get 4 points for xpd 0 (lower gain -> max power) and 3 points for xpd 3 (higher gain -> lower power) from eeprom (eeprom.c) and interpolate here.
For a given channel we get the calibrated points (piers) for it or -if we don't have calibration data for this specific channel- from the available surrounding channels we have calibration data for, after we do a linear interpolation between them. Then since we have our calibrated points for this channel, we do again a linear interpolation between them to get the whole curve.
We finally write the Y values of the curve(s) (the PCDAC values) on hw.
π SEE ALSO π
Vibe check the cross-refs, periodt:
Kernel file ./drivers/net/wireless/ath/ath5k/phy.c PHY related functions(9)ath5k_hw_radio_revision(9)ath5k_channel_ok(9)ath5k_hw_chan_has_spur_noise(9)ath5k_hw_rfb_op(9)ath5k_hw_write_ofdm_timings(9)ath5k_hw_phy_disable(9)ath5k_hw_wait_for_synth(9)RF Gain optimization(9)ath5k_hw_rfgain_opt_init(9)ath5k_hw_request_rfgain_probe(9)ath5k_hw_rf_gainf_corr(9)ath5k_hw_rf_check_gainf_readback(9)ath5k_hw_rf_gainf_adjust(9)ath5k_hw_gainf_calibrate(9)ath5k_hw_rfgain_init(9)ath5k_hw_rfregs_init(9)ath5k_hw_rf5110_chan2athchan(9)ath5k_hw_rf5110_channel(9)ath5k_hw_rf5111_chan2athchan(9)ath5k_hw_rf5111_channel(9)ath5k_hw_rf5112_channel(9)ath5k_hw_rf2425_channel(9)ath5k_hw_channel(9)PHY Calibration routines(9)ath5k_hw_read_measured_noise_floor(9)ath5k_hw_init_nfcal_hist(9)ath5k_hw_update_nfcal_hist(9)ath5k_hw_get_median_noise_floor(9)ath5k_hw_update_noise_floor(9)ath5k_hw_rf5110_calibrate(9)ath5k_hw_rf511x_iq_calibrate(9)ath5k_hw_phy_calibrate(9)ath5k_hw_set_spur_mitigation_filter(9)Antenna control(9)ath5k_hw_set_def_antenna(9)ath5k_hw_set_fast_div(9)ath5k_hw_set_antenna_switch(9)ath5k_hw_set_antenna_mode(9)ath5k_get_interpolated_value(9)ath5k_get_linear_pcdac_min(9)ath5k_create_power_curve(9)ath5k_get_chan_pcal_surrounding_piers(9)ath5k_get_rate_pcal_data(9)ath5k_get_max_ctl_power(9)ath5k_fill_pwr_to_pcdac_table(9)ath5k_combine_linear_pcdac_curves(9)ath5k_write_pcdac_table(9)Power to PDADC table functions(9)ath5k_combine_pwr_to_pdadc_curves(9)ath5k_write_pwr_to_pdadc_table(9)ath5k_setup_channel_powertable(9)ath5k_write_channel_powertable(9)Per-rate tx power setting(9)ath5k_setup_rate_powertable(9)ath5k_hw_txpower(9)ath5k_hw_set_txpower_limit(9)ath5k_hw_phy_init(9)
This gem lives at ./drivers/net/wireless/ath/ath5k, dated October 2026 β bye bestie, mwah πβ¨
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms