diff options
Diffstat (limited to 'drivers/platform/x86/asus-wmi.c')
| -rw-r--r-- | drivers/platform/x86/asus-wmi.c | 23 | 
1 files changed, 17 insertions, 6 deletions
diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c index 77aadde5281..c7a36f6b058 100644 --- a/drivers/platform/x86/asus-wmi.c +++ b/drivers/platform/x86/asus-wmi.c @@ -47,6 +47,9 @@  #include <linux/thermal.h>  #include <acpi/acpi_bus.h>  #include <acpi/acpi_drivers.h> +#ifdef CONFIG_ACPI_VIDEO +#include <acpi/video.h> +#endif  #include "asus-wmi.h" @@ -136,6 +139,9 @@ MODULE_LICENSE("GPL");  /* Power */  #define ASUS_WMI_DEVID_PROCESSOR_STATE	0x00120012 +/* Deep S3 / Resume on LID open */ +#define ASUS_WMI_DEVID_LID_RESUME	0x00120031 +  /* DSTS masks */  #define ASUS_WMI_DSTS_STATUS_BIT	0x00000001  #define ASUS_WMI_DSTS_UNKNOWN_BIT	0x00000002 @@ -1365,6 +1371,7 @@ static ssize_t show_sys_wmi(struct asus_wmi *asus, int devid, char *buf)  ASUS_WMI_CREATE_DEVICE_ATTR(touchpad, 0644, ASUS_WMI_DEVID_TOUCHPAD);  ASUS_WMI_CREATE_DEVICE_ATTR(camera, 0644, ASUS_WMI_DEVID_CAMERA);  ASUS_WMI_CREATE_DEVICE_ATTR(cardr, 0644, ASUS_WMI_DEVID_CARDREADER); +ASUS_WMI_CREATE_DEVICE_ATTR(lid_resume, 0644, ASUS_WMI_DEVID_LID_RESUME);  static ssize_t store_cpufv(struct device *dev, struct device_attribute *attr,  			   const char *buf, size_t count) @@ -1390,6 +1397,7 @@ static struct attribute *platform_attributes[] = {  	&dev_attr_camera.attr,  	&dev_attr_cardr.attr,  	&dev_attr_touchpad.attr, +	&dev_attr_lid_resume.attr,  	NULL  }; @@ -1408,6 +1416,8 @@ static umode_t asus_sysfs_is_visible(struct kobject *kobj,  		devid = ASUS_WMI_DEVID_CARDREADER;  	else if (attr == &dev_attr_touchpad.attr)  		devid = ASUS_WMI_DEVID_TOUCHPAD; +	else if (attr == &dev_attr_lid_resume.attr) +		devid = ASUS_WMI_DEVID_LID_RESUME;  	if (devid != -1)  		ok = !(asus_wmi_get_devstate_simple(asus, devid) < 0); @@ -1467,14 +1477,9 @@ static int asus_wmi_platform_init(struct asus_wmi *asus)  	 */  	if (!asus_wmi_evaluate_method(ASUS_WMI_METHODID_DSTS, 0, 0, NULL))  		asus->dsts_id = ASUS_WMI_METHODID_DSTS; -	else if (!asus_wmi_evaluate_method(ASUS_WMI_METHODID_DSTS2, 0, 0, NULL)) +	else  		asus->dsts_id = ASUS_WMI_METHODID_DSTS2; -	if (!asus->dsts_id) { -		pr_err("Can't find DSTS"); -		return -ENODEV; -	} -  	/* CWAP allow to define the behavior of the Fn+F2 key,  	 * this method doesn't seems to be present on Eee PCs */  	if (asus->driver->quirks->wapf >= 0) @@ -1681,7 +1686,13 @@ static int asus_wmi_add(struct platform_device *pdev)  	if (err)  		goto fail_rfkill; +	if (asus->driver->quirks->wmi_backlight_power) +		acpi_video_dmi_promote_vendor();  	if (!acpi_video_backlight_support()) { +#ifdef CONFIG_ACPI_VIDEO +		pr_info("Disabling ACPI video driver\n"); +		acpi_video_unregister(); +#endif  		err = asus_wmi_backlight_init(asus);  		if (err && err != -ENODEV)  			goto fail_backlight;  |