Commit 29f5a494 authored by Lorenzo Bianconi's avatar Lorenzo Bianconi Committed by Felix Fietkau

wifi: mt76: mt7921: move acpi_sar code in mt792x-lib module

Move acpi_sar code in mt792x-lib module since it is shared between
mt7921 and mt7925 driver.
Signed-off-by: default avatarLorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: default avatarDeren Wu <deren.wu@mediatek.com>
Signed-off-by: default avatarFelix Fietkau <nbd@nbd.name>
parent 1c025496
...@@ -33,6 +33,7 @@ mt76-connac-lib-y := mt76_connac_mcu.o mt76_connac_mac.o mt76_connac3_mac.o ...@@ -33,6 +33,7 @@ mt76-connac-lib-y := mt76_connac_mcu.o mt76_connac_mac.o mt76_connac3_mac.o
mt792x-lib-y := mt792x_core.o mt792x_mac.o mt792x_trace.o \ mt792x-lib-y := mt792x_core.o mt792x_mac.o mt792x_trace.o \
mt792x_debugfs.o mt792x_dma.o mt792x_debugfs.o mt792x_dma.o
mt792x-lib-$(CONFIG_ACPI) += mt792x_acpi_sar.o
obj-$(CONFIG_MT76x0_COMMON) += mt76x0/ obj-$(CONFIG_MT76x0_COMMON) += mt76x0/
obj-$(CONFIG_MT76x2_COMMON) += mt76x2/ obj-$(CONFIG_MT76x2_COMMON) += mt76x2/
......
...@@ -7,7 +7,6 @@ obj-$(CONFIG_MT7921U) += mt7921u.o ...@@ -7,7 +7,6 @@ obj-$(CONFIG_MT7921U) += mt7921u.o
mt7921-common-y := mac.o mcu.o main.o init.o debugfs.o mt7921-common-y := mac.o mcu.o main.o init.o debugfs.o
mt7921-common-$(CONFIG_NL80211_TESTMODE) += testmode.o mt7921-common-$(CONFIG_NL80211_TESTMODE) += testmode.o
mt7921-common-$(CONFIG_ACPI) += acpi_sar.o
mt7921e-y := pci.o pci_mac.o pci_mcu.o dma.o mt7921e-y := pci.o pci_mac.o pci_mcu.o dma.o
mt7921s-y := sdio.o sdio_mac.o sdio_mcu.o mt7921s-y := sdio.o sdio_mac.o sdio_mcu.o
mt7921u-y := usb.o usb_mac.o mt7921u-y := usb.o usb_mac.o
...@@ -230,7 +230,7 @@ int mt7921_register_device(struct mt792x_dev *dev) ...@@ -230,7 +230,7 @@ int mt7921_register_device(struct mt792x_dev *dev)
if (!mt76_is_mmio(&dev->mt76)) if (!mt76_is_mmio(&dev->mt76))
hw->extra_tx_headroom += MT_SDIO_TXD_SIZE + MT_SDIO_HDR_SIZE; hw->extra_tx_headroom += MT_SDIO_TXD_SIZE + MT_SDIO_HDR_SIZE;
mt7921_init_acpi_sar(dev); mt792x_init_acpi_sar(dev);
ret = mt792x_init_wcid(dev); ret = mt792x_init_wcid(dev);
if (ret) if (ret)
......
...@@ -1153,19 +1153,16 @@ int mt7921_set_tx_sar_pwr(struct ieee80211_hw *hw, ...@@ -1153,19 +1153,16 @@ int mt7921_set_tx_sar_pwr(struct ieee80211_hw *hw,
const struct cfg80211_sar_specs *sar) const struct cfg80211_sar_specs *sar)
{ {
struct mt76_phy *mphy = hw->priv; struct mt76_phy *mphy = hw->priv;
int err;
if (sar) { if (sar) {
err = mt76_init_sar_power(hw, sar); int err = mt76_init_sar_power(hw, sar);
if (err) if (err)
return err; return err;
} }
mt792x_init_acpi_sar_power(mt792x_hw_phy(hw), !sar);
mt7921_init_acpi_sar_power(mt792x_hw_phy(hw), !sar); return mt76_connac_mcu_set_rate_txpower(mphy);
err = mt76_connac_mcu_set_rate_txpower(mphy);
return err;
} }
static int mt7921_set_sar_specs(struct ieee80211_hw *hw, static int mt7921_set_sar_specs(struct ieee80211_hw *hw,
......
...@@ -1197,7 +1197,7 @@ int __mt7921_mcu_set_clc(struct mt792x_dev *dev, u8 *alpha2, ...@@ -1197,7 +1197,7 @@ int __mt7921_mcu_set_clc(struct mt792x_dev *dev, u8 *alpha2,
} __packed req = { } __packed req = {
.idx = idx, .idx = idx,
.env = env_cap, .env = env_cap,
.acpi_conf = mt7921_acpi_get_flags(&dev->phy), .acpi_conf = mt792x_acpi_get_flags(&dev->phy),
}; };
int ret, valid_cnt = 0; int ret, valid_cnt = 0;
u8 i, *pos; u8 i, *pos;
......
...@@ -6,7 +6,6 @@ ...@@ -6,7 +6,6 @@
#include "../mt792x.h" #include "../mt792x.h"
#include "regs.h" #include "regs.h"
#include "acpi_sar.h"
#define MT7921_PM_TIMEOUT (HZ / 12) #define MT7921_PM_TIMEOUT (HZ / 12)
#define MT7921_HW_SCAN_TIMEOUT (HZ / 10) #define MT7921_HW_SCAN_TIMEOUT (HZ / 10)
...@@ -345,29 +344,6 @@ int mt7921_mcu_uni_add_beacon_offload(struct mt792x_dev *dev, ...@@ -345,29 +344,6 @@ int mt7921_mcu_uni_add_beacon_offload(struct mt792x_dev *dev,
struct ieee80211_hw *hw, struct ieee80211_hw *hw,
struct ieee80211_vif *vif, struct ieee80211_vif *vif,
bool enable); bool enable);
#ifdef CONFIG_ACPI
int mt7921_init_acpi_sar(struct mt792x_dev *dev);
int mt7921_init_acpi_sar_power(struct mt792x_phy *phy, bool set_default);
u8 mt7921_acpi_get_flags(struct mt792x_phy *phy);
#else
static inline int
mt7921_init_acpi_sar(struct mt792x_dev *dev)
{
return 0;
}
static inline int
mt7921_init_acpi_sar_power(struct mt792x_phy *phy, bool set_default)
{
return 0;
}
static inline u8
mt7921_acpi_get_flags(struct mt792x_phy *phy)
{
return 0;
}
#endif
int mt7921_set_tx_sar_pwr(struct ieee80211_hw *hw, int mt7921_set_tx_sar_pwr(struct ieee80211_hw *hw,
const struct cfg80211_sar_specs *sar); const struct cfg80211_sar_specs *sar);
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include "mt76_connac_mcu.h" #include "mt76_connac_mcu.h"
#include "mt792x_regs.h" #include "mt792x_regs.h"
#include "mt792x_acpi_sar.h"
#define MT792x_MAX_INTERFACES 4 #define MT792x_MAX_INTERFACES 4
#define MT792x_WTBL_SIZE 20 #define MT792x_WTBL_SIZE 20
...@@ -297,4 +298,26 @@ int __mt792xe_mcu_drv_pmctrl(struct mt792x_dev *dev); ...@@ -297,4 +298,26 @@ int __mt792xe_mcu_drv_pmctrl(struct mt792x_dev *dev);
int mt792xe_mcu_drv_pmctrl(struct mt792x_dev *dev); int mt792xe_mcu_drv_pmctrl(struct mt792x_dev *dev);
int mt792xe_mcu_fw_pmctrl(struct mt792x_dev *dev); int mt792xe_mcu_fw_pmctrl(struct mt792x_dev *dev);
#ifdef CONFIG_ACPI
int mt792x_init_acpi_sar(struct mt792x_dev *dev);
int mt792x_init_acpi_sar_power(struct mt792x_phy *phy, bool set_default);
u8 mt792x_acpi_get_flags(struct mt792x_phy *phy);
#else
static inline int mt792x_init_acpi_sar(struct mt792x_dev *dev)
{
return 0;
}
static inline int mt792x_init_acpi_sar_power(struct mt792x_phy *phy,
bool set_default)
{
return 0;
}
static inline u8 mt792x_acpi_get_flags(struct mt792x_phy *phy)
{
return 0;
}
#endif
#endif /* __MT7925_H */ #endif /* __MT7925_H */
// SPDX-License-Identifier: ISC // SPDX-License-Identifier: ISC
/* Copyright (C) 2022 MediaTek Inc. */ /* Copyright (C) 2023 MediaTek Inc. */
#include <linux/acpi.h> #include <linux/acpi.h>
#include "mt7921.h" #include "mt792x.h"
static int static int
mt7921_acpi_read(struct mt792x_dev *dev, u8 *method, u8 **tbl, u32 *len) mt792x_acpi_read(struct mt792x_dev *dev, u8 *method, u8 **tbl, u32 *len)
{ {
struct acpi_buffer buf = { ACPI_ALLOCATE_BUFFER, NULL }; struct acpi_buffer buf = { ACPI_ALLOCATE_BUFFER, NULL };
union acpi_object *sar_root, *sar_unit;
struct mt76_dev *mdev = &dev->mt76; struct mt76_dev *mdev = &dev->mt76;
union acpi_object *sar_root;
acpi_handle root, handle; acpi_handle root, handle;
acpi_status status; acpi_status status;
u32 i = 0; u32 i = 0;
...@@ -45,18 +45,20 @@ mt7921_acpi_read(struct mt792x_dev *dev, u8 *method, u8 **tbl, u32 *len) ...@@ -45,18 +45,20 @@ mt7921_acpi_read(struct mt792x_dev *dev, u8 *method, u8 **tbl, u32 *len)
goto free; goto free;
} }
} }
if (len) if (len)
*len = sar_root->package.count; *len = sar_root->package.count;
for (i = 0; i < sar_root->package.count; i++) { for (i = 0; i < sar_root->package.count; i++) {
sar_unit = &sar_root->package.elements[i]; union acpi_object *sar_unit = &sar_root->package.elements[i];
if (sar_unit->type != ACPI_TYPE_INTEGER) if (sar_unit->type != ACPI_TYPE_INTEGER)
break; break;
*(*tbl + i) = (u8)sar_unit->integer.value; *(*tbl + i) = (u8)sar_unit->integer.value;
} }
ret = (i == sar_root->package.count) ? 0 : -EINVAL;
ret = i == sar_root->package.count ? 0 : -EINVAL;
free: free:
kfree(sar_root); kfree(sar_root);
...@@ -64,36 +66,37 @@ mt7921_acpi_read(struct mt792x_dev *dev, u8 *method, u8 **tbl, u32 *len) ...@@ -64,36 +66,37 @@ mt7921_acpi_read(struct mt792x_dev *dev, u8 *method, u8 **tbl, u32 *len)
} }
/* MTCL : Country List Table for 6G band */ /* MTCL : Country List Table for 6G band */
static int static void
mt7921_asar_acpi_read_mtcl(struct mt792x_dev *dev, u8 **table, u8 *version) mt792x_asar_acpi_read_mtcl(struct mt792x_dev *dev, u8 **table, u8 *version)
{ {
*version = (mt7921_acpi_read(dev, MT7921_ACPI_MTCL, table, NULL) < 0) if (mt792x_acpi_read(dev, MT792x_ACPI_MTCL, table, NULL) < 0)
? 1 : 2; *version = 1;
return 0; else
*version = 2;
} }
/* MTDS : Dynamic SAR Power Table */ /* MTDS : Dynamic SAR Power Table */
static int static int
mt7921_asar_acpi_read_mtds(struct mt792x_dev *dev, u8 **table, u8 version) mt792x_asar_acpi_read_mtds(struct mt792x_dev *dev, u8 **table, u8 version)
{ {
int len, ret, sarlen, prelen, tblcnt; int len, ret, sarlen, prelen, tblcnt;
bool enable; bool enable;
ret = mt7921_acpi_read(dev, MT7921_ACPI_MTDS, table, &len); ret = mt792x_acpi_read(dev, MT792x_ACPI_MTDS, table, &len);
if (ret) if (ret)
return ret; return ret;
/* Table content validation */ /* Table content validation */
switch (version) { switch (version) {
case 1: case 1:
enable = ((struct mt7921_asar_dyn *)*table)->enable; enable = ((struct mt792x_asar_dyn *)*table)->enable;
sarlen = sizeof(struct mt7921_asar_dyn_limit); sarlen = sizeof(struct mt792x_asar_dyn_limit);
prelen = sizeof(struct mt7921_asar_dyn); prelen = sizeof(struct mt792x_asar_dyn);
break; break;
case 2: case 2:
enable = ((struct mt7921_asar_dyn_v2 *)*table)->enable; enable = ((struct mt792x_asar_dyn_v2 *)*table)->enable;
sarlen = sizeof(struct mt7921_asar_dyn_limit_v2); sarlen = sizeof(struct mt792x_asar_dyn_limit_v2);
prelen = sizeof(struct mt7921_asar_dyn_v2); prelen = sizeof(struct mt792x_asar_dyn_v2);
break; break;
default: default:
return -EINVAL; return -EINVAL;
...@@ -101,88 +104,89 @@ mt7921_asar_acpi_read_mtds(struct mt792x_dev *dev, u8 **table, u8 version) ...@@ -101,88 +104,89 @@ mt7921_asar_acpi_read_mtds(struct mt792x_dev *dev, u8 **table, u8 version)
tblcnt = (len - prelen) / sarlen; tblcnt = (len - prelen) / sarlen;
if (!enable || if (!enable ||
tblcnt > MT7921_ASAR_MAX_DYN || tblcnt < MT7921_ASAR_MIN_DYN) tblcnt > MT792x_ASAR_MAX_DYN || tblcnt < MT792x_ASAR_MIN_DYN)
ret = -EINVAL; return -EINVAL;
return ret; return 0;
} }
/* MTGS : Geo SAR Power Table */ /* MTGS : Geo SAR Power Table */
static int static int
mt7921_asar_acpi_read_mtgs(struct mt792x_dev *dev, u8 **table, u8 version) mt792x_asar_acpi_read_mtgs(struct mt792x_dev *dev, u8 **table, u8 version)
{ {
int len, ret = 0, sarlen, prelen, tblcnt; int len, ret, sarlen, prelen, tblcnt;
ret = mt7921_acpi_read(dev, MT7921_ACPI_MTGS, table, &len); ret = mt792x_acpi_read(dev, MT792x_ACPI_MTGS, table, &len);
if (ret) if (ret)
return ret; return ret;
/* Table content validation */ /* Table content validation */
switch (version) { switch (version) {
case 1: case 1:
sarlen = sizeof(struct mt7921_asar_geo_limit); sarlen = sizeof(struct mt792x_asar_geo_limit);
prelen = sizeof(struct mt7921_asar_geo); prelen = sizeof(struct mt792x_asar_geo);
break; break;
case 2: case 2:
sarlen = sizeof(struct mt7921_asar_geo_limit_v2); sarlen = sizeof(struct mt792x_asar_geo_limit_v2);
prelen = sizeof(struct mt7921_asar_geo_v2); prelen = sizeof(struct mt792x_asar_geo_v2);
break; break;
default: default:
return -EINVAL; return -EINVAL;
} }
tblcnt = (len - prelen) / sarlen; tblcnt = (len - prelen) / sarlen;
if (tblcnt > MT7921_ASAR_MAX_GEO || tblcnt < MT7921_ASAR_MIN_GEO) if (tblcnt > MT792x_ASAR_MAX_GEO || tblcnt < MT792x_ASAR_MIN_GEO)
ret = -EINVAL; return -EINVAL;
return ret; return 0;
} }
/* MTFG : Flag Table */ /* MTFG : Flag Table */
static int static int
mt7921_asar_acpi_read_mtfg(struct mt792x_dev *dev, u8 **table) mt792x_asar_acpi_read_mtfg(struct mt792x_dev *dev, u8 **table)
{ {
int len, ret; int len, ret;
ret = mt7921_acpi_read(dev, MT7921_ACPI_MTFG, table, &len); ret = mt792x_acpi_read(dev, MT792x_ACPI_MTFG, table, &len);
if (ret) if (ret)
return ret; return ret;
if (len < MT7921_ASAR_MIN_FG) if (len < MT792x_ASAR_MIN_FG)
ret = -EINVAL; return -EINVAL;
return ret; return 0;
} }
int mt7921_init_acpi_sar(struct mt792x_dev *dev) int mt792x_init_acpi_sar(struct mt792x_dev *dev)
{ {
struct mt7921_acpi_sar *asar; struct mt792x_acpi_sar *asar;
int ret; int ret;
asar = devm_kzalloc(dev->mt76.dev, sizeof(*asar), GFP_KERNEL); asar = devm_kzalloc(dev->mt76.dev, sizeof(*asar), GFP_KERNEL);
if (!asar) if (!asar)
return -ENOMEM; return -ENOMEM;
mt7921_asar_acpi_read_mtcl(dev, (u8 **)&asar->countrylist, &asar->ver); mt792x_asar_acpi_read_mtcl(dev, (u8 **)&asar->countrylist, &asar->ver);
/* MTDS is mandatory. Return error if table is invalid */ /* MTDS is mandatory. Return error if table is invalid */
ret = mt7921_asar_acpi_read_mtds(dev, (u8 **)&asar->dyn, asar->ver); ret = mt792x_asar_acpi_read_mtds(dev, (u8 **)&asar->dyn, asar->ver);
if (ret) { if (ret) {
devm_kfree(dev->mt76.dev, asar->dyn); devm_kfree(dev->mt76.dev, asar->dyn);
devm_kfree(dev->mt76.dev, asar->countrylist); devm_kfree(dev->mt76.dev, asar->countrylist);
devm_kfree(dev->mt76.dev, asar); devm_kfree(dev->mt76.dev, asar);
return ret; return ret;
} }
/* MTGS is optional */ /* MTGS is optional */
ret = mt7921_asar_acpi_read_mtgs(dev, (u8 **)&asar->geo, asar->ver); ret = mt792x_asar_acpi_read_mtgs(dev, (u8 **)&asar->geo, asar->ver);
if (ret) { if (ret) {
devm_kfree(dev->mt76.dev, asar->geo); devm_kfree(dev->mt76.dev, asar->geo);
asar->geo = NULL; asar->geo = NULL;
} }
/* MTFG is optional */ /* MTFG is optional */
ret = mt7921_asar_acpi_read_mtfg(dev, (u8 **)&asar->fg); ret = mt792x_asar_acpi_read_mtfg(dev, (u8 **)&asar->fg);
if (ret) { if (ret) {
devm_kfree(dev->mt76.dev, asar->fg); devm_kfree(dev->mt76.dev, asar->fg);
asar->fg = NULL; asar->fg = NULL;
...@@ -191,13 +195,14 @@ int mt7921_init_acpi_sar(struct mt792x_dev *dev) ...@@ -191,13 +195,14 @@ int mt7921_init_acpi_sar(struct mt792x_dev *dev)
return 0; return 0;
} }
EXPORT_SYMBOL_GPL(mt792x_init_acpi_sar);
static s8 static s8
mt7921_asar_get_geo_pwr(struct mt792x_phy *phy, mt792x_asar_get_geo_pwr(struct mt792x_phy *phy,
enum nl80211_band band, s8 dyn_power) enum nl80211_band band, s8 dyn_power)
{ {
struct mt7921_acpi_sar *asar = phy->acpisar; struct mt792x_acpi_sar *asar = phy->acpisar;
struct mt7921_asar_geo_band *band_pwr; struct mt792x_asar_geo_band *band_pwr;
s8 geo_power; s8 geo_power;
u8 idx, max; u8 idx, max;
...@@ -248,12 +253,12 @@ mt7921_asar_get_geo_pwr(struct mt792x_phy *phy, ...@@ -248,12 +253,12 @@ mt7921_asar_get_geo_pwr(struct mt792x_phy *phy,
} }
static s8 static s8
mt7921_asar_range_pwr(struct mt792x_phy *phy, mt792x_asar_range_pwr(struct mt792x_phy *phy,
const struct cfg80211_sar_freq_ranges *range, const struct cfg80211_sar_freq_ranges *range,
u8 idx) u8 idx)
{ {
const struct cfg80211_sar_capa *capa = phy->mt76->hw->wiphy->sar_capa; const struct cfg80211_sar_capa *capa = phy->mt76->hw->wiphy->sar_capa;
struct mt7921_acpi_sar *asar = phy->acpisar; struct mt792x_acpi_sar *asar = phy->acpisar;
u8 *limit, band, max; u8 *limit, band, max;
if (!capa) if (!capa)
...@@ -277,10 +282,10 @@ mt7921_asar_range_pwr(struct mt792x_phy *phy, ...@@ -277,10 +282,10 @@ mt7921_asar_range_pwr(struct mt792x_phy *phy,
else else
band = NL80211_BAND_2GHZ; band = NL80211_BAND_2GHZ;
return mt7921_asar_get_geo_pwr(phy, band, limit[idx]); return mt792x_asar_get_geo_pwr(phy, band, limit[idx]);
} }
int mt7921_init_acpi_sar_power(struct mt792x_phy *phy, bool set_default) int mt792x_init_acpi_sar_power(struct mt792x_phy *phy, bool set_default)
{ {
const struct cfg80211_sar_capa *capa = phy->mt76->hw->wiphy->sar_capa; const struct cfg80211_sar_capa *capa = phy->mt76->hw->wiphy->sar_capa;
int i; int i;
...@@ -300,22 +305,23 @@ int mt7921_init_acpi_sar_power(struct mt792x_phy *phy, bool set_default) ...@@ -300,22 +305,23 @@ int mt7921_init_acpi_sar_power(struct mt792x_phy *phy, bool set_default)
continue; continue;
frp->power = min_t(s8, set_default ? 127 : frp->power, frp->power = min_t(s8, set_default ? 127 : frp->power,
mt7921_asar_range_pwr(phy, frp->range, i)); mt792x_asar_range_pwr(phy, frp->range, i));
} }
return 0; return 0;
} }
EXPORT_SYMBOL_GPL(mt792x_init_acpi_sar_power);
u8 mt7921_acpi_get_flags(struct mt792x_phy *phy) u8 mt792x_acpi_get_flags(struct mt792x_phy *phy)
{ {
struct mt7921_acpi_sar *acpisar = phy->acpisar; struct mt792x_acpi_sar *acpisar = phy->acpisar;
struct mt7921_asar_fg *fg; struct mt792x_asar_fg *fg;
struct { struct {
u8 acpi_idx; u8 acpi_idx;
u8 chip_idx; u8 chip_idx;
} map[] = { } map[] = {
{1, 1}, { 1, 1 },
{4, 2}, { 4, 2 },
}; };
u8 flags = BIT(0); u8 flags = BIT(0);
int i, j; int i, j;
...@@ -330,12 +336,15 @@ u8 mt7921_acpi_get_flags(struct mt792x_phy *phy) ...@@ -330,12 +336,15 @@ u8 mt7921_acpi_get_flags(struct mt792x_phy *phy)
/* pickup necessary settings per device and /* pickup necessary settings per device and
* translate the index of bitmap for chip command. * translate the index of bitmap for chip command.
*/ */
for (i = 0; i < fg->nr_flag; i++) for (i = 0; i < fg->nr_flag; i++) {
for (j = 0; j < ARRAY_SIZE(map); j++) for (j = 0; j < ARRAY_SIZE(map); j++) {
if (fg->flag[i] == map[j].acpi_idx) { if (fg->flag[i] == map[j].acpi_idx) {
flags |= BIT(map[j].chip_idx); flags |= BIT(map[j].chip_idx);
break; break;
} }
}
}
return flags; return flags;
} }
EXPORT_SYMBOL_GPL(mt792x_acpi_get_flags);
/* SPDX-License-Identifier: ISC */ /* SPDX-License-Identifier: ISC */
/* Copyright (C) 2022 MediaTek Inc. */ /* Copyright (C) 2023 MediaTek Inc. */
#ifndef __MT7921_ACPI_SAR_H #ifndef __MT7921_ACPI_SAR_H
#define __MT7921_ACPI_SAR_H #define __MT7921_ACPI_SAR_H
#define MT7921_ASAR_MIN_DYN 1 #define MT792x_ASAR_MIN_DYN 1
#define MT7921_ASAR_MAX_DYN 8 #define MT792x_ASAR_MAX_DYN 8
#define MT7921_ASAR_MIN_GEO 3 #define MT792x_ASAR_MIN_GEO 3
#define MT7921_ASAR_MAX_GEO 8 #define MT792x_ASAR_MAX_GEO 8
#define MT7921_ASAR_MIN_FG 8 #define MT792x_ASAR_MIN_FG 8
#define MT7921_ACPI_MTCL "MTCL" #define MT792x_ACPI_MTCL "MTCL"
#define MT7921_ACPI_MTDS "MTDS" #define MT792x_ACPI_MTDS "MTDS"
#define MT7921_ACPI_MTGS "MTGS" #define MT792x_ACPI_MTGS "MTGS"
#define MT7921_ACPI_MTFG "MTFG" #define MT792x_ACPI_MTFG "MTFG"
struct mt7921_asar_dyn_limit { struct mt792x_asar_dyn_limit {
u8 idx; u8 idx;
u8 frp[5]; u8 frp[5];
} __packed; } __packed;
struct mt7921_asar_dyn { struct mt792x_asar_dyn {
u8 names[4]; u8 names[4];
u8 enable; u8 enable;
u8 nr_tbl; u8 nr_tbl;
DECLARE_FLEX_ARRAY(struct mt7921_asar_dyn_limit, tbl); DECLARE_FLEX_ARRAY(struct mt792x_asar_dyn_limit, tbl);
} __packed; } __packed;
struct mt7921_asar_dyn_limit_v2 { struct mt792x_asar_dyn_limit_v2 {
u8 idx; u8 idx;
u8 frp[11]; u8 frp[11];
} __packed; } __packed;
struct mt7921_asar_dyn_v2 { struct mt792x_asar_dyn_v2 {
u8 names[4]; u8 names[4];
u8 enable; u8 enable;
u8 rsvd; u8 rsvd;
u8 nr_tbl; u8 nr_tbl;
DECLARE_FLEX_ARRAY(struct mt7921_asar_dyn_limit_v2, tbl); DECLARE_FLEX_ARRAY(struct mt792x_asar_dyn_limit_v2, tbl);
} __packed; } __packed;
struct mt7921_asar_geo_band { struct mt792x_asar_geo_band {
u8 pwr; u8 pwr;
u8 offset; u8 offset;
} __packed; } __packed;
struct mt7921_asar_geo_limit { struct mt792x_asar_geo_limit {
u8 idx; u8 idx;
/* 0:2G, 1:5G */ /* 0:2G, 1:5G */
struct mt7921_asar_geo_band band[2]; struct mt792x_asar_geo_band band[2];
} __packed; } __packed;
struct mt7921_asar_geo { struct mt792x_asar_geo {
u8 names[4]; u8 names[4];
u8 version; u8 version;
u8 nr_tbl; u8 nr_tbl;
DECLARE_FLEX_ARRAY(struct mt7921_asar_geo_limit, tbl); DECLARE_FLEX_ARRAY(struct mt792x_asar_geo_limit, tbl);
} __packed; } __packed;
struct mt7921_asar_geo_limit_v2 { struct mt792x_asar_geo_limit_v2 {
u8 idx; u8 idx;
/* 0:2G, 1:5G, 2:6G */ /* 0:2G, 1:5G, 2:6G */
struct mt7921_asar_geo_band band[3]; struct mt792x_asar_geo_band band[3];
} __packed; } __packed;
struct mt7921_asar_geo_v2 { struct mt792x_asar_geo_v2 {
u8 names[4]; u8 names[4];
u8 version; u8 version;
u8 rsvd; u8 rsvd;
u8 nr_tbl; u8 nr_tbl;
DECLARE_FLEX_ARRAY(struct mt7921_asar_geo_limit_v2, tbl); DECLARE_FLEX_ARRAY(struct mt792x_asar_geo_limit_v2, tbl);
} __packed; } __packed;
struct mt7921_asar_cl { struct mt792x_asar_cl {
u8 names[4]; u8 names[4];
u8 version; u8 version;
u8 mode_6g; u8 mode_6g;
u8 cl6g[6]; u8 cl6g[6];
} __packed; } __packed;
struct mt7921_asar_fg { struct mt792x_asar_fg {
u8 names[4]; u8 names[4];
u8 version; u8 version;
u8 rsvd; u8 rsvd;
...@@ -88,18 +88,18 @@ struct mt7921_asar_fg { ...@@ -88,18 +88,18 @@ struct mt7921_asar_fg {
u8 flag[]; u8 flag[];
} __packed; } __packed;
struct mt7921_acpi_sar { struct mt792x_acpi_sar {
u8 ver; u8 ver;
union { union {
struct mt7921_asar_dyn *dyn; struct mt792x_asar_dyn *dyn;
struct mt7921_asar_dyn_v2 *dyn_v2; struct mt792x_asar_dyn_v2 *dyn_v2;
}; };
union { union {
struct mt7921_asar_geo *geo; struct mt792x_asar_geo *geo;
struct mt7921_asar_geo_v2 *geo_v2; struct mt792x_asar_geo_v2 *geo_v2;
}; };
struct mt7921_asar_cl *countrylist; struct mt792x_asar_cl *countrylist;
struct mt7921_asar_fg *fg; struct mt792x_asar_fg *fg;
}; };
#endif #endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment