mirror of
https://github.com/hardkernel/linux.git
synced 2026-03-24 19:40:21 +09:00
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: 26173179fa ("platform/x86: intel-vbtn: Eval VBDL after registering our notifier")
Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
Reviewed-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Link: https://lore.kernel.org/r/20240329143206.2977734-3-gwendal@chromium.org
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
e80b4980af
commit
00e34ff1ce
@@ -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);
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user