static int devfreq_summary_show()

in devfreq.c [1914:1982]


static int devfreq_summary_show(struct seq_file *s, void *data)
{
	struct devfreq *devfreq;
	struct devfreq *p_devfreq = NULL;
	unsigned long cur_freq, min_freq, max_freq;
	unsigned int polling_ms;
	unsigned int timer;

	seq_printf(s, "%-30s %-30s %-15s %-10s %10s %12s %12s %12s\n",
			"dev",
			"parent_dev",
			"governor",
			"timer",
			"polling_ms",
			"cur_freq_Hz",
			"min_freq_Hz",
			"max_freq_Hz");
	seq_printf(s, "%30s %30s %15s %10s %10s %12s %12s %12s\n",
			"------------------------------",
			"------------------------------",
			"---------------",
			"----------",
			"----------",
			"------------",
			"------------",
			"------------");

	mutex_lock(&devfreq_list_lock);

	list_for_each_entry_reverse(devfreq, &devfreq_list, node) {
#if IS_ENABLED(CONFIG_DEVFREQ_GOV_PASSIVE)
		if (!strncmp(devfreq->governor->name, DEVFREQ_GOV_PASSIVE,
							DEVFREQ_NAME_LEN)) {
			struct devfreq_passive_data *data = devfreq->data;

			if (data)
				p_devfreq = data->parent;
		} else {
			p_devfreq = NULL;
		}
#endif

		mutex_lock(&devfreq->lock);
		cur_freq = devfreq->previous_freq;
		get_freq_range(devfreq, &min_freq, &max_freq);
		timer = devfreq->profile->timer;

		if (IS_SUPPORTED_ATTR(devfreq->governor->attrs, POLLING_INTERVAL))
			polling_ms = devfreq->profile->polling_ms;
		else
			polling_ms = 0;
		mutex_unlock(&devfreq->lock);

		seq_printf(s,
			"%-30s %-30s %-15s %-10s %10d %12ld %12ld %12ld\n",
			dev_name(&devfreq->dev),
			p_devfreq ? dev_name(&p_devfreq->dev) : "null",
			devfreq->governor->name,
			polling_ms ? timer_name[timer] : "null",
			polling_ms,
			cur_freq,
			min_freq,
			max_freq);
	}

	mutex_unlock(&devfreq_list_lock);

	return 0;
}