* [PATCH AUTOSEL 4.19 2/7] Input: atkbd - skip ATKBD_CMD_GETID in translated mode
[not found] <20231226002649.7290-1-sashal@kernel.org>
@ 2023-12-26 0:26 ` Sasha Levin
2023-12-26 0:26 ` [PATCH AUTOSEL 4.19 3/7] Input: i8042 - add nomux quirk for Acer P459-G2-M Sasha Levin
` (2 subsequent siblings)
3 siblings, 0 replies; 7+ messages in thread
From: Sasha Levin @ 2023-12-26 0:26 UTC (permalink / raw)
To: linux-kernel, stable
Cc: Hans de Goede, Shang Ye, gurevitch, Egor Ignatov, Anton Zhilyaev,
Dmitry Torokhov, Sasha Levin, rrangel, linux-input
From: Hans de Goede <hdegoede@redhat.com>
[ Upstream commit 936e4d49ecbc8c404790504386e1422b599dec39 ]
There have been multiple reports of keyboard issues on recent laptop models
which can be worked around by setting i8042.dumbkbd, with the downside
being this breaks the capslock LED.
It seems that these issues are caused by recent laptops getting confused by
ATKBD_CMD_GETID. Rather then adding and endless growing list of quirks for
this, just skip ATKBD_CMD_GETID alltogether on laptops in translated mode.
The main goal of sending ATKBD_CMD_GETID is to skip binding to ps/2
mice/touchpads and those are never used in translated mode.
Examples of laptop models which benefit from skipping ATKBD_CMD_GETID:
* "HP Laptop 15s-fq2xxx", "HP laptop 15s-fq4xxx" and "HP Laptop 15-dy2xxx"
models the kbd stops working for the first 2 - 5 minutes after boot
(waiting for EC watchdog reset?)
* On "HP Spectre x360 13-aw2xxx" atkbd fails to probe the keyboard
* At least 9 different Lenovo models have issues with ATKBD_CMD_GETID, see:
https://github.com/yescallop/atkbd-nogetid
This has been tested on:
1. A MSI B550M PRO-VDH WIFI desktop, where the i8042 controller is not
in translated mode when no keyboard is plugged in and with a ps/2 kbd
a "AT Translated Set 2 keyboard" /dev/input/event# node shows up
2. A Lenovo ThinkPad X1 Yoga gen 8 (always has a translated set 2 keyboard)
Reported-by: Shang Ye <yesh25@mail2.sysu.edu.cn>
Closes: https://lore.kernel.org/linux-input/886D6167733841AE+20231017135318.11142-1-yesh25@mail2.sysu.edu.cn/
Closes: https://github.com/yescallop/atkbd-nogetid
Reported-by: gurevitch <mail@gurevit.ch>
Closes: https://lore.kernel.org/linux-input/2iAJTwqZV6lQs26cTb38RNYqxvsink6SRmrZ5h0cBUSuf9NT0tZTsf9fEAbbto2maavHJEOP8GA1evlKa6xjKOsaskDhtJWxjcnrgPigzVo=@gurevit.ch/
Reported-by: Egor Ignatov <egori@altlinux.org>
Closes: https://lore.kernel.org/all/20210609073333.8425-1-egori@altlinux.org/
Reported-by: Anton Zhilyaev <anton@cpp.in>
Closes: https://lore.kernel.org/linux-input/20210201160336.16008-1-anton@cpp.in/
Closes: https://bugzilla.redhat.com/show_bug.cgi?id=2086156
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Link: https://lore.kernel.org/r/20231115174625.7462-1-hdegoede@redhat.com
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/input/keyboard/atkbd.c | 46 +++++++++++++++++++++++++++++++---
1 file changed, 42 insertions(+), 4 deletions(-)
diff --git a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c
index 7e75835e220f2..e6d3a56366c54 100644
--- a/drivers/input/keyboard/atkbd.c
+++ b/drivers/input/keyboard/atkbd.c
@@ -717,6 +717,44 @@ static void atkbd_deactivate(struct atkbd *atkbd)
ps2dev->serio->phys);
}
+#ifdef CONFIG_X86
+static bool atkbd_is_portable_device(void)
+{
+ static const char * const chassis_types[] = {
+ "8", /* Portable */
+ "9", /* Laptop */
+ "10", /* Notebook */
+ "14", /* Sub-Notebook */
+ "31", /* Convertible */
+ "32", /* Detachable */
+ };
+ int i;
+
+ for (i = 0; i < ARRAY_SIZE(chassis_types); i++)
+ if (dmi_match(DMI_CHASSIS_TYPE, chassis_types[i]))
+ return true;
+
+ return false;
+}
+
+/*
+ * On many modern laptops ATKBD_CMD_GETID may cause problems, on these laptops
+ * the controller is always in translated mode. In this mode mice/touchpads will
+ * not work. So in this case simply assume a keyboard is connected to avoid
+ * confusing some laptop keyboards.
+ *
+ * Skipping ATKBD_CMD_GETID ends up using a fake keyboard id. Using a fake id is
+ * ok in translated mode, only atkbd_select_set() checks atkbd->id and in
+ * translated mode that is a no-op.
+ */
+static bool atkbd_skip_getid(struct atkbd *atkbd)
+{
+ return atkbd->translated && atkbd_is_portable_device();
+}
+#else
+static inline bool atkbd_skip_getid(struct atkbd *atkbd) { return false; }
+#endif
+
/*
* atkbd_probe() probes for an AT keyboard on a serio port.
*/
@@ -746,12 +784,12 @@ static int atkbd_probe(struct atkbd *atkbd)
*/
param[0] = param[1] = 0xa5; /* initialize with invalid values */
- if (ps2_command(ps2dev, param, ATKBD_CMD_GETID)) {
+ if (atkbd_skip_getid(atkbd) || ps2_command(ps2dev, param, ATKBD_CMD_GETID)) {
/*
- * If the get ID command failed, we check if we can at least set the LEDs on
- * the keyboard. This should work on every keyboard out there. It also turns
- * the LEDs off, which we want anyway.
+ * If the get ID command was skipped or failed, we check if we can at least set
+ * the LEDs on the keyboard. This should work on every keyboard out there.
+ * It also turns the LEDs off, which we want anyway.
*/
param[0] = 0;
if (ps2_command(ps2dev, param, ATKBD_CMD_SETLEDS))
--
2.43.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH AUTOSEL 4.19 3/7] Input: i8042 - add nomux quirk for Acer P459-G2-M
[not found] <20231226002649.7290-1-sashal@kernel.org>
2023-12-26 0:26 ` [PATCH AUTOSEL 4.19 2/7] Input: atkbd - skip ATKBD_CMD_GETID in translated mode Sasha Levin
@ 2023-12-26 0:26 ` Sasha Levin
2023-12-26 0:26 ` [PATCH AUTOSEL 4.19 4/7] Input: amimouse - convert to platform remove callback returning void Sasha Levin
2023-12-26 0:26 ` [PATCH AUTOSEL 4.19 7/7] Input: xpad - add Razer Wolverine V2 support Sasha Levin
3 siblings, 0 replies; 7+ messages in thread
From: Sasha Levin @ 2023-12-26 0:26 UTC (permalink / raw)
To: linux-kernel, stable
Cc: Esther Shimanovich, Dmitry Torokhov, Sasha Levin, linux-input
From: Esther Shimanovich <eshimanovich@chromium.org>
[ Upstream commit 335fe00319e030d481a54d5e0e68d50c5e672c0e ]
After the laptop lid is opened, and the device resumes from S3 deep
sleep, if the user presses a keyboard key while the screen is still black,
the mouse and keyboard become unusable.
Enabling this quirk prevents this behavior from occurring.
Signed-off-by: Esther Shimanovich <eshimanovich@chromium.org>
Link: https://lore.kernel.org/r/20231130195615.v2.1.Ibe78a9df97ecd18dc227a5cff67d3029631d9c11@changeid
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/input/serio/i8042-x86ia64io.h | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/drivers/input/serio/i8042-x86ia64io.h b/drivers/input/serio/i8042-x86ia64io.h
index 2d4df82d65afe..06d99931519bd 100644
--- a/drivers/input/serio/i8042-x86ia64io.h
+++ b/drivers/input/serio/i8042-x86ia64io.h
@@ -355,6 +355,14 @@ static const struct dmi_system_id i8042_dmi_quirk_table[] __initconst = {
},
.driver_data = (void *)(SERIO_QUIRK_DRITEK)
},
+ {
+ /* Acer TravelMate P459-G2-M */
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate P459-G2-M"),
+ },
+ .driver_data = (void *)(SERIO_QUIRK_NOMUX)
+ },
{
/* Amoi M636/A737 */
.matches = {
--
2.43.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH AUTOSEL 4.19 4/7] Input: amimouse - convert to platform remove callback returning void
[not found] <20231226002649.7290-1-sashal@kernel.org>
2023-12-26 0:26 ` [PATCH AUTOSEL 4.19 2/7] Input: atkbd - skip ATKBD_CMD_GETID in translated mode Sasha Levin
2023-12-26 0:26 ` [PATCH AUTOSEL 4.19 3/7] Input: i8042 - add nomux quirk for Acer P459-G2-M Sasha Levin
@ 2023-12-26 0:26 ` Sasha Levin
2024-01-09 11:44 ` Pavel Machek
2023-12-26 0:26 ` [PATCH AUTOSEL 4.19 7/7] Input: xpad - add Razer Wolverine V2 support Sasha Levin
3 siblings, 1 reply; 7+ messages in thread
From: Sasha Levin @ 2023-12-26 0:26 UTC (permalink / raw)
To: linux-kernel, stable
Cc: Uwe Kleine-König, Dmitry Torokhov, Sasha Levin, linux-input
From: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
[ Upstream commit 42b8ff47720258d1f6a4412e780a480c139773a0 ]
The .remove() callback for a platform driver returns an int which makes
many driver authors wrongly assume it's possible to do error handling by
returning an error code. However the value returned is ignored (apart
from emitting a warning) and this typically results in resource leaks.
To improve here there is a quest to make the remove callback return
void. In the first step of this quest all drivers are converted to
.remove_new(), which already returns void. Eventually after all drivers
are converted, .remove_new() will be renamed to .remove().
Trivially convert this driver from always returning zero in the remove
callback to the void returning variant.
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Link: https://lore.kernel.org/r/20231201133747.1099286-2-u.kleine-koenig@pengutronix.de
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/input/mouse/amimouse.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/input/mouse/amimouse.c b/drivers/input/mouse/amimouse.c
index a33437c480e36..c93f9c03f7d73 100644
--- a/drivers/input/mouse/amimouse.c
+++ b/drivers/input/mouse/amimouse.c
@@ -129,16 +129,15 @@ static int __init amimouse_probe(struct platform_device *pdev)
return 0;
}
-static int __exit amimouse_remove(struct platform_device *pdev)
+static void __exit amimouse_remove(struct platform_device *pdev)
{
struct input_dev *dev = platform_get_drvdata(pdev);
input_unregister_device(dev);
- return 0;
}
static struct platform_driver amimouse_driver = {
- .remove = __exit_p(amimouse_remove),
+ .remove_new = __exit_p(amimouse_remove),
.driver = {
.name = "amiga-mouse",
},
--
2.43.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH AUTOSEL 4.19 7/7] Input: xpad - add Razer Wolverine V2 support
[not found] <20231226002649.7290-1-sashal@kernel.org>
` (2 preceding siblings ...)
2023-12-26 0:26 ` [PATCH AUTOSEL 4.19 4/7] Input: amimouse - convert to platform remove callback returning void Sasha Levin
@ 2023-12-26 0:26 ` Sasha Levin
3 siblings, 0 replies; 7+ messages in thread
From: Sasha Levin @ 2023-12-26 0:26 UTC (permalink / raw)
To: linux-kernel, stable
Cc: Luca Weiss, Dmitry Torokhov, Sasha Levin, vi, swyterzone,
maxwell.nguyen, lyude, matthias.benkmann, linux-input
From: Luca Weiss <luca@z3ntu.xyz>
[ Upstream commit c3d1610345b79cbe29ef6ca04a4780eff0d360c7 ]
Add the VID and PID of Razer Wolverine V2 to xpad_device.
Signed-off-by: Luca Weiss <luca@z3ntu.xyz>
Link: https://lore.kernel.org/r/20231125-razer-wolverine-v2-v1-1-979fe9f9288e@z3ntu.xyz
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/input/joystick/xpad.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c
index e330d28b59ec4..dffdd25b6fc94 100644
--- a/drivers/input/joystick/xpad.c
+++ b/drivers/input/joystick/xpad.c
@@ -280,6 +280,7 @@ static const struct xpad_device {
{ 0x146b, 0x0604, "Bigben Interactive DAIJA Arcade Stick", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOX360 },
{ 0x1532, 0x0a00, "Razer Atrox Arcade Stick", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOXONE },
{ 0x1532, 0x0a03, "Razer Wildcat", 0, XTYPE_XBOXONE },
+ { 0x1532, 0x0a29, "Razer Wolverine V2", 0, XTYPE_XBOXONE },
{ 0x15e4, 0x3f00, "Power A Mini Pro Elite", 0, XTYPE_XBOX360 },
{ 0x15e4, 0x3f0a, "Xbox Airflo wired controller", 0, XTYPE_XBOX360 },
{ 0x15e4, 0x3f10, "Batarang Xbox 360 controller", 0, XTYPE_XBOX360 },
--
2.43.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH AUTOSEL 4.19 4/7] Input: amimouse - convert to platform remove callback returning void
2023-12-26 0:26 ` [PATCH AUTOSEL 4.19 4/7] Input: amimouse - convert to platform remove callback returning void Sasha Levin
@ 2024-01-09 11:44 ` Pavel Machek
2024-01-09 21:50 ` Uwe Kleine-König
0 siblings, 1 reply; 7+ messages in thread
From: Pavel Machek @ 2024-01-09 11:44 UTC (permalink / raw)
To: Sasha Levin
Cc: linux-kernel, stable, Uwe Kleine-König, Dmitry Torokhov,
linux-input
[-- Attachment #1: Type: text/plain, Size: 1260 bytes --]
Hi!
> From: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
>
> [ Upstream commit 42b8ff47720258d1f6a4412e780a480c139773a0 ]
>
> The .remove() callback for a platform driver returns an int which makes
> many driver authors wrongly assume it's possible to do error handling by
> returning an error code. However the value returned is ignored (apart
> from emitting a warning) and this typically results in resource leaks.
>
> To improve here there is a quest to make the remove callback return
> void. In the first step of this quest all drivers are converted to
> .remove_new(), which already returns void. Eventually after all drivers
> are converted, .remove_new() will be renamed to .remove().
>
> Trivially convert this driver from always returning zero in the remove
> callback to the void returning variant.
We don't really need this for -stable.
Best regards,
Pavel
> Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
> Link: https://lore.kernel.org/r/20231201133747.1099286-2-u.kleine-koenig@pengutronix.de
> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
> Signed-off-by: Sasha Levin <sashal@kernel.org>
--
People of Russia, stop Putin before his war on Ukraine escalates.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH AUTOSEL 4.19 4/7] Input: amimouse - convert to platform remove callback returning void
2024-01-09 11:44 ` Pavel Machek
@ 2024-01-09 21:50 ` Uwe Kleine-König
2024-01-14 18:55 ` Sasha Levin
0 siblings, 1 reply; 7+ messages in thread
From: Uwe Kleine-König @ 2024-01-09 21:50 UTC (permalink / raw)
To: Pavel Machek
Cc: Sasha Levin, linux-kernel, stable, Dmitry Torokhov, linux-input
[-- Attachment #1: Type: text/plain, Size: 1380 bytes --]
On Tue, Jan 09, 2024 at 12:44:55PM +0100, Pavel Machek wrote:
> Hi!
>
> > From: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
> >
> > [ Upstream commit 42b8ff47720258d1f6a4412e780a480c139773a0 ]
> >
> > The .remove() callback for a platform driver returns an int which makes
> > many driver authors wrongly assume it's possible to do error handling by
> > returning an error code. However the value returned is ignored (apart
> > from emitting a warning) and this typically results in resource leaks.
> >
> > To improve here there is a quest to make the remove callback return
> > void. In the first step of this quest all drivers are converted to
> > .remove_new(), which already returns void. Eventually after all drivers
> > are converted, .remove_new() will be renamed to .remove().
> >
> > Trivially convert this driver from always returning zero in the remove
> > callback to the void returning variant.
>
> We don't really need this for -stable.
Agreed! These patches shouldn't get backported to stable. Even if they
are a dependency (which isn't the case for this patch AFAICT),
backporting of later patches isn't hard even when dropping these
patches.
Best regards
Uwe
--
Pengutronix e.K. | Uwe Kleine-König |
Industrial Linux Solutions | https://www.pengutronix.de/ |
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH AUTOSEL 4.19 4/7] Input: amimouse - convert to platform remove callback returning void
2024-01-09 21:50 ` Uwe Kleine-König
@ 2024-01-14 18:55 ` Sasha Levin
0 siblings, 0 replies; 7+ messages in thread
From: Sasha Levin @ 2024-01-14 18:55 UTC (permalink / raw)
To: Uwe Kleine-König
Cc: Pavel Machek, linux-kernel, stable, Dmitry Torokhov, linux-input
On Tue, Jan 09, 2024 at 10:50:04PM +0100, Uwe Kleine-König wrote:
>On Tue, Jan 09, 2024 at 12:44:55PM +0100, Pavel Machek wrote:
>> Hi!
>>
>> > From: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
>> >
>> > [ Upstream commit 42b8ff47720258d1f6a4412e780a480c139773a0 ]
>> >
>> > The .remove() callback for a platform driver returns an int which makes
>> > many driver authors wrongly assume it's possible to do error handling by
>> > returning an error code. However the value returned is ignored (apart
>> > from emitting a warning) and this typically results in resource leaks.
>> >
>> > To improve here there is a quest to make the remove callback return
>> > void. In the first step of this quest all drivers are converted to
>> > .remove_new(), which already returns void. Eventually after all drivers
>> > are converted, .remove_new() will be renamed to .remove().
>> >
>> > Trivially convert this driver from always returning zero in the remove
>> > callback to the void returning variant.
>>
>> We don't really need this for -stable.
>
>Agreed! These patches shouldn't get backported to stable. Even if they
>are a dependency (which isn't the case for this patch AFAICT),
>backporting of later patches isn't hard even when dropping these
>patches.
I'll drop it, thanks!
--
Thanks,
Sasha
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2024-01-14 18:55 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20231226002649.7290-1-sashal@kernel.org>
2023-12-26 0:26 ` [PATCH AUTOSEL 4.19 2/7] Input: atkbd - skip ATKBD_CMD_GETID in translated mode Sasha Levin
2023-12-26 0:26 ` [PATCH AUTOSEL 4.19 3/7] Input: i8042 - add nomux quirk for Acer P459-G2-M Sasha Levin
2023-12-26 0:26 ` [PATCH AUTOSEL 4.19 4/7] Input: amimouse - convert to platform remove callback returning void Sasha Levin
2024-01-09 11:44 ` Pavel Machek
2024-01-09 21:50 ` Uwe Kleine-König
2024-01-14 18:55 ` Sasha Levin
2023-12-26 0:26 ` [PATCH AUTOSEL 4.19 7/7] Input: xpad - add Razer Wolverine V2 support Sasha Levin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).