Linux Audio

Check our new training course

Loading...
v6.8
  1/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
  2/*
  3 * Copyright(c) 2021-2023 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#define IWL_UEFI_STEP_NAME		L"UefiCnvCommonSTEP"
 12#define IWL_UEFI_UATS_NAME		L"CnvUefiWlanUATS"
 13
 14#define IWL_SGOM_MAP_SIZE		339
 15#define IWL_UATS_MAP_SIZE		339
 
 
 
 
 
 
 16
 17struct pnvm_sku_package {
 18	u8 rev;
 19	u32 total_size;
 20	u8 n_skus;
 21	u32 reserved[2];
 22	u8 data[];
 23} __packed;
 24
 25struct uefi_cnv_wlan_sgom_data {
 26	u8 revision;
 27	u8 offset_map[IWL_SGOM_MAP_SIZE - 1];
 28} __packed;
 29
 30struct uefi_cnv_wlan_uats_data {
 31	u8 revision;
 32	u8 offset_map[IWL_UATS_MAP_SIZE - 1];
 33} __packed;
 34
 35struct uefi_cnv_common_step_data {
 36	u8 revision;
 37	u8 step_mode;
 38	u8 cnvi_eq_channel;
 39	u8 cnvr_eq_channel;
 40	u8 radio1;
 41	u8 radio2;
 42} __packed;
 43
 44/*
 45 * This is known to be broken on v4.19 and to work on v5.4.  Until we
 46 * figure out why this is the case and how to make it work, simply
 47 * disable the feature in old kernels.
 48 */
 49#ifdef CONFIG_EFI
 50void *iwl_uefi_get_pnvm(struct iwl_trans *trans, size_t *len);
 51u8 *iwl_uefi_get_reduced_power(struct iwl_trans *trans, size_t *len);
 52int iwl_uefi_reduce_power_parse(struct iwl_trans *trans,
 53				const u8 *data, size_t len,
 54				struct iwl_pnvm_image *pnvm_data);
 55void iwl_uefi_get_step_table(struct iwl_trans *trans);
 56int iwl_uefi_handle_tlv_mem_desc(struct iwl_trans *trans, const u8 *data,
 57				 u32 tlv_len, struct iwl_pnvm_image *pnvm_data);
 58#else /* CONFIG_EFI */
 59static inline void *iwl_uefi_get_pnvm(struct iwl_trans *trans, size_t *len)
 
 60{
 61	return ERR_PTR(-EOPNOTSUPP);
 62}
 63
 64static inline int
 65iwl_uefi_reduce_power_parse(struct iwl_trans *trans,
 66			    const u8 *data, size_t len,
 67			    struct iwl_pnvm_image *pnvm_data)
 68{
 69	return -EOPNOTSUPP;
 70}
 71
 72static inline u8 *
 73iwl_uefi_get_reduced_power(struct iwl_trans *trans, size_t *len)
 74{
 75	return ERR_PTR(-EOPNOTSUPP);
 76}
 77
 78static inline void iwl_uefi_get_step_table(struct iwl_trans *trans)
 79{
 80}
 81
 82static inline int
 83iwl_uefi_handle_tlv_mem_desc(struct iwl_trans *trans, const u8 *data,
 84			     u32 tlv_len, struct iwl_pnvm_image *pnvm_data)
 85{
 86	return 0;
 87}
 88#endif /* CONFIG_EFI */
 89
 90#if defined(CONFIG_EFI) && defined(CONFIG_ACPI)
 91void iwl_uefi_get_sgom_table(struct iwl_trans *trans, struct iwl_fw_runtime *fwrt);
 92int iwl_uefi_get_uats_table(struct iwl_trans *trans,
 93			    struct iwl_fw_runtime *fwrt);
 94#else
 95static inline
 96void iwl_uefi_get_sgom_table(struct iwl_trans *trans, struct iwl_fw_runtime *fwrt)
 97{
 98}
 99
100static inline
101int iwl_uefi_get_uats_table(struct iwl_trans *trans,
102			    struct iwl_fw_runtime *fwrt)
103{
104	return 0;
105}
106
107#endif
108#endif /* __iwl_fw_uefi__ */
v5.14.15
 1/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
 2/*
 3 * Copyright(c) 2021 Intel Corporation
 4 */
 5
 
 6
 7#define IWL_UEFI_OEM_PNVM_NAME		L"UefiCnvWlanOemSignedPnvm"
 8#define IWL_UEFI_REDUCED_POWER_NAME	L"UefiCnvWlanReducedPower"
 
 
 
 9
10/*
11 * TODO: we have these hardcoded values that the caller must pass,
12 * because reading from the UEFI is not working.  To implement this
13 * properly, we have to change iwl_pnvm_get_from_uefi() to call
14 * efivar_entry_size() and return the value to the caller instead.
15 */
16#define IWL_HARDCODED_PNVM_SIZE		4096
17#define IWL_HARDCODED_REDUCE_POWER_SIZE	32768
18
19struct pnvm_sku_package {
20	u8 rev;
21	u32 total_size;
22	u8 n_skus;
23	u32 reserved[2];
24	u8 data[];
25} __packed;
26
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27#ifdef CONFIG_EFI
28void *iwl_uefi_get_pnvm(struct iwl_trans *trans, size_t *len);
29void *iwl_uefi_get_reduced_power(struct iwl_trans *trans, size_t *len);
 
 
 
 
 
 
30#else /* CONFIG_EFI */
31static inline
32void *iwl_uefi_get_pnvm(struct iwl_trans *trans, size_t *len)
33{
34	return ERR_PTR(-EOPNOTSUPP);
35}
36
37static inline
38void *iwl_uefi_get_reduced_power(struct iwl_trans *trans, size_t *len)
 
 
 
 
 
 
 
 
39{
40	return ERR_PTR(-EOPNOTSUPP);
41}
 
 
 
 
 
 
 
 
 
 
 
42#endif /* CONFIG_EFI */