@ -531,6 +531,25 @@ static ssize_t usb2_lpm_besl_store(struct device *dev,
}
static DEVICE_ATTR_RW ( usb2_lpm_besl ) ;
static ssize_t usb3_hardware_lpm_show ( struct device * dev ,
struct device_attribute * attr , char * buf )
{
struct usb_device * udev = to_usb_device ( dev ) ;
const char * p ;
usb_lock_device ( udev ) ;
if ( udev - > usb3_lpm_enabled )
p = " enabled " ;
else
p = " disabled " ;
usb_unlock_device ( udev ) ;
return sprintf ( buf , " %s \n " , p ) ;
}
static DEVICE_ATTR_RO ( usb3_hardware_lpm ) ;
static struct attribute * usb2_hardware_lpm_attr [ ] = {
& dev_attr_usb2_hardware_lpm . attr ,
& dev_attr_usb2_lpm_l1_timeout . attr ,
@ -542,6 +561,15 @@ static struct attribute_group usb2_hardware_lpm_attr_group = {
. attrs = usb2_hardware_lpm_attr ,
} ;
static struct attribute * usb3_hardware_lpm_attr [ ] = {
& dev_attr_usb3_hardware_lpm . attr ,
NULL ,
} ;
static struct attribute_group usb3_hardware_lpm_attr_group = {
. name = power_group_name ,
. attrs = usb3_hardware_lpm_attr ,
} ;
static struct attribute * power_attrs [ ] = {
& dev_attr_autosuspend . attr ,
& dev_attr_level . attr ,
@ -564,6 +592,9 @@ static int add_power_attributes(struct device *dev)
if ( udev - > usb2_hw_lpm_capable = = 1 )
rc = sysfs_merge_group ( & dev - > kobj ,
& usb2_hardware_lpm_attr_group ) ;
if ( udev - > lpm_capable = = 1 )
rc = sysfs_merge_group ( & dev - > kobj ,
& usb3_hardware_lpm_attr_group ) ;
}
return rc ;