xref: /freebsd/sys/contrib/dev/iwlwifi/fw/uefi.h (revision a4128aad8503277614f2d214011ef60a19447b83)
1bfcc09ddSBjoern A. Zeeb /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
2bfcc09ddSBjoern A. Zeeb /*
3*a4128aadSBjoern A. Zeeb  * Copyright(c) 2021-2024 Intel Corporation
4bfcc09ddSBjoern A. Zeeb  */
5bfcc09ddSBjoern A. Zeeb #ifndef __iwl_fw_uefi__
6bfcc09ddSBjoern A. Zeeb #define __iwl_fw_uefi__
7bfcc09ddSBjoern A. Zeeb 
8*a4128aadSBjoern A. Zeeb #include "fw/regulatory.h"
9*a4128aadSBjoern A. Zeeb 
10bfcc09ddSBjoern A. Zeeb #define IWL_UEFI_OEM_PNVM_NAME		L"UefiCnvWlanOemSignedPnvm"
11bfcc09ddSBjoern A. Zeeb #define IWL_UEFI_REDUCED_POWER_NAME	L"UefiCnvWlanReducedPower"
12d9836fb4SBjoern A. Zeeb #define IWL_UEFI_SGOM_NAME		L"UefiCnvWlanSarGeoOffsetMapping"
139af1bba4SBjoern A. Zeeb #define IWL_UEFI_STEP_NAME		L"UefiCnvCommonSTEP"
14*a4128aadSBjoern A. Zeeb #define IWL_UEFI_UATS_NAME		L"CnvUefiWlanUATS"
15*a4128aadSBjoern A. Zeeb #define IWL_UEFI_WRDS_NAME		L"UefiCnvWlanWRDS"
16*a4128aadSBjoern A. Zeeb #define IWL_UEFI_EWRD_NAME		L"UefiCnvWlanEWRD"
17*a4128aadSBjoern A. Zeeb #define IWL_UEFI_WGDS_NAME		L"UefiCnvWlanWGDS"
18*a4128aadSBjoern A. Zeeb #define IWL_UEFI_PPAG_NAME		L"UefiCnvWlanPPAG"
19*a4128aadSBjoern A. Zeeb #define IWL_UEFI_WTAS_NAME		L"UefiCnvWlanWTAS"
20*a4128aadSBjoern A. Zeeb #define IWL_UEFI_SPLC_NAME		L"UefiCnvWlanSPLC"
21*a4128aadSBjoern A. Zeeb #define IWL_UEFI_WRDD_NAME		L"UefiCnvWlanWRDD"
22*a4128aadSBjoern A. Zeeb #define IWL_UEFI_ECKV_NAME		L"UefiCnvWlanECKV"
23*a4128aadSBjoern A. Zeeb #define IWL_UEFI_DSM_NAME		L"UefiCnvWlanGeneralCfg"
24*a4128aadSBjoern A. Zeeb #define IWL_UEFI_WBEM_NAME		L"UefiCnvWlanWBEM"
25*a4128aadSBjoern A. Zeeb 
26bfcc09ddSBjoern A. Zeeb 
279af1bba4SBjoern A. Zeeb #define IWL_SGOM_MAP_SIZE		339
28*a4128aadSBjoern A. Zeeb #define IWL_UATS_MAP_SIZE		339
29*a4128aadSBjoern A. Zeeb 
30*a4128aadSBjoern A. Zeeb #define IWL_UEFI_WRDS_REVISION		2
31*a4128aadSBjoern A. Zeeb #define IWL_UEFI_EWRD_REVISION		2
32*a4128aadSBjoern A. Zeeb #define IWL_UEFI_WGDS_REVISION		3
33*a4128aadSBjoern A. Zeeb #define IWL_UEFI_MIN_PPAG_REV		1
34*a4128aadSBjoern A. Zeeb #define IWL_UEFI_MAX_PPAG_REV		3
35*a4128aadSBjoern A. Zeeb #define IWL_UEFI_WTAS_REVISION		1
36*a4128aadSBjoern A. Zeeb #define IWL_UEFI_SPLC_REVISION		0
37*a4128aadSBjoern A. Zeeb #define IWL_UEFI_WRDD_REVISION		0
38*a4128aadSBjoern A. Zeeb #define IWL_UEFI_ECKV_REVISION		0
39*a4128aadSBjoern A. Zeeb #define IWL_UEFI_WBEM_REVISION		0
40*a4128aadSBjoern A. Zeeb #define IWL_UEFI_DSM_REVISION		4
41bfcc09ddSBjoern A. Zeeb 
42bfcc09ddSBjoern A. Zeeb struct pnvm_sku_package {
43bfcc09ddSBjoern A. Zeeb 	u8 rev;
44bfcc09ddSBjoern A. Zeeb 	u32 total_size;
45bfcc09ddSBjoern A. Zeeb 	u8 n_skus;
46bfcc09ddSBjoern A. Zeeb 	u32 reserved[2];
47bfcc09ddSBjoern A. Zeeb 	u8 data[];
48bfcc09ddSBjoern A. Zeeb } __packed;
49bfcc09ddSBjoern A. Zeeb 
50d9836fb4SBjoern A. Zeeb struct uefi_cnv_wlan_sgom_data {
51d9836fb4SBjoern A. Zeeb 	u8 revision;
529af1bba4SBjoern A. Zeeb 	u8 offset_map[IWL_SGOM_MAP_SIZE - 1];
539af1bba4SBjoern A. Zeeb } __packed;
549af1bba4SBjoern A. Zeeb 
55*a4128aadSBjoern A. Zeeb struct uefi_cnv_wlan_uats_data {
56*a4128aadSBjoern A. Zeeb 	u8 revision;
57*a4128aadSBjoern A. Zeeb 	u8 offset_map[IWL_UATS_MAP_SIZE - 1];
58*a4128aadSBjoern A. Zeeb } __packed;
59*a4128aadSBjoern A. Zeeb 
609af1bba4SBjoern A. Zeeb struct uefi_cnv_common_step_data {
619af1bba4SBjoern A. Zeeb 	u8 revision;
629af1bba4SBjoern A. Zeeb 	u8 step_mode;
639af1bba4SBjoern A. Zeeb 	u8 cnvi_eq_channel;
649af1bba4SBjoern A. Zeeb 	u8 cnvr_eq_channel;
659af1bba4SBjoern A. Zeeb 	u8 radio1;
669af1bba4SBjoern A. Zeeb 	u8 radio2;
67d9836fb4SBjoern A. Zeeb } __packed;
68d9836fb4SBjoern A. Zeeb 
69d9836fb4SBjoern A. Zeeb /*
70*a4128aadSBjoern A. Zeeb  * struct uefi_sar_profile - a SAR profile as defined in UEFI
71*a4128aadSBjoern A. Zeeb  *
72*a4128aadSBjoern A. Zeeb  * @chains: a per-chain table of SAR values
73*a4128aadSBjoern A. Zeeb  */
74*a4128aadSBjoern A. Zeeb struct uefi_sar_profile {
75*a4128aadSBjoern A. Zeeb 	struct iwl_sar_profile_chain chains[BIOS_SAR_MAX_CHAINS_PER_PROFILE];
76*a4128aadSBjoern A. Zeeb } __packed;
77*a4128aadSBjoern A. Zeeb 
78*a4128aadSBjoern A. Zeeb /*
79*a4128aadSBjoern A. Zeeb  * struct uefi_cnv_var_wrds - WRDS table as defined in UEFI
80*a4128aadSBjoern A. Zeeb  *
81*a4128aadSBjoern A. Zeeb  * @revision: the revision of the table
82*a4128aadSBjoern A. Zeeb  * @mode: is WRDS enbaled/disabled
83*a4128aadSBjoern A. Zeeb  * @sar_profile: sar profile #1
84*a4128aadSBjoern A. Zeeb  */
85*a4128aadSBjoern A. Zeeb struct uefi_cnv_var_wrds {
86*a4128aadSBjoern A. Zeeb 	u8 revision;
87*a4128aadSBjoern A. Zeeb 	u32 mode;
88*a4128aadSBjoern A. Zeeb 	struct uefi_sar_profile sar_profile;
89*a4128aadSBjoern A. Zeeb } __packed;
90*a4128aadSBjoern A. Zeeb 
91*a4128aadSBjoern A. Zeeb /*
92*a4128aadSBjoern A. Zeeb  * struct uefi_cnv_var_ewrd - EWRD table as defined in UEFI
93*a4128aadSBjoern A. Zeeb  * @revision: the revision of the table
94*a4128aadSBjoern A. Zeeb  * @mode: is WRDS enbaled/disabled
95*a4128aadSBjoern A. Zeeb  * @num_profiles: how many additional profiles we have in this table (0-3)
96*a4128aadSBjoern A. Zeeb  * @sar_profiles: the additional SAR profiles (#2-#4)
97*a4128aadSBjoern A. Zeeb  */
98*a4128aadSBjoern A. Zeeb struct uefi_cnv_var_ewrd {
99*a4128aadSBjoern A. Zeeb 	u8 revision;
100*a4128aadSBjoern A. Zeeb 	u32 mode;
101*a4128aadSBjoern A. Zeeb 	u32 num_profiles;
102*a4128aadSBjoern A. Zeeb 	struct uefi_sar_profile sar_profiles[BIOS_SAR_MAX_PROFILE_NUM - 1];
103*a4128aadSBjoern A. Zeeb } __packed;
104*a4128aadSBjoern A. Zeeb 
105*a4128aadSBjoern A. Zeeb /*
106*a4128aadSBjoern A. Zeeb  * struct uefi_cnv_var_wgds - WGDS table as defined in UEFI
107*a4128aadSBjoern A. Zeeb  * @revision: the revision of the table
108*a4128aadSBjoern A. Zeeb  * @num_profiles: the number of geo profiles we have in the table.
109*a4128aadSBjoern A. Zeeb  *	The first 3 are mandatory, and can have up to 8.
110*a4128aadSBjoern A. Zeeb  * @geo_profiles: a per-profile table of the offsets to add to SAR values.
111*a4128aadSBjoern A. Zeeb  */
112*a4128aadSBjoern A. Zeeb struct uefi_cnv_var_wgds {
113*a4128aadSBjoern A. Zeeb 	u8 revision;
114*a4128aadSBjoern A. Zeeb 	u8 num_profiles;
115*a4128aadSBjoern A. Zeeb 	struct iwl_geo_profile geo_profiles[BIOS_GEO_MAX_PROFILE_NUM];
116*a4128aadSBjoern A. Zeeb } __packed;
117*a4128aadSBjoern A. Zeeb 
118*a4128aadSBjoern A. Zeeb /*
119*a4128aadSBjoern A. Zeeb  * struct uefi_cnv_var_ppag - PPAG table as defined in UEFI
120*a4128aadSBjoern A. Zeeb  * @revision: the revision of the table
121*a4128aadSBjoern A. Zeeb  * @ppag_modes: values from &enum iwl_ppag_flags
122*a4128aadSBjoern A. Zeeb  * @ppag_chains: the PPAG values per chain and band
123*a4128aadSBjoern A. Zeeb  */
124*a4128aadSBjoern A. Zeeb struct uefi_cnv_var_ppag {
125*a4128aadSBjoern A. Zeeb 	u8 revision;
126*a4128aadSBjoern A. Zeeb 	u32 ppag_modes;
127*a4128aadSBjoern A. Zeeb 	struct iwl_ppag_chain ppag_chains[IWL_NUM_CHAIN_LIMITS];
128*a4128aadSBjoern A. Zeeb } __packed;
129*a4128aadSBjoern A. Zeeb 
130*a4128aadSBjoern A. Zeeb /* struct uefi_cnv_var_wtas - WTAS tabled as defined in UEFI
131*a4128aadSBjoern A. Zeeb  * @revision: the revision of the table
132*a4128aadSBjoern A. Zeeb  * @tas_selection: different options of TAS enablement.
133*a4128aadSBjoern A. Zeeb  * @black_list_size: the number of defined entried in the black list
134*a4128aadSBjoern A. Zeeb  * @black_list: a list of countries that are not allowed to use the TAS feature
135*a4128aadSBjoern A. Zeeb  */
136*a4128aadSBjoern A. Zeeb struct uefi_cnv_var_wtas {
137*a4128aadSBjoern A. Zeeb 	u8 revision;
138*a4128aadSBjoern A. Zeeb 	u32 tas_selection;
139*a4128aadSBjoern A. Zeeb 	u8 black_list_size;
140*a4128aadSBjoern A. Zeeb 	u16 black_list[IWL_WTAS_BLACK_LIST_MAX];
141*a4128aadSBjoern A. Zeeb } __packed;
142*a4128aadSBjoern A. Zeeb 
143*a4128aadSBjoern A. Zeeb /* struct uefi_cnv_var_splc - SPLC tabled as defined in UEFI
144*a4128aadSBjoern A. Zeeb  * @revision: the revision of the table
145*a4128aadSBjoern A. Zeeb  * @default_pwr_limit: The default maximum power per device
146*a4128aadSBjoern A. Zeeb  */
147*a4128aadSBjoern A. Zeeb struct uefi_cnv_var_splc {
148*a4128aadSBjoern A. Zeeb 	u8 revision;
149*a4128aadSBjoern A. Zeeb 	u32 default_pwr_limit;
150*a4128aadSBjoern A. Zeeb } __packed;
151*a4128aadSBjoern A. Zeeb 
152*a4128aadSBjoern A. Zeeb #define UEFI_MCC_CHINA 0x434e
153*a4128aadSBjoern A. Zeeb 
154*a4128aadSBjoern A. Zeeb /* struct uefi_cnv_var_wrdd - WRDD table as defined in UEFI
155*a4128aadSBjoern A. Zeeb  * @revision: the revision of the table
156*a4128aadSBjoern A. Zeeb  * @mcc: country identifier as defined in ISO/IEC 3166-1 Alpha 2 code
157*a4128aadSBjoern A. Zeeb  */
158*a4128aadSBjoern A. Zeeb struct uefi_cnv_var_wrdd {
159*a4128aadSBjoern A. Zeeb 	u8 revision;
160*a4128aadSBjoern A. Zeeb 	u32 mcc;
161*a4128aadSBjoern A. Zeeb } __packed;
162*a4128aadSBjoern A. Zeeb 
163*a4128aadSBjoern A. Zeeb /* struct uefi_cnv_var_eckv - ECKV table as defined in UEFI
164*a4128aadSBjoern A. Zeeb  * @revision: the revision of the table
165*a4128aadSBjoern A. Zeeb  * @ext_clock_valid: indicates if external 32KHz clock is valid
166*a4128aadSBjoern A. Zeeb  */
167*a4128aadSBjoern A. Zeeb struct uefi_cnv_var_eckv {
168*a4128aadSBjoern A. Zeeb 	u8 revision;
169*a4128aadSBjoern A. Zeeb 	u32 ext_clock_valid;
170*a4128aadSBjoern A. Zeeb } __packed;
171*a4128aadSBjoern A. Zeeb 
172*a4128aadSBjoern A. Zeeb #define UEFI_MAX_DSM_FUNCS 32
173*a4128aadSBjoern A. Zeeb 
174*a4128aadSBjoern A. Zeeb /* struct uefi_cnv_var_general_cfg - DSM-like table as defined in UEFI
175*a4128aadSBjoern A. Zeeb  * @revision: the revision of the table
176*a4128aadSBjoern A. Zeeb  * @functions: payload of the different DSM functions
177*a4128aadSBjoern A. Zeeb  */
178*a4128aadSBjoern A. Zeeb struct uefi_cnv_var_general_cfg {
179*a4128aadSBjoern A. Zeeb 	u8 revision;
180*a4128aadSBjoern A. Zeeb 	u32 functions[UEFI_MAX_DSM_FUNCS];
181*a4128aadSBjoern A. Zeeb } __packed;
182*a4128aadSBjoern A. Zeeb 
183*a4128aadSBjoern A. Zeeb #define IWL_UEFI_WBEM_REV0_MASK (BIT(0) | BIT(1))
184*a4128aadSBjoern A. Zeeb /* struct uefi_cnv_wlan_wbem_data - Bandwidth enablement per MCC as defined
185*a4128aadSBjoern A. Zeeb  *	in UEFI
186*a4128aadSBjoern A. Zeeb  * @revision: the revision of the table
187*a4128aadSBjoern A. Zeeb  * @wbem_320mhz_per_mcc: enablement of 320MHz bandwidth per MCC
188*a4128aadSBjoern A. Zeeb  *	bit 0 - if set, 320MHz is enabled for Japan
189*a4128aadSBjoern A. Zeeb  *	bit 1 - if set, 320MHz is enabled for South Korea
190*a4128aadSBjoern A. Zeeb  *	bit 2- 31, Reserved
191*a4128aadSBjoern A. Zeeb  */
192*a4128aadSBjoern A. Zeeb struct uefi_cnv_wlan_wbem_data {
193*a4128aadSBjoern A. Zeeb 	u8 revision;
194*a4128aadSBjoern A. Zeeb 	u32 wbem_320mhz_per_mcc;
195*a4128aadSBjoern A. Zeeb } __packed;
196*a4128aadSBjoern A. Zeeb 
197*a4128aadSBjoern A. Zeeb /*
198d9836fb4SBjoern A. Zeeb  * This is known to be broken on v4.19 and to work on v5.4.  Until we
199d9836fb4SBjoern A. Zeeb  * figure out why this is the case and how to make it work, simply
200d9836fb4SBjoern A. Zeeb  * disable the feature in old kernels.
201d9836fb4SBjoern A. Zeeb  */
202bfcc09ddSBjoern A. Zeeb #ifdef CONFIG_EFI
203bfcc09ddSBjoern A. Zeeb void *iwl_uefi_get_pnvm(struct iwl_trans *trans, size_t *len);
2049af1bba4SBjoern A. Zeeb u8 *iwl_uefi_get_reduced_power(struct iwl_trans *trans, size_t *len);
2059af1bba4SBjoern A. Zeeb int iwl_uefi_reduce_power_parse(struct iwl_trans *trans,
2069af1bba4SBjoern A. Zeeb 				const u8 *data, size_t len,
2079af1bba4SBjoern A. Zeeb 				struct iwl_pnvm_image *pnvm_data);
2089af1bba4SBjoern A. Zeeb void iwl_uefi_get_step_table(struct iwl_trans *trans);
2099af1bba4SBjoern A. Zeeb int iwl_uefi_handle_tlv_mem_desc(struct iwl_trans *trans, const u8 *data,
2109af1bba4SBjoern A. Zeeb 				 u32 tlv_len, struct iwl_pnvm_image *pnvm_data);
211*a4128aadSBjoern A. Zeeb int iwl_uefi_get_wrds_table(struct iwl_fw_runtime *fwrt);
212*a4128aadSBjoern A. Zeeb int iwl_uefi_get_ewrd_table(struct iwl_fw_runtime *fwrt);
213*a4128aadSBjoern A. Zeeb int iwl_uefi_get_wgds_table(struct iwl_fw_runtime *fwrt);
214*a4128aadSBjoern A. Zeeb int iwl_uefi_get_ppag_table(struct iwl_fw_runtime *fwrt);
215*a4128aadSBjoern A. Zeeb int iwl_uefi_get_tas_table(struct iwl_fw_runtime *fwrt,
216*a4128aadSBjoern A. Zeeb 			   struct iwl_tas_data *data);
217*a4128aadSBjoern A. Zeeb int iwl_uefi_get_pwr_limit(struct iwl_fw_runtime *fwrt,
218*a4128aadSBjoern A. Zeeb 			   u64 *dflt_pwr_limit);
219*a4128aadSBjoern A. Zeeb int iwl_uefi_get_mcc(struct iwl_fw_runtime *fwrt, char *mcc);
220*a4128aadSBjoern A. Zeeb int iwl_uefi_get_eckv(struct iwl_fw_runtime *fwrt, u32 *extl_clk);
221*a4128aadSBjoern A. Zeeb int iwl_uefi_get_wbem(struct iwl_fw_runtime *fwrt, u32 *value);
222*a4128aadSBjoern A. Zeeb int iwl_uefi_get_dsm(struct iwl_fw_runtime *fwrt, enum iwl_dsm_funcs func,
223*a4128aadSBjoern A. Zeeb 		     u32 *value);
224*a4128aadSBjoern A. Zeeb void iwl_uefi_get_sgom_table(struct iwl_trans *trans, struct iwl_fw_runtime *fwrt);
225*a4128aadSBjoern A. Zeeb int iwl_uefi_get_uats_table(struct iwl_trans *trans,
226*a4128aadSBjoern A. Zeeb 			    struct iwl_fw_runtime *fwrt);
227bfcc09ddSBjoern A. Zeeb #else /* CONFIG_EFI */
2289af1bba4SBjoern A. Zeeb static inline void *iwl_uefi_get_pnvm(struct iwl_trans *trans, size_t *len)
229bfcc09ddSBjoern A. Zeeb {
230bfcc09ddSBjoern A. Zeeb 	return ERR_PTR(-EOPNOTSUPP);
231bfcc09ddSBjoern A. Zeeb }
232bfcc09ddSBjoern A. Zeeb 
2339af1bba4SBjoern A. Zeeb static inline int
2349af1bba4SBjoern A. Zeeb iwl_uefi_reduce_power_parse(struct iwl_trans *trans,
2359af1bba4SBjoern A. Zeeb 			    const u8 *data, size_t len,
2369af1bba4SBjoern A. Zeeb 			    struct iwl_pnvm_image *pnvm_data)
2379af1bba4SBjoern A. Zeeb {
2389af1bba4SBjoern A. Zeeb 	return -EOPNOTSUPP;
2399af1bba4SBjoern A. Zeeb }
2409af1bba4SBjoern A. Zeeb 
2419af1bba4SBjoern A. Zeeb static inline u8 *
2429af1bba4SBjoern A. Zeeb iwl_uefi_get_reduced_power(struct iwl_trans *trans, size_t *len)
243bfcc09ddSBjoern A. Zeeb {
244bfcc09ddSBjoern A. Zeeb 	return ERR_PTR(-EOPNOTSUPP);
245bfcc09ddSBjoern A. Zeeb }
2469af1bba4SBjoern A. Zeeb 
2479af1bba4SBjoern A. Zeeb static inline void iwl_uefi_get_step_table(struct iwl_trans *trans)
2489af1bba4SBjoern A. Zeeb {
2499af1bba4SBjoern A. Zeeb }
2509af1bba4SBjoern A. Zeeb 
2519af1bba4SBjoern A. Zeeb static inline int
2529af1bba4SBjoern A. Zeeb iwl_uefi_handle_tlv_mem_desc(struct iwl_trans *trans, const u8 *data,
2539af1bba4SBjoern A. Zeeb 			     u32 tlv_len, struct iwl_pnvm_image *pnvm_data)
2549af1bba4SBjoern A. Zeeb {
2559af1bba4SBjoern A. Zeeb 	return 0;
2569af1bba4SBjoern A. Zeeb }
257bfcc09ddSBjoern A. Zeeb 
258*a4128aadSBjoern A. Zeeb static inline int iwl_uefi_get_wrds_table(struct iwl_fw_runtime *fwrt)
259*a4128aadSBjoern A. Zeeb {
260*a4128aadSBjoern A. Zeeb 	return -ENOENT;
261*a4128aadSBjoern A. Zeeb }
262*a4128aadSBjoern A. Zeeb 
263*a4128aadSBjoern A. Zeeb static inline int iwl_uefi_get_ewrd_table(struct iwl_fw_runtime *fwrt)
264*a4128aadSBjoern A. Zeeb {
265*a4128aadSBjoern A. Zeeb 	return -ENOENT;
266*a4128aadSBjoern A. Zeeb }
267*a4128aadSBjoern A. Zeeb 
268*a4128aadSBjoern A. Zeeb static inline int iwl_uefi_get_wgds_table(struct iwl_fw_runtime *fwrt)
269*a4128aadSBjoern A. Zeeb {
270*a4128aadSBjoern A. Zeeb 	return -ENOENT;
271*a4128aadSBjoern A. Zeeb }
272*a4128aadSBjoern A. Zeeb 
273*a4128aadSBjoern A. Zeeb static inline int iwl_uefi_get_ppag_table(struct iwl_fw_runtime *fwrt)
274*a4128aadSBjoern A. Zeeb {
275*a4128aadSBjoern A. Zeeb 	return -ENOENT;
276*a4128aadSBjoern A. Zeeb }
277*a4128aadSBjoern A. Zeeb 
278*a4128aadSBjoern A. Zeeb static inline int iwl_uefi_get_tas_table(struct iwl_fw_runtime *fwrt,
279*a4128aadSBjoern A. Zeeb 					 struct iwl_tas_data *data)
280*a4128aadSBjoern A. Zeeb {
281*a4128aadSBjoern A. Zeeb 	return -ENOENT;
282*a4128aadSBjoern A. Zeeb }
283*a4128aadSBjoern A. Zeeb 
284*a4128aadSBjoern A. Zeeb static inline int iwl_uefi_get_pwr_limit(struct iwl_fw_runtime *fwrt,
285*a4128aadSBjoern A. Zeeb 					 u64 *dflt_pwr_limit)
286*a4128aadSBjoern A. Zeeb {
287*a4128aadSBjoern A. Zeeb 	*dflt_pwr_limit = 0;
288*a4128aadSBjoern A. Zeeb 	return 0;
289*a4128aadSBjoern A. Zeeb }
290*a4128aadSBjoern A. Zeeb 
291*a4128aadSBjoern A. Zeeb static inline int iwl_uefi_get_mcc(struct iwl_fw_runtime *fwrt, char *mcc)
292*a4128aadSBjoern A. Zeeb {
293*a4128aadSBjoern A. Zeeb 	return -ENOENT;
294*a4128aadSBjoern A. Zeeb }
295*a4128aadSBjoern A. Zeeb 
296*a4128aadSBjoern A. Zeeb static inline int iwl_uefi_get_eckv(struct iwl_fw_runtime *fwrt, u32 *extl_clk)
297*a4128aadSBjoern A. Zeeb {
298*a4128aadSBjoern A. Zeeb 	return -ENOENT;
299*a4128aadSBjoern A. Zeeb }
300*a4128aadSBjoern A. Zeeb 
301*a4128aadSBjoern A. Zeeb static inline int iwl_uefi_get_wbem(struct iwl_fw_runtime *fwrt, u32 *value)
302*a4128aadSBjoern A. Zeeb {
303*a4128aadSBjoern A. Zeeb 	return -ENOENT;
304*a4128aadSBjoern A. Zeeb }
305*a4128aadSBjoern A. Zeeb 
306*a4128aadSBjoern A. Zeeb static inline int iwl_uefi_get_dsm(struct iwl_fw_runtime *fwrt,
307*a4128aadSBjoern A. Zeeb 				   enum iwl_dsm_funcs func, u32 *value)
308*a4128aadSBjoern A. Zeeb {
309*a4128aadSBjoern A. Zeeb 	return -ENOENT;
310*a4128aadSBjoern A. Zeeb }
311*a4128aadSBjoern A. Zeeb 
312d9836fb4SBjoern A. Zeeb static inline
313d9836fb4SBjoern A. Zeeb void iwl_uefi_get_sgom_table(struct iwl_trans *trans, struct iwl_fw_runtime *fwrt)
314d9836fb4SBjoern A. Zeeb {
315d9836fb4SBjoern A. Zeeb }
316*a4128aadSBjoern A. Zeeb 
317*a4128aadSBjoern A. Zeeb static inline
318*a4128aadSBjoern A. Zeeb int iwl_uefi_get_uats_table(struct iwl_trans *trans,
319*a4128aadSBjoern A. Zeeb 			    struct iwl_fw_runtime *fwrt)
320*a4128aadSBjoern A. Zeeb {
321*a4128aadSBjoern A. Zeeb 	return 0;
322*a4128aadSBjoern A. Zeeb }
323*a4128aadSBjoern A. Zeeb #endif /* CONFIG_EFI */
324bfcc09ddSBjoern A. Zeeb #endif /* __iwl_fw_uefi__ */
325