All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	stable@vger.kernel.org, Ulrik De Bie <ulrik.debie-os@e2big.org>,
	Dmitry Torokhov <dmitry.torokhov@gmail.com>
Subject: [PATCH 3.10 26/65] Input: elantech - fix absolute mode setting on some ASUS laptops
Date: Sat,  2 May 2015 21:03:56 +0200	[thread overview]
Message-ID: <20150502190116.531715671@linuxfoundation.org> (raw)
In-Reply-To: <20150502190114.555225285@linuxfoundation.org>

3.10-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Ulrik De Bie <ulrik.debie-os@e2big.org>

commit bd884149aca61de269fd9bad83fe2a4232ffab21 upstream.

On ASUS TP500LN and X750JN, the touchpad absolute mode is reset each
time set_rate is done.

In order to fix this, we will verify the firmware version, and if it
matches the one in those laptops, the set_rate function is overloaded
with a function elantech_set_rate_restore_reg_07 that performs the
set_rate with the original function, followed by a restore of reg_07
(the register that sets the absolute mode on elantech v4 hardware).

Also the ASUS TP500LN and X750JN firmware version, capabilities, and
button constellation is added to elantech.c

Reported-and-tested-by: George Moutsopoulos <gmoutso@yahoo.co.uk>
Signed-off-by: Ulrik De Bie <ulrik.debie-os@e2big.org>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/input/mouse/elantech.c |   22 ++++++++++++++++++++++
 drivers/input/mouse/elantech.h |    1 +
 2 files changed, 23 insertions(+)

--- a/drivers/input/mouse/elantech.c
+++ b/drivers/input/mouse/elantech.c
@@ -784,6 +784,21 @@ static psmouse_ret_t elantech_process_by
 }
 
 /*
+ * This writes the reg_07 value again to the hardware at the end of every
+ * set_rate call because the register loses its value. reg_07 allows setting
+ * absolute mode on v4 hardware
+ */
+static void elantech_set_rate_restore_reg_07(struct psmouse *psmouse,
+		unsigned int rate)
+{
+	struct elantech_data *etd = psmouse->private;
+
+	etd->original_set_rate(psmouse, rate);
+	if (elantech_write_reg(psmouse, 0x07, etd->reg_07))
+		psmouse_err(psmouse, "restoring reg_07 failed\n");
+}
+
+/*
  * Put the touchpad into absolute mode
  */
 static int elantech_set_absolute_mode(struct psmouse *psmouse)
@@ -985,6 +1000,8 @@ static int elantech_get_resolution_v4(st
  * Asus K53SV              0x450f01        78, 15, 0c      2 hw buttons
  * Asus G46VW              0x460f02        00, 18, 0c      2 hw buttons
  * Asus G750JX             0x360f00        00, 16, 0c      2 hw buttons
+ * Asus TP500LN            0x381f17        10, 14, 0e      clickpad
+ * Asus X750JN             0x381f17        10, 14, 0e      clickpad
  * Asus UX31               0x361f00        20, 15, 0e      clickpad
  * Asus UX32VD             0x361f02        00, 15, 0e      clickpad
  * Avatar AVIU-145A2       0x361f00        ?               clickpad
@@ -1452,6 +1469,11 @@ int elantech_init(struct psmouse *psmous
 		goto init_fail;
 	}
 
+	if (etd->fw_version == 0x381f17) {
+		etd->original_set_rate = psmouse->set_rate;
+		psmouse->set_rate = elantech_set_rate_restore_reg_07;
+	}
+
 	if (elantech_set_input_params(psmouse)) {
 		psmouse_err(psmouse, "failed to query touchpad range.\n");
 		goto init_fail;
--- a/drivers/input/mouse/elantech.h
+++ b/drivers/input/mouse/elantech.h
@@ -138,6 +138,7 @@ struct elantech_data {
 	struct finger_pos mt[ETP_MAX_FINGERS];
 	unsigned char parity[256];
 	int (*send_cmd)(struct psmouse *psmouse, unsigned char c, unsigned char *param);
+	void (*original_set_rate)(struct psmouse *psmouse, unsigned int rate);
 };
 
 #ifdef CONFIG_MOUSE_PS2_ELANTECH



  parent reply	other threads:[~2015-05-02 19:49 UTC|newest]

Thread overview: 87+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-02 19:03 [PATCH 3.10 00/65] 3.10.77-stable review Greg Kroah-Hartman
2015-05-02 19:03 ` [PATCH 3.10 01/65] ip_forward: Drop frames with attached skb->sk Greg Kroah-Hartman
2015-05-02 19:03 ` [PATCH 3.10 02/65] tcp: fix possible deadlock in tcp_send_fin() Greg Kroah-Hartman
2015-05-02 19:03 ` [PATCH 3.10 03/65] tcp: avoid looping " Greg Kroah-Hartman
2015-05-02 19:03 ` [PATCH 3.10 04/65] Btrfs: fix log tree corruption when fs mounted with -o discard Greg Kroah-Hartman
2015-05-02 19:03 ` [PATCH 3.10 05/65] Btrfs: fix inode eviction infinite loop after cloning into it Greg Kroah-Hartman
2015-05-02 19:03 ` [PATCH 3.10 06/65] sched/idle/x86: Restore mwait_idle() to fix boot hangs, to improve power savings and to improve performance Greg Kroah-Hartman
2015-05-02 19:03 ` [PATCH 3.10 07/65] usb: gadget: composite: enable BESL support Greg Kroah-Hartman
2015-05-02 19:03 ` [PATCH 3.10 08/65] KVM: s390: Zero out current VMDB of STSI before including level3 data Greg Kroah-Hartman
2015-05-02 19:03 ` [PATCH 3.10 09/65] s390/hibernate: fix save and restore of kernel text section Greg Kroah-Hartman
2015-05-02 19:03 ` [PATCH 3.10 11/65] MIPS: Hibernate: flush TLB entries earlier Greg Kroah-Hartman
2015-05-02 19:03 ` [PATCH 3.10 12/65] cdc-wdm: fix endianness bug in debug statements Greg Kroah-Hartman
2015-05-02 19:03 ` [PATCH 3.10 13/65] spi: spidev: fix possible arithmetic overflow for multi-transfer message Greg Kroah-Hartman
2015-05-02 19:03 ` [PATCH 3.10 14/65] ring-buffer: Replace this_cpu_*() with __this_cpu_*() Greg Kroah-Hartman
2015-05-02 19:03 ` [PATCH 3.10 15/65] power_supply: lp8788-charger: Fix leaked power supply on probe fail Greg Kroah-Hartman
2015-05-02 19:03 ` [PATCH 3.10 16/65] ARM: 8320/1: fix integer overflow in ELF_ET_DYN_BASE Greg Kroah-Hartman
2015-05-02 19:03 ` [PATCH 3.10 17/65] ARM: S3C64XX: Use fixed IRQ bases to avoid conflicts on Cragganmore Greg Kroah-Hartman
2015-05-02 19:03 ` [PATCH 3.10 18/65] usb: phy: Find the right match in devm_usb_phy_match Greg Kroah-Hartman
2015-05-02 19:03 ` [PATCH 3.10 19/65] usb: define a generic USB_RESUME_TIMEOUT macro Greg Kroah-Hartman
2015-05-02 19:03 ` [PATCH 3.10 20/65] usb: host: r8a66597: use new USB_RESUME_TIMEOUT Greg Kroah-Hartman
2015-05-02 19:03 ` [PATCH 3.10 21/65] usb: host: isp116x: " Greg Kroah-Hartman
2015-05-02 19:03 ` [PATCH 3.10 22/65] usb: host: xhci: " Greg Kroah-Hartman
2015-05-02 19:03 ` [PATCH 3.10 23/65] usb: host: sl811: " Greg Kroah-Hartman
2015-05-02 19:03 ` [PATCH 3.10 24/65] usb: core: hub: " Greg Kroah-Hartman
2015-05-02 19:03 ` [PATCH 3.10 25/65] ALSA: emu10k1: dont deadlock in proc-functions Greg Kroah-Hartman
2015-05-02 19:03 ` Greg Kroah-Hartman [this message]
2015-05-02 19:03 ` [PATCH 3.10 27/65] fs/binfmt_elf.c: fix bug in loading of PIE binaries Greg Kroah-Hartman
2015-05-02 19:03 ` [PATCH 3.10 28/65] ptrace: fix race between ptrace_resume() and wait_task_stopped() Greg Kroah-Hartman
2015-05-02 19:03 ` [PATCH 3.10 29/65] rtlwifi: rtl8192cu: Add new USB ID Greg Kroah-Hartman
2015-05-02 19:04 ` [PATCH 3.10 30/65] rtlwifi: rtl8192cu: Add new device ID Greg Kroah-Hartman
2015-05-02 19:04 ` [PATCH 3.10 31/65] parport: disable PC-style parallel port support on cris Greg Kroah-Hartman
2015-05-02 19:04 ` [PATCH 3.10 32/65] drivers: parport: Kconfig: exclude h8300 for PARPORT_PC Greg Kroah-Hartman
2015-05-02 19:04 ` [PATCH 3.10 33/65] console: Disable VGA text console support on cris Greg Kroah-Hartman
2015-05-02 19:04 ` [PATCH 3.10 34/65] video: vgacon: Dont build on arm64 Greg Kroah-Hartman
2015-05-02 19:04 ` [PATCH 3.10 35/65] arm64: kernel: compiling issue, need delete read_current_timer() Greg Kroah-Hartman
2015-05-02 19:04 ` [PATCH 3.10 36/65] ext4: make fsync to sync parent dir in no-journal for real this time Greg Kroah-Hartman
2015-05-02 19:04 ` [PATCH 3.10 37/65] powerpc/perf: Cap 64bit userspace backtraces to PERF_MAX_STACK_DEPTH Greg Kroah-Hartman
2015-05-02 19:04 ` [PATCH 3.10 38/65] tools/power turbostat: Use $(CURDIR) instead of $(PWD) and add support for O= option in Makefile Greg Kroah-Hartman
2015-05-02 19:04 ` [PATCH 3.10 39/65] UBI: account for bitflips in both the VID header and data Greg Kroah-Hartman
2015-05-02 19:04 ` [PATCH 3.10 40/65] UBI: fix out of bounds write Greg Kroah-Hartman
2015-05-02 19:04 ` [PATCH 3.10 41/65] UBI: initialize LEB number variable Greg Kroah-Hartman
2015-05-02 19:04 ` [PATCH 3.10 42/65] UBI: fix check for "too many bytes" Greg Kroah-Hartman
2015-05-02 19:04 ` [PATCH 3.10 43/65] scsi: storvsc: Fix a bug in copy_from_bounce_buffer() Greg Kroah-Hartman
2015-05-02 19:04 ` [PATCH 3.10 44/65] drivers: parport: Kconfig: exclude arm64 for PARPORT_PC Greg Kroah-Hartman
2015-05-02 19:04 ` [PATCH 3.10 45/65] ACPICA: Utilities: split IO address types from data type models Greg Kroah-Hartman
2015-05-02 19:04 ` [PATCH 3.10 46/65] xtensa: xtfpga: fix hardware lockup caused by LCD driver Greg Kroah-Hartman
2015-05-02 19:04 ` [PATCH 3.10 47/65] xtensa: provide __NR_sync_file_range2 instead of __NR_sync_file_range Greg Kroah-Hartman
2015-05-02 19:04 ` [PATCH 3.10 48/65] gpio: mvebu: Fix mask/unmask managment per irq chip type Greg Kroah-Hartman
2015-05-03  8:20   ` Christoph Biedl
2015-05-04 21:41     ` Greg Kroah-Hartman
2015-05-06 18:06       ` Christoph Biedl
2015-05-02 19:04 ` [PATCH 3.10 49/65] Drivers: hv: vmbus: Fix a bug in the error path in vmbus_open() Greg Kroah-Hartman
2015-05-02 19:04 ` [PATCH 3.10 50/65] mvsas: fix panic on expander attached SATA devices Greg Kroah-Hartman
2015-05-02 19:04 ` [PATCH 3.10 51/65] [media] stk1160: Make sure current buffer is released Greg Kroah-Hartman
2015-05-02 19:04 ` [PATCH 3.10 52/65] IB/core: disallow registering 0-sized memory region Greg Kroah-Hartman
2015-05-02 19:04 ` [PATCH 3.10 53/65] IB/core: dont disallow registering region starting at 0x0 Greg Kroah-Hartman
2015-05-02 19:04 ` [PATCH 3.10 54/65] IB/mlx4: Fix WQE LSO segment calculation Greg Kroah-Hartman
2015-05-02 19:04 ` [PATCH 3.10 55/65] tracing: Handle ftrace_dump() atomic context in graph_trace_open() Greg Kroah-Hartman
2015-05-02 19:04 ` [PATCH 3.10 56/65] i2c: core: Export bus recovery functions Greg Kroah-Hartman
2015-05-02 19:04 ` [PATCH 3.10 57/65] drm/radeon: fix doublescan modes (v2) Greg Kroah-Hartman
2015-05-02 19:04 ` [PATCH 3.10 58/65] drm/i915: cope with large i2c transfers Greg Kroah-Hartman
2015-05-02 19:04 ` [PATCH 3.10 59/65] RCU pathwalk breakage when running into a symlink overmounting something Greg Kroah-Hartman
2015-05-02 19:04 ` [PATCH 3.10 60/65] ksoftirqd: Enable IRQs and call cond_resched() before poking RCU Greg Kroah-Hartman
2015-05-02 19:04 ` [PATCH 3.10 61/65] e1000: add dummy allocator to fix race condition between mtu change and netpoll Greg Kroah-Hartman
2015-05-02 19:04 ` [PATCH 3.10 62/65] lib: memzero_explicit: use barrier instead of OPTIMIZER_HIDE_VAR Greg Kroah-Hartman
2015-05-02 19:04 ` [PATCH 3.10 63/65] wl18xx: show rx_frames_per_rates as an array as it really is Greg Kroah-Hartman
2015-05-02 19:04 ` [PATCH 3.10 64/65] C6x: time: Ensure consistency in __init Greg Kroah-Hartman
2015-05-02 19:04 ` [PATCH 3.10 65/65] memstick: mspro_block: add missing curly braces Greg Kroah-Hartman
2015-05-03 19:49 ` [PATCH 3.10 00/65] 3.10.77-stable review Guenter Roeck
2015-05-04  4:40   ` Guenter Roeck
2015-05-04  8:09     ` Heiko Carstens
2015-05-04  9:54       ` Jiri Slaby
2015-05-04 10:40         ` Heiko Carstens
2015-05-04 21:38           ` Greg Kroah-Hartman
2015-05-04 18:51       ` Guenter Roeck
2015-05-05  4:42     ` Guenter Roeck
2015-05-05 21:59       ` Greg Kroah-Hartman
2015-05-05 22:01       ` Patch "s390: Fix build error" has been added to the 3.10-stable tree gregkh
2015-05-04 21:40   ` [PATCH 3.10 00/65] 3.10.77-stable review Greg Kroah-Hartman
2015-05-04 16:16 ` Shuah Khan
2015-05-04 21:42   ` Greg Kroah-Hartman
2015-05-04 22:13 ` Shuah Khan
2015-05-04 22:24   ` Guenter Roeck
2015-05-05 21:58   ` Greg Kroah-Hartman
2015-05-05 22:05 ` Greg Kroah-Hartman
2015-05-06  3:31   ` Guenter Roeck
2015-05-06 16:01   ` Shuah Khan

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=20150502190116.531715671@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=dmitry.torokhov@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=ulrik.debie-os@e2big.org \
    /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.