Lines Matching defs:spz

58 	struct scmi_powercap_zone *spz = to_scmi_powercap_zone(pz);
62 if (!spz->info->powercap_monitoring)
65 ret = powercap_ops->measurements_get(spz->ph, spz->info->id, &avg_power,
71 if (spz->info->powercap_scale_mw)
79 struct scmi_powercap_zone *spz = to_scmi_powercap_zone(pz);
81 return powercap_ops->cap_enable_set(spz->ph, spz->info->id, mode);
86 struct scmi_powercap_zone *spz = to_scmi_powercap_zone(pz);
88 return powercap_ops->cap_enable_get(spz->ph, spz->info->id, mode);
99 static void scmi_powercap_normalize_cap(const struct scmi_powercap_zone *spz,
102 bool scale_mw = spz->info->powercap_scale_mw;
111 *norm = clamp_t(u32, val, spz->info->min_power_cap,
112 spz->info->max_power_cap);
113 *norm = rounddown(*norm, spz->info->power_cap_step);
117 dev_dbg(spz->dev,
119 spz->info->name, power_limit_uw, val);
125 struct scmi_powercap_zone *spz = to_scmi_powercap_zone(pz);
128 if (!spz->info->powercap_cap_config)
131 scmi_powercap_normalize_cap(spz, power_uw, &norm_power);
133 return powercap_ops->cap_set(spz->ph, spz->info->id, norm_power, false);
139 struct scmi_powercap_zone *spz = to_scmi_powercap_zone(pz);
143 ret = powercap_ops->cap_get(spz->ph, spz->info->id, &power);
148 if (spz->info->powercap_scale_mw)
154 static void scmi_powercap_normalize_time(const struct scmi_powercap_zone *spz,
162 *norm = clamp_t(u32, time_us, spz->info->min_pai, spz->info->max_pai);
163 *norm = rounddown(*norm, spz->info->pai_step);
166 dev_dbg(spz->dev,
168 spz->info->name, time_us, *norm);
174 struct scmi_powercap_zone *spz = to_scmi_powercap_zone(pz);
177 if (!spz->info->powercap_pai_config)
180 scmi_powercap_normalize_time(spz, time_window_us, &norm_pai);
182 return powercap_ops->pai_set(spz->ph, spz->info->id, norm_pai);
188 struct scmi_powercap_zone *spz = to_scmi_powercap_zone(pz);
192 ret = powercap_ops->pai_get(spz->ph, spz->info->id, &pai);
204 struct scmi_powercap_zone *spz = to_scmi_powercap_zone(pz);
206 *max_power_uw = spz->info->max_power_cap;
207 if (spz->info->powercap_scale_mw)
216 struct scmi_powercap_zone *spz = to_scmi_powercap_zone(pz);
218 *min_power_uw = spz->info->min_power_cap;
219 if (spz->info->powercap_scale_mw)
228 struct scmi_powercap_zone *spz = to_scmi_powercap_zone(pz);
230 *time_window_us = spz->info->max_pai;
238 struct scmi_powercap_zone *spz = to_scmi_powercap_zone(pz);
240 *time_window_us = (u64)spz->info->min_pai;
269 struct scmi_powercap_zone *spz;
271 list_for_each_entry(spz, &pr->registered_zones[i], node)
273 &spz->zone);
279 scmi_powercap_get_zone_height(struct scmi_powercap_zone *spz)
281 if (spz->info->parent_id == SCMI_POWERCAP_ROOT_ZONE_ID)
284 return spz->spzones[spz->info->parent_id].height + 1;
288 scmi_powercap_get_parent_zone(struct scmi_powercap_zone *spz)
290 if (spz->info->parent_id == SCMI_POWERCAP_ROOT_ZONE_ID)
293 return &spz->spzones[spz->info->parent_id];
297 struct scmi_powercap_zone *spz,
303 if (spz->invalid) {
304 list_del(&spz->node);
308 z = powercap_register_zone(&spz->zone, scmi_top_pcntrl, spz->info->name,
312 spz->height = scmi_powercap_get_zone_height(spz);
313 spz->registered = true;
314 list_move(&spz->node, &pr->registered_zones[spz->height]);
315 dev_dbg(spz->dev, "Registered node %s - parent %s - height:%d\n",
316 spz->info->name, parent ? parent->info->name : "ROOT",
317 spz->height);
319 list_del(&spz->node);
321 dev_err(spz->dev,
323 spz->info->name,
325 spz->height, ret);
371 struct scmi_powercap_zone *spz, **zones_stack;
373 zones_stack = kcalloc(pr->num_zones, sizeof(spz), GFP_KERNEL);
377 spz = list_first_entry_or_null(&pr->scmi_zones,
379 while (spz) {
382 parent = scmi_powercap_get_parent_zone(spz);
384 zones_stack[sp++] = spz;
385 spz = parent;
387 ret = scmi_powercap_register_zone(pr, spz, parent);
403 spz = zones_stack[--sp];
405 spz = list_first_entry_or_null(&pr->scmi_zones,
422 struct scmi_powercap_zone *spz;
460 for (i = 0, spz = pr->spzones; i < pr->num_zones; i++, spz++) {
466 spz->info = powercap_ops->info_get(ph, i);
468 spz->dev = dev;
469 spz->ph = ph;
470 spz->spzones = pr->spzones;
471 INIT_LIST_HEAD(&spz->node);
474 list_add_tail(&spz->node, &pr->scmi_zones);
480 if (!spz->info->powercap_scale_uw &&
481 !spz->info->powercap_scale_mw) {
484 spz->info->name);
485 spz->invalid = true;