Loading...
Note: File does not exist in v3.15.
1/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
2/*
3 * Copyright(c) 2021 Intel Corporation
4 */
5#ifndef __iwl_fw_uefi__
6#define __iwl_fw_uefi__
7
8#define IWL_UEFI_OEM_PNVM_NAME L"UefiCnvWlanOemSignedPnvm"
9#define IWL_UEFI_REDUCED_POWER_NAME L"UefiCnvWlanReducedPower"
10#define IWL_UEFI_SGOM_NAME L"UefiCnvWlanSarGeoOffsetMapping"
11
12/*
13 * TODO: we have these hardcoded values that the caller must pass,
14 * because reading from the UEFI is not working. To implement this
15 * properly, we have to change iwl_pnvm_get_from_uefi() to call
16 * efivar_entry_size() and return the value to the caller instead.
17 */
18#define IWL_HARDCODED_PNVM_SIZE 4096
19#define IWL_HARDCODED_REDUCE_POWER_SIZE 32768
20#define IWL_HARDCODED_SGOM_SIZE 339
21
22struct pnvm_sku_package {
23 u8 rev;
24 u32 total_size;
25 u8 n_skus;
26 u32 reserved[2];
27 u8 data[];
28} __packed;
29
30struct uefi_cnv_wlan_sgom_data {
31 u8 revision;
32 u8 offset_map[IWL_HARDCODED_SGOM_SIZE - 1];
33} __packed;
34
35/*
36 * This is known to be broken on v4.19 and to work on v5.4. Until we
37 * figure out why this is the case and how to make it work, simply
38 * disable the feature in old kernels.
39 */
40#ifdef CONFIG_EFI
41void *iwl_uefi_get_pnvm(struct iwl_trans *trans, size_t *len);
42void *iwl_uefi_get_reduced_power(struct iwl_trans *trans, size_t *len);
43#else /* CONFIG_EFI */
44static inline
45void *iwl_uefi_get_pnvm(struct iwl_trans *trans, size_t *len)
46{
47 return ERR_PTR(-EOPNOTSUPP);
48}
49
50static inline
51void *iwl_uefi_get_reduced_power(struct iwl_trans *trans, size_t *len)
52{
53 return ERR_PTR(-EOPNOTSUPP);
54}
55#endif /* CONFIG_EFI */
56
57#if defined(CONFIG_EFI) && defined(CONFIG_ACPI)
58void iwl_uefi_get_sgom_table(struct iwl_trans *trans, struct iwl_fw_runtime *fwrt);
59#else
60static inline
61void iwl_uefi_get_sgom_table(struct iwl_trans *trans, struct iwl_fw_runtime *fwrt)
62{
63}
64#endif
65#endif /* __iwl_fw_uefi__ */