PM / Runtime: Make runtime_status attribute not debug-only (v. 2)
This patch (as1404b) makes the runtime_status sysfs attribute available even in the absence of CONFIG_PM_ADVANCED_DEBUG, and it changes the routine to display "unsupported" when runtime PM is disabled for a device. Although not strictly 100% accurate, this will almost always be correct. Signed-off-by: Alan Stern <stern@rowland.harvard.edu> Acked-by: Dominik Brodowski <linux@dominikbrodowski.net> Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
This commit is contained in:
parent
4eb241e569
commit
0fcb4eef82
@ -110,6 +110,38 @@ static ssize_t control_store(struct device * dev, struct device_attribute *attr,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static DEVICE_ATTR(control, 0644, control_show, control_store);
|
static DEVICE_ATTR(control, 0644, control_show, control_store);
|
||||||
|
|
||||||
|
static ssize_t rtpm_status_show(struct device *dev,
|
||||||
|
struct device_attribute *attr, char *buf)
|
||||||
|
{
|
||||||
|
const char *p;
|
||||||
|
|
||||||
|
if (dev->power.runtime_error) {
|
||||||
|
p = "error\n";
|
||||||
|
} else if (dev->power.disable_depth) {
|
||||||
|
p = "unsupported\n";
|
||||||
|
} else {
|
||||||
|
switch (dev->power.runtime_status) {
|
||||||
|
case RPM_SUSPENDED:
|
||||||
|
p = "suspended\n";
|
||||||
|
break;
|
||||||
|
case RPM_SUSPENDING:
|
||||||
|
p = "suspending\n";
|
||||||
|
break;
|
||||||
|
case RPM_RESUMING:
|
||||||
|
p = "resuming\n";
|
||||||
|
break;
|
||||||
|
case RPM_ACTIVE:
|
||||||
|
p = "active\n";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return -EIO;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return sprintf(buf, p);
|
||||||
|
}
|
||||||
|
|
||||||
|
static DEVICE_ATTR(runtime_status, 0444, rtpm_status_show, NULL);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static ssize_t
|
static ssize_t
|
||||||
@ -184,27 +216,8 @@ static ssize_t rtpm_enabled_show(struct device *dev,
|
|||||||
return sprintf(buf, "enabled\n");
|
return sprintf(buf, "enabled\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
static ssize_t rtpm_status_show(struct device *dev,
|
|
||||||
struct device_attribute *attr, char *buf)
|
|
||||||
{
|
|
||||||
if (dev->power.runtime_error)
|
|
||||||
return sprintf(buf, "error\n");
|
|
||||||
switch (dev->power.runtime_status) {
|
|
||||||
case RPM_SUSPENDED:
|
|
||||||
return sprintf(buf, "suspended\n");
|
|
||||||
case RPM_SUSPENDING:
|
|
||||||
return sprintf(buf, "suspending\n");
|
|
||||||
case RPM_RESUMING:
|
|
||||||
return sprintf(buf, "resuming\n");
|
|
||||||
case RPM_ACTIVE:
|
|
||||||
return sprintf(buf, "active\n");
|
|
||||||
}
|
|
||||||
return -EIO;
|
|
||||||
}
|
|
||||||
|
|
||||||
static DEVICE_ATTR(runtime_usage, 0444, rtpm_usagecount_show, NULL);
|
static DEVICE_ATTR(runtime_usage, 0444, rtpm_usagecount_show, NULL);
|
||||||
static DEVICE_ATTR(runtime_active_kids, 0444, rtpm_children_show, NULL);
|
static DEVICE_ATTR(runtime_active_kids, 0444, rtpm_children_show, NULL);
|
||||||
static DEVICE_ATTR(runtime_status, 0444, rtpm_status_show, NULL);
|
|
||||||
static DEVICE_ATTR(runtime_enabled, 0444, rtpm_enabled_show, NULL);
|
static DEVICE_ATTR(runtime_enabled, 0444, rtpm_enabled_show, NULL);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@ -240,6 +253,7 @@ static DEVICE_ATTR(async, 0644, async_show, async_store);
|
|||||||
static struct attribute * power_attrs[] = {
|
static struct attribute * power_attrs[] = {
|
||||||
#ifdef CONFIG_PM_RUNTIME
|
#ifdef CONFIG_PM_RUNTIME
|
||||||
&dev_attr_control.attr,
|
&dev_attr_control.attr,
|
||||||
|
&dev_attr_runtime_status.attr,
|
||||||
#endif
|
#endif
|
||||||
&dev_attr_wakeup.attr,
|
&dev_attr_wakeup.attr,
|
||||||
#ifdef CONFIG_PM_SLEEP
|
#ifdef CONFIG_PM_SLEEP
|
||||||
@ -250,7 +264,6 @@ static struct attribute * power_attrs[] = {
|
|||||||
#ifdef CONFIG_PM_RUNTIME
|
#ifdef CONFIG_PM_RUNTIME
|
||||||
&dev_attr_runtime_usage.attr,
|
&dev_attr_runtime_usage.attr,
|
||||||
&dev_attr_runtime_active_kids.attr,
|
&dev_attr_runtime_active_kids.attr,
|
||||||
&dev_attr_runtime_status.attr,
|
|
||||||
&dev_attr_runtime_enabled.attr,
|
&dev_attr_runtime_enabled.attr,
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user