* Re: [PATCH 1/1] Elantech touchpad detection fix for laptops
[not found] <CAEK4c-83y8H3me6AWco3XJ9zgFazzU_qybTrxdEwiBULtt6xew@mail.gmail.com>
@ 2014-12-23 23:36 ` Dmitry Torokhov
0 siblings, 0 replies; 2+ messages in thread
From: Dmitry Torokhov @ 2014-12-23 23:36 UTC (permalink / raw)
To: Srihari Vijayaraghavan
Cc: linux-kernel, Mateusz Jończyk, Zakariya Dehlawi
Hi Srihari,
On Wed, Dec 24, 2014 at 09:52:40AM +1100, Srihari Vijayaraghavan wrote:
> [After trying a number of times to unsuccessfully send this to linux-input,
> am sending this to linux-kernel as the last resort.]
You are sending HTML mails and vger lists (pretty much all Linux
kernel-related lists) drop such mails on the floor. Please resend your
patch as plain/text only and it will be accepted by vger.
Thanks.
>
> Hello Linux-Kernel Folks,
>
> Months ago, I raised kernel bugzilla 81331 (
> https://bugzilla.kernel.org/show_bug.cgi?id=81331) for Linux not detecting
> my Elantech touchpad from a cold boot. As can be seen in that bug report,
> besides myself, it's indeed affecting a number of other users.
>
> Since then, based on the original patch fix given by Mateusz Jonczyk, I've
> extended it to be this (which not only fixes my problem, but one another
> user has confirmed it to work for him; and am confident that every one of
> the affected user would be benefited too) & would appreciate your review
> (and inputs thereof) & if you're happy with it, then request you to kindly
> merge it upstream on mainline & stable.
>
> On behalf of all affected users, much appreciate your help in this matter.
> Because I'm not subscribed to lkml, please address me directly in your
> response(s). Thank you.
>
> PS: If gmail somehow spoils this patch, then please refer to the above
> kernel bugzilla URL, where the same patch is available as the most recent
> file attachment.
>
> diff --git a/Documentation/kernel-
> parameters.txt b/Documentation/kernel-parameters.txt
> index 479f332..5ae99f3 100644
> --- a/Documentation/kernel-parameters.txt
> +++ b/Documentation/kernel-parameters.txt
> @@ -1270,6 +1270,7 @@ bytes respectively. Such letter suffixes can also be
> entirely omitted.
> i8042.notimeout [HW] Ignore timeout condition signalled by
> controller
> i8042.reset [HW] Reset the controller during init and cleanup
> i8042.unlock [HW] Unlock (ignore) the keylock
> + i8042.kbdreset [HW] Reset keyboard to detect Elantech touchpad
>
> i810= [HW,DRM]
>
> diff --git a/drivers/input/serio/i8042-x86ia64io.h
> b/drivers/input/serio/i8042-x86ia64io.h
> index faeeb13..40e85ed 100644
> --- a/drivers/input/serio/i8042-x86ia64io.h
> +++ b/drivers/input/serio/i8042-x86ia64io.h
> @@ -735,6 +735,29 @@ static const struct dmi_system_id __initconst
> i8042_dmi_dritek_table[] = {
> { }
> };
>
> +/*
> + * Just as per kernel bugzilla #81331, some Elantech touchpad based laptops
> + * -- e.g., Gigabyte P35 v2, Gigabyte X3 Plus -- need keyboard reset while
> + * probing for the touchpad to get detected, initialised & finally work.
> + */
> +static const struct dmi_system_id __initconst
> i8042_dmi_elantech_kbdreset_table[] = {
> + {
> + /* Gigabyte P35 v2 */
> + .matches = {
> + DMI_MATCH(DMI_SYS_VENDOR, "GIGABYTE"),
> + DMI_MATCH(DMI_PRODUCT_NAME, "P35V2"),
> + },
> + },
> + {
> + /* Aorus branded Gigabyte X3 Plus */
> + .matches = {
> + DMI_MATCH(DMI_SYS_VENDOR, "GIGABYTE"),
> + DMI_MATCH(DMI_PRODUCT_NAME, "X3"),
> + },
> + },
> + { }
> +};
> +
> #endif /* CONFIG_X86 */
>
> #ifdef CONFIG_PNP
> @@ -1030,6 +1053,9 @@ static int __init i8042_platform_init(void)
> if (dmi_check_system(i8042_dmi_dritek_table))
> i8042_dritek = true;
>
> + if (dmi_check_system(i8042_dmi_elantech_kbdreset_table))
> + i8042_kbdreset = true;
> +
> /*
> * A20 was already enabled during early kernel init. But some buggy
> * BIOSes (in MSI Laptops) require A20 to be enabled using 8042 to
> diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c
> index f5a98af..7cf42df 100644
> --- a/drivers/input/serio/i8042.c
> +++ b/drivers/input/serio/i8042.c
> @@ -67,6 +67,10 @@ static bool i8042_notimeout;
> module_param_named(notimeout, i8042_notimeout, bool, 0);
> MODULE_PARM_DESC(notimeout, "Ignore timeouts signalled by i8042");
>
> +static bool i8042_kbdreset;
> +module_param_named(kbdreset, i8042_kbdreset, bool, 0);
> +MODULE_PARM_DESC(kbdreset, "Reset keyboard to detect Elantech touchpad on
> some laptops");
> +
> #ifdef CONFIG_X86
> static bool i8042_dritek;
> module_param_named(dritek, i8042_dritek, bool, 0);
> @@ -790,6 +794,14 @@ static int __init i8042_check_aux(void)
> return -1;
>
> /*
> + * Reset keyboard to detect touchpad on some laptops having Elantech
> touchpad
> + */
> + if (i8042_kbdreset) {
> + pr_warn("Resetting keyboard to detect Elantech touchpad on
> some laptops\n");
> + i8042_kbd_write(NULL, (unsigned char) 0xff);
> + }
> +
> +/*
> * Test AUX IRQ delivery to make sure BIOS did not grab the IRQ and
> * used it for a PCI card or somethig else.
> */
--
Dmitry
^ permalink raw reply [flat|nested] 2+ messages in thread
* [PATCH 1/1] Elantech touchpad detection fix for laptops
@ 2014-12-24 0:17 Srihari Vijayaraghavan
0 siblings, 0 replies; 2+ messages in thread
From: Srihari Vijayaraghavan @ 2014-12-24 0:17 UTC (permalink / raw)
To: linux-input
Cc: Dmitry Torokhov, Mateusz Jończyk, Zakariya Dehlawi,
linux-kernel
Hello Folks,
[Thanks for Dmitry for pointing out my error in previous attempts at
sending this email. I've fixed it now. Sorry if you've received this
email multiple times by now.]
Months ago, I raised kernel bugzilla 81331
(https://bugzilla.kernel.org/show_bug.cgi?id=81331) for Linux not
detecting my Elantech touchpad from a cold boot. As can be seen in
that bug report, besides myself, it's indeed affecting a number of
other users.
Since then, based on the original patch fix given by Mateusz Jonczyk,
I've extended it to be this (which not only fixes my problem, but
others as well) & would appreciate your review (and inputs thereof) &
if you're happy with it, then request you to kindly merge it upstream
on mainline & stable.
On behalf of all affected users, much appreciate your help in this
matter. Thank you.
PS: If gmail somehow spoils this patch when it comes through, then
please refer to the above kernel bugzilla URL, where the same patch is
available as a file attachment.
diff --git a/Documentation/kernel-parameters.txt
b/Documentation/kernel-parameters.txt
index 479f332..5ae99f3 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -1270,6 +1270,7 @@ bytes respectively. Such letter suffixes can
also be entirely omitted.
i8042.notimeout [HW] Ignore timeout condition signalled by controller
i8042.reset [HW] Reset the controller during init and cleanup
i8042.unlock [HW] Unlock (ignore) the keylock
+ i8042.kbdreset [HW] Reset keyboard to detect Elantech touchpad
i810= [HW,DRM]
diff --git a/drivers/input/serio/i8042-x86ia64io.h
b/drivers/input/serio/i8042-x86ia64io.h
index faeeb13..40e85ed 100644
--- a/drivers/input/serio/i8042-x86ia64io.h
+++ b/drivers/input/serio/i8042-x86ia64io.h
@@ -735,6 +735,29 @@ static const struct dmi_system_id __initconst
i8042_dmi_dritek_table[] = {
{ }
};
+/*
+ * Just as per kernel bugzilla #81331, some Elantech touchpad based laptops
+ * -- e.g., Gigabyte P35 v2, Gigabyte X3 Plus -- need keyboard reset while
+ * probing for the touchpad to get detected, initialised & finally work.
+ */
+static const struct dmi_system_id __initconst
i8042_dmi_elantech_kbdreset_table[] = {
+ {
+ /* Gigabyte P35 v2 */
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "GIGABYTE"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "P35V2"),
+ },
+ },
+ {
+ /* Aorus branded Gigabyte X3 Plus */
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "GIGABYTE"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "X3"),
+ },
+ },
+ { }
+};
+
#endif /* CONFIG_X86 */
#ifdef CONFIG_PNP
@@ -1030,6 +1053,9 @@ static int __init i8042_platform_init(void)
if (dmi_check_system(i8042_dmi_dritek_table))
i8042_dritek = true;
+ if (dmi_check_system(i8042_dmi_elantech_kbdreset_table))
+ i8042_kbdreset = true;
+
/*
* A20 was already enabled during early kernel init. But some buggy
* BIOSes (in MSI Laptops) require A20 to be enabled using 8042 to
diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c
index f5a98af..7cf42df 100644
--- a/drivers/input/serio/i8042.c
+++ b/drivers/input/serio/i8042.c
@@ -67,6 +67,10 @@ static bool i8042_notimeout;
module_param_named(notimeout, i8042_notimeout, bool, 0);
MODULE_PARM_DESC(notimeout, "Ignore timeouts signalled by i8042");
+static bool i8042_kbdreset;
+module_param_named(kbdreset, i8042_kbdreset, bool, 0);
+MODULE_PARM_DESC(kbdreset, "Reset keyboard to detect Elantech
touchpad on some laptops");
+
#ifdef CONFIG_X86
static bool i8042_dritek;
module_param_named(dritek, i8042_dritek, bool, 0);
@@ -790,6 +794,14 @@ static int __init i8042_check_aux(void)
return -1;
/*
+ * Reset keyboard to detect touchpad on some laptops having Elantech touchpad
+ */
+ if (i8042_kbdreset) {
+ pr_warn("Resetting keyboard to detect Elantech
touchpad on some laptops\n");
+ i8042_kbd_write(NULL, (unsigned char) 0xff);
+ }
+
+/*
* Test AUX IRQ delivery to make sure BIOS did not grab the IRQ and
* used it for a PCI card or somethig else.
*/
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2014-12-24 0:17 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <CAEK4c-83y8H3me6AWco3XJ9zgFazzU_qybTrxdEwiBULtt6xew@mail.gmail.com>
2014-12-23 23:36 ` [PATCH 1/1] Elantech touchpad detection fix for laptops Dmitry Torokhov
2014-12-24 0:17 Srihari Vijayaraghavan
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox