Merge tag 'platform-drivers-x86-v4.2-1' of git://git.infradead.org/users/dvhart/linux...
[firefly-linux-kernel-4.4.55.git] / drivers / platform / x86 / ideapad-laptop.c
index b496db87bc0505368fe4501b6199f653f7a257e0..76b57388d01b5b73838bd3ab73741b5c096148d7 100644 (file)
@@ -38,6 +38,7 @@
 #include <linux/i8042.h>
 #include <linux/dmi.h>
 #include <linux/device.h>
+#include <acpi/video.h>
 
 #define IDEAPAD_RFKILL_DEV_NUM (3)
 
@@ -464,8 +465,9 @@ static const struct ideapad_rfk_data ideapad_rfk_data[] = {
 static int ideapad_rfk_set(void *data, bool blocked)
 {
        struct ideapad_rfk_priv *priv = data;
+       int opcode = ideapad_rfk_data[priv->dev].opcode;
 
-       return write_ec_cmd(priv->priv->adev->handle, priv->dev, !blocked);
+       return write_ec_cmd(priv->priv->adev->handle, opcode, !blocked);
 }
 
 static struct rfkill_ops ideapad_rfk_ops = {
@@ -836,6 +838,13 @@ static const struct dmi_system_id no_hw_rfkill_list[] = {
                        DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo G40-30"),
                },
        },
+       {
+               .ident = "Lenovo G50-30",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
+                       DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo G50-30"),
+               },
+       },
        {
                .ident = "Lenovo Yoga 2 11 / 13 / Pro",
                .matches = {
@@ -903,7 +912,7 @@ static int ideapad_acpi_add(struct platform_device *pdev)
        ideapad_sync_rfk_state(priv);
        ideapad_sync_touchpad_state(priv);
 
-       if (!acpi_video_backlight_support()) {
+       if (acpi_video_get_backlight_type() == acpi_backlight_vendor) {
                ret = ideapad_backlight_init(priv);
                if (ret && ret != -ENODEV)
                        goto backlight_failed;