Lines Matching refs:dev
26 static bool _is_cpu_device(struct device *dev) in _is_cpu_device() argument
28 return (dev->bus == &cpu_subsys); in _is_cpu_device()
67 static void em_debug_create_pd(struct device *dev) in em_debug_create_pd() argument
73 d = debugfs_create_dir(dev_name(dev), rootdir); in em_debug_create_pd()
75 if (_is_cpu_device(dev)) in em_debug_create_pd()
76 debugfs_create_file("cpus", 0444, d, dev->em_pd->cpus, in em_debug_create_pd()
79 debugfs_create_file("units", 0444, d, dev->em_pd, &em_debug_units_fops); in em_debug_create_pd()
82 for (i = 0; i < dev->em_pd->nr_perf_states; i++) in em_debug_create_pd()
83 em_debug_create_ps(&dev->em_pd->table[i], d); in em_debug_create_pd()
87 static void em_debug_remove_pd(struct device *dev) in em_debug_remove_pd() argument
89 debugfs_lookup_and_remove(dev_name(dev), rootdir); in em_debug_remove_pd()
101 static void em_debug_create_pd(struct device *dev) {} in em_debug_create_pd() argument
102 static void em_debug_remove_pd(struct device *dev) {} in em_debug_remove_pd() argument
105 static int em_create_perf_table(struct device *dev, struct em_perf_domain *pd, in em_create_perf_table() argument
124 ret = cb->active_power(&power, &freq, dev); in em_create_perf_table()
126 dev_err(dev, "EM: invalid perf. state: %d\n", in em_create_perf_table()
136 dev_err(dev, "EM: non-increasing freq: %lu\n", in em_create_perf_table()
146 dev_err(dev, "EM: invalid power: %lu\n", in em_create_perf_table()
163 dev_dbg(dev, "EM: OPP:%lu is inefficient\n", in em_create_perf_table()
180 static int em_create_pd(struct device *dev, int nr_states, in em_create_pd() argument
187 if (_is_cpu_device(dev)) { in em_create_pd()
199 ret = em_create_perf_table(dev, pd, nr_states, cb); in em_create_pd()
205 if (_is_cpu_device(dev)) in em_create_pd()
211 dev->em_pd = pd; in em_create_pd()
223 struct em_perf_domain *em_pd_get(struct device *dev) in em_pd_get() argument
225 if (IS_ERR_OR_NULL(dev)) in em_pd_get()
228 return dev->em_pd; in em_pd_get()
274 int em_dev_register_perf_domain(struct device *dev, unsigned int nr_states, in em_dev_register_perf_domain() argument
282 if (!dev || !nr_states || !cb) in em_dev_register_perf_domain()
291 if (dev->em_pd) { in em_dev_register_perf_domain()
296 if (_is_cpu_device(dev)) { in em_dev_register_perf_domain()
298 dev_err(dev, "EM: invalid CPU mask\n"); in em_dev_register_perf_domain()
305 dev_err(dev, "EM: exists for CPU%d\n", cpu); in em_dev_register_perf_domain()
320 dev_err(dev, "EM: CPUs of %*pbl must have the same capacity\n", in em_dev_register_perf_domain()
330 ret = em_create_pd(dev, nr_states, cb, cpus); in em_dev_register_perf_domain()
334 dev->em_pd->milliwatts = milliwatts; in em_dev_register_perf_domain()
336 em_debug_create_pd(dev); in em_dev_register_perf_domain()
337 dev_info(dev, "EM: created perf domain\n"); in em_dev_register_perf_domain()
351 void em_dev_unregister_perf_domain(struct device *dev) in em_dev_unregister_perf_domain() argument
353 if (IS_ERR_OR_NULL(dev) || !dev->em_pd) in em_dev_unregister_perf_domain()
356 if (_is_cpu_device(dev)) in em_dev_unregister_perf_domain()
365 em_debug_remove_pd(dev); in em_dev_unregister_perf_domain()
367 kfree(dev->em_pd->table); in em_dev_unregister_perf_domain()
368 kfree(dev->em_pd); in em_dev_unregister_perf_domain()
369 dev->em_pd = NULL; in em_dev_unregister_perf_domain()