Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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

+50 -11
+1
drivers/platform/x86/Kconfig
··· 345 345 depends on SERIO_I8042 346 346 depends on BACKLIGHT_CLASS_DEVICE 347 347 depends on ACPI_VIDEO || ACPI_VIDEO = n 348 + depends on ACPI_WMI || ACPI_WMI = n 348 349 select INPUT_SPARSEKMAP 349 350 help 350 351 This is a driver for Lenovo IdeaPad netbooks contains drivers for
+1 -1
drivers/platform/x86/asus-wmi.c
··· 1682 1682 int rv, err, value; 1683 1683 1684 1684 value = asus_wmi_get_devstate_simple(asus, devid); 1685 - if (value == -ENODEV) /* Check device presence */ 1685 + if (value < 0) 1686 1686 return value; 1687 1687 1688 1688 rv = parse_arg(buf, count, &value);
+47 -8
drivers/platform/x86/ideapad-laptop.c
··· 47 47 #define CFG_WIFI_BIT (18) 48 48 #define CFG_CAMERA_BIT (19) 49 49 50 + #if IS_ENABLED(CONFIG_ACPI_WMI) 51 + static const char ideapad_wmi_fnesc_event[] = "26CAB2E5-5CF1-46AE-AAC3-4A12B6BA50E6"; 52 + #endif 53 + 50 54 enum { 51 55 VPCCMD_R_VPC1 = 0x10, 52 56 VPCCMD_R_BL_MAX, ··· 571 567 { KE_KEY, 65, { KEY_PROG4 } }, 572 568 { KE_KEY, 66, { KEY_TOUCHPAD_OFF } }, 573 569 { KE_KEY, 67, { KEY_TOUCHPAD_ON } }, 570 + { KE_KEY, 128, { KEY_ESC } }, 571 + 574 572 { KE_END, 0 }, 575 573 }; 576 574 ··· 831 825 } 832 826 } 833 827 828 + #if IS_ENABLED(CONFIG_ACPI_WMI) 829 + static void ideapad_wmi_notify(u32 value, void *context) 830 + { 831 + switch (value) { 832 + case 128: 833 + ideapad_input_report(context, value); 834 + break; 835 + default: 836 + pr_info("Unknown WMI event %u\n", value); 837 + } 838 + } 839 + #endif 840 + 834 841 /* 835 842 * Some ideapads don't have a hardware rfkill switch, reading VPCCMD_R_RF 836 843 * always results in 0 on these models, causing ideapad_laptop to wrongly ··· 872 853 }, 873 854 }, 874 855 { 875 - .ident = "Lenovo Yoga 3 14", 876 - .matches = { 877 - DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), 878 - DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo Yoga 3 14"), 879 - }, 880 - }, 881 - { 882 856 .ident = "Lenovo Yoga 2 11 / 13 / Pro", 883 857 .matches = { 884 858 DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), ··· 879 867 }, 880 868 }, 881 869 { 870 + .ident = "Lenovo Yoga 3 1170 / 1470", 871 + .matches = { 872 + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), 873 + DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo Yoga 3"), 874 + }, 875 + }, 876 + { 882 877 .ident = "Lenovo Yoga 3 Pro 1370", 883 878 .matches = { 884 879 DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), 885 - DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo YOGA 3 Pro-1370"), 880 + DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo YOGA 3"), 881 + }, 882 + }, 883 + { 884 + .ident = "Lenovo Yoga 900", 885 + .matches = { 886 + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), 887 + DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo YOGA 900"), 886 888 }, 887 889 }, 888 890 {} ··· 961 935 ACPI_DEVICE_NOTIFY, ideapad_acpi_notify, priv); 962 936 if (ret) 963 937 goto notification_failed; 938 + #if IS_ENABLED(CONFIG_ACPI_WMI) 939 + ret = wmi_install_notify_handler(ideapad_wmi_fnesc_event, ideapad_wmi_notify, priv); 940 + if (ret != AE_OK && ret != AE_NOT_EXIST) 941 + goto notification_failed_wmi; 942 + #endif 964 943 965 944 return 0; 945 + #if IS_ENABLED(CONFIG_ACPI_WMI) 946 + notification_failed_wmi: 947 + acpi_remove_notify_handler(priv->adev->handle, 948 + ACPI_DEVICE_NOTIFY, ideapad_acpi_notify); 949 + #endif 966 950 notification_failed: 967 951 ideapad_backlight_exit(priv); 968 952 backlight_failed: ··· 991 955 struct ideapad_private *priv = dev_get_drvdata(&pdev->dev); 992 956 int i; 993 957 958 + #if IS_ENABLED(CONFIG_ACPI_WMI) 959 + wmi_remove_notify_handler(ideapad_wmi_fnesc_event); 960 + #endif 994 961 acpi_remove_notify_handler(priv->adev->handle, 995 962 ACPI_DEVICE_NOTIFY, ideapad_acpi_notify); 996 963 ideapad_backlight_exit(priv);
+1 -2
drivers/platform/x86/thinkpad_acpi.c
··· 6459 6459 pr_info("detected a 8-level brightness capable ThinkPad\n"); 6460 6460 break; 6461 6461 default: 6462 - pr_err("Unsupported brightness interface, " 6463 - "please contact %s\n", TPACPI_MAIL); 6462 + pr_info("Unsupported brightness interface\n"); 6464 6463 tp_features.bright_unkfw = 1; 6465 6464 bright_maxlvl = b - 1; 6466 6465 }