Patch "platform/x86: intel-vbtn: Update tablet mode switch at end of probe" has been added to the 6.8-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    platform/x86: intel-vbtn: Update tablet mode switch at end of probe

to the 6.8-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     platform-x86-intel-vbtn-update-tablet-mode-switch-at.patch
and it can be found in the queue-6.8 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 186a8f34fbbb4e32eeb02627cce5078f9703467a
Author: Gwendal Grignou <gwendal@xxxxxxxxxxxx>
Date:   Fri Mar 29 07:32:06 2024 -0700

    platform/x86: intel-vbtn: Update tablet mode switch at end of probe
    
    [ Upstream commit 434e5781d8cd2d0ed512d920c6cdeba4b33a2e81 ]
    
    ACER Vivobook Flip (TP401NAS) virtual intel switch is implemented as
    follow:
    
       Device (VGBI)
       {
           Name (_HID, EisaId ("INT33D6") ...
           Name (VBDS, Zero)
           Method (_STA, 0, Serialized)  // _STA: Status ...
           Method (VBDL, 0, Serialized)
           {
               PB1E |= 0x20
               VBDS |= 0x40
           }
           Method (VGBS, 0, Serialized)
           {
               Return (VBDS) /* \_SB_.PCI0.SBRG.EC0_.VGBI.VBDS */
           }
           ...
        }
    
    By default VBDS is set to 0. At boot it is set to clamshell (bit 6 set)
    only after method VBDL is executed.
    
    Since VBDL is now evaluated in the probe routine later, after the device
    is registered, the retrieved value of VBDS was still 0 ("tablet mode")
    when setting up the virtual switch.
    
    Make sure to evaluate VGBS after VBDL, to ensure the
    convertible boots in clamshell mode, the expected default.
    
    Fixes: 26173179fae1 ("platform/x86: intel-vbtn: Eval VBDL after registering our notifier")
    Signed-off-by: Gwendal Grignou <gwendal@xxxxxxxxxxxx>
    Reviewed-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@xxxxxxxxxxxxxxx>
    Reviewed-by: Hans de Goede <hdegoede@xxxxxxxxxx>
    Link: https://lore.kernel.org/r/20240329143206.2977734-3-gwendal@xxxxxxxxxxxx
    Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@xxxxxxxxxxxxxxx>
    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@xxxxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/platform/x86/intel/vbtn.c b/drivers/platform/x86/intel/vbtn.c
index 084c355c86f5f..5d13452bb947a 100644
--- a/drivers/platform/x86/intel/vbtn.c
+++ b/drivers/platform/x86/intel/vbtn.c
@@ -136,8 +136,6 @@ static int intel_vbtn_input_setup(struct platform_device *device)
 	priv->switches_dev->id.bustype = BUS_HOST;
 
 	if (priv->has_switches) {
-		detect_tablet_mode(&device->dev);
-
 		ret = input_register_device(priv->switches_dev);
 		if (ret)
 			return ret;
@@ -316,6 +314,9 @@ static int intel_vbtn_probe(struct platform_device *device)
 		if (ACPI_FAILURE(status))
 			dev_err(&device->dev, "Error VBDL failed with ACPI status %d\n", status);
 	}
+	// Check switches after buttons since VBDL may have side effects.
+	if (has_switches)
+		detect_tablet_mode(&device->dev);
 
 	device_init_wakeup(&device->dev, true);
 	/*




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux