Lines Matching +full:max +full:- +full:len

1 // SPDX-License-Identifier: ISC
8 mt792x_acpi_read(struct mt792x_dev *dev, u8 *method, u8 **tbl, u32 *len) in mt792x_acpi_read() argument
11 struct mt76_dev *mdev = &dev->mt76; in mt792x_acpi_read()
18 root = ACPI_HANDLE(mdev->dev); in mt792x_acpi_read()
20 return -EOPNOTSUPP; in mt792x_acpi_read()
24 return -EIO; in mt792x_acpi_read()
28 return -EIO; in mt792x_acpi_read()
31 if (sar_root->type != ACPI_TYPE_PACKAGE || in mt792x_acpi_read()
32 sar_root->package.count < 4 || in mt792x_acpi_read()
33 sar_root->package.elements[0].type != ACPI_TYPE_INTEGER) { in mt792x_acpi_read()
34 dev_err(mdev->dev, "sar cnt = %d\n", in mt792x_acpi_read()
35 sar_root->package.count); in mt792x_acpi_read()
36 ret = -EINVAL; in mt792x_acpi_read()
41 *tbl = devm_kzalloc(mdev->dev, sar_root->package.count, in mt792x_acpi_read()
44 ret = -ENOMEM; in mt792x_acpi_read()
49 if (len) in mt792x_acpi_read()
50 *len = sar_root->package.count; in mt792x_acpi_read()
52 for (i = 0; i < sar_root->package.count; i++) { in mt792x_acpi_read()
53 union acpi_object *sar_unit = &sar_root->package.elements[i]; in mt792x_acpi_read()
55 if (sar_unit->type != ACPI_TYPE_INTEGER) in mt792x_acpi_read()
58 *(*tbl + i) = (u8)sar_unit->integer.value; in mt792x_acpi_read()
61 ret = i == sar_root->package.count ? 0 : -EINVAL; in mt792x_acpi_read()
82 int len, ret, sarlen, prelen, tblcnt; in mt792x_asar_acpi_read_mtds() local
85 ret = mt792x_acpi_read(dev, MT792x_ACPI_MTDS, table, &len); in mt792x_asar_acpi_read_mtds()
92 enable = ((struct mt792x_asar_dyn *)*table)->enable; in mt792x_asar_acpi_read_mtds()
97 enable = ((struct mt792x_asar_dyn_v2 *)*table)->enable; in mt792x_asar_acpi_read_mtds()
102 return -EINVAL; in mt792x_asar_acpi_read_mtds()
105 tblcnt = (len - prelen) / sarlen; in mt792x_asar_acpi_read_mtds()
108 return -EINVAL; in mt792x_asar_acpi_read_mtds()
117 int len, ret, sarlen, prelen, tblcnt; in mt792x_asar_acpi_read_mtgs() local
119 ret = mt792x_acpi_read(dev, MT792x_ACPI_MTGS, table, &len); in mt792x_asar_acpi_read_mtgs()
134 return -EINVAL; in mt792x_asar_acpi_read_mtgs()
137 tblcnt = (len - prelen) / sarlen; in mt792x_asar_acpi_read_mtgs()
139 return -EINVAL; in mt792x_asar_acpi_read_mtgs()
148 int len, ret; in mt792x_asar_acpi_read_mtfg() local
150 ret = mt792x_acpi_read(dev, MT792x_ACPI_MTFG, table, &len); in mt792x_asar_acpi_read_mtfg()
154 if (len < MT792x_ASAR_MIN_FG) in mt792x_asar_acpi_read_mtfg()
155 return -EINVAL; in mt792x_asar_acpi_read_mtfg()
165 asar = devm_kzalloc(dev->mt76.dev, sizeof(*asar), GFP_KERNEL); in mt792x_init_acpi_sar()
167 return -ENOMEM; in mt792x_init_acpi_sar()
169 mt792x_asar_acpi_read_mtcl(dev, (u8 **)&asar->countrylist, &asar->ver); in mt792x_init_acpi_sar()
172 ret = mt792x_asar_acpi_read_mtds(dev, (u8 **)&asar->dyn, asar->ver); in mt792x_init_acpi_sar()
174 devm_kfree(dev->mt76.dev, asar->dyn); in mt792x_init_acpi_sar()
175 devm_kfree(dev->mt76.dev, asar->countrylist); in mt792x_init_acpi_sar()
176 devm_kfree(dev->mt76.dev, asar); in mt792x_init_acpi_sar()
182 ret = mt792x_asar_acpi_read_mtgs(dev, (u8 **)&asar->geo, asar->ver); in mt792x_init_acpi_sar()
184 devm_kfree(dev->mt76.dev, asar->geo); in mt792x_init_acpi_sar()
185 asar->geo = NULL; in mt792x_init_acpi_sar()
189 ret = mt792x_asar_acpi_read_mtfg(dev, (u8 **)&asar->fg); in mt792x_init_acpi_sar()
191 devm_kfree(dev->mt76.dev, asar->fg); in mt792x_init_acpi_sar()
192 asar->fg = NULL; in mt792x_init_acpi_sar()
194 dev->phy.acpisar = asar; in mt792x_init_acpi_sar()
204 struct mt792x_acpi_sar *asar = phy->acpisar; in mt792x_asar_get_geo_pwr()
207 u8 idx, max; in mt792x_asar_get_geo_pwr() local
209 if (!asar->geo) in mt792x_asar_get_geo_pwr()
212 switch (phy->mt76->dev->region) { in mt792x_asar_get_geo_pwr()
224 if (asar->ver == 1) { in mt792x_asar_get_geo_pwr()
225 band_pwr = &asar->geo->tbl[idx].band[0]; in mt792x_asar_get_geo_pwr()
226 max = ARRAY_SIZE(asar->geo->tbl[idx].band); in mt792x_asar_get_geo_pwr()
228 band_pwr = &asar->geo_v2->tbl[idx].band[0]; in mt792x_asar_get_geo_pwr()
229 max = ARRAY_SIZE(asar->geo_v2->tbl[idx].band); in mt792x_asar_get_geo_pwr()
246 if (idx >= max) in mt792x_asar_get_geo_pwr()
249 geo_power = (band_pwr + idx)->pwr; in mt792x_asar_get_geo_pwr()
250 dyn_power += (band_pwr + idx)->offset; in mt792x_asar_get_geo_pwr()
260 const struct cfg80211_sar_capa *capa = phy->mt76->hw->wiphy->sar_capa; in mt792x_asar_range_pwr()
261 struct mt792x_acpi_sar *asar = phy->acpisar; in mt792x_asar_range_pwr()
262 u8 *limit, band, max; in mt792x_asar_range_pwr() local
267 if (asar->ver == 1) { in mt792x_asar_range_pwr()
268 limit = &asar->dyn->tbl[0].frp[0]; in mt792x_asar_range_pwr()
269 max = ARRAY_SIZE(asar->dyn->tbl[0].frp); in mt792x_asar_range_pwr()
271 limit = &asar->dyn_v2->tbl[0].frp[0]; in mt792x_asar_range_pwr()
272 max = ARRAY_SIZE(asar->dyn_v2->tbl[0].frp); in mt792x_asar_range_pwr()
275 if (idx >= max) in mt792x_asar_range_pwr()
278 if (range->start_freq >= 5945) in mt792x_asar_range_pwr()
280 else if (range->start_freq >= 5150) in mt792x_asar_range_pwr()
290 const struct cfg80211_sar_capa *capa = phy->mt76->hw->wiphy->sar_capa; in mt792x_init_acpi_sar_power()
293 if (!phy->acpisar) in mt792x_init_acpi_sar_power()
300 for (i = 0; i < capa->num_freq_ranges; i++) { in mt792x_init_acpi_sar_power()
301 struct mt76_freq_range_power *frp = &phy->mt76->frp[i]; in mt792x_init_acpi_sar_power()
303 frp->range = set_default ? &capa->freq_ranges[i] : frp->range; in mt792x_init_acpi_sar_power()
304 if (!frp->range) in mt792x_init_acpi_sar_power()
307 frp->power = min_t(s8, set_default ? 127 : frp->power, in mt792x_init_acpi_sar_power()
308 mt792x_asar_range_pwr(phy, frp->range, i)); in mt792x_init_acpi_sar_power()
317 struct mt792x_acpi_sar *acpisar = phy->acpisar; in mt792x_acpi_get_flags()
332 fg = acpisar->fg; in mt792x_acpi_get_flags()
339 for (i = 0; i < fg->nr_flag; i++) { in mt792x_acpi_get_flags()
341 if (fg->flag[i] == map[j].acpi_idx) { in mt792x_acpi_get_flags()
357 if (cl->cl6g[row] & BIT(column)) in mt792x_acpi_get_mtcl_map()
358 config |= (cl->mode_6g & 0x3) << 2; in mt792x_acpi_get_mtcl_map()
359 if (cl->version > 1 && cl->cl5g9[row] & BIT(column)) in mt792x_acpi_get_mtcl_map()
360 config |= (cl->mode_5g9 & 0x3); in mt792x_acpi_get_mtcl_map()
379 struct mt792x_acpi_sar *sar = phy->acpisar; in mt792x_acpi_get_mtcl_conf()
386 cl = sar->countrylist; in mt792x_acpi_get_mtcl_conf()
391 col = 7 - i % 8; in mt792x_acpi_get_mtcl_conf()