0001
0002
0003
0004 #ifndef __MT7921_ACPI_SAR_H
0005 #define __MT7921_ACPI_SAR_H
0006
0007 #define MT7921_ASAR_MIN_DYN 1
0008 #define MT7921_ASAR_MAX_DYN 8
0009 #define MT7921_ASAR_MIN_GEO 3
0010 #define MT7921_ASAR_MAX_GEO 8
0011
0012 #define MT7921_ACPI_MTCL "MTCL"
0013 #define MT7921_ACPI_MTDS "MTDS"
0014 #define MT7921_ACPI_MTGS "MTGS"
0015
0016 struct mt7921_asar_dyn_limit {
0017 u8 idx;
0018 u8 frp[5];
0019 } __packed;
0020
0021 struct mt7921_asar_dyn {
0022 u8 names[4];
0023 u8 enable;
0024 u8 nr_tbl;
0025 struct mt7921_asar_dyn_limit tbl[0];
0026 } __packed;
0027
0028 struct mt7921_asar_dyn_limit_v2 {
0029 u8 idx;
0030 u8 frp[11];
0031 } __packed;
0032
0033 struct mt7921_asar_dyn_v2 {
0034 u8 names[4];
0035 u8 enable;
0036 u8 rsvd;
0037 u8 nr_tbl;
0038 struct mt7921_asar_dyn_limit_v2 tbl[0];
0039 } __packed;
0040
0041 struct mt7921_asar_geo_band {
0042 u8 pwr;
0043 u8 offset;
0044 } __packed;
0045
0046 struct mt7921_asar_geo_limit {
0047 u8 idx;
0048
0049 struct mt7921_asar_geo_band band[2];
0050 } __packed;
0051
0052 struct mt7921_asar_geo {
0053 u8 names[4];
0054 u8 version;
0055 u8 nr_tbl;
0056 struct mt7921_asar_geo_limit tbl[0];
0057 } __packed;
0058
0059 struct mt7921_asar_geo_limit_v2 {
0060 u8 idx;
0061
0062 struct mt7921_asar_geo_band band[3];
0063 } __packed;
0064
0065 struct mt7921_asar_geo_v2 {
0066 u8 names[4];
0067 u8 version;
0068 u8 rsvd;
0069 u8 nr_tbl;
0070 struct mt7921_asar_geo_limit_v2 tbl[0];
0071 } __packed;
0072
0073 struct mt7921_asar_cl {
0074 u8 names[4];
0075 u8 version;
0076 u8 mode_6g;
0077 u8 cl6g[6];
0078 } __packed;
0079
0080 struct mt7921_acpi_sar {
0081 u8 ver;
0082 union {
0083 struct mt7921_asar_dyn *dyn;
0084 struct mt7921_asar_dyn_v2 *dyn_v2;
0085 };
0086 union {
0087 struct mt7921_asar_geo *geo;
0088 struct mt7921_asar_geo_v2 *geo_v2;
0089 };
0090 struct mt7921_asar_cl *countrylist;
0091 };
0092
0093 #endif