From patchwork Wed Oct 7 12:21:41 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Franklin Cooper X-Patchwork-Id: 7344831 Return-Path: X-Original-To: patchwork-linux-input@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 5249C9F302 for ; Wed, 7 Oct 2015 12:24:10 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 72E412072B for ; Wed, 7 Oct 2015 12:24:09 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 8B8E9205CB for ; Wed, 7 Oct 2015 12:24:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753853AbbJGMWl (ORCPT ); Wed, 7 Oct 2015 08:22:41 -0400 Received: from mail-oi0-f66.google.com ([209.85.218.66]:33664 "EHLO mail-oi0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753565AbbJGMWN (ORCPT ); Wed, 7 Oct 2015 08:22:13 -0400 Received: by oiev17 with SMTP id v17so844831oie.0; Wed, 07 Oct 2015 05:22:13 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=from:to:subject:date:message-id:in-reply-to:references; bh=aC05NWjk+1tn0wCshkCLOddwd30ryRoCxztYlpvkIls=; b=a7Y9B8XUzBH1QKGz3lmicnnHKEK1vKDx2ddPt9uOFkj/n6uvIpAnB4/rfwsrGVjGxe +7hRHGoFjakK21RmmYF01/dcMiW9MpLZrDv6Td2+qj2xbn/8Aq/YwpsUPPXxzMpvNrlI zyj//CPsJGvQKWO4tly3yEu48Pwal2FcDlWL1fOsI70WirvF92NU68oXhBlKTqxvxGnz 8fHxGPg8QQYJAg1eQ0zXDUXbk9dyTAGlrLWED8r10thti6MDZLNMgfi39TduffFz5vsD KgihPN/oStVXLDGrSoHD9vvt1XVQOI5BIky/OE0/0XtOUwz4uYRQH6e+YjXJVfr3GPbs KbbA== X-Received: by 10.202.177.9 with SMTP id a9mr423631oif.16.1444220533177; Wed, 07 Oct 2015 05:22:13 -0700 (PDT) Received: from localhost.localdomain (pool-71-97-41-79.dllstx.fios.verizon.net. [71.97.41.79]) by smtp.gmail.com with ESMTPSA id k5sm16407235oev.16.2015.10.07.05.22.12 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 07 Oct 2015 05:22:12 -0700 (PDT) From: fcooper@ti.com To: dmitry.torokhov@gmail.com, linux-input@vger.kernel.org, linux-kernel@vger.kernel.org, fcooper@ti.com, maxime.ripard@free-electrons.com, LW@KARO-electronics.de, jg1.han@samsung.com, asaf.vertz@tandemg.com Subject: [RFC 4/4] Input: edt-ft5x06 - Work around FT5506 firmware bug Date: Wed, 7 Oct 2015 07:21:41 -0500 Message-Id: <1444220501-23623-5-git-send-email-fcooper@ti.com> X-Mailer: git-send-email 2.6.1 In-Reply-To: <1444220501-23623-1-git-send-email-fcooper@ti.com> References: <1444220501-23623-1-git-send-email-fcooper@ti.com> Sender: linux-input-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-input@vger.kernel.org X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, T_RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Franklin S Cooper Jr In the touchscreen controller ISR, reading the tsc starting from register 0x2 causes the tsc to infrequently update the detected finger's x and y coordinate. The irq pin toggles at a fast rate to indicate touch events are happening. However, the tsc on average updates the touch point's x and y value every ~100 ms which is much slower than the advertised rate of 100+ Hz. This leads to multiple reads within this ~100 ms time window returning the same value. Example: X: 10 , Y: 30 X: 10 , Y: 30 X: 10, Y: 30 .. // After 100 ms X: 300, Y: 300 X: 300, y: 300 .. // After 100 ms X: 1743, Y: 621 X: 1743, Y: 621 For some reason if instead of starting to read at register 0x2 you start reading at register 0x0 this issue isn't seen. This seems like a quirk only seen in the EDT FT5506 so to fix this issue simply adjust the code to start reading from 0x0. Technically this isn't wrong so no regressions should be seen with other touchscreen controllers supported by this driver. Signed-off-by: Franklin S Cooper Jr --- drivers/input/touchscreen/edt-ft5x06.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/input/touchscreen/edt-ft5x06.c b/drivers/input/touchscreen/edt-ft5x06.c index 752da69..b3ed631 100644 --- a/drivers/input/touchscreen/edt-ft5x06.c +++ b/drivers/input/touchscreen/edt-ft5x06.c @@ -172,7 +172,7 @@ static irqreturn_t edt_ft5x06_ts_isr(int irq, void *dev_id) struct edt_ft5x06_ts_data *tsdata = dev_id; struct device *dev = &tsdata->client->dev; u8 cmd; - u8 rdbuf[59]; + u8 rdbuf[61]; int i, type, x, y, id; int offset, tplen, datalen; int error; @@ -188,8 +188,8 @@ static irqreturn_t edt_ft5x06_ts_isr(int irq, void *dev_id) break; case M09: - cmd = 0x02; - offset = 1; + cmd = 0x0; + offset = 3; tplen = 6; datalen = tplen * tsdata->max_support_points - cmd + 1; break;