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

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

File Facts

System
Linux kernel
Corpus path
drivers/net/wireless/realtek/rtw89/rtw8922d.c
Extension
.c
Size
122682 bytes
Lines
3467
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 rtw8922d_bb_gain {
	u32 gain_g[BB_PATH_NUM_8922D];
	u32 gain_a[BB_PATH_NUM_8922D];
	u32 gain_g_mask;
	u32 gain_a_mask;
};

static const struct rtw89_reg_def rpl_comp_bw160[RTW89_BW20_SC_160M] = {
	{ .addr = 0x241E8, .mask = 0xFF00},
	{ .addr = 0x241E8, .mask = 0xFF0000},
	{ .addr = 0x241E8, .mask = 0xFF000000},
	{ .addr = 0x241EC, .mask = 0xFF},
	{ .addr = 0x241EC, .mask = 0xFF00},
	{ .addr = 0x241EC, .mask = 0xFF0000},
	{ .addr = 0x241EC, .mask = 0xFF000000},
	{ .addr = 0x241F0, .mask = 0xFF}
};

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

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

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

static const struct rtw8922d_bb_gain bb_gain_lna[LNA_GAIN_NUM] = {
	{ .gain_g = {0x2409C, 0x2449C}, .gain_a = {0x2406C, 0x2446C},
	  .gain_g_mask = 0xFF00, .gain_a_mask = 0xFF},
	{ .gain_g = {0x2409C, 0x2449C}, .gain_a = {0x2406C, 0x2446C},
	  .gain_g_mask = 0xFF000000, .gain_a_mask = 0xFF0000},
	{ .gain_g = {0x240A0, 0x244A0}, .gain_a = {0x24070, 0x24470},
	  .gain_g_mask = 0xFF00, .gain_a_mask = 0xFF},
	{ .gain_g = {0x240A0, 0x244A0}, .gain_a = {0x24070, 0x24470},
	  .gain_g_mask = 0xFF000000, .gain_a_mask = 0xFF0000},
	{ .gain_g = {0x240A4, 0x244A4}, .gain_a = {0x24074, 0x24474},
	  .gain_g_mask = 0xFF00, .gain_a_mask = 0xFF},
	{ .gain_g = {0x240A4, 0x244A4}, .gain_a = {0x24074, 0x24474},
	  .gain_g_mask = 0xFF000000, .gain_a_mask = 0xFF0000},
	{ .gain_g = {0x240A8, 0x244A8}, .gain_a = {0x24078, 0x24478},
	  .gain_g_mask = 0xFF00, .gain_a_mask = 0xFF},
};

static const struct rtw8922d_bb_gain bb_gain_tia[TIA_GAIN_NUM] = {
	{ .gain_g = {0x24054, 0x24454}, .gain_a = {0x24054, 0x24454},
	  .gain_g_mask = 0x7FC0000, .gain_a_mask = 0x1FF},
	{ .gain_g = {0x24058, 0x24458}, .gain_a = {0x24054, 0x24454},
	  .gain_g_mask = 0x1FF, .gain_a_mask = 0x3FE00 },
};

static const struct rtw8922d_bb_gain bb_op1db_lna[LNA_GAIN_NUM] = {
	{ .gain_g = {0x240AC, 0x244AC}, .gain_a = {0x24078, 0x24478},
	  .gain_g_mask = 0xFF00, .gain_a_mask = 0xFF000000},
	{ .gain_g = {0x240AC, 0x244AC}, .gain_a = {0x2407C, 0x2447C},
	  .gain_g_mask = 0xFF0000, .gain_a_mask = 0xFF},
	{ .gain_g = {0x240AC, 0x244AC}, .gain_a = {0x2407C, 0x2447C},
	  .gain_g_mask = 0xFF000000, .gain_a_mask = 0xFF00},
	{ .gain_g = {0x240B0, 0x244B0}, .gain_a = {0x2407C, 0x2447C},
	  .gain_g_mask = 0xFF, .gain_a_mask = 0xFF0000},
	{ .gain_g = {0x240B0, 0x244B0}, .gain_a = {0x2407C, 0x2447C},
	  .gain_g_mask = 0xFF00, .gain_a_mask = 0xFF000000},
	{ .gain_g = {0x240B0, 0x244B0}, .gain_a = {0x24080, 0x24480},
	  .gain_g_mask = 0xFF0000, .gain_a_mask = 0xFF},
	{ .gain_g = {0x240B0, 0x244B0}, .gain_a = {0x24080, 0x24480},
	  .gain_g_mask = 0xFF000000, .gain_a_mask = 0xFF00},
};

static const struct rtw8922d_bb_gain bb_op1db_tia_lna[TIA_LNA_OP1DB_NUM] = {
	{ .gain_g = {0x240B4, 0x244B4}, .gain_a = {0x24080, 0x24480},
	  .gain_g_mask = 0xFF0000, .gain_a_mask = 0xFF000000},
	{ .gain_g = {0x240B4, 0x244B4}, .gain_a = {0x24084, 0x24484},
	  .gain_g_mask = 0xFF000000, .gain_a_mask = 0xFF},
	{ .gain_g = {0x240B8, 0x244B8}, .gain_a = {0x24084, 0x24484},
	  .gain_g_mask = 0xFF, .gain_a_mask = 0xFF00},
	{ .gain_g = {0x240B8, 0x244B8}, .gain_a = {0x24084, 0x24484},
	  .gain_g_mask = 0xFF00, .gain_a_mask = 0xFF0000},
	{ .gain_g = {0x240B8, 0x244B8}, .gain_a = {0x24084, 0x24484},
	  .gain_g_mask = 0xFF0000, .gain_a_mask = 0xFF000000},
	{ .gain_g = {0x240B8, 0x244B8}, .gain_a = {0x24088, 0x24488},
	  .gain_g_mask = 0xFF000000, .gain_a_mask = 0xFF},
	{ .gain_g = {0x240BC, 0x244BC}, .gain_a = {0x24088, 0x24488},
	  .gain_g_mask = 0xFF, .gain_a_mask = 0xFF00},

Annotation

Implementation Notes