static int cpuidle_block_show(struct seq_file *m, void *unused)
{
	unsigned long flags;
	struct pm_qos_object *o;
	struct list_head *list;
	struct plist_node *node;
	struct pm_qos_request *req;
	s32 target_value = PM_QOS_CPUIDLE_BLOCK_DEFAULT_VALUE;

	o = pm_qos_array[PM_QOS_CPUIDLE_BLOCK];
	list = &o->constraints->list.node_list;

	rcu_read_lock();
	spin_lock_irqsave(&pm_qos_lock, flags);

	target_value = pm_qos_read_value(o->constraints);
	if (target_value != PM_QOS_CPUIDLE_BLOCK_DEFAULT_VALUE) {
		seq_printf(m, "Can't enter state equals to or deeper than state %d\n",
			target_value);
		seq_printf(m, "*****Blocking devices*****\n");
	} else
		seq_printf(m, "SOC can enter all states\n");

	list_for_each_entry(node, list, node_list) {
		req = container_of(node, struct pm_qos_request, node);
		if (node->prio != PM_QOS_CPUIDLE_BLOCK_DEFAULT_VALUE)
			seq_printf(m, "state %d:\t%s\n", node->prio, req->name);
	}
Exemplo n.º 2
0
static ssize_t cpuidle_block_show(struct seq_file *m, void *unused)
{
	unsigned long flags;
	struct pm_qos_object *o;
	struct list_head *list;
	struct plist_node *node;
	struct pm_qos_request *req;
	s32 target_value = 0;
	/* The item sequence should align with PM_QOS_CPUIDLE_BLOCK_*. */
	char *lpm_modes[] = {"Default", "D2", "D1", "D1P"};

	o = pm_qos_array[PM_QOS_CPUIDLE_BLOCK];
	list = &o->constraints->list.node_list;

	rcu_read_lock();
	spin_lock_irqsave(&pm_qos_lock, flags);

	target_value = pm_qos_read_value(o->constraints);
	if (target_value != PM_QOS_CPUIDLE_BLOCK_DEFAULT_VALUE) {
		seq_printf(m, "Can't enter state equals to or deeper than %s\n",
				lpm_modes[target_value]);
		seq_printf(m, "*****Blocking devices*****\n");
	} else
		seq_printf(m, "SOC can enter all states\n");

	list_for_each_entry(node, list, node_list) {
		req = container_of(node, struct pm_qos_request, node);
		if (node->prio != PM_QOS_CPUIDLE_BLOCK_DEFAULT_VALUE)
			seq_printf(m, "%s:\t%s\n",
				lpm_modes[node->prio], req->name);
	}
/**
 * pm_qos_request - returns current system wide qos expectation
 * @pm_qos_class: identification of which qos value is requested
 *
 * This function returns the current target value.
 */
int pm_qos_request(int pm_qos_class)
{
	return pm_qos_read_value(pm_qos_array[pm_qos_class]->constraints);
}