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-v5.2-3' of git://git.infradead.org/linux-platform-drivers-x86

Pull x86 platform driver fixes from Andy Shevchenko:

- fix a couple of Mellanox driver enumeration issues

- fix ASUS laptop regression with backlight

- fix Dell computers that got a wrong mode (tablet versus laptop) after
resume

* tag 'platform-drivers-x86-v5.2-3' of git://git.infradead.org/linux-platform-drivers-x86:
platform/mellanox: mlxreg-hotplug: Add devm_free_irq call to remove flow
platform/x86: mlx-platform: Fix parent device in i2c-mux-reg device registration
platform/x86: intel-vbtn: Report switch events when event wakes device
platform/x86: asus-wmi: Only Tell EC the OS will handle display hotkeys from asus_nb_wmi

+26 -4
+1
drivers/platform/mellanox/mlxreg-hotplug.c
··· 694 694 695 695 /* Clean interrupts setup. */ 696 696 mlxreg_hotplug_unset_irq(priv); 697 + devm_free_irq(&pdev->dev, priv->irq, priv); 697 698 698 699 return 0; 699 700 }
+8
drivers/platform/x86/asus-nb-wmi.c
··· 65 65 66 66 static struct quirk_entry quirk_asus_unknown = { 67 67 .wapf = 0, 68 + .wmi_backlight_set_devstate = true, 68 69 }; 69 70 70 71 static struct quirk_entry quirk_asus_q500a = { 71 72 .i8042_filter = asus_q500a_i8042_filter, 73 + .wmi_backlight_set_devstate = true, 72 74 }; 73 75 74 76 /* ··· 81 79 static struct quirk_entry quirk_asus_x55u = { 82 80 .wapf = 4, 83 81 .wmi_backlight_power = true, 82 + .wmi_backlight_set_devstate = true, 84 83 .no_display_toggle = true, 85 84 }; 86 85 87 86 static struct quirk_entry quirk_asus_wapf4 = { 88 87 .wapf = 4, 88 + .wmi_backlight_set_devstate = true, 89 89 }; 90 90 91 91 static struct quirk_entry quirk_asus_x200ca = { 92 92 .wapf = 2, 93 + .wmi_backlight_set_devstate = true, 93 94 }; 94 95 95 96 static struct quirk_entry quirk_asus_ux303ub = { 96 97 .wmi_backlight_native = true, 98 + .wmi_backlight_set_devstate = true, 97 99 }; 98 100 99 101 static struct quirk_entry quirk_asus_x550lb = { 102 + .wmi_backlight_set_devstate = true, 100 103 .xusb2pr = 0x01D9, 101 104 }; 102 105 103 106 static struct quirk_entry quirk_asus_forceals = { 107 + .wmi_backlight_set_devstate = true, 104 108 .wmi_force_als_set = true, 105 109 }; 106 110
+1 -1
drivers/platform/x86/asus-wmi.c
··· 2146 2146 err = asus_wmi_backlight_init(asus); 2147 2147 if (err && err != -ENODEV) 2148 2148 goto fail_backlight; 2149 - } else 2149 + } else if (asus->driver->quirks->wmi_backlight_set_devstate) 2150 2150 err = asus_wmi_set_devstate(ASUS_WMI_DEVID_BACKLIGHT, 2, NULL); 2151 2151 2152 2152 if (asus_wmi_has_fnlock_key(asus)) {
+1
drivers/platform/x86/asus-wmi.h
··· 31 31 bool store_backlight_power; 32 32 bool wmi_backlight_power; 33 33 bool wmi_backlight_native; 34 + bool wmi_backlight_set_devstate; 34 35 bool wmi_force_als_set; 35 36 int wapf; 36 37 /*
+14 -2
drivers/platform/x86/intel-vbtn.c
··· 76 76 struct platform_device *device = context; 77 77 struct intel_vbtn_priv *priv = dev_get_drvdata(&device->dev); 78 78 unsigned int val = !(event & 1); /* Even=press, Odd=release */ 79 - const struct key_entry *ke_rel; 79 + const struct key_entry *ke, *ke_rel; 80 80 bool autorelease; 81 81 82 82 if (priv->wakeup_mode) { 83 - if (sparse_keymap_entry_from_scancode(priv->input_dev, event)) { 83 + ke = sparse_keymap_entry_from_scancode(priv->input_dev, event); 84 + if (ke) { 84 85 pm_wakeup_hard_event(&device->dev); 86 + 87 + /* 88 + * Switch events like tablet mode will wake the device 89 + * and report the new switch position to the input 90 + * subsystem. 91 + */ 92 + if (ke->type == KE_SW) 93 + sparse_keymap_report_event(priv->input_dev, 94 + event, 95 + val, 96 + 0); 85 97 return; 86 98 } 87 99 goto out_unknown;
+1 -1
drivers/platform/x86/mlx-platform.c
··· 2032 2032 2033 2033 for (i = 0; i < ARRAY_SIZE(mlxplat_mux_data); i++) { 2034 2034 priv->pdev_mux[i] = platform_device_register_resndata( 2035 - &mlxplat_dev->dev, 2035 + &priv->pdev_i2c->dev, 2036 2036 "i2c-mux-reg", i, NULL, 2037 2037 0, &mlxplat_mux_data[i], 2038 2038 sizeof(mlxplat_mux_data[i]));