1 /* SPDX-License-Identifier: ISC */ 2 /* Copyright (C) 2023 MediaTek Inc. */ 3 4 #ifndef __MT7921_ACPI_SAR_H 5 #define __MT7921_ACPI_SAR_H 6 7 #define MT792x_ASAR_MIN_DYN 1 8 #define MT792x_ASAR_MAX_DYN 8 9 #define MT792x_ASAR_MIN_GEO 3 10 #define MT792x_ASAR_MAX_GEO 8 11 #define MT792x_ASAR_MIN_FG 8 12 13 #define MT792x_ACPI_MTCL "MTCL" 14 #define MT792x_ACPI_MTDS "MTDS" 15 #define MT792x_ACPI_MTGS "MTGS" 16 #define MT792x_ACPI_MTFG "MTFG" 17 18 #define MT792X_ACPI_MTCL_INVALID 0xffffffff 19 20 struct mt792x_asar_dyn_limit { 21 u8 idx; 22 u8 frp[5]; 23 } __packed; 24 25 struct mt792x_asar_dyn { 26 u8 names[4]; 27 u8 enable; 28 u8 nr_tbl; 29 DECLARE_FLEX_ARRAY(struct mt792x_asar_dyn_limit, tbl); 30 } __packed; 31 32 struct mt792x_asar_dyn_limit_v2 { 33 u8 idx; 34 u8 frp[11]; 35 } __packed; 36 37 struct mt792x_asar_dyn_v2 { 38 u8 names[4]; 39 u8 enable; 40 u8 rsvd; 41 u8 nr_tbl; 42 DECLARE_FLEX_ARRAY(struct mt792x_asar_dyn_limit_v2, tbl); 43 } __packed; 44 45 struct mt792x_asar_geo_band { 46 u8 pwr; 47 u8 offset; 48 } __packed; 49 50 struct mt792x_asar_geo_limit { 51 u8 idx; 52 /* 0:2G, 1:5G */ 53 struct mt792x_asar_geo_band band[2]; 54 } __packed; 55 56 struct mt792x_asar_geo { 57 u8 names[4]; 58 u8 version; 59 u8 nr_tbl; 60 DECLARE_FLEX_ARRAY(struct mt792x_asar_geo_limit, tbl); 61 } __packed; 62 63 struct mt792x_asar_geo_limit_v2 { 64 u8 idx; 65 /* 0:2G, 1:5G, 2:6G */ 66 struct mt792x_asar_geo_band band[3]; 67 } __packed; 68 69 struct mt792x_asar_geo_v2 { 70 u8 names[4]; 71 u8 version; 72 u8 rsvd; 73 u8 nr_tbl; 74 DECLARE_FLEX_ARRAY(struct mt792x_asar_geo_limit_v2, tbl); 75 } __packed; 76 77 struct mt792x_asar_cl_v3 { 78 u8 names[4]; 79 u8 version; 80 u8 mode_6g; 81 u8 cl6g[6]; 82 u8 mode_5g9; 83 u8 cl5g9[6]; 84 u8 mode_be; 85 u8 clbe[6]; 86 } __packed; 87 88 struct mt792x_asar_cl { 89 u8 names[4]; 90 u8 version; 91 u8 mode_6g; 92 u8 cl6g[6]; 93 u8 mode_5g9; 94 u8 cl5g9[6]; 95 } __packed; 96 97 struct mt792x_asar_fg { 98 u8 names[4]; 99 u8 version; 100 u8 rsvd; 101 u8 nr_flag; 102 u8 rsvd1; 103 u8 flag[]; 104 } __packed; 105 106 struct mt792x_acpi_sar { 107 u8 ver; 108 union { 109 struct mt792x_asar_dyn *dyn; 110 struct mt792x_asar_dyn_v2 *dyn_v2; 111 }; 112 union { 113 struct mt792x_asar_geo *geo; 114 struct mt792x_asar_geo_v2 *geo_v2; 115 }; 116 union { 117 struct mt792x_asar_cl *countrylist; 118 struct mt792x_asar_cl_v3 *countrylist_v3; 119 }; 120 struct mt792x_asar_fg *fg; 121 }; 122 123 #endif 124