All of lore.kernel.org
 help / color / mirror / Atom feed
From: Richard Pospesel <pospeselr@gmail.com>
To: linux-input@vger.kernel.org
Cc: chris@diamand.org, dmitry.torokhov@gmail.com, phonesyfreakies@gmail.com
Subject: [PATCH] made the byd_detect function more restrictive to prevent false positives when actual mouse is a generic PS/2 mouse; byd_detect now tries to go through BYD touchpad configuration steps, which fail when not performed on BYD touchpad
Date: Sat, 25 Jun 2016 19:25:21 -0700	[thread overview]
Message-ID: <1466907921-10210-2-git-send-email-pospeselr@gmail.com> (raw)
In-Reply-To: <1466907921-10210-1-git-send-email-pospeselr@gmail.com>

---
 drivers/input/mouse/byd.c | 21 ++++++++++++++++++---
 1 file changed, 18 insertions(+), 3 deletions(-)

diff --git a/drivers/input/mouse/byd.c b/drivers/input/mouse/byd.c
index ec73f75..380e295 100644
--- a/drivers/input/mouse/byd.c
+++ b/drivers/input/mouse/byd.c
@@ -355,7 +355,7 @@ static int byd_reset_touchpad(struct psmouse *psmouse)
 		{ PSMOUSE_CMD_ENABLE, 0 },
 		/*
 		 * BYD-specific initialization, which enables absolute mode and
-		 * (if desired), the touchpad's built-in gesture detection.
+		 * disables the builtin hardware gesture recogniton.
 		 */
 		{ 0x10E2, 0x00 },
 		{ 0x10E0, 0x02 },
@@ -435,6 +435,7 @@ int byd_detect(struct psmouse *psmouse, bool set_properties)
 	struct ps2dev *ps2dev = &psmouse->ps2dev;
 	u8 param[4] = {0x03, 0x00, 0x00, 0x00};
 
+	/* 'Secret' handshake */
 	if (ps2_command(ps2dev, param, PSMOUSE_CMD_SETRES))
 		return -1;
 	if (ps2_command(ps2dev, param, PSMOUSE_CMD_SETRES))
@@ -446,7 +447,21 @@ int byd_detect(struct psmouse *psmouse, bool set_properties)
 	if (ps2_command(ps2dev, param, PSMOUSE_CMD_GETINFO))
 		return -1;
 
-	if (param[1] != 0x03 || param[2] != 0x64)
+	/*
+	 * BYD touchpad returns 0x03 for resolution ( 8 count / mm ) and
+	 * 0x64 ( 100 samples / sec ) for sampling rate
+	 * The first byte's value is dependent on the mouse button states:
+	 *  0 : no button pressed
+	 *  1 : right button pressed
+	 *  4 : left button pressed
+	 *  5 : right and left button pressed
+	 */
+	if ((param[0] & 0x05) != param[0] || param[1] != 0x03 ||
+	    param[2] != 0x64)
+		return -ENODEV;
+
+	/* Attempt to set BYD unique settings */
+	if (byd_reset_touchpad(psmouse))
 		return -ENODEV;
 
 	psmouse_dbg(psmouse, "BYD touchpad detected\n");
@@ -504,4 +519,4 @@ int byd_init(struct psmouse *psmouse)
 	__clear_bit(REL_Y, dev->relbit);
 
 	return 0;
-}
+}
\ No newline at end of file
-- 
2.5.0


  reply	other threads:[~2016-06-26  2:25 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-26  2:25 Input: byd - fix issue where generic PS/2 mice are detected as BYD touchpad Richard Pospesel
2016-06-26  2:25 ` Richard Pospesel [this message]
2016-06-27 21:34   ` [PATCH] made the byd_detect function more restrictive to prevent false positives when actual mouse is a generic PS/2 mouse; byd_detect now tries to go through BYD touchpad configuration steps, which fail when not performed on " Dmitry Torokhov
2016-06-29  4:01     ` [PATCH] Input: byd - fix issue where generic PS/2 mice are detected as " Richard Pospesel
2016-07-11 20:26       ` Chris Diamand
2016-07-12  2:57         ` Dmitry Torokhov
2016-07-14 16:46           ` Dmitry Torokhov
     [not found]             ` <CAHc7Qt1AEdCxu+rnrYqMRNQFGac4VuNFG=tfTSeHam4SnB3F3w@mail.gmail.com>
2016-08-02 11:32               ` Chris Diamand
2016-08-18 10:04                 ` Benjamin Tissoires

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1466907921-10210-2-git-send-email-pospeselr@gmail.com \
    --to=pospeselr@gmail.com \
    --cc=chris@diamand.org \
    --cc=dmitry.torokhov@gmail.com \
    --cc=linux-input@vger.kernel.org \
    --cc=phonesyfreakies@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.