Let userspace determine the effective power policy of the port.  Reading
the power policy returns the effective idle state for the port.  If the
power policy is set to off this file effectively becomes the
power/runtime_status of an attached child device, otherwise it reflects
the state of pm_qos_no_power_off + connect_type + peer port constraints.

Signed-off-by: Dan Williams <dan.j.willi...@intel.com>
---
 drivers/usb/core/port.c |   13 +++++++++++++
 1 files changed, 13 insertions(+), 0 deletions(-)

diff --git a/drivers/usb/core/port.c b/drivers/usb/core/port.c
index 71fbedaf8a93..6073b4521d03 100644
--- a/drivers/usb/core/port.c
+++ b/drivers/usb/core/port.c
@@ -79,8 +79,21 @@ static ssize_t connect_type_store(struct device *dev, struct 
device_attribute *a
 
 static DEVICE_ATTR_RW(connect_type);
 
+static ssize_t power_policy_show(struct device *dev,
+                                struct device_attribute *attr, char *buf)
+{
+       struct usb_port *port_dev = to_usb_port(dev);
+
+       if (usb_port_power_enabled(port_dev))
+               return sprintf(buf, "on\n");
+       else
+               return sprintf(buf, "off\n");
+}
+static DEVICE_ATTR_RO(power_policy);
+
 static struct attribute *port_dev_attrs[] = {
        &dev_attr_connect_type.attr,
+       &dev_attr_power_policy.attr,
        NULL,
 };
 

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to