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