drivers/net/wireless/broadcom/brcm80211/brcmsmac/phy/phy_lcn.c
Source file repositories/reference/linux-study-clean/drivers/net/wireless/broadcom/brcm80211/brcmsmac/phy/phy_lcn.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/net/wireless/broadcom/brcm80211/brcmsmac/phy/phy_lcn.c- Extension
.c- Size
- 129902 bytes
- Lines
- 5140
- Domain
- Driver Families
- Bucket
- drivers/net
- Inferred role
- Driver Families: implementation source
- Status
- source implementation candidate
Why This File Exists
Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Allocates kernel memory; connect allocation flags and lifetime to context constraints.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/kernel.hlinux/delay.hlinux/cordic.hpmu.hd11.hphy_shim.hphy_qmath.hphy_hal.hphy_radio.hphytbl_lcn.hphy_lcn.h
Detected Declarations
struct lcnphy_txgainsstruct lcnphy_rx_iqcompstruct lcnphy_spb_tonestruct lcnphy_unsign16_structstruct lcnphy_iq_eststruct lcnphy_sfo_cfgstruct chan_info_2064_lcnphyenum lcnphy_cal_modeenum lcnphy_papd_cal_typeenum lcnphy_tssi_modefunction wlc_lcnphy_write_tablefunction wlc_lcnphy_read_tablefunction wlc_lcnphy_common_read_tablefunction wlc_lcnphy_common_write_tablefunction wlc_lcnphy_qdiv_roundupfunction wlc_lcnphy_calc_floorfunction wlc_lcnphy_get_tx_gainfunction wlc_lcnphy_set_dac_gainfunction wlc_lcnphy_set_tx_gain_overridefunction wlc_lcnphy_rx_gain_override_enablefunction wlc_lcnphy_set_rx_gain_by_distributionfunction wlc_lcnphy_set_trsw_overridefunction wlc_lcnphy_clear_trsw_overridefunction wlc_lcnphy_set_rx_iq_compfunction wlc_lcnphy_rx_iq_estfunction wlc_lcnphy_calc_rx_iq_compfunction wlc_lcnphy_measure_digital_powerfunction wlc_lcnphy_rx_iq_cal_gainfunction wlc_lcnphy_rx_iq_calfunction wlc_lcnphy_get_current_tx_pwr_idxfunction wlc_lcnphy_crsuprsfunction wlc_lcnphy_toggle_afe_pwdnfunction wlc_lcnphy_txrx_spur_avoidance_modefunction wlc_lcnphy_set_chanspec_tweaksfunction wlc_lcnphy_radio_2064_channel_tune_4313function wlc_lcnphy_load_tx_iir_filterfunction wlc_lcnphy_get_pa_gainfunction wlc_lcnphy_set_tx_gainfunction wlc_lcnphy_get_bbmultfunction wlc_lcnphy_set_bbmultfunction wlc_lcnphy_clear_tx_power_offsetsfunction wlc_lcnphy_set_tssi_muxfunction wlc_lcnphy_rfseq_tbl_adc_pwrupfunction wlc_lcnphy_pwrctrl_rssiparamsfunction wlc_lcnphy_tssi_setupfunction wlc_lcnphy_tx_pwr_update_nptfunction wlc_lcnphy_tssi2dbmfunction wlc_lcnphy_txpower_reset_npt
Annotated Snippet
struct lcnphy_txgains {
u16 gm_gain;
u16 pga_gain;
u16 pad_gain;
u16 dac_gain;
};
enum lcnphy_cal_mode {
LCNPHY_CAL_FULL,
LCNPHY_CAL_RECAL,
LCNPHY_CAL_CURRECAL,
LCNPHY_CAL_DIGCAL,
LCNPHY_CAL_GCTRL
};
struct lcnphy_rx_iqcomp {
u8 chan;
s16 a;
s16 b;
};
struct lcnphy_spb_tone {
s16 re;
s16 im;
};
struct lcnphy_unsign16_struct {
u16 re;
u16 im;
};
struct lcnphy_iq_est {
u32 iq_prod;
u32 i_pwr;
u32 q_pwr;
};
struct lcnphy_sfo_cfg {
u16 ptcentreTs20;
u16 ptcentreFactor;
};
enum lcnphy_papd_cal_type {
LCNPHY_PAPD_CAL_CW,
LCNPHY_PAPD_CAL_OFDM
};
typedef u16 iqcal_gain_params_lcnphy[9];
static const iqcal_gain_params_lcnphy tbl_iqcal_gainparams_lcnphy_2G[] = {
{0, 0, 0, 0, 0, 0, 0, 0, 0},
};
static const iqcal_gain_params_lcnphy *tbl_iqcal_gainparams_lcnphy[1] = {
tbl_iqcal_gainparams_lcnphy_2G,
};
static const u16 iqcal_gainparams_numgains_lcnphy[1] = {
ARRAY_SIZE(tbl_iqcal_gainparams_lcnphy_2G),
};
static const struct lcnphy_sfo_cfg lcnphy_sfo_cfg[] = {
{965, 1087},
{967, 1085},
{969, 1082},
{971, 1080},
{973, 1078},
{975, 1076},
{977, 1073},
{979, 1071},
{981, 1069},
{983, 1067},
{985, 1065},
{987, 1063},
{989, 1060},
{994, 1055}
};
static const
u16 lcnphy_iqcal_loft_gainladder[] = {
((2 << 8) | 0),
((3 << 8) | 0),
((4 << 8) | 0),
((6 << 8) | 0),
((8 << 8) | 0),
((11 << 8) | 0),
((16 << 8) | 0),
((16 << 8) | 1),
((16 << 8) | 2),
((16 << 8) | 3),
Annotation
- Immediate include surface: `linux/kernel.h`, `linux/delay.h`, `linux/cordic.h`, `pmu.h`, `d11.h`, `phy_shim.h`, `phy_qmath.h`, `phy_hal.h`.
- Detected declarations: `struct lcnphy_txgains`, `struct lcnphy_rx_iqcomp`, `struct lcnphy_spb_tone`, `struct lcnphy_unsign16_struct`, `struct lcnphy_iq_est`, `struct lcnphy_sfo_cfg`, `struct chan_info_2064_lcnphy`, `enum lcnphy_cal_mode`, `enum lcnphy_papd_cal_type`, `enum lcnphy_tssi_mode`.
- Atlas domain: Driver Families / drivers/net.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.