Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: ISC */
0002 /* Copyright (C) 2022 MediaTek Inc. */
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     /* 0:2G, 1:5G */
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     /* 0:2G, 1:5G, 2:6G */
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