drivers/net/wireless/intel/iwlwifi/fw/uefi.h

Source file repositories/reference/linux-study-clean/drivers/net/wireless/intel/iwlwifi/fw/uefi.h

File Facts

System
Linux kernel
Corpus path
drivers/net/wireless/intel/iwlwifi/fw/uefi.h
Extension
.h
Size
13718 bytes
Lines
473
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.

Dependency Surface

Detected Declarations

Annotated Snippet

struct pnvm_sku_package {
	u8 rev;
	u32 total_size;
	u8 n_skus;
	u32 reserved[2];
	u8 data[];
} __packed;

struct uefi_cnv_wlan_sgom_data {
	u8 revision;
	u8 offset_map[IWL_SGOM_MAP_SIZE - 1];
} __packed;

struct uefi_cnv_wlan_uats_data {
	u8 revision;
	u8 mcc_to_ap_type_map[IWL_UATS_MAP_SIZE - 1];
} __packed;

/* UNEB's layout is identical to UATS's */
#define uefi_cnv_wlan_uneb_data uefi_cnv_wlan_uats_data

struct uefi_cnv_common_step_data {
	u8 revision;
	u8 step_mode;
	u8 cnvi_eq_channel;
	u8 cnvr_eq_channel;
	u8 radio1;
	u8 radio2;
} __packed;

#define UEFI_PPAG_SUB_BANDS_NUM_REV4	11
#define UEFI_PPAG_SUB_BANDS_NUM_REV5	12
#define UEFI_PPAG_NUM_CHAINS		2

#define UEFI_SAR_SUB_BANDS_NUM_REV2	11
#define UEFI_SAR_SUB_BANDS_NUM_REV3	12

#define UEFI_SAR_MAX_CHAINS_PER_PROFILE	4

#define UEFI_GEO_NUM_BANDS_REV3		3
#define UEFI_GEO_NUM_BANDS_REV4		4

/**
 * struct uefi_cnv_var_wrds - WRDS table as defined in UEFI
 *
 * @revision: the revision of the table
 * @mode: is WRDS enbaled/disabled
 * @vals: values for sar profile #1 as an array:
 *	vals[chain * num_of_subbands + subband] will return the right value.
 *	num_of_subbands depends on the revision. For revision 3, it is
 *	%UEFI_SAR_SUB_BANDS_NUM_REV3, for earlier revision, it is
 *	%UEFI_SAR_SUB_BANDS_NUM_REV2.
 *	The max number of chains is currently 2
 */
struct uefi_cnv_var_wrds {
	u8 revision;
	u32 mode;
	u8 vals[];
} __packed;

#define UEFI_SAR_PROFILE_SIZE_REV2			\
	(sizeof(u8) * UEFI_SAR_MAX_CHAINS_PER_PROFILE *	\
	 UEFI_SAR_SUB_BANDS_NUM_REV2)

#define UEFI_SAR_PROFILE_SIZE_REV3			\
	(sizeof(u8) * UEFI_SAR_MAX_CHAINS_PER_PROFILE *	\
	 UEFI_SAR_SUB_BANDS_NUM_REV3)

#define UEFI_SAR_WRDS_TABLE_SIZE_REV2			\
	(offsetof(struct uefi_cnv_var_wrds, vals) +	\
	 UEFI_SAR_PROFILE_SIZE_REV2)

#define UEFI_SAR_WRDS_TABLE_SIZE_REV3			\
	(offsetof(struct uefi_cnv_var_wrds, vals) +	\
	 UEFI_SAR_PROFILE_SIZE_REV3)

/**
 * struct uefi_cnv_var_ewrd - EWRD table as defined in UEFI
 * @revision: the revision of the table
 * @mode: is WRDS enbaled/disabled
 * @num_profiles: how many additional profiles we have in this table (0-3)
 * @vals: the additional SAR profiles (#2-#4) as an array of SAR profiles.
 *	A SAR profile is defined the &struct uefi_cnv_var_wrds::vals. The size
 *	of each profile depends on the number of subbands which depends on the
 *	revision. This is explained in &struct uefi_cnv_var_wrds.
 */
struct uefi_cnv_var_ewrd {
	u8 revision;
	u32 mode;
	u32 num_profiles;

Annotation

Implementation Notes