if (!*tbl) {
*tbl = devm_kzalloc(mdev->dev, sar_root->package.count,
GFP_KERNEL); if (!*tbl) {
ret = -ENOMEM; goto free;
}
}
if (len)
*len = sar_root->package.count;
for (i = 0; i < sar_root->package.count; i++) { union acpi_object *sar_unit = &sar_root->package.elements[i];
if (sar_unit->type != ACPI_TYPE_INTEGER) break;
*(*tbl + i) = (u8)sar_unit->integer.value;
}
ret = i == sar_root->package.count ? 0 : -EINVAL;
free:
kfree(sar_root);
return ret;
}
/* MTCL : Country List Table for 6G band */ /* MTCL : Country List Table for 6G band and 11BE */ staticint
mt792x_asar_acpi_read_mtcl(struct mt792x_dev *dev, u8 **table, u8 *version)
{ int len, ret;
ret = mt792x_acpi_read(dev, MT792x_ACPI_MTCL, table, &len); if (ret) return ret;
int mt792x_init_acpi_sar_power(struct mt792x_phy *phy, bool set_default)
{ conststruct cfg80211_sar_capa *capa = phy->mt76->hw->wiphy->sar_capa; int i;
if (!phy->acpisar || !((struct mt792x_acpi_sar *)phy->acpisar)->dyn) return 0;
/* When ACPI SAR enabled in HW, we should apply rules for .frp * 1. w/o .sar_specs : set ACPI SAR power as the defatul value * 2. w/ .sar_specs : set power with min(.sar_specs, ACPI_SAR)
*/ for (i = 0; i < capa->num_freq_ranges; i++) { struct mt76_freq_range_power *frp = &phy->mt76->frp[i];
frp->range = set_default ? &capa->freq_ranges[i] : frp->range; if (!frp->range) continue;
/* pickup necessary settings per device and * translate the index of bitmap for chip command.
*/ for (i = 0; i < fg->nr_flag; i++) { for (j = 0; j < ARRAY_SIZE(map); j++) { if (fg->flag[i] == map[j].acpi_idx) {
flags |= BIT(map[j].chip_idx); break;
}
}
}
for (i = 0; i < ARRAY_SIZE(cc_list_be); i++) {
col = 7 - i % 8;
row = i / 8; if (!memcmp(cc_list_be[i], alpha2, 2)) return mt792x_acpi_get_mtcl_map_v3(row, col, cl);
} for (i = 0; i < ARRAY_SIZE(cc_list_eu); i++) { if (!memcmp(cc_list_eu[i], alpha2, 2)) return mt792x_acpi_get_mtcl_map_v3(3, 7, cl);
}
for (i = 0; i < ARRAY_SIZE(cc_list_all); i++) {
col = 7 - i % 8;
row = i / 8; if (!memcmp(cc_list_all[i], alpha2, 2)) return mt792x_acpi_get_mtcl_map(row, col, cl);
}
for (i = 0; i < ARRAY_SIZE(cc_list_eu); i++) if (!memcmp(cc_list_eu[i], alpha2, 2)) return mt792x_acpi_get_mtcl_map(0, 6, cl);
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.1Bemerkung:
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.