From: Paul Donohue <linux-kernel@PaulSD.com>
To: Laura Abbott <labbott@redhat.com>
Cc: Masaki Ota <masaki.ota@jp.alps.com>,
Dmitry Torokhov <dmitry.torokhov@gmail.com>,
Pali Rohar <pali.rohar@gmail.com>,
Nick Fletcher <nick.m.fletcher@gmail.com>,
"linux-input@vger.kernel.org" <linux-input@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"scott.s.lowe@gmail.com" <scott.s.lowe@gmail.com>
Subject: Re: [REGRESSION] Touchpad failure after e7348396c6d5 ("Input: ALPS - fix V8+ protocol handling (73 03 28)")
Date: Mon, 19 Jun 2017 19:20:26 -0400 [thread overview]
Message-ID: <20170619232026.GG1855@TopQuark.net> (raw)
In-Reply-To: <0995261b-8d19-64af-9b66-e1eab579a3d4@redhat.com>
[-- Attachment #1: Type: text/plain, Size: 2491 bytes --]
On Mon, Jun 19, 2017 at 01:02:18PM -0700, Laura Abbott wrote:
> On 06/19/2017 11:43 AM, Paul Donohue wrote:
> > I get the same results as you - x_max and y_max affect cursor speed, and x_res and y_res seem to have no effect. I can't seem to come up with any values that cause intermittent cursor issues on one side of the touchpad.
> > Both max and res do get passed up to the X driver, and I do see references to both max and resolution in xf86-input-evdev, although I haven't actually traced it through to see if/where each value is actually consumed with my setup.
> >
> > Maybe we should ask the user to try a few more tests?
> > 1) Using the original code (without the modifications from bug 195215), add the following before 'return 0' at the end of alps_update_device_area_ss4_v2(), then run `dmesg | grep num-electrodes` after loading the alps kernel module to get the output. This should tell us what values the user is actually reading from the hardware:
> > psmouse_err(psmouse,
> > "pitch %dx%d num-electrodes %dx%d physical size %dx%dmm res %dx%d max %dx%d\n",
> > x_pitch, y_pitch, num_x_electrode, num_y_electrode,
> > x_phys / 10, y_phys / 10, priv->x_res, priv->y_res, priv->x_max, priv->y_max);
> > 2) Use the old electrode count code but the new pitch code:
> > if (IS_SS4PLUS_DEV(priv->dev_id)) {
> > num_x_electrode =
> > SS4_NUMSENSOR_XOFFSET + (otp[1][0] & 0x0F);
> > num_y_electrode =
> > SS4_NUMSENSOR_YOFFSET + ((otp[1][0] >> 4) & 0x0F);
> >
> > priv->x_max =
> > (num_x_electrode - 1) * SS4_COUNT_PER_ELECTRODE;
> > priv->y_max =
> > (num_y_electrode - 1) * SS4_COUNT_PER_ELECTRODE;
> >
> > x_pitch = (otp[0][1] & 0x0F) + SS4PLUS_MIN_PITCH_MM;
> > y_pitch = ((otp[0][1] >> 4) & 0x0F) + SS4PLUS_MIN_PITCH_MM;
> >
> > } else {
> > 3) Use the new electrode count code but the old pitch code:
> > if (IS_SS4PLUS_DEV(priv->dev_id)) {
> > num_x_electrode =
> > SS4PLUS_NUMSENSOR_XOFFSET + (otp[0][2] & 0x0F);
> > num_y_electrode =
> > SS4PLUS_NUMSENSOR_YOFFSET + ((otp[0][2] >> 4) & 0x0F);
> >
> > priv->x_max =
> > (num_x_electrode - 1) * SS4PLUS_COUNT_PER_ELECTRODE;
> > priv->y_max =
> > (num_y_electrode - 1) * SS4PLUS_COUNT_PER_ELECTRODE;
> >
> > x_pitch = ((otp[1][2] >> 2) & 0x07) + SS4_MIN_PITCH_MM;
> > y_pitch = ((otp[1][2] >> 5) & 0x07) + SS4_MIN_PITCH_MM;
> >
> > } else {
> >
>
> Can you produce patches for these test cases?
I've reduced it to two test cases. Patches attached.
[-- Attachment #2: patch1 --]
[-- Type: text/plain, Size: 1429 bytes --]
diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
index 262d1057c1da..341a6c3bf907 100644
--- a/drivers/input/mouse/alps.c
+++ b/drivers/input/mouse/alps.c
@@ -2467,14 +2467,14 @@ static int alps_update_device_area_ss4_v2(unsigned char otp[][4],
if (IS_SS4PLUS_DEV(priv->dev_id)) {
num_x_electrode =
- SS4PLUS_NUMSENSOR_XOFFSET + (otp[0][2] & 0x0F);
+ SS4_NUMSENSOR_XOFFSET + (otp[1][0] & 0x0F);
num_y_electrode =
- SS4PLUS_NUMSENSOR_YOFFSET + ((otp[0][2] >> 4) & 0x0F);
+ SS4_NUMSENSOR_YOFFSET + ((otp[1][0] >> 4) & 0x0F);
priv->x_max =
- (num_x_electrode - 1) * SS4PLUS_COUNT_PER_ELECTRODE;
+ (num_x_electrode - 1) * SS4_COUNT_PER_ELECTRODE;
priv->y_max =
- (num_y_electrode - 1) * SS4PLUS_COUNT_PER_ELECTRODE;
+ (num_y_electrode - 1) * SS4_COUNT_PER_ELECTRODE;
x_pitch = (otp[0][1] & 0x0F) + SS4PLUS_MIN_PITCH_MM;
y_pitch = ((otp[0][1] >> 4) & 0x0F) + SS4PLUS_MIN_PITCH_MM;
@@ -2500,6 +2500,11 @@ static int alps_update_device_area_ss4_v2(unsigned char otp[][4],
priv->x_res = priv->x_max * 10 / x_phys; /* units / mm */
priv->y_res = priv->y_max * 10 / y_phys; /* units / mm */
+ psmouse_err(psmouse,
+ "test1 pitch %dx%d num-electrodes %dx%d physical size %dx%dmm res %dx%d max %dx%d\n",
+ x_pitch, y_pitch, num_x_electrode, num_y_electrode,
+ x_phys / 10, y_phys / 10, priv->x_res, priv->y_res, priv->x_max, priv->y_max);
+
return 0;
}
[-- Attachment #3: patch2 --]
[-- Type: text/plain, Size: 1101 bytes --]
diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
index 262d1057c1da..f57dca5cecd5 100644
--- a/drivers/input/mouse/alps.c
+++ b/drivers/input/mouse/alps.c
@@ -2476,8 +2476,8 @@ static int alps_update_device_area_ss4_v2(unsigned char otp[][4],
priv->y_max =
(num_y_electrode - 1) * SS4PLUS_COUNT_PER_ELECTRODE;
- x_pitch = (otp[0][1] & 0x0F) + SS4PLUS_MIN_PITCH_MM;
- y_pitch = ((otp[0][1] >> 4) & 0x0F) + SS4PLUS_MIN_PITCH_MM;
+ x_pitch = ((otp[1][2] >> 2) & 0x07) + SS4_MIN_PITCH_MM;
+ y_pitch = ((otp[1][2] >> 5) & 0x07) + SS4_MIN_PITCH_MM;
} else {
num_x_electrode =
@@ -2500,6 +2500,11 @@ static int alps_update_device_area_ss4_v2(unsigned char otp[][4],
priv->x_res = priv->x_max * 10 / x_phys; /* units / mm */
priv->y_res = priv->y_max * 10 / y_phys; /* units / mm */
+ psmouse_err(psmouse,
+ "test2 pitch %dx%d num-electrodes %dx%d physical size %dx%dmm res %dx%d max %dx%d\n",
+ x_pitch, y_pitch, num_x_electrode, num_y_electrode,
+ x_phys / 10, y_phys / 10, priv->x_res, priv->y_res, priv->x_max, priv->y_max);
+
return 0;
}
next prev parent reply other threads:[~2017-06-19 23:20 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-02 17:54 [REGRESSION] Touchpad failure after e7348396c6d5 ("Input: ALPS - fix V8+ protocol handling (73 03 28)") Laura Abbott
2017-06-03 4:03 ` Paul Donohue
2017-06-06 16:59 ` Laura Abbott
2017-06-12 5:25 ` Masaki Ota
2017-06-14 18:52 ` Laura Abbott
2017-06-15 0:33 ` Masaki Ota
2017-06-19 18:43 ` Paul Donohue
2017-06-19 20:02 ` Laura Abbott
2017-06-19 23:20 ` Paul Donohue [this message]
2017-07-11 15:50 ` Takashi Iwai
2017-07-11 19:58 ` Paul Donohue
2017-07-12 7:16 ` Takashi Iwai
2017-07-12 16:28 ` Paul Donohue
2017-07-19 8:57 ` Takashi Iwai
2017-07-20 9:20 ` Masaki Ota
2017-07-20 9:35 ` Takashi Iwai
2017-07-20 10:02 ` Masaki Ota
2017-07-20 10:43 ` Takashi Iwai
2017-07-22 18:57 ` Paul Donohue
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=20170619232026.GG1855@TopQuark.net \
--to=linux-kernel@paulsd.com \
--cc=dmitry.torokhov@gmail.com \
--cc=labbott@redhat.com \
--cc=linux-input@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=masaki.ota@jp.alps.com \
--cc=nick.m.fletcher@gmail.com \
--cc=pali.rohar@gmail.com \
--cc=scott.s.lowe@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.