| /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ |
| /* Copyright(c) 2021-2023 Realtek Corporation |
| */ |
| |
| #ifndef __RTW89_ACPI_H__ |
| #define __RTW89_ACPI_H__ |
| |
| #include "core.h" |
| |
| enum rtw89_acpi_dsm_func { |
| RTW89_ACPI_DSM_FUNC_IDN_BAND_SUP = 2, |
| RTW89_ACPI_DSM_FUNC_6G_DIS = 3, |
| RTW89_ACPI_DSM_FUNC_6G_BP = 4, |
| RTW89_ACPI_DSM_FUNC_TAS_EN = 5, |
| RTW89_ACPI_DSM_FUNC_UNII4_SUP = 6, |
| RTW89_ACPI_DSM_FUNC_6GHZ_SP_SUP = 7, |
| }; |
| |
| enum rtw89_acpi_conf_unii4 { |
| RTW89_ACPI_CONF_UNII4_FCC = BIT(0), |
| RTW89_ACPI_CONF_UNII4_IC = BIT(1), |
| }; |
| |
| enum rtw89_acpi_policy_mode { |
| RTW89_ACPI_POLICY_BLOCK = 0, |
| RTW89_ACPI_POLICY_ALLOW = 1, |
| }; |
| |
| struct rtw89_acpi_country_code { |
| /* below are allowed: |
| * * ISO alpha2 country code |
| * * EU for countries in Europe |
| */ |
| char alpha2[2]; |
| } __packed; |
| |
| struct rtw89_acpi_policy_6ghz { |
| u8 signature[3]; |
| u8 rsvd; |
| u8 policy_mode; |
| u8 country_count; |
| struct rtw89_acpi_country_code country_list[] __counted_by(country_count); |
| } __packed; |
| |
| enum rtw89_acpi_conf_6ghz_sp { |
| RTW89_ACPI_CONF_6GHZ_SP_US = BIT(0), |
| }; |
| |
| struct rtw89_acpi_policy_6ghz_sp { |
| u8 signature[4]; |
| u8 revision; |
| u8 override; |
| u8 conf; |
| u8 rsvd; |
| } __packed; |
| |
| struct rtw89_acpi_dsm_result { |
| union { |
| u8 value; |
| /* caller needs to free it after using */ |
| struct rtw89_acpi_policy_6ghz *policy_6ghz; |
| struct rtw89_acpi_policy_6ghz_sp *policy_6ghz_sp; |
| } u; |
| }; |
| |
| int rtw89_acpi_evaluate_dsm(struct rtw89_dev *rtwdev, |
| enum rtw89_acpi_dsm_func func, |
| struct rtw89_acpi_dsm_result *res); |
| |
| #endif |