drivers/net/wireless/realtek/rtw89/rtw8922a.c

Source file repositories/reference/linux-study-clean/drivers/net/wireless/realtek/rtw89/rtw8922a.c

File Facts

System
Linux kernel
Corpus path
drivers/net/wireless/realtek/rtw89/rtw8922a.c
Extension
.c
Size
115671 bytes
Lines
3320
Domain
Driver Families
Bucket
drivers/net
Inferred role
Driver Families: exported/initcall integration point
Status
integration 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.

Dependency Surface

Detected Declarations

Annotated Snippet

struct rtw8922a_bb_gain {
	u32 gain_g[BB_PATH_NUM_8922A];
	u32 gain_a[BB_PATH_NUM_8922A];
	u32 gain_g_mask;
	u32 gain_a_mask;
};

static const struct rtw89_reg_def rpl_comp_bw160[RTW89_BW20_SC_160M] = {
	{ .addr = 0x41E8, .mask = 0xFF00},
	{ .addr = 0x41E8, .mask = 0xFF0000},
	{ .addr = 0x41E8, .mask = 0xFF000000},
	{ .addr = 0x41EC, .mask = 0xFF},
	{ .addr = 0x41EC, .mask = 0xFF00},
	{ .addr = 0x41EC, .mask = 0xFF0000},
	{ .addr = 0x41EC, .mask = 0xFF000000},
	{ .addr = 0x41F0, .mask = 0xFF}
};

static const struct rtw89_reg_def rpl_comp_bw80[RTW89_BW20_SC_80M] = {
	{ .addr = 0x41F4, .mask = 0xFF},
	{ .addr = 0x41F4, .mask = 0xFF00},
	{ .addr = 0x41F4, .mask = 0xFF0000},
	{ .addr = 0x41F4, .mask = 0xFF000000}
};

static const struct rtw89_reg_def rpl_comp_bw40[RTW89_BW20_SC_40M] = {
	{ .addr = 0x41F0, .mask = 0xFF0000},
	{ .addr = 0x41F0, .mask = 0xFF000000}
};

static const struct rtw89_reg_def rpl_comp_bw20[RTW89_BW20_SC_20M] = {
	{ .addr = 0x41F0, .mask = 0xFF00}
};

static const struct rtw8922a_bb_gain bb_gain_lna[LNA_GAIN_NUM] = {
	{ .gain_g = {0x409c, 0x449c}, .gain_a = {0x406C, 0x446C},
	  .gain_g_mask = 0xFF00, .gain_a_mask = 0xFF},
	{ .gain_g = {0x409c, 0x449c}, .gain_a = {0x406C, 0x446C},
	  .gain_g_mask = 0xFF000000, .gain_a_mask = 0xFF0000},
	{ .gain_g = {0x40a0, 0x44a0}, .gain_a = {0x4070, 0x4470},
	  .gain_g_mask = 0xFF00, .gain_a_mask = 0xFF},
	{ .gain_g = {0x40a0, 0x44a0}, .gain_a = {0x4070, 0x4470},
	  .gain_g_mask = 0xFF000000, .gain_a_mask = 0xFF0000},
	{ .gain_g = {0x40a4, 0x44a4}, .gain_a = {0x4074, 0x4474},
	  .gain_g_mask = 0xFF00, .gain_a_mask = 0xFF},
	{ .gain_g = {0x40a4, 0x44a4}, .gain_a = {0x4074, 0x4474},
	  .gain_g_mask = 0xFF000000, .gain_a_mask = 0xFF0000},
	{ .gain_g = {0x40a8, 0x44a8}, .gain_a = {0x4078, 0x4478},
	  .gain_g_mask = 0xFF00, .gain_a_mask = 0xFF},
};

static const struct rtw8922a_bb_gain bb_gain_tia[TIA_GAIN_NUM] = {
	{ .gain_g = {0x4054, 0x4454}, .gain_a = {0x4054, 0x4454},
	  .gain_g_mask = 0x7FC0000, .gain_a_mask = 0x1FF},
	{ .gain_g = {0x4058, 0x4458}, .gain_a = {0x4054, 0x4454},
	  .gain_g_mask = 0x1FF, .gain_a_mask = 0x3FE00 },
};

static const struct rtw8922a_bb_gain bb_op1db_lna[LNA_GAIN_NUM] = {
	{ .gain_g = {0x40ac, 0x44ac}, .gain_a = {0x4078, 0x4478},
	  .gain_g_mask = 0xFF00, .gain_a_mask = 0xFF000000},
	{ .gain_g = {0x40ac, 0x44ac}, .gain_a = {0x407c, 0x447c},
	  .gain_g_mask = 0xFF0000, .gain_a_mask = 0xFF},
	{ .gain_g = {0x40ac, 0x44ac}, .gain_a = {0x407c, 0x447c},
	  .gain_g_mask = 0xFF000000, .gain_a_mask = 0xFF00},
	{ .gain_g = {0x40b0, 0x44b0}, .gain_a = {0x407c, 0x447c},
	  .gain_g_mask = 0xFF, .gain_a_mask = 0xFF0000},
	{ .gain_g = {0x40b0, 0x44b0}, .gain_a = {0x407c, 0x447c},
	  .gain_g_mask = 0xFF00, .gain_a_mask = 0xFF000000},
	{ .gain_g = {0x40b0, 0x44b0}, .gain_a = {0x4080, 0x4480},
	  .gain_g_mask = 0xFF0000, .gain_a_mask = 0xFF},
	{ .gain_g = {0x40b0, 0x44b0}, .gain_a = {0x4080, 0x4480},
	  .gain_g_mask = 0xFF000000, .gain_a_mask = 0xFF00},
};

static const struct rtw8922a_bb_gain bb_op1db_tia_lna[TIA_LNA_OP1DB_NUM] = {
	{ .gain_g = {0x40b4, 0x44b4}, .gain_a = {0x4080, 0x4480},
	  .gain_g_mask = 0xFF0000, .gain_a_mask = 0xFF000000},
	{ .gain_g = {0x40b4, 0x44b4}, .gain_a = {0x4084, 0x4484},
	  .gain_g_mask = 0xFF000000, .gain_a_mask = 0xFF},
	{ .gain_g = {0x40b8, 0x44b8}, .gain_a = {0x4084, 0x4484},
	  .gain_g_mask = 0xFF, .gain_a_mask = 0xFF00},
	{ .gain_g = {0x40b8, 0x44b8}, .gain_a = {0x4084, 0x4484},
	  .gain_g_mask = 0xFF00, .gain_a_mask = 0xFF0000},
	{ .gain_g = {0x40b8, 0x44b8}, .gain_a = {0x4084, 0x4484},
	  .gain_g_mask = 0xFF0000, .gain_a_mask = 0xFF000000},
	{ .gain_g = {0x40b8, 0x44b8}, .gain_a = {0x4088, 0x4488},
	  .gain_g_mask = 0xFF000000, .gain_a_mask = 0xFF},
	{ .gain_g = {0x40bc, 0x44bc}, .gain_a = {0x4088, 0x4488},
	  .gain_g_mask = 0xFF, .gain_a_mask = 0xFF00},

Annotation

Implementation Notes