1 | /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ |
2 | /* Copyright(c) 2021-2023 Realtek Corporation |
3 | */ |
4 | |
5 | #ifndef __RTW89_ACPI_H__ |
6 | #define __RTW89_ACPI_H__ |
7 | |
8 | #include "core.h" |
9 | |
10 | enum rtw89_acpi_dsm_func { |
11 | RTW89_ACPI_DSM_FUNC_IDN_BAND_SUP = 2, |
12 | RTW89_ACPI_DSM_FUNC_6G_DIS = 3, |
13 | RTW89_ACPI_DSM_FUNC_6G_BP = 4, |
14 | RTW89_ACPI_DSM_FUNC_TAS_EN = 5, |
15 | RTW89_ACPI_DSM_FUNC_59G_EN = 6, |
16 | }; |
17 | |
18 | enum rtw89_acpi_policy_mode { |
19 | RTW89_ACPI_POLICY_BLOCK = 0, |
20 | RTW89_ACPI_POLICY_ALLOW = 1, |
21 | }; |
22 | |
23 | struct rtw89_acpi_country_code { |
24 | /* below are allowed: |
25 | * * ISO alpha2 country code |
26 | * * EU for countries in Europe |
27 | */ |
28 | char alpha2[2]; |
29 | } __packed; |
30 | |
31 | struct rtw89_acpi_policy_6ghz { |
32 | u8 signature[3]; |
33 | u8 rsvd; |
34 | u8 policy_mode; |
35 | u8 country_count; |
36 | struct rtw89_acpi_country_code country_list[] __counted_by(country_count); |
37 | } __packed; |
38 | |
39 | struct rtw89_acpi_dsm_result { |
40 | union { |
41 | u8 value; |
42 | /* caller needs to free it after using */ |
43 | struct rtw89_acpi_policy_6ghz *policy_6ghz; |
44 | } u; |
45 | }; |
46 | |
47 | int rtw89_acpi_evaluate_dsm(struct rtw89_dev *rtwdev, |
48 | enum rtw89_acpi_dsm_func func, |
49 | struct rtw89_acpi_dsm_result *res); |
50 | |
51 | #endif |
52 | |