blob: 23f86bfae0c057beaf35542d6109068dafb089c0 [file] [log] [blame]
developer0f312e82022-11-01 12:31:52 +08001/* SPDX-License-Identifier: ISC */
2/* Copyright (C) 2022 MediaTek Inc. */
3
4#ifndef __MT7921_ACPI_SAR_H
5#define __MT7921_ACPI_SAR_H
6
7#define MT7921_ASAR_MIN_DYN 1
8#define MT7921_ASAR_MAX_DYN 8
9#define MT7921_ASAR_MIN_GEO 3
10#define MT7921_ASAR_MAX_GEO 8
11
12#define MT7921_ACPI_MTCL "MTCL"
13#define MT7921_ACPI_MTDS "MTDS"
14#define MT7921_ACPI_MTGS "MTGS"
15
16struct mt7921_asar_dyn_limit {
17 u8 idx;
18 u8 frp[5];
19} __packed;
20
21struct mt7921_asar_dyn {
22 u8 names[4];
23 u8 enable;
24 u8 nr_tbl;
25 struct mt7921_asar_dyn_limit tbl[0];
26} __packed;
27
28struct mt7921_asar_dyn_limit_v2 {
29 u8 idx;
30 u8 frp[11];
31} __packed;
32
33struct mt7921_asar_dyn_v2 {
34 u8 names[4];
35 u8 enable;
36 u8 rsvd;
37 u8 nr_tbl;
38 struct mt7921_asar_dyn_limit_v2 tbl[0];
39} __packed;
40
41struct mt7921_asar_geo_band {
42 u8 pwr;
43 u8 offset;
44} __packed;
45
46struct mt7921_asar_geo_limit {
47 u8 idx;
48 /* 0:2G, 1:5G */
49 struct mt7921_asar_geo_band band[2];
50} __packed;
51
52struct mt7921_asar_geo {
53 u8 names[4];
54 u8 version;
55 u8 nr_tbl;
56 struct mt7921_asar_geo_limit tbl[0];
57} __packed;
58
59struct mt7921_asar_geo_limit_v2 {
60 u8 idx;
61 /* 0:2G, 1:5G, 2:6G */
62 struct mt7921_asar_geo_band band[3];
63} __packed;
64
65struct mt7921_asar_geo_v2 {
66 u8 names[4];
67 u8 version;
68 u8 rsvd;
69 u8 nr_tbl;
70 struct mt7921_asar_geo_limit_v2 tbl[0];
71} __packed;
72
73struct mt7921_asar_cl {
74 u8 names[4];
75 u8 version;
76 u8 mode_6g;
77 u8 cl6g[6];
78} __packed;
79
80struct mt7921_acpi_sar {
81 u8 ver;
82 union {
83 struct mt7921_asar_dyn *dyn;
84 struct mt7921_asar_dyn_v2 *dyn_v2;
85 };
86 union {
87 struct mt7921_asar_geo *geo;
88 struct mt7921_asar_geo_v2 *geo_v2;
89 };
90 struct mt7921_asar_cl *countrylist;
91};
92
93#endif