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