platform-drivers-x86 for 4.4-2
Support for the unfortunately rather unique ESC key on the Ideapad Yoga 3 and two DMI matches for rfkill support. Solitary fix for potential missed errors for asus-wmi. Downgrade a thinkpad_acpi message to info. asus-wmi: - fix error handling in store_sys_wmi() ideapad-laptop: - Add Lenovo Yoga 900 to no_hw_rfkill dmi list - include Yoga 3 1170 in add rfkill whitelist - add support for Yoga 3 ESC key thinkpad_acpi: - Don't yell on unsupported brightness interfaces -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQEcBAABAgAGBQJWRlcDAAoJEKbMaAwKp364OAoH/0negZF4jX/rtPm7mhCLv1sJ ojzT1JAANQCC/FQjOV7jo4uuvqb3aPbFi7n4Jgk1YTD1TIhRuhx5on9VDkkRW4vI /CmEgZc8BKNWFG7VTC5zbrddeqxLDVj8jPkRqxMmqcl6v9aQRmhkZeK2HEjTcF5W EKPS4BgOHM6YNDEoBZ2Ix6jmJn96fWKPrZJxj8K7jWzXhvMmh75RZ8Wk1MZAmzs7 CSjNJInmnTEJrVjjCoMp7VlXoTakbIwtsarA+hDzqorhnYK+0bpPT69oHGXgQaA6 KJk5aY/o8Xnzez93xC61TN1aCBXg7BLsUtygsQpsd1nJfwoepYswGgKgeT7Ai/8= =K579 -----END PGP SIGNATURE----- Merge tag 'platform-drivers-x86-v4.4-2' of git://git.infradead.org/users/dvhart/linux-platform-drivers-x86 Pull another x86 platform driver update from Darren Hart: "Support for the unfortunately rather unique ESC key on the Ideapad Yoga 3 and two DMI matches for rfkill support. Solitary fix for potential missed errors for asus-wmi. Downgrade a thinkpad_acpi message to info. asus-wmi: - fix error handling in store_sys_wmi() ideapad-laptop: - Add Lenovo Yoga 900 to no_hw_rfkill dmi list - include Yoga 3 1170 in add rfkill whitelist - add support for Yoga 3 ESC key thinkpad_acpi: - Don't yell on unsupported brightness interfaces" * tag 'platform-drivers-x86-v4.4-2' of git://git.infradead.org/users/dvhart/linux-platform-drivers-x86: asus-wmi: fix error handling in store_sys_wmi() ideapad-laptop: Add Lenovo Yoga 900 to no_hw_rfkill dmi list ideapad-laptop: include Yoga 3 1170 in add rfkill whitelist ideapad-laptop: add support for Yoga 3 ESC key thinkpad_acpi: Don't yell on unsupported brightness interfaces
This commit is contained in:
commit
4bfc89d26a
|
@ -345,6 +345,7 @@ config IDEAPAD_LAPTOP
|
||||||
depends on SERIO_I8042
|
depends on SERIO_I8042
|
||||||
depends on BACKLIGHT_CLASS_DEVICE
|
depends on BACKLIGHT_CLASS_DEVICE
|
||||||
depends on ACPI_VIDEO || ACPI_VIDEO = n
|
depends on ACPI_VIDEO || ACPI_VIDEO = n
|
||||||
|
depends on ACPI_WMI || ACPI_WMI = n
|
||||||
select INPUT_SPARSEKMAP
|
select INPUT_SPARSEKMAP
|
||||||
help
|
help
|
||||||
This is a driver for Lenovo IdeaPad netbooks contains drivers for
|
This is a driver for Lenovo IdeaPad netbooks contains drivers for
|
||||||
|
|
|
@ -1682,7 +1682,7 @@ static ssize_t store_sys_wmi(struct asus_wmi *asus, int devid,
|
||||||
int rv, err, value;
|
int rv, err, value;
|
||||||
|
|
||||||
value = asus_wmi_get_devstate_simple(asus, devid);
|
value = asus_wmi_get_devstate_simple(asus, devid);
|
||||||
if (value == -ENODEV) /* Check device presence */
|
if (value < 0)
|
||||||
return value;
|
return value;
|
||||||
|
|
||||||
rv = parse_arg(buf, count, &value);
|
rv = parse_arg(buf, count, &value);
|
||||||
|
|
|
@ -47,6 +47,10 @@
|
||||||
#define CFG_WIFI_BIT (18)
|
#define CFG_WIFI_BIT (18)
|
||||||
#define CFG_CAMERA_BIT (19)
|
#define CFG_CAMERA_BIT (19)
|
||||||
|
|
||||||
|
#if IS_ENABLED(CONFIG_ACPI_WMI)
|
||||||
|
static const char ideapad_wmi_fnesc_event[] = "26CAB2E5-5CF1-46AE-AAC3-4A12B6BA50E6";
|
||||||
|
#endif
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
VPCCMD_R_VPC1 = 0x10,
|
VPCCMD_R_VPC1 = 0x10,
|
||||||
VPCCMD_R_BL_MAX,
|
VPCCMD_R_BL_MAX,
|
||||||
|
@ -567,6 +571,8 @@ static const struct key_entry ideapad_keymap[] = {
|
||||||
{ KE_KEY, 65, { KEY_PROG4 } },
|
{ KE_KEY, 65, { KEY_PROG4 } },
|
||||||
{ KE_KEY, 66, { KEY_TOUCHPAD_OFF } },
|
{ KE_KEY, 66, { KEY_TOUCHPAD_OFF } },
|
||||||
{ KE_KEY, 67, { KEY_TOUCHPAD_ON } },
|
{ KE_KEY, 67, { KEY_TOUCHPAD_ON } },
|
||||||
|
{ KE_KEY, 128, { KEY_ESC } },
|
||||||
|
|
||||||
{ KE_END, 0 },
|
{ KE_END, 0 },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -825,6 +831,19 @@ static void ideapad_acpi_notify(acpi_handle handle, u32 event, void *data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if IS_ENABLED(CONFIG_ACPI_WMI)
|
||||||
|
static void ideapad_wmi_notify(u32 value, void *context)
|
||||||
|
{
|
||||||
|
switch (value) {
|
||||||
|
case 128:
|
||||||
|
ideapad_input_report(context, value);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
pr_info("Unknown WMI event %u\n", value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Some ideapads don't have a hardware rfkill switch, reading VPCCMD_R_RF
|
* Some ideapads don't have a hardware rfkill switch, reading VPCCMD_R_RF
|
||||||
* always results in 0 on these models, causing ideapad_laptop to wrongly
|
* always results in 0 on these models, causing ideapad_laptop to wrongly
|
||||||
|
@ -852,13 +871,6 @@ static const struct dmi_system_id no_hw_rfkill_list[] = {
|
||||||
DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo Yoga 2"),
|
DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo Yoga 2"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
|
||||||
.ident = "Lenovo Yoga 3 14",
|
|
||||||
.matches = {
|
|
||||||
DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
|
|
||||||
DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo Yoga 3 14"),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
.ident = "Lenovo Yoga 2 11 / 13 / Pro",
|
.ident = "Lenovo Yoga 2 11 / 13 / Pro",
|
||||||
.matches = {
|
.matches = {
|
||||||
|
@ -866,11 +878,25 @@ static const struct dmi_system_id no_hw_rfkill_list[] = {
|
||||||
DMI_MATCH(DMI_BOARD_NAME, "Yoga2"),
|
DMI_MATCH(DMI_BOARD_NAME, "Yoga2"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.ident = "Lenovo Yoga 3 1170 / 1470",
|
||||||
|
.matches = {
|
||||||
|
DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
|
||||||
|
DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo Yoga 3"),
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
.ident = "Lenovo Yoga 3 Pro 1370",
|
.ident = "Lenovo Yoga 3 Pro 1370",
|
||||||
.matches = {
|
.matches = {
|
||||||
DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
|
DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
|
||||||
DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo YOGA 3 Pro-1370"),
|
DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo YOGA 3"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.ident = "Lenovo Yoga 900",
|
||||||
|
.matches = {
|
||||||
|
DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
|
||||||
|
DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo YOGA 900"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{}
|
{}
|
||||||
|
@ -935,8 +961,18 @@ static int ideapad_acpi_add(struct platform_device *pdev)
|
||||||
ACPI_DEVICE_NOTIFY, ideapad_acpi_notify, priv);
|
ACPI_DEVICE_NOTIFY, ideapad_acpi_notify, priv);
|
||||||
if (ret)
|
if (ret)
|
||||||
goto notification_failed;
|
goto notification_failed;
|
||||||
|
#if IS_ENABLED(CONFIG_ACPI_WMI)
|
||||||
|
ret = wmi_install_notify_handler(ideapad_wmi_fnesc_event, ideapad_wmi_notify, priv);
|
||||||
|
if (ret != AE_OK && ret != AE_NOT_EXIST)
|
||||||
|
goto notification_failed_wmi;
|
||||||
|
#endif
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
#if IS_ENABLED(CONFIG_ACPI_WMI)
|
||||||
|
notification_failed_wmi:
|
||||||
|
acpi_remove_notify_handler(priv->adev->handle,
|
||||||
|
ACPI_DEVICE_NOTIFY, ideapad_acpi_notify);
|
||||||
|
#endif
|
||||||
notification_failed:
|
notification_failed:
|
||||||
ideapad_backlight_exit(priv);
|
ideapad_backlight_exit(priv);
|
||||||
backlight_failed:
|
backlight_failed:
|
||||||
|
@ -955,6 +991,9 @@ static int ideapad_acpi_remove(struct platform_device *pdev)
|
||||||
struct ideapad_private *priv = dev_get_drvdata(&pdev->dev);
|
struct ideapad_private *priv = dev_get_drvdata(&pdev->dev);
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
#if IS_ENABLED(CONFIG_ACPI_WMI)
|
||||||
|
wmi_remove_notify_handler(ideapad_wmi_fnesc_event);
|
||||||
|
#endif
|
||||||
acpi_remove_notify_handler(priv->adev->handle,
|
acpi_remove_notify_handler(priv->adev->handle,
|
||||||
ACPI_DEVICE_NOTIFY, ideapad_acpi_notify);
|
ACPI_DEVICE_NOTIFY, ideapad_acpi_notify);
|
||||||
ideapad_backlight_exit(priv);
|
ideapad_backlight_exit(priv);
|
||||||
|
|
|
@ -6459,8 +6459,7 @@ static void __init tpacpi_detect_brightness_capabilities(void)
|
||||||
pr_info("detected a 8-level brightness capable ThinkPad\n");
|
pr_info("detected a 8-level brightness capable ThinkPad\n");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
pr_err("Unsupported brightness interface, "
|
pr_info("Unsupported brightness interface\n");
|
||||||
"please contact %s\n", TPACPI_MAIL);
|
|
||||||
tp_features.bright_unkfw = 1;
|
tp_features.bright_unkfw = 1;
|
||||||
bright_maxlvl = b - 1;
|
bright_maxlvl = b - 1;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue