Linux Audio

Check our new training course

Loading...
Note: File does not exist in v3.1.
  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__ */