<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/drivers/input/mouse/psmouse-base.c, branch v4.9</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/
</subtitle>
<id>https://git.shady.money/linux/atom?h=v4.9</id>
<link rel='self' href='https://git.shady.money/linux/atom?h=v4.9'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/'/>
<updated>2016-11-17T01:25:31Z</updated>
<entry>
<title>Input: psmouse - disable automatic probing of BYD touchpads</title>
<updated>2016-11-17T01:25:31Z</updated>
<author>
<name>Dmitry Torokhov</name>
<email>dmitry.torokhov@gmail.com</email>
</author>
<published>2016-11-12T18:45:48Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=e9fb7cc63801d3dc71b60ca11c4d08f68f879a53'/>
<id>urn:sha1:e9fb7cc63801d3dc71b60ca11c4d08f68f879a53</id>
<content type='text'>
BYD automatic protocol detection is extremely unreliable and is often
triggers false positives on regular mice, Sentelic touchpads, and other
devices. BYD has several documents that have recommended detection
sequence, but they conflict with each other and, as far as I can see, still
would not produce unique enough output to reliably differentiate BYD from
other PS/2 devices.

OEMs sourcing BYD devices also do not do us any favors by not supplying any
reasonable DMI data and instead leaving turds like "To Be Filled By O.E.M."
in place of vendor data, or "System Serial Number" as serial number.

On top of that BYD is not truly modern multitouch controller, but rather a
single-touch transitional device that only reports absolute coordinates at
the beginning of finger contact and then reverts to reporting
displacements, and thus not very precise; the only benefit from using BYD
mode vs the legacy PS/2 mode is possibility of edge scrolling.

Given the above, and the fact that BYD devices are somewhat uncommon, let's
disable automatic detection of BYD devices. Users who know they have BYD
trackpads or want to experiment can attempt to activate BYD protocol via
sysfs:

	echo -n "byd" &gt; /sys/bus/serio/devices/serio1/drvctl

Fixes: https://bugzilla.kernel.org/show_bug.cgi?id=151691
Fixes: https://bugzilla.kernel.org/show_bug.cgi?id=175421
Fixes: https://bugzilla.kernel.org/show_bug.cgi?id=120781
Fixes: https://bugzilla.kernel.org/show_bug.cgi?id=121281
Fixes: 98ee37714493 ("Input: byd - add BYD PS/2 touchpad driver")
Cc: stable@vger.kernel.org # 4.6+
Reviewed-by: Pali Rohár &lt;pali.rohar@gmail.com&gt;
Signed-off-by: Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt;
</content>
</entry>
<entry>
<title>Input: psmouse - remove deprecated create_singletheread_workqueue</title>
<updated>2016-08-25T17:10:53Z</updated>
<author>
<name>Bhaktipriya Shridhar</name>
<email>bhaktipriya96@gmail.com</email>
</author>
<published>2016-08-23T20:46:22Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=24dde60f564b1e2eb588761ba797c7b99a374860'/>
<id>urn:sha1:24dde60f564b1e2eb588761ba797c7b99a374860</id>
<content type='text'>
alloc_ordered_workqueue() replaces the deprecated
create_singlethread_workqueue().

There are multiple work items on the work queue viz
&amp;priv-&gt;dev3_register_work, &amp;priv-&gt;recalib_wq, &amp;psmouse-&gt;resync_work,
which require execution ordering. Hence, an ordered workqueue has been
used.

The workqueue is not being used on a memory reclaim path.  Hence,
WQ_MEM_RECLAIM has not been set.

Signed-off-by: Bhaktipriya Shridhar &lt;bhaktipriya96@gmail.com&gt;
Acked-by: Tejun Heo &lt;tj@kernel.org&gt;
Signed-off-by: Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt;</content>
</entry>
<entry>
<title>Input: byd - enable absolute mode</title>
<updated>2016-03-18T00:04:54Z</updated>
<author>
<name>Richard Pospesel</name>
<email>pospeselr@gmail.com</email>
</author>
<published>2016-03-14T16:41:16Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=2d5f5611dd0de52e9a52b56391a7049a52184e72'/>
<id>urn:sha1:2d5f5611dd0de52e9a52b56391a7049a52184e72</id>
<content type='text'>
The Windows driver's settings dialog contains a visualization of the
regions for the hardware edge scrolling capability, which uses a
temporarily-enabled limited-resolution absolute mode.

This patch enables this during normal operation, and combines the
absolute packets with the existing relative packets to provide
accurate absolute position and touch reporting.

It also adds documentation for all known gesture packets and
initialization commands.

Reviewed-by: Chris Diamand &lt;chris@diamand.org&gt;
Signed-off-by: Richard Pospesel &lt;pospeselr@gmail.com&gt;
Signed-off-by: Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt;</content>
</entry>
<entry>
<title>Input: byd - add BYD PS/2 touchpad driver</title>
<updated>2016-01-28T01:27:25Z</updated>
<author>
<name>Chris Diamand</name>
<email>chris@diamand.org</email>
</author>
<published>2016-01-28T01:04:35Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=98ee377144935857d8ad5d7d70cdab1da4ede32e'/>
<id>urn:sha1:98ee377144935857d8ad5d7d70cdab1da4ede32e</id>
<content type='text'>
Driver for the BYD BTP10463 touchpad, found in PC Specialist `Lafite'
laptops. This patch sends the magic command sequence which causes the
touchpad to stream intellimouse-style packets.

Gestures are detected inside the touchpad, and exposed as special
values in the Z component of each packet - absolute coordinates are
not supported, even in the Windows driver. At present, this supports
two-finger vertical and horizontal scrolling, and provides the
framework to expose the other gestures it can recognize.

Signed-off-by: Chris Diamand &lt;chris@diamand.org&gt;
Signed-off-by: Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt;</content>
</entry>
<entry>
<title>Input: psmouse - rename ps2pp_init() to ps2pp_detect()</title>
<updated>2015-12-17T23:24:37Z</updated>
<author>
<name>Dmitry Torokhov</name>
<email>dmitry.torokhov@gmail.com</email>
</author>
<published>2015-12-02T19:02:39Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=190e2031e2db542094659cfa55bfc28545458df5'/>
<id>urn:sha1:190e2031e2db542094659cfa55bfc28545458df5</id>
<content type='text'>
This makes Logitech PS2++ protocol implementation consistent with
the naming in other protocols. Also mark the stub as "static inline"

Reviewed-by: Hans de Goede &lt;hdegoede@redhat.com&gt;
Tested-by: Marcin Sochacki &lt;msochacki+kernel@gmail.com&gt;
Tested-by: Till &lt;till2.schaefer@uni-dortmund.de&gt;
Signed-off-by: Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt;
</content>
</entry>
<entry>
<title>Input: psmouse - limit protocols that we try on passthrough ports</title>
<updated>2015-12-17T23:24:32Z</updated>
<author>
<name>Dmitry Torokhov</name>
<email>dmitry.torokhov@gmail.com</email>
</author>
<published>2015-11-24T20:58:46Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=ec6184b1c717b8768122e25fe6d312f609cc1bb4'/>
<id>urn:sha1:ec6184b1c717b8768122e25fe6d312f609cc1bb4</id>
<content type='text'>
PS/2 protocol is slow, and using it with pass-through port (where we
encapsulate PS/2 into PS/2) is slower yet so it takes quite a bit of time
to do full protocol discovery for device attached to a pass-through port.
However, so far we have not see anything but trackpoints or basic PS/2
mice on pass-through ports, so let's limit protocols that we probe there
to Trackpoint, IntelliMouse Explorer, IntelliMouse, and bare PS/2 protocol,
and avoid other extended protocols, such as Synaptics, ALPS, etc.

Reviewed-by: Hans de Goede &lt;hdegoede@redhat.com&gt;
Reviewed-by: Pali Rohár &lt;pali.rohar@gmail.com&gt;
Tested-by: Marcin Sochacki &lt;msochacki+kernel@gmail.com&gt;
Tested-by: Till &lt;till2.schaefer@uni-dortmund.de&gt;
Signed-off-by: Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt;
</content>
</entry>
<entry>
<title>Input: psmouse - factor out common protocol probing code</title>
<updated>2015-12-17T23:24:21Z</updated>
<author>
<name>Dmitry Torokhov</name>
<email>dmitry.torokhov@gmail.com</email>
</author>
<published>2015-11-28T05:17:40Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=c378b5119eb0ea25bfd3348a06b51fca654d9903'/>
<id>urn:sha1:c378b5119eb0ea25bfd3348a06b51fca654d9903</id>
<content type='text'>
In preparation of limiting protocols that we try on pass-through ports,
let's rework initialization code and factor common code into
psmouse_try_protocol() that accepts protocol type (instead of detec()
function pointer) and can, for most protocols, perform both detection and
initialization.

Note that this removes option of forcing Lifebook protocol on devices that
are not recognized by lifebook_detect() as having the hardware, but I do
not recall anyone using this option.

Reviewed-by: Hans de Goede &lt;hdegoede@redhat.com&gt;
Tested-by: Marcin Sochacki &lt;msochacki+kernel@gmail.com&gt;
Tested-by: Till &lt;till2.schaefer@uni-dortmund.de&gt;
Signed-off-by: Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt;
</content>
</entry>
<entry>
<title>Input: psmouse - move protocol descriptions around</title>
<updated>2015-12-17T23:24:16Z</updated>
<author>
<name>Dmitry Torokhov</name>
<email>dmitry.torokhov@gmail.com</email>
</author>
<published>2015-11-28T05:08:28Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=5fa75cfe23633edf2fd26abe4a08f22ced4415d1'/>
<id>urn:sha1:5fa75cfe23633edf2fd26abe4a08f22ced4415d1</id>
<content type='text'>
We move protocol descriptions and psmouse_find_by_type() and
pmouse_find_by_name() so that we can use them without forward declarations
in the subsequent patches.

Reviewed-by: Hans de Goede &lt;hdegoede@redhat.com&gt;
Reviewed-by: Pali Rohár &lt;pali.rohar@gmail.com&gt;
Tested-by: Marcin Sochacki &lt;msochacki+kernel@gmail.com&gt;
Tested-by: Till &lt;till2.schaefer@uni-dortmund.de&gt;
Signed-off-by: Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt;
</content>
</entry>
<entry>
<title>Input: psmouse - clean up Cypress probe</title>
<updated>2015-12-17T23:24:04Z</updated>
<author>
<name>Dmitry Torokhov</name>
<email>dmitry.torokhov@gmail.com</email>
</author>
<published>2015-12-03T00:50:42Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=24a06f3e3ab640490f49c8e8812d9550d6f15e92'/>
<id>urn:sha1:24a06f3e3ab640490f49c8e8812d9550d6f15e92</id>
<content type='text'>
When Cypress protocol support is disabled cypress_init() is a stub that
always returns -ENOSYS, so there is not point in testing for
CONFIG_MOUSE_PS2_CYPRESS after we decided that we are dealing with a
Cypress device. Also, we should only be calling cypress_detect() when
set_properties argument is "true", like with other protocols.

There is a slight change in behavior to make follow-up patches more
uniform: when we detect Cypress but its initialization fails, instead of
immediately returning PSMOUSE_PS2 protocol we now continue trying
IntelliMouse [Explorer]. Given that Cypress devices only have issue with
Sentelic probes probing Imtellimouse should be safe.

Reviewed-by: Hans de Goede &lt;hdegoede@redhat.com&gt;
Tested-by: Marcin Sochacki &lt;msochacki+kernel@gmail.com&gt;
Tested-by: Till &lt;till2.schaefer@uni-dortmund.de&gt;
Signed-off-by: Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt;
</content>
</entry>
<entry>
<title>Input: psmouse - rearrange Focaltech init code</title>
<updated>2015-12-17T23:23:54Z</updated>
<author>
<name>Dmitry Torokhov</name>
<email>dmitry.torokhov@gmail.com</email>
</author>
<published>2015-11-28T04:52:36Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=2b6f39e9ee7b6a9fa98f6047b05733053876fdbe'/>
<id>urn:sha1:2b6f39e9ee7b6a9fa98f6047b05733053876fdbe</id>
<content type='text'>
The fact that we were calling focaltech_init() even when Focaltech support
is disabled was confusing. Rearrange the code so that if support is
disabled we continue to fall through the rest of protocol probing code
until we get to full reset that Focaltech devices need to work properly.

Also, replace focaltech_init() with a stub now that it is only called when
protocol is enabled.

Reviewed-by: Hans de Goede &lt;hdegoede@redhat.com&gt;
Reviewed-by: Pali Rohár &lt;pali.rohar@gmail.com&gt;
Tested-by: Marcin Sochacki &lt;msochacki+kernel@gmail.com&gt;
Tested-by: Till &lt;till2.schaefer@uni-dortmund.de&gt;
Signed-off-by: Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt;
</content>
</entry>
</feed>
