<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel/drivers/input/touchscreen/elants_i2c.c, branch linux-4.1.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.</subtitle>
<id>https://universe.0xinfinity.dev/distro/kernel/atom?h=linux-4.1.y</id>
<link rel='self' href='https://universe.0xinfinity.dev/distro/kernel/atom?h=linux-4.1.y'/>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/'/>
<updated>2017-03-06T22:29:11Z</updated>
<entry>
<title>Input: elants_i2c - avoid divide by 0 errors on bad touchscreen data</title>
<updated>2017-03-06T22:29:11Z</updated>
<author>
<name>Guenter Roeck</name>
<email>linux@roeck-us.net</email>
</author>
<published>2017-01-05T22:14:54Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=63d75fa737a0bddfb815f7521eef58509e067264'/>
<id>urn:sha1:63d75fa737a0bddfb815f7521eef58509e067264</id>
<content type='text'>
[ Upstream commit 1c3415a06b1016a596bfe59e0cfee56c773aa958 ]

The following crash may be seen if bad data is received from the
touchscreen.

[ 2189.425150] elants_i2c i2c-ELAN0001:00: unknown packet ff ff ff ff
[ 2189.430738] divide error: 0000 [#1] PREEMPT SMP
[ 2189.434679] gsmi: Log Shutdown Reason 0x03
[ 2189.434689] Modules linked in: ip6t_REJECT nf_reject_ipv6 rfcomm evdi
uinput uvcvideo cmac videobuf2_vmalloc videobuf2_memops snd_hda_codec_hdmi
i2c_dev videobuf2_core snd_soc_sst_cht_bsw_rt5645 snd_hda_intel
snd_intel_sst_acpi btusb btrtl btbcm btintel bluetooth snd_soc_sst_acpi
snd_hda_codec snd_intel_sst_core snd_hwdep snd_soc_sst_mfld_platform
snd_hda_core snd_soc_rt5645 memconsole_x86_legacy memconsole zram snd_soc_rl6231
fuse ip6table_filter iwlmvm iwlwifi iwl7000_mac80211 cfg80211 iio_trig_sysfs
joydev cros_ec_sensors cros_ec_sensors_core industrialio_triggered_buffer
kfifo_buf industrialio snd_seq_midi snd_seq_midi_event snd_rawmidi snd_seq
snd_seq_device ppp_async ppp_generic slhc tun
[ 2189.434866] CPU: 0 PID: 106 Comm: irq/184-ELAN000 Tainted: G        W
3.18.0-13101-g57e8190 #1
[ 2189.434883] Hardware name: GOOGLE Ultima, BIOS Google_Ultima.7287.131.43 07/20/2016
[ 2189.434898] task: ffff88017a0b6d80 ti: ffff88017a2bc000 task.ti: ffff88017a2bc000
[ 2189.434913] RIP: 0010:[&lt;ffffffffbecc48d5&gt;]  [&lt;ffffffffbecc48d5&gt;] elants_i2c_irq+0x190/0x200
[ 2189.434937] RSP: 0018:ffff88017a2bfd98  EFLAGS: 00010293
[ 2189.434948] RAX: 0000000000000000 RBX: ffff88017a967828 RCX: ffff88017a9678e8
[ 2189.434962] RDX: 0000000000000000 RSI: 0000000000000246 RDI: 0000000000000000
[ 2189.434975] RBP: ffff88017a2bfdd8 R08: 00000000000003e8 R09: 0000000000000000
[ 2189.434989] R10: 0000000000000000 R11: 000000000044a2bd R12: ffff88017a991800
[ 2189.435001] R13: ffffffffbe8a2a53 R14: ffff88017a0b6d80 R15: ffff88017a0b6d80
[ 2189.435011] FS:  0000000000000000(0000) GS:ffff88017fc00000(0000) knlGS:0000000000000000
[ 2189.435022] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
[ 2189.435030] CR2: 00007f678d94b000 CR3: 000000003f41a000 CR4: 00000000001007f0
[ 2189.435039] Stack:
[ 2189.435044]  ffff88017a2bfda8 ffff88017a9678e8 646464647a2bfdd8 0000000006e09574
[ 2189.435060]  0000000000000000 ffff88017a088b80 ffff88017a921000 ffffffffbe8a2a53
[ 2189.435074]  ffff88017a2bfe08 ffffffffbe8a2a73 ffff88017a0b6d80 0000000006e09574
[ 2189.435089] Call Trace:
[ 2189.435101]  [&lt;ffffffffbe8a2a53&gt;] ? irq_thread_dtor+0xa9/0xa9
[ 2189.435112]  [&lt;ffffffffbe8a2a73&gt;] irq_thread_fn+0x20/0x40
[ 2189.435123]  [&lt;ffffffffbe8a2be1&gt;] irq_thread+0x14e/0x222
[ 2189.435135]  [&lt;ffffffffbee8cbeb&gt;] ? __schedule+0x3b3/0x57a
[ 2189.435145]  [&lt;ffffffffbe8a29aa&gt;] ? wake_threads_waitq+0x2d/0x2d
[ 2189.435156]  [&lt;ffffffffbe8a2a93&gt;] ? irq_thread_fn+0x40/0x40
[ 2189.435168]  [&lt;ffffffffbe87c385&gt;] kthread+0x10e/0x116
[ 2189.435178]  [&lt;ffffffffbe87c277&gt;] ? __kthread_parkme+0x67/0x67
[ 2189.435189]  [&lt;ffffffffbee900ac&gt;] ret_from_fork+0x7c/0xb0
[ 2189.435199]  [&lt;ffffffffbe87c277&gt;] ? __kthread_parkme+0x67/0x67
[ 2189.435208] Code: ff ff eb 73 0f b6 bb c1 00 00 00 83 ff 03 7e 13 49 8d 7c
24 20 ba 04 00 00 00 48 c7 c6 8a cd 21 bf eb 4d 0f b6 83 c2 00 00 00 99 &lt;f7&gt; ff
83 f8 37 75 15 48 6b f7 37 4c 8d a3 c4 00 00 00 4c 8d ac
[ 2189.435312] RIP  [&lt;ffffffffbecc48d5&gt;] elants_i2c_irq+0x190/0x200
[ 2189.435323]  RSP &lt;ffff88017a2bfd98&gt;
[ 2189.435350] ---[ end trace f4945345a75d96dd ]---
[ 2189.443841] Kernel panic - not syncing: Fatal exception
[ 2189.444307] Kernel Offset: 0x3d800000 from 0xffffffff81000000
	(relocation range: 0xffffffff80000000-0xffffffffbfffffff)
[ 2189.444519] gsmi: Log Shutdown Reason 0x02

The problem was seen with a 3.18 based kernel, but there is no reason
to believe that the upstream code is safe.

Fixes: 66aee90088da2 ("Input: add support for Elan eKTH I2C touchscreens")
Signed-off-by: Guenter Roeck &lt;linux@roeck-us.net&gt;
Cc: stable@vger.kernel.org
Signed-off-by: Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt;
Signed-off-by: Sasha Levin &lt;alexander.levin@verizon.com&gt;
</content>
</entry>
<entry>
<title>Input: elants_i2c - zero-extend hardware ID in firmware name</title>
<updated>2015-04-20T17:28:21Z</updated>
<author>
<name>Dmitry Torokhov</name>
<email>dmitry.torokhov@gmail.com</email>
</author>
<published>2015-04-18T03:42:47Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=8c0776a8f046d5fb1804e525c3b6e9f897fe0d3f'/>
<id>urn:sha1:8c0776a8f046d5fb1804e525c3b6e9f897fe0d3f</id>
<content type='text'>
Let's zero-extend hardware id number when forming firmware file name,
to avoid kernel requesting firmware like "elants_i2c_   0.bin", which
is quite unexpected.

Acked-by: Charlie Mooney&lt;charliemooney@chromium.org&gt;
Signed-off-by: Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt;
</content>
</entry>
<entry>
<title>Input: elants_i2c - append hw_version to FW file</title>
<updated>2015-03-11T17:24:18Z</updated>
<author>
<name>Charlie Mooney</name>
<email>charliemooney@chromium.org</email>
</author>
<published>2015-03-11T01:26:18Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=37dee1acdd587c09826888738d78649a2c529125'/>
<id>urn:sha1:37dee1acdd587c09826888738d78649a2c529125</id>
<content type='text'>
Currently the elants_i2c driver simply requests a static filename
/lib/firmware/elants_i2c.bin when it gets firmware updates.  This is a
problem if you have two Elan touchscreens using the same driver.  If both
touchscreens have different firmwares, you would need to move the files
around in your filesystem when you're updating them so that they don't get
updated with the other's FW.  If you have a read-only filesystem then this
is impossible, even.

This patch changes the elants_i2c driver to automatically append the
four-hex-digit hw_version of the device onto the name of the FW file it's
requesting for update.  Since different touchscreens should have a
different hw_version's this means the user needs to append the hw version
of the touchscreen he or she intends to update onto the end of the firmware
filename and then the driver will do the rest.

The firmware filenames it looks for now are of the form:

  elants_i2c_${HW_VERSION}.bin

  eg:

  elants_i2c_2a44.bin

Signed-off-by: Charlie Mooney &lt;charliemooney@chromium.org&gt;
Signed-off-by: Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt;
</content>
</entry>
<entry>
<title>Input: elants_i2c - remove unnecessary version.h inclusion</title>
<updated>2014-12-29T22:08:59Z</updated>
<author>
<name>Fabian Frederick</name>
<email>fabf@skynet.be</email>
</author>
<published>2014-12-29T18:32:24Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=f361a2febfdad7c91de75a69ca1855f170485604'/>
<id>urn:sha1:f361a2febfdad7c91de75a69ca1855f170485604</id>
<content type='text'>
Based on versioncheck.

Signed-off-by: Fabian Frederick &lt;fabf@skynet.be&gt;
Signed-off-by: Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt;
</content>
</entry>
<entry>
<title>Input: add support for Elan eKTH I2C touchscreens</title>
<updated>2014-12-08T07:09:23Z</updated>
<author>
<name>Scott Liu</name>
<email>scott.liu@emc.com.tw</email>
</author>
<published>2014-11-20T01:26:44Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=66aee90088da2f5fb73ba97ee8b5f4fda92e2b53'/>
<id>urn:sha1:66aee90088da2f5fb73ba97ee8b5f4fda92e2b53</id>
<content type='text'>
This driver supports Elan eKTH I2C touchscreen controllers. Note that these
are using custom protocol, as opposed to other Elan parts that use
HID-over-I2C and are supported by the standard HID-multitouch driver.

Signed-off-by: Scott Liu &lt;scott.liu@emc.com.tw&gt;
Signed-off-by: Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt;
</content>
</entry>
</feed>
