Lines Matching +full:freq +full:- +full:domain
1 .. SPDX-License-Identifier: GPL-2.0
8 -----------
12 subsystems willing to use that information to make energy-aware decisions.
18 each and every client subsystem to re-implement support for each and every
23 The power values might be expressed in micro-Watts or in an 'abstract scale'.
26 can be found in the Energy-Aware Scheduler documentation
27 Documentation/scheduler/sched-energy.rst. For some subsystems like thermal or
30 thus the real micro-Watts might be needed. An example of these requirements can
32 Documentation/driver-api/thermal/power_allocator.rst.
36 an 'abstract scale' deriving real energy in micro-Joules would not be possible.
38 The figure below depicts an example of drivers (Arm-specific here, but the
42 +---------------+ +-----------------+ +---------------+
44 +---------------+ +-----------------+ +---------------+
47 +---------+ | +---------+
50 +---------------------+
53 +---------------------+
56 +----------+ | +---------+
58 +---------------+ +---------------+ +--------------+
59 | cpufreq-dt | | arm_scmi | | Other |
60 +---------------+ +---------------+ +--------------+
63 +--------------+ +---------------+ +--------------+
65 +--------------+ +---------------+ +--------------+
68 'performance domain' in the system. A performance domain is a group of CPUs
70 1-to-1 mapping with CPUFreq policies. All CPUs in a performance domain are
71 required to have the same micro-architecture. CPUs in different performance
72 domains can have different micro-architectures.
76 ------------
120 "operating-points-v2". Each OPP entry in DT can be extended with a property
121 "opp-microwatt" containing micro-Watts power value. This OPP DT property
166 performance domain.
172 The energy consumed by a performance domain can be estimated using the
183 .. kernel-doc:: include/linux/energy_model.h
186 .. kernel-doc:: kernel/power/energy_model.c
191 -----------------
198 performance domain in the Energy Model framework using the (fake) 'foo'
202 -> drivers/cpufreq/foo_cpufreq.c
207 04 long freq, power;
210 07 freq = foo_get_freq_ceil(dev, *KHz);
211 08 if (freq < 0);
212 09 return freq;
214 11 /* Estimate the power cost for the dev at the relevant freq. */
215 12 power = foo_estimate_power(dev, freq);
221 18 *KHz = freq;
232 29 cpu_dev = get_cpu_device(cpumask_first(policy->cpus));
237 34 /* And register the new performance domain */
238 35 em_dev_register_perf_domain(cpu_dev, nr_opp, &em_cb, policy->cpus,