Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp2014722ybz; Sun, 26 Apr 2020 09:13:21 -0700 (PDT) X-Google-Smtp-Source: APiQypJiAu/hNSZoGAboKySSigym7/e2D42P/6VHmyAV0XfxPQ05UtkK014AYuHl2IdMw4eXZwAy X-Received: by 2002:aa7:cdd9:: with SMTP id h25mr16096706edw.17.1587917601432; Sun, 26 Apr 2020 09:13:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1587917601; cv=none; d=google.com; s=arc-20160816; b=V1Yf8DZxUv/OeH97tACsOm/LxO86FPGGqFsNmmOUzArDf5WQUCChPJPUKXSsBpwdT/ gbOiw/b6swLI5Phn1aR8suF0hVeYQfyJg7aYg8LE5y2K/YJ7khXLTzXV8VwuVix8oC2T 6JHOS0sU6n2xuAoPEyi9rl8xhW9zghIou8QMNh+50vtzApAKsWNovac2g1XXzAkXacM3 ziluU7A7q3WvXPAdW0AZ/JSZqt/YlKnZMdLkcJMLxCxuFszV9hPQvl+gOFjrKcCtjiOH z8LERn7TIRowYpzv4m3OC5yadMdThlT9+YvGG0fKsS7S/ZoHqHBbuheF1bIyeoqkSdhH VhtA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:content-transfer-encoding :mime-version:subject:from:references:in-reply-to:message-id:date :dkim-signature; bh=vmEY1sCpbS9X9Fsr3KB1wKjMd/e7VTOa8+WrtRzHiBw=; b=pHx+NIupY/S2vkFnukR2SDHL0D7tR3UQ+6Fb9NG1kG6qUKRYvfGgROJ4J8jNiFg6Hk si/2OZS6tlvYFku18DqbhjHLc5AqZWj1YUAPINZjqqZUv3ur49NQE2J2CpuQjkNIhx0I Pa2azP1LcOiWr+G8/fPUrWFJd9fj6CHoQzgj3LBTI5eFUO2oFxKDXdUgioC6RGNXXnvj GAyEBS5W+9TNpl0McuNqqO7u9WylLzaUiN7G33mVN3JBcoxk3k0pMxiJ8ikHYdRkTMId kyrXQVka6ZM6bLF3itbQCqRhsg35dT51d4LCKkunowBx0d7h6Oxs5Rb9hJWV7w19knwL 0Bow== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@rere.qmqm.pl header.s=1 header.b=CQYO9mfn; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id d11si6901254edo.105.2020.04.26.09.12.58; Sun, 26 Apr 2020 09:13:21 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@rere.qmqm.pl header.s=1 header.b=CQYO9mfn; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726338AbgDZQLV (ORCPT + 99 others); Sun, 26 Apr 2020 12:11:21 -0400 Received: from rere.qmqm.pl ([91.227.64.183]:37638 "EHLO rere.qmqm.pl" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726217AbgDZQLR (ORCPT ); Sun, 26 Apr 2020 12:11:17 -0400 Received: from remote.user (localhost [127.0.0.1]) by rere.qmqm.pl (Postfix) with ESMTPSA id 499CZW4BdVzDY; Sun, 26 Apr 2020 18:11:15 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=rere.qmqm.pl; s=1; t=1587917475; bh=3ZJYJwji4GFe5gxynVxKFtpPu5+djzYCZf9cg933BFY=; h=Date:In-Reply-To:References:From:Subject:To:Cc:From; b=CQYO9mfnSZdIzJMfsSGAMqVSbpFlkOkSFf064/4kfmea9/yXhVlTh1z4dRW5gYY+v FtYCtV7vqlYUfQQbNknEHIm/kY9KHyTEsxPxDMDvHQIui6PFLwJOAXRH6r4l1jJDk0 KfNb0LsdD8X80xxNSPMj7qDIdX+a4y3rO7amc3+myKjphGRKVrgJCb45sVtleW+ejh Jp4vZTdUiM0Cxk1Wv47fZc5Vxg0KoTVqQFKf8y112iAXQJenM9uFfSaA6KTBt7kXyx FqWa/bgsOO3U/ThcD8dzVKH/wX3aVJxLmazuJ/9YecFuvx/ZkTXibzY99x+CFHnN5K rzLPicUDpgMOQ== X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.102.2 at mail Date: Sun, 26 Apr 2020 18:11:14 +0200 Message-Id: <38acf072e94d6f7fa9066495c2479bb35bfa42d1.1587916846.git.mirq-linux@rere.qmqm.pl> In-Reply-To: References: From: =?UTF-8?q?Micha=C5=82=20Miros=C5=82aw?= Subject: [PATCH v4 07/10] input: elants: support 0x66 reply opcode for reporting touches MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit To: David Heidelberg , Dmitry Osipenko , Dmitry Torokhov , Henrik Rydberg , James Chen , Johnny Chuang , Rob Herring , Scott Liu Cc: linux-input@vger.kernel.org, linux-kernel@vger.kernel.org Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Dmitry Osipenko eKTF3624 touchscreen firmware uses two variants of the reply opcodes for reporting touch events: one is 0x63 (used by older firmware) and other is 0x66 (used by newer firmware). The 0x66 variant is equal to 0x63 of eKTH3500, while 0x63 needs small adjustment of the touch pressure value. Nexus 7 tablet device has eKTF3624 touchscreen and it uses 0x66 opcode for reporting touch events, let's support it now. Other devices, eg. ASUS TF300T, use 0x63. Note: CMD_HEADER_REK is used for replying to calibration requests, it has the same 0x66 opcode number which eKTF3624 uses for reporting touches. The calibration replies are handled separately from the the rest of the commands in the driver by entering into ELAN_WAIT_RECALIBRATION state and thus this change shouldn't change the old behavior. Signed-off-by: Dmitry Osipenko Tested-by: Michał Mirosław Signed-off-by: Michał Mirosław --- drivers/input/touchscreen/elants_i2c.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/drivers/input/touchscreen/elants_i2c.c b/drivers/input/touchscreen/elants_i2c.c index 34d5c1fb5bea..ece14cb39d63 100644 --- a/drivers/input/touchscreen/elants_i2c.c +++ b/drivers/input/touchscreen/elants_i2c.c @@ -60,6 +60,15 @@ #define QUEUE_HEADER_NORMAL 0X63 #define QUEUE_HEADER_WAIT 0x64 +/* + * Depending on firmware version, eKTF3624 touchscreens may utilize one of + * these opcodes for the touch events: 0x63 and 0x66. The 0x63 is used by + * older firmware version and differs from 0x66 such that touch pressure + * value needs to be adjusted. The 0x66 opcode of newer firmware is equal + * to 0x63 of eKTH3500. + */ +#define QUEUE_HEADER_NORMAL2 0x66 + /* Command header definition */ #define CMD_HEADER_WRITE 0x54 #define CMD_HEADER_READ 0x53 @@ -1050,7 +1059,6 @@ static irqreturn_t elants_i2c_irq(int irq, void *_dev) switch (ts->buf[FW_HDR_TYPE]) { case CMD_HEADER_HELLO: case CMD_HEADER_RESP: - case CMD_HEADER_REK: break; case QUEUE_HEADER_WAIT: @@ -1070,6 +1078,7 @@ static irqreturn_t elants_i2c_irq(int irq, void *_dev) break; case QUEUE_HEADER_NORMAL: + case QUEUE_HEADER_NORMAL2: report_count = ts->buf[FW_HDR_COUNT]; if (report_count == 0 || report_count > 3) { dev_err(&client->dev, -- 2.20.1