Symbol: dtpm
drivers/powercap/dtpm.c
103
static void __dtpm_sub_power(struct dtpm *dtpm)
drivers/powercap/dtpm.c
105
struct dtpm *parent = dtpm->parent;
drivers/powercap/dtpm.c
108
parent->power_min -= dtpm->power_min;
drivers/powercap/dtpm.c
109
parent->power_max -= dtpm->power_max;
drivers/powercap/dtpm.c
110
parent->power_limit -= dtpm->power_limit;
drivers/powercap/dtpm.c
115
static void __dtpm_add_power(struct dtpm *dtpm)
drivers/powercap/dtpm.c
117
struct dtpm *parent = dtpm->parent;
drivers/powercap/dtpm.c
120
parent->power_min += dtpm->power_min;
drivers/powercap/dtpm.c
121
parent->power_max += dtpm->power_max;
drivers/powercap/dtpm.c
122
parent->power_limit += dtpm->power_limit;
drivers/powercap/dtpm.c
136
int dtpm_update_power(struct dtpm *dtpm)
drivers/powercap/dtpm.c
140
__dtpm_sub_power(dtpm);
drivers/powercap/dtpm.c
142
ret = dtpm->ops->update_power_uw(dtpm);
drivers/powercap/dtpm.c
145
dtpm->zone.name, ret);
drivers/powercap/dtpm.c
147
if (!test_bit(DTPM_POWER_LIMIT_FLAG, &dtpm->flags))
drivers/powercap/dtpm.c
148
dtpm->power_limit = dtpm->power_max;
drivers/powercap/dtpm.c
150
__dtpm_add_power(dtpm);
drivers/powercap/dtpm.c
171
struct dtpm *dtpm = to_dtpm(pcz);
drivers/powercap/dtpm.c
172
struct dtpm *parent = dtpm->parent;
drivers/powercap/dtpm.c
174
if (!list_empty(&dtpm->children))
drivers/powercap/dtpm.c
178
list_del(&dtpm->sibling);
drivers/powercap/dtpm.c
180
__dtpm_sub_power(dtpm);
drivers/powercap/dtpm.c
182
if (dtpm->ops)
drivers/powercap/dtpm.c
183
dtpm->ops->release(dtpm);
drivers/powercap/dtpm.c
185
kfree(dtpm);
drivers/powercap/dtpm.c
204
static int __set_power_limit_uw(struct dtpm *dtpm, int cid, u64 power_limit)
drivers/powercap/dtpm.c
206
struct dtpm *child;
drivers/powercap/dtpm.c
214
if (power_limit == dtpm->power_max) {
drivers/powercap/dtpm.c
215
clear_bit(DTPM_POWER_LIMIT_FLAG, &dtpm->flags);
drivers/powercap/dtpm.c
217
set_bit(DTPM_POWER_LIMIT_FLAG, &dtpm->flags);
drivers/powercap/dtpm.c
221
dtpm->zone.name, power_limit);
drivers/powercap/dtpm.c
226
if (dtpm->ops) {
drivers/powercap/dtpm.c
227
dtpm->power_limit = dtpm->ops->set_power_uw(dtpm, power_limit);
drivers/powercap/dtpm.c
229
dtpm->power_limit = 0;
drivers/powercap/dtpm.c
231
list_for_each_entry(child, &dtpm->children, sibling) {
drivers/powercap/dtpm.c
241
if (power_limit == dtpm->power_max) {
drivers/powercap/dtpm.c
243
} else if (power_limit == dtpm->power_min) {
drivers/powercap/dtpm.c
260
dtpm->power_limit += power;
drivers/powercap/dtpm.c
270
struct dtpm *dtpm = to_dtpm(pcz);
drivers/powercap/dtpm.c
277
power_limit = clamp_val(power_limit, dtpm->power_min, dtpm->power_max);
drivers/powercap/dtpm.c
279
ret = __set_power_limit_uw(dtpm, cid, power_limit);
drivers/powercap/dtpm.c
282
dtpm->zone.name, dtpm->power_limit, dtpm->power_max);
drivers/powercap/dtpm.c
319
void dtpm_init(struct dtpm *dtpm, struct dtpm_ops *ops)
drivers/powercap/dtpm.c
321
if (dtpm) {
drivers/powercap/dtpm.c
322
INIT_LIST_HEAD(&dtpm->children);
drivers/powercap/dtpm.c
323
INIT_LIST_HEAD(&dtpm->sibling);
drivers/powercap/dtpm.c
324
dtpm->weight = 1024;
drivers/powercap/dtpm.c
325
dtpm->ops = ops;
drivers/powercap/dtpm.c
336
void dtpm_unregister(struct dtpm *dtpm)
drivers/powercap/dtpm.c
338
powercap_unregister_zone(pct, &dtpm->zone);
drivers/powercap/dtpm.c
340
pr_debug("Unregistered dtpm node '%s'\n", dtpm->zone.name);
drivers/powercap/dtpm.c
365
int dtpm_register(const char *name, struct dtpm *dtpm, struct dtpm *parent)
drivers/powercap/dtpm.c
38
static struct dtpm *root;
drivers/powercap/dtpm.c
381
if (!dtpm)
drivers/powercap/dtpm.c
384
if (dtpm->ops && !(dtpm->ops->set_power_uw &&
drivers/powercap/dtpm.c
385
dtpm->ops->get_power_uw &&
drivers/powercap/dtpm.c
386
dtpm->ops->update_power_uw &&
drivers/powercap/dtpm.c
387
dtpm->ops->release))
drivers/powercap/dtpm.c
390
pcz = powercap_register_zone(&dtpm->zone, pct, name,
drivers/powercap/dtpm.c
398
list_add_tail(&dtpm->sibling, &parent->children);
drivers/powercap/dtpm.c
399
dtpm->parent = parent;
drivers/powercap/dtpm.c
401
root = dtpm;
drivers/powercap/dtpm.c
404
if (dtpm->ops && !dtpm->ops->update_power_uw(dtpm)) {
drivers/powercap/dtpm.c
405
__dtpm_add_power(dtpm);
drivers/powercap/dtpm.c
406
dtpm->power_limit = dtpm->power_max;
drivers/powercap/dtpm.c
410
dtpm->zone.name, dtpm->power_min, dtpm->power_max);
drivers/powercap/dtpm.c
415
static struct dtpm *dtpm_setup_virtual(const struct dtpm_node *hierarchy,
drivers/powercap/dtpm.c
416
struct dtpm *parent)
drivers/powercap/dtpm.c
418
struct dtpm *dtpm;
drivers/powercap/dtpm.c
421
dtpm = kzalloc_obj(*dtpm);
drivers/powercap/dtpm.c
422
if (!dtpm)
drivers/powercap/dtpm.c
424
dtpm_init(dtpm, NULL);
drivers/powercap/dtpm.c
426
ret = dtpm_register(hierarchy->name, dtpm, parent);
drivers/powercap/dtpm.c
430
kfree(dtpm);
drivers/powercap/dtpm.c
434
return dtpm;
drivers/powercap/dtpm.c
437
static struct dtpm *dtpm_setup_dt(const struct dtpm_node *hierarchy,
drivers/powercap/dtpm.c
438
struct dtpm *parent)
drivers/powercap/dtpm.c
471
typedef struct dtpm * (*dtpm_node_callback_t)(const struct dtpm_node *, struct dtpm *);
drivers/powercap/dtpm.c
479
const struct dtpm_node *it, struct dtpm *parent)
drivers/powercap/dtpm.c
481
struct dtpm *dtpm;
drivers/powercap/dtpm.c
489
dtpm = dtpm_node_callback[hierarchy[i].type](&hierarchy[i], parent);
drivers/powercap/dtpm.c
495
if (!dtpm)
drivers/powercap/dtpm.c
509
if (IS_ERR(dtpm)) {
drivers/powercap/dtpm.c
515
ret = dtpm_for_each_child(hierarchy, &hierarchy[i], dtpm);
drivers/powercap/dtpm.c
52
struct dtpm *dtpm = to_dtpm(pcz);
drivers/powercap/dtpm.c
54
*max_power_uw = dtpm->power_max - dtpm->power_min;
drivers/powercap/dtpm.c
59
static int __get_power_uw(struct dtpm *dtpm, u64 *power_uw)
drivers/powercap/dtpm.c
604
static void __dtpm_destroy_hierarchy(struct dtpm *dtpm)
drivers/powercap/dtpm.c
606
struct dtpm *child, *aux;
drivers/powercap/dtpm.c
608
list_for_each_entry_safe(child, aux, &dtpm->children, sibling)
drivers/powercap/dtpm.c
61
struct dtpm *child;
drivers/powercap/dtpm.c
615
dtpm_unregister(dtpm);
drivers/powercap/dtpm.c
65
if (dtpm->ops) {
drivers/powercap/dtpm.c
66
*power_uw = dtpm->ops->get_power_uw(dtpm);
drivers/powercap/dtpm.c
72
list_for_each_entry(child, &dtpm->children, sibling) {
drivers/powercap/dtpm.c
87
static void __dtpm_rebalance_weight(struct dtpm *dtpm)
drivers/powercap/dtpm.c
89
struct dtpm *child;
drivers/powercap/dtpm.c
91
list_for_each_entry(child, &dtpm->children, sibling) {
drivers/powercap/dtpm.c
97
child->power_max * 1024, dtpm->power_max);
drivers/powercap/dtpm_cpu.c
121
static int update_pd_power_uw(struct dtpm *dtpm)
drivers/powercap/dtpm_cpu.c
123
struct dtpm_cpu *dtpm_cpu = to_dtpm_cpu(dtpm);
drivers/powercap/dtpm_cpu.c
133
dtpm->power_min = table[0].power;
drivers/powercap/dtpm_cpu.c
134
dtpm->power_min *= nr_cpus;
drivers/powercap/dtpm_cpu.c
136
dtpm->power_max = table[em->nr_perf_states - 1].power;
drivers/powercap/dtpm_cpu.c
137
dtpm->power_max *= nr_cpus;
drivers/powercap/dtpm_cpu.c
144
static void pd_release(struct dtpm *dtpm)
drivers/powercap/dtpm_cpu.c
146
struct dtpm_cpu *dtpm_cpu = to_dtpm_cpu(dtpm);
drivers/powercap/dtpm_cpu.c
176
dtpm_update_power(&dtpm_cpu->dtpm);
drivers/powercap/dtpm_cpu.c
187
return dtpm_update_power(&dtpm_cpu->dtpm);
drivers/powercap/dtpm_cpu.c
192
static int __dtpm_cpu_setup(int cpu, struct dtpm *parent)
drivers/powercap/dtpm_cpu.c
221
dtpm_init(&dtpm_cpu->dtpm, &dtpm_ops);
drivers/powercap/dtpm_cpu.c
229
ret = dtpm_register(name, &dtpm_cpu->dtpm, parent);
drivers/powercap/dtpm_cpu.c
246
dtpm_unregister(&dtpm_cpu->dtpm);
drivers/powercap/dtpm_cpu.c
259
static int dtpm_cpu_setup(struct dtpm *dtpm, struct device_node *np)
drivers/powercap/dtpm_cpu.c
267
return __dtpm_cpu_setup(cpu, dtpm);
drivers/powercap/dtpm_cpu.c
29
struct dtpm dtpm;
drivers/powercap/dtpm_cpu.c
36
static struct dtpm_cpu *to_dtpm_cpu(struct dtpm *dtpm)
drivers/powercap/dtpm_cpu.c
38
return container_of(dtpm, struct dtpm_cpu, dtpm);
drivers/powercap/dtpm_cpu.c
41
static u64 set_pd_power_limit(struct dtpm *dtpm, u64 power_limit)
drivers/powercap/dtpm_cpu.c
43
struct dtpm_cpu *dtpm_cpu = to_dtpm_cpu(dtpm);
drivers/powercap/dtpm_cpu.c
88
static u64 get_pd_power_uw(struct dtpm *dtpm)
drivers/powercap/dtpm_cpu.c
90
struct dtpm_cpu *dtpm_cpu = to_dtpm_cpu(dtpm);
drivers/powercap/dtpm_devfreq.c
130
static void pd_release(struct dtpm *dtpm)
drivers/powercap/dtpm_devfreq.c
132
struct dtpm_devfreq *dtpm_devfreq = to_dtpm_devfreq(dtpm);
drivers/powercap/dtpm_devfreq.c
147
static int __dtpm_devfreq_setup(struct devfreq *devfreq, struct dtpm *parent)
drivers/powercap/dtpm_devfreq.c
167
dtpm_init(&dtpm_devfreq->dtpm, &dtpm_ops);
drivers/powercap/dtpm_devfreq.c
171
ret = dtpm_register(dev_name(dev), &dtpm_devfreq->dtpm, parent);
drivers/powercap/dtpm_devfreq.c
186
dtpm_update_power(&dtpm_devfreq->dtpm);
drivers/powercap/dtpm_devfreq.c
191
dtpm_unregister(&dtpm_devfreq->dtpm);
drivers/powercap/dtpm_devfreq.c
196
static int dtpm_devfreq_setup(struct dtpm *dtpm, struct device_node *np)
drivers/powercap/dtpm_devfreq.c
204
return __dtpm_devfreq_setup(devfreq, dtpm);
drivers/powercap/dtpm_devfreq.c
24
struct dtpm dtpm;
drivers/powercap/dtpm_devfreq.c
29
static struct dtpm_devfreq *to_dtpm_devfreq(struct dtpm *dtpm)
drivers/powercap/dtpm_devfreq.c
31
return container_of(dtpm, struct dtpm_devfreq, dtpm);
drivers/powercap/dtpm_devfreq.c
34
static int update_pd_power_uw(struct dtpm *dtpm)
drivers/powercap/dtpm_devfreq.c
36
struct dtpm_devfreq *dtpm_devfreq = to_dtpm_devfreq(dtpm);
drivers/powercap/dtpm_devfreq.c
45
dtpm->power_min = table[0].power;
drivers/powercap/dtpm_devfreq.c
47
dtpm->power_max = table[pd->nr_perf_states - 1].power;
drivers/powercap/dtpm_devfreq.c
53
static u64 set_pd_power_limit(struct dtpm *dtpm, u64 power_limit)
drivers/powercap/dtpm_devfreq.c
55
struct dtpm_devfreq *dtpm_devfreq = to_dtpm_devfreq(dtpm);
drivers/powercap/dtpm_devfreq.c
93
static u64 get_pd_power_uw(struct dtpm *dtpm)
drivers/powercap/dtpm_devfreq.c
95
struct dtpm_devfreq *dtpm_devfreq = to_dtpm_devfreq(dtpm);
include/linux/dtpm.h
17
struct dtpm *parent;
include/linux/dtpm.h
29
u64 (*set_power_uw)(struct dtpm *, u64);
include/linux/dtpm.h
30
u64 (*get_power_uw)(struct dtpm *);
include/linux/dtpm.h
31
int (*update_power_uw)(struct dtpm *);
include/linux/dtpm.h
32
void (*release)(struct dtpm *);
include/linux/dtpm.h
41
int (*setup)(struct dtpm *, struct device_node *);
include/linux/dtpm.h
55
static inline struct dtpm *to_dtpm(struct powercap_zone *zone)
include/linux/dtpm.h
57
return container_of(zone, struct dtpm, zone);
include/linux/dtpm.h
60
int dtpm_update_power(struct dtpm *dtpm);
include/linux/dtpm.h
64
void dtpm_init(struct dtpm *dtpm, struct dtpm_ops *ops);
include/linux/dtpm.h
66
void dtpm_unregister(struct dtpm *dtpm);
include/linux/dtpm.h
68
int dtpm_register(const char *name, struct dtpm *dtpm, struct dtpm *parent);