• Home
  • Raw
  • Download

Lines Matching refs:dev

26 static void em_cpufreq_update_efficiencies(struct device *dev,
32 static bool _is_cpu_device(struct device *dev) in _is_cpu_device() argument
34 return (dev->bus == &cpu_subsys); in _is_cpu_device()
119 static void em_debug_create_pd(struct device *dev) in em_debug_create_pd() argument
126 d = debugfs_create_dir(dev_name(dev), rootdir); in em_debug_create_pd()
128 if (_is_cpu_device(dev)) in em_debug_create_pd()
129 debugfs_create_file("cpus", 0444, d, dev->em_pd->cpus, in em_debug_create_pd()
132 debugfs_create_file("flags", 0444, d, dev->em_pd, in em_debug_create_pd()
135 em_dbg = devm_kcalloc(dev, dev->em_pd->nr_perf_states, in em_debug_create_pd()
141 for (i = 0; i < dev->em_pd->nr_perf_states; i++) in em_debug_create_pd()
142 em_debug_create_ps(dev->em_pd, em_dbg, i, d); in em_debug_create_pd()
146 static void em_debug_remove_pd(struct device *dev) in em_debug_remove_pd() argument
148 debugfs_lookup_and_remove(dev_name(dev), rootdir); in em_debug_remove_pd()
160 static void em_debug_create_pd(struct device *dev) {} in em_debug_create_pd() argument
161 static void em_debug_remove_pd(struct device *dev) {} in em_debug_remove_pd() argument
205 static void em_init_performance(struct device *dev, struct em_perf_domain *pd, in em_init_performance() argument
212 if (!_is_cpu_device(dev)) in em_init_performance()
229 static int em_compute_costs(struct device *dev, struct em_perf_state *table, in em_compute_costs() argument
237 if (!_is_cpu_device(dev)) in em_compute_costs()
245 ret = cb->get_cost(dev, table[i].frequency, &cost); in em_compute_costs()
247 dev_err(dev, "EM: invalid cost %lu %d\n", in em_compute_costs()
261 dev_dbg(dev, "EM: OPP:%lu is inefficient\n", in em_compute_costs()
284 int em_dev_compute_costs(struct device *dev, struct em_perf_state *table, in em_dev_compute_costs() argument
287 return em_compute_costs(dev, table, NULL, nr_states, 0); in em_dev_compute_costs()
302 int em_dev_update_perf_domain(struct device *dev, in em_dev_update_perf_domain() argument
308 if (!dev) in em_dev_update_perf_domain()
314 if (!dev->em_pd) { in em_dev_update_perf_domain()
318 pd = dev->em_pd; in em_dev_update_perf_domain()
326 em_cpufreq_update_efficiencies(dev, new_table->state); in em_dev_update_perf_domain()
335 static int em_create_perf_table(struct device *dev, struct em_perf_domain *pd, in em_create_perf_table() argument
351 ret = cb->active_power(dev, &power, &freq); in em_create_perf_table()
353 dev_err(dev, "EM: invalid perf. state: %d\n", in em_create_perf_table()
363 dev_err(dev, "EM: non-increasing freq: %lu\n", in em_create_perf_table()
373 dev_err(dev, "EM: invalid power: %lu\n", in em_create_perf_table()
382 em_init_performance(dev, pd, table, nr_states); in em_create_perf_table()
384 ret = em_compute_costs(dev, table, cb, nr_states, flags); in em_create_perf_table()
391 static int em_create_pd(struct device *dev, int nr_states, in em_create_pd() argument
400 if (_is_cpu_device(dev)) { in em_create_pd()
405 dev_err(dev, "EM: too many CPUs, overflow possible\n"); in em_create_pd()
426 ret = em_create_perf_table(dev, pd, em_table->state, cb, flags); in em_create_pd()
432 if (_is_cpu_device(dev)) in em_create_pd()
438 dev->em_pd = pd; in em_create_pd()
450 em_cpufreq_update_efficiencies(struct device *dev, struct em_perf_state *table) in em_cpufreq_update_efficiencies() argument
452 struct em_perf_domain *pd = dev->em_pd; in em_cpufreq_update_efficiencies()
457 if (!_is_cpu_device(dev)) in em_cpufreq_update_efficiencies()
463 dev_warn(dev, "EM: No online CPU for CPUFreq policy\n"); in em_cpufreq_update_efficiencies()
469 dev_warn(dev, "EM: Access to CPUFreq policy failed\n"); in em_cpufreq_update_efficiencies()
500 struct em_perf_domain *em_pd_get(struct device *dev) in em_pd_get() argument
502 if (IS_ERR_OR_NULL(dev)) in em_pd_get()
505 return dev->em_pd; in em_pd_get()
551 int em_dev_register_perf_domain(struct device *dev, unsigned int nr_states, in em_dev_register_perf_domain() argument
560 if (!dev || !nr_states || !cb) in em_dev_register_perf_domain()
569 if (dev->em_pd) { in em_dev_register_perf_domain()
574 if (_is_cpu_device(dev)) { in em_dev_register_perf_domain()
576 dev_err(dev, "EM: invalid CPU mask\n"); in em_dev_register_perf_domain()
583 dev_err(dev, "EM: exists for CPU%d\n", cpu); in em_dev_register_perf_domain()
594 dev_err(dev, "EM: CPUs of %*pbl must have the same capacity\n", in em_dev_register_perf_domain()
615 dev_err(dev, "EM: only supports uW power values\n"); in em_dev_register_perf_domain()
620 ret = em_create_pd(dev, nr_states, cb, cpus, flags); in em_dev_register_perf_domain()
624 dev->em_pd->flags |= flags; in em_dev_register_perf_domain()
625 dev->em_pd->min_perf_state = 0; in em_dev_register_perf_domain()
626 dev->em_pd->max_perf_state = nr_states - 1; in em_dev_register_perf_domain()
628 em_table = rcu_dereference_protected(dev->em_pd->em_table, in em_dev_register_perf_domain()
630 em_cpufreq_update_efficiencies(dev, em_table->state); in em_dev_register_perf_domain()
632 em_debug_create_pd(dev); in em_dev_register_perf_domain()
633 dev_info(dev, "EM: created perf domain\n"); in em_dev_register_perf_domain()
638 if (_is_cpu_device(dev)) in em_dev_register_perf_domain()
651 void em_dev_unregister_perf_domain(struct device *dev) in em_dev_unregister_perf_domain() argument
653 if (IS_ERR_OR_NULL(dev) || !dev->em_pd) in em_dev_unregister_perf_domain()
656 if (_is_cpu_device(dev)) in em_dev_unregister_perf_domain()
665 em_debug_remove_pd(dev); in em_dev_unregister_perf_domain()
667 em_table_free(rcu_dereference_protected(dev->em_pd->em_table, in em_dev_unregister_perf_domain()
670 kfree(dev->em_pd); in em_dev_unregister_perf_domain()
671 dev->em_pd = NULL; in em_dev_unregister_perf_domain()
699 static int em_recalc_and_update(struct device *dev, struct em_perf_domain *pd, in em_recalc_and_update() argument
704 ret = em_compute_costs(dev, em_table->state, NULL, pd->nr_perf_states, in em_recalc_and_update()
709 ret = em_dev_update_perf_domain(dev, em_table); in em_recalc_and_update()
727 static void em_adjust_new_capacity(struct device *dev, in em_adjust_new_capacity() argument
735 dev_warn(dev, "EM: allocation failed\n"); in em_adjust_new_capacity()
739 em_init_performance(dev, pd, em_table->state, pd->nr_perf_states); in em_adjust_new_capacity()
741 em_recalc_and_update(dev, pd, em_table); in em_adjust_new_capacity()
761 struct device *dev; in em_check_capacity_update() local
799 dev = get_cpu_device(cpu); in em_check_capacity_update()
800 em_adjust_new_capacity(dev, pd, cpu_capacity); in em_check_capacity_update()
820 int em_dev_update_chip_binning(struct device *dev) in em_dev_update_chip_binning() argument
826 if (IS_ERR_OR_NULL(dev)) in em_dev_update_chip_binning()
829 pd = em_pd_get(dev); in em_dev_update_chip_binning()
831 dev_warn(dev, "Couldn't find Energy Model\n"); in em_dev_update_chip_binning()
837 dev_warn(dev, "EM: allocation failed\n"); in em_dev_update_chip_binning()
846 ret = dev_pm_opp_calc_power(dev, &power, &freq); in em_dev_update_chip_binning()
855 return em_recalc_and_update(dev, pd, em_table); in em_dev_update_chip_binning()