1*a9655020SBjoern A. Zeeb /* SPDX-License-Identifier: BSD-3-Clause-Clear */ 2*a9655020SBjoern A. Zeeb /* 3*a9655020SBjoern A. Zeeb * Copyright (c) 2018-2021 The Linux Foundation. All rights reserved. 4*a9655020SBjoern A. Zeeb * Copyright (c) 2021-2025 Qualcomm Innovation Center, Inc. All rights reserved. 5*a9655020SBjoern A. Zeeb */ 6*a9655020SBjoern A. Zeeb #ifndef ATH12K_ACPI_H 7*a9655020SBjoern A. Zeeb #define ATH12K_ACPI_H 8*a9655020SBjoern A. Zeeb 9*a9655020SBjoern A. Zeeb #include <linux/acpi.h> 10*a9655020SBjoern A. Zeeb 11*a9655020SBjoern A. Zeeb #define ATH12K_ACPI_DSM_FUNC_SUPPORT_FUNCS 0 12*a9655020SBjoern A. Zeeb #define ATH12K_ACPI_DSM_FUNC_DISABLE_FLAG 2 13*a9655020SBjoern A. Zeeb #define ATH12K_ACPI_DSM_FUNC_BDF_EXT 3 14*a9655020SBjoern A. Zeeb #define ATH12K_ACPI_DSM_FUNC_BIOS_SAR 4 15*a9655020SBjoern A. Zeeb #define ATH12K_ACPI_DSM_FUNC_GEO_OFFSET 5 16*a9655020SBjoern A. Zeeb #define ATH12K_ACPI_DSM_FUNC_INDEX_CCA 6 17*a9655020SBjoern A. Zeeb #define ATH12K_ACPI_DSM_FUNC_TAS_CFG 8 18*a9655020SBjoern A. Zeeb #define ATH12K_ACPI_DSM_FUNC_TAS_DATA 9 19*a9655020SBjoern A. Zeeb #define ATH12K_ACPI_DSM_FUNC_INDEX_BAND_EDGE 10 20*a9655020SBjoern A. Zeeb 21*a9655020SBjoern A. Zeeb #define ATH12K_ACPI_FUNC_BIT_DISABLE_FLAG BIT(1) 22*a9655020SBjoern A. Zeeb #define ATH12K_ACPI_FUNC_BIT_BDF_EXT BIT(2) 23*a9655020SBjoern A. Zeeb #define ATH12K_ACPI_FUNC_BIT_BIOS_SAR BIT(3) 24*a9655020SBjoern A. Zeeb #define ATH12K_ACPI_FUNC_BIT_GEO_OFFSET BIT(4) 25*a9655020SBjoern A. Zeeb #define ATH12K_ACPI_FUNC_BIT_CCA BIT(5) 26*a9655020SBjoern A. Zeeb #define ATH12K_ACPI_FUNC_BIT_TAS_CFG BIT(7) 27*a9655020SBjoern A. Zeeb #define ATH12K_ACPI_FUNC_BIT_TAS_DATA BIT(8) 28*a9655020SBjoern A. Zeeb #define ATH12K_ACPI_FUNC_BIT_BAND_EDGE_CHAN_POWER BIT(9) 29*a9655020SBjoern A. Zeeb 30*a9655020SBjoern A. Zeeb #define ATH12K_ACPI_NOTIFY_EVENT 0x86 31*a9655020SBjoern A. Zeeb #define ATH12K_ACPI_FUNC_BIT_VALID(_acdata, _func) (((_acdata).func_bit) & (_func)) 32*a9655020SBjoern A. Zeeb #define ATH12K_ACPI_CHEK_BIT_VALID(_acdata, _func) (((_acdata).bit_flag) & (_func)) 33*a9655020SBjoern A. Zeeb 34*a9655020SBjoern A. Zeeb #define ATH12K_ACPI_TAS_DATA_VERSION 0x1 35*a9655020SBjoern A. Zeeb #define ATH12K_ACPI_TAS_DATA_ENABLE 0x1 36*a9655020SBjoern A. Zeeb #define ATH12K_ACPI_POWER_LIMIT_VERSION 0x1 37*a9655020SBjoern A. Zeeb #define ATH12K_ACPI_POWER_LIMIT_ENABLE_FLAG 0x1 38*a9655020SBjoern A. Zeeb #define ATH12K_ACPI_CCA_THR_VERSION 0x1 39*a9655020SBjoern A. Zeeb #define ATH12K_ACPI_CCA_THR_ENABLE_FLAG 0x1 40*a9655020SBjoern A. Zeeb #define ATH12K_ACPI_BAND_EDGE_VERSION 0x1 41*a9655020SBjoern A. Zeeb #define ATH12K_ACPI_BAND_EDGE_ENABLE_FLAG 0x1 42*a9655020SBjoern A. Zeeb 43*a9655020SBjoern A. Zeeb #define ATH12K_ACPI_GEO_OFFSET_DATA_OFFSET 1 44*a9655020SBjoern A. Zeeb #define ATH12K_ACPI_DBS_BACKOFF_DATA_OFFSET 2 45*a9655020SBjoern A. Zeeb #define ATH12K_ACPI_CCA_THR_OFFSET_DATA_OFFSET 5 46*a9655020SBjoern A. Zeeb #define ATH12K_ACPI_BIOS_SAR_DBS_BACKOFF_LEN 10 47*a9655020SBjoern A. Zeeb #define ATH12K_ACPI_POWER_LIMIT_DATA_OFFSET 12 48*a9655020SBjoern A. Zeeb #define ATH12K_ACPI_BIOS_SAR_GEO_OFFSET_LEN 18 49*a9655020SBjoern A. Zeeb #define ATH12K_ACPI_BIOS_SAR_TABLE_LEN 22 50*a9655020SBjoern A. Zeeb #define ATH12K_ACPI_CCA_THR_OFFSET_LEN 36 51*a9655020SBjoern A. Zeeb 52*a9655020SBjoern A. Zeeb #define ATH12K_ACPI_DSM_TAS_DATA_SIZE 69 53*a9655020SBjoern A. Zeeb #define ATH12K_ACPI_DSM_BAND_EDGE_DATA_SIZE 100 54*a9655020SBjoern A. Zeeb #define ATH12K_ACPI_DSM_TAS_CFG_SIZE 108 55*a9655020SBjoern A. Zeeb 56*a9655020SBjoern A. Zeeb #define ATH12K_ACPI_DSM_FUNC_MIN_BITMAP_SIZE 1 57*a9655020SBjoern A. Zeeb #define ATH12K_ACPI_DSM_FUNC_MAX_BITMAP_SIZE 4 58*a9655020SBjoern A. Zeeb 59*a9655020SBjoern A. Zeeb #define ATH12K_ACPI_DSM_DISABLE_11BE_BIT BIT(0) 60*a9655020SBjoern A. Zeeb #define ATH12K_ACPI_DSM_DISABLE_RFKILL_BIT BIT(2) 61*a9655020SBjoern A. Zeeb 62*a9655020SBjoern A. Zeeb #define ATH12K_ACPI_BDF_ANCHOR_STRING_LEN 3 63*a9655020SBjoern A. Zeeb #define ATH12K_ACPI_BDF_ANCHOR_STRING "BDF" 64*a9655020SBjoern A. Zeeb #define ATH12K_ACPI_BDF_MAX_LEN 100 65*a9655020SBjoern A. Zeeb 66*a9655020SBjoern A. Zeeb #define ATH12K_ACPI_DSM_GEO_OFFSET_DATA_SIZE (ATH12K_ACPI_GEO_OFFSET_DATA_OFFSET + \ 67*a9655020SBjoern A. Zeeb ATH12K_ACPI_BIOS_SAR_GEO_OFFSET_LEN) 68*a9655020SBjoern A. Zeeb #define ATH12K_ACPI_DSM_BIOS_SAR_DATA_SIZE (ATH12K_ACPI_POWER_LIMIT_DATA_OFFSET + \ 69*a9655020SBjoern A. Zeeb ATH12K_ACPI_BIOS_SAR_TABLE_LEN) 70*a9655020SBjoern A. Zeeb #define ATH12K_ACPI_DSM_CCA_DATA_SIZE (ATH12K_ACPI_CCA_THR_OFFSET_DATA_OFFSET + \ 71*a9655020SBjoern A. Zeeb ATH12K_ACPI_CCA_THR_OFFSET_LEN) 72*a9655020SBjoern A. Zeeb 73*a9655020SBjoern A. Zeeb #ifdef CONFIG_ACPI 74*a9655020SBjoern A. Zeeb 75*a9655020SBjoern A. Zeeb int ath12k_acpi_start(struct ath12k_base *ab); 76*a9655020SBjoern A. Zeeb void ath12k_acpi_stop(struct ath12k_base *ab); 77*a9655020SBjoern A. Zeeb bool ath12k_acpi_get_disable_rfkill(struct ath12k_base *ab); 78*a9655020SBjoern A. Zeeb bool ath12k_acpi_get_disable_11be(struct ath12k_base *ab); 79*a9655020SBjoern A. Zeeb void ath12k_acpi_set_dsm_func(struct ath12k_base *ab); 80*a9655020SBjoern A. Zeeb int ath12k_acpi_check_bdf_variant_name(struct ath12k_base *ab); 81*a9655020SBjoern A. Zeeb 82*a9655020SBjoern A. Zeeb #else 83*a9655020SBjoern A. Zeeb ath12k_acpi_start(struct ath12k_base * ab)84*a9655020SBjoern A. Zeebstatic inline int ath12k_acpi_start(struct ath12k_base *ab) 85*a9655020SBjoern A. Zeeb { 86*a9655020SBjoern A. Zeeb return 0; 87*a9655020SBjoern A. Zeeb } 88*a9655020SBjoern A. Zeeb ath12k_acpi_stop(struct ath12k_base * ab)89*a9655020SBjoern A. Zeebstatic inline void ath12k_acpi_stop(struct ath12k_base *ab) 90*a9655020SBjoern A. Zeeb { 91*a9655020SBjoern A. Zeeb } 92*a9655020SBjoern A. Zeeb ath12k_acpi_get_disable_rfkill(struct ath12k_base * ab)93*a9655020SBjoern A. Zeebstatic inline bool ath12k_acpi_get_disable_rfkill(struct ath12k_base *ab) 94*a9655020SBjoern A. Zeeb { 95*a9655020SBjoern A. Zeeb return false; 96*a9655020SBjoern A. Zeeb } 97*a9655020SBjoern A. Zeeb ath12k_acpi_get_disable_11be(struct ath12k_base * ab)98*a9655020SBjoern A. Zeebstatic inline bool ath12k_acpi_get_disable_11be(struct ath12k_base *ab) 99*a9655020SBjoern A. Zeeb { 100*a9655020SBjoern A. Zeeb return false; 101*a9655020SBjoern A. Zeeb } 102*a9655020SBjoern A. Zeeb ath12k_acpi_set_dsm_func(struct ath12k_base * ab)103*a9655020SBjoern A. Zeebstatic inline void ath12k_acpi_set_dsm_func(struct ath12k_base *ab) 104*a9655020SBjoern A. Zeeb { 105*a9655020SBjoern A. Zeeb } 106*a9655020SBjoern A. Zeeb ath12k_acpi_check_bdf_variant_name(struct ath12k_base * ab)107*a9655020SBjoern A. Zeebstatic inline int ath12k_acpi_check_bdf_variant_name(struct ath12k_base *ab) 108*a9655020SBjoern A. Zeeb { 109*a9655020SBjoern A. Zeeb return 0; 110*a9655020SBjoern A. Zeeb } 111*a9655020SBjoern A. Zeeb 112*a9655020SBjoern A. Zeeb #endif /* CONFIG_ACPI */ 113*a9655020SBjoern A. Zeeb 114*a9655020SBjoern A. Zeeb #endif /* ATH12K_ACPI_H */ 115