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