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