From nobody Tue Feb 10 23:53:29 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1C373C7619A for ; Sun, 2 Apr 2023 20:10:29 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229915AbjDBUKY (ORCPT ); Sun, 2 Apr 2023 16:10:24 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45330 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230204AbjDBUKS (ORCPT ); Sun, 2 Apr 2023 16:10:18 -0400 Received: from mail-ed1-x533.google.com (mail-ed1-x533.google.com [IPv6:2a00:1450:4864:20::533]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 006EF3586 for ; Sun, 2 Apr 2023 13:10:14 -0700 (PDT) Received: by mail-ed1-x533.google.com with SMTP id ek18so109540218edb.6 for ; Sun, 02 Apr 2023 13:10:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; t=1680466213; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=EnxQcOPVYR7k4CaWywjABG48rhsOcDbUEyAkzN67jW8=; b=HXrO6Iv+msAIRLMyfiiOA5kgnymy+5OPmnzyNvz5T3phIb7inN94B5NfeW3invv5Dx 14lRxTM1SCca26QYwaWBT99TfFbtx9iyQiOAlcGFnCOpXRmslcYN5GGQ1A13GC/hn3Nm fFlREChISwZ8TLwKbA7sFpOHXKz912jL1kw1E= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680466213; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=EnxQcOPVYR7k4CaWywjABG48rhsOcDbUEyAkzN67jW8=; b=8QTRhhvajOkmkSrkE+fuBYWgINBqmRj+Rn+LYEr6MmaNxY7eZppEaQ6TrnDgy/OnVa mZREMxtSdBhPI2p1IqWYLWIk/qo14gPz7B1ca7V0fo/YtzsBWfT8T2RkGcQ9kC8nogr6 IdUXFq7VZcGbbLpdTA48lXS+aA9DMcMCkhjwpDC8P8iCl+3oyIalrVA1AmQUCL8uHvnB VRTNYJp8Ix9K/roEf45jk2xDvUp5nMgUtitjI3VLtxiI+PcUc8DEjQQltBib0cjuDMZS qkXll3djWOJmorp/+zmHm4gCIP94Wploc0YchxXR48Z0v5d3Ru2rT4iasnvDA0GG4Zqc iePw== X-Gm-Message-State: AAQBX9eE8xOkXlzL02MDQvYFqzHw6x3xXZhp8PkU3aIBBLPBVEv920LY XiJ0kN9UEFfeepliz/XZn0jgcN5WG34KId3dnBM= X-Google-Smtp-Source: AKy350aF3K6mdvb0KQu5hX2QaXeyFNvhkq14byiQ89idii4MKdAdLF74v35B/POymS0/8Fc3+a8LeA== X-Received: by 2002:a17:907:3e1a:b0:932:853c:c958 with SMTP id hp26-20020a1709073e1a00b00932853cc958mr41589723ejc.25.1680466213180; Sun, 02 Apr 2023 13:10:13 -0700 (PDT) Received: from dario-ThinkPad-T14s-Gen-2i.homenet.telecomitalia.it (host-95-248-31-153.retail.telecomitalia.it. [95.248.31.153]) by smtp.gmail.com with ESMTPSA id gl18-20020a170906e0d200b00924d38bbdc0sm3553127ejb.105.2023.04.02.13.10.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 02 Apr 2023 13:10:12 -0700 (PDT) From: Dario Binacchi To: linux-kernel@vger.kernel.org Cc: michael@amarulasolutions.com, linux-amarula@amarulasolutions.com, Dario Binacchi , Dmitry Torokhov , Jonathan Cameron , Oliver Graute , =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= , Wolfram Sang , linux-input@vger.kernel.org Subject: [PATCH 1/9] Input: edt-ft5x06 - fix indentation Date: Sun, 2 Apr 2023 22:09:43 +0200 Message-Id: <20230402200951.1032513-2-dario.binacchi@amarulasolutions.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20230402200951.1032513-1-dario.binacchi@amarulasolutions.com> References: <20230402200951.1032513-1-dario.binacchi@amarulasolutions.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Matches the alignment to the open parenthesis as suggested by checkpatch. Signed-off-by: Dario Binacchi --- drivers/input/touchscreen/edt-ft5x06.c | 36 ++++++++++++++------------ 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/drivers/input/touchscreen/edt-ft5x06.c b/drivers/input/touchsc= reen/edt-ft5x06.c index 2746649561c7..daba6472fc65 100644 --- a/drivers/input/touchscreen/edt-ft5x06.c +++ b/drivers/input/touchscreen/edt-ft5x06.c @@ -241,11 +241,11 @@ static irqreturn_t edt_ft5x06_ts_isr(int irq, void *d= ev_id) /* M09/M12 does not send header or CRC */ if (tsdata->version =3D=3D EDT_M06) { if (rdbuf[0] !=3D 0xaa || rdbuf[1] !=3D 0xaa || - rdbuf[2] !=3D datalen) { + rdbuf[2] !=3D datalen) { tsdata->header_errors++; dev_err_ratelimited(dev, - "Unexpected header: %02x%02x%02x!\n", - rdbuf[0], rdbuf[1], rdbuf[2]); + "Unexpected header: %02x%02x%02x!\n", + rdbuf[0], rdbuf[1], rdbuf[2]); goto out; } =20 @@ -618,7 +618,7 @@ static void edt_ft5x06_restore_reg_parameters(struct ed= t_ft5x06_ts_data *tsdata) tsdata->offset_y); if (reg_addr->reg_report_rate !=3D NO_REGISTER) edt_ft5x06_register_write(tsdata, reg_addr->reg_report_rate, - tsdata->report_rate); + tsdata->report_rate); =20 } =20 @@ -757,7 +757,8 @@ DEFINE_SIMPLE_ATTRIBUTE(debugfs_mode_fops, edt_ft5x06_d= ebugfs_mode_get, edt_ft5x06_debugfs_mode_set, "%llu\n"); =20 static ssize_t edt_ft5x06_debugfs_raw_data_read(struct file *file, - char __user *buf, size_t count, loff_t *off) + char __user *buf, size_t count, + loff_t *off) { struct edt_ft5x06_ts_data *tsdata =3D file->private_data; struct i2c_client *client =3D tsdata->client; @@ -965,12 +966,12 @@ static int edt_ft5x06_ts_identify(struct i2c_client *= client, case 0x70: /* EDT EP0700M09 */ tsdata->version =3D EDT_M09; snprintf(model_name, EDT_NAME_LEN, "EP0%i%i0M09", - rdbuf[0] >> 4, rdbuf[0] & 0x0F); + rdbuf[0] >> 4, rdbuf[0] & 0x0F); break; case 0xa1: /* EDT EP1010ML00 */ tsdata->version =3D EDT_M09; snprintf(model_name, EDT_NAME_LEN, "EP%i%i0ML00", - rdbuf[0] >> 4, rdbuf[0] & 0x0F); + rdbuf[0] >> 4, rdbuf[0] & 0x0F); break; case 0x5a: /* Solomon Goldentek Display */ snprintf(model_name, EDT_NAME_LEN, "GKTW50SCED1R0"); @@ -1051,14 +1052,17 @@ static void edt_ft5x06_ts_get_parameters(struct edt= _ft5x06_ts_data *tsdata) tsdata->offset =3D edt_ft5x06_register_read(tsdata, reg_addr->reg_offset); if (reg_addr->reg_offset_x !=3D NO_REGISTER) - tsdata->offset_x =3D edt_ft5x06_register_read(tsdata, - reg_addr->reg_offset_x); + tsdata->offset_x =3D + edt_ft5x06_register_read(tsdata, + reg_addr->reg_offset_x); if (reg_addr->reg_offset_y !=3D NO_REGISTER) - tsdata->offset_y =3D edt_ft5x06_register_read(tsdata, - reg_addr->reg_offset_y); + tsdata->offset_y =3D + edt_ft5x06_register_read(tsdata, + reg_addr->reg_offset_y); if (reg_addr->reg_report_rate !=3D NO_REGISTER) - tsdata->report_rate =3D edt_ft5x06_register_read(tsdata, - reg_addr->reg_report_rate); + tsdata->report_rate =3D + edt_ft5x06_register_read(tsdata, + reg_addr->reg_report_rate); tsdata->num_x =3D EDT_DEFAULT_NUM_X; if (reg_addr->reg_num_x !=3D NO_REGISTER) tsdata->num_x =3D edt_ft5x06_register_read(tsdata, @@ -1306,7 +1310,7 @@ static int edt_ft5x06_ts_probe(struct i2c_client *cli= ent) touchscreen_parse_properties(input, true, &tsdata->prop); =20 error =3D input_mt_init_slots(input, tsdata->max_support_points, - INPUT_MT_DIRECT); + INPUT_MT_DIRECT); if (error) { dev_err(&client->dev, "Unable to init MT slots.\n"); return error; @@ -1320,8 +1324,8 @@ static int edt_ft5x06_ts_probe(struct i2c_client *cli= ent) irq_flags |=3D IRQF_ONESHOT; =20 error =3D devm_request_threaded_irq(&client->dev, client->irq, - NULL, edt_ft5x06_ts_isr, irq_flags, - client->name, tsdata); + NULL, edt_ft5x06_ts_isr, irq_flags, + client->name, tsdata); if (error) { dev_err(&client->dev, "Unable to request touchscreen IRQ.\n"); return error; --=20 2.32.0 From nobody Tue Feb 10 23:53:29 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 09296C77B60 for ; Sun, 2 Apr 2023 20:10:29 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230350AbjDBUK0 (ORCPT ); Sun, 2 Apr 2023 16:10:26 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45334 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230225AbjDBUKS (ORCPT ); Sun, 2 Apr 2023 16:10:18 -0400 Received: from mail-ed1-x52e.google.com (mail-ed1-x52e.google.com [IPv6:2a00:1450:4864:20::52e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AC7DDB775 for ; Sun, 2 Apr 2023 13:10:16 -0700 (PDT) Received: by mail-ed1-x52e.google.com with SMTP id ew6so109436633edb.7 for ; Sun, 02 Apr 2023 13:10:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; t=1680466214; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=OecrPdtGTbWbu5zwStTncNRELXl4OL8K+L0SCeXpYlI=; b=IWyNDbBWPyhtOqz8w1hZS0whZFFehIBz6EVGbTlKctZ3l9DL+8vSUPor1AUY+m6oG8 b/Mw/jix25vP9jJMu+eIiJZsBsGP6UHRMzfMQ92/40AFJuQQ5KFt96JXWnE2KeNT0SY3 7th7lOBc8od3ECnjY7Gk4inGTQMP8NEZEmic4= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680466214; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=OecrPdtGTbWbu5zwStTncNRELXl4OL8K+L0SCeXpYlI=; b=KrT5p9PZfBtWSRcUr/jmWd0/qZvlxOMMr1dgkWnPhGFSRjajeqasKfa3s6I9TNpi00 XL9ftGFQ8RzNNDuGrexup+M3a15w9VgIa0BJdRgS7LthwXLaSBuPnC6UwwJrm4r6GtMY xNJnFr2F88Q2JVU78OJGE6GvMCmAvk0N5haszgbBShN6rVc3oBRYEubkQzfneggo6VJN +Kh3dIatYDNB7ch4Cf3xgzQLRn872K5al2DBa7fMPnbX9qt6DbD+hoye8UDt76HKF4mQ SFkJFCgqSB6MN8xVSo/d0UL/XtuUWIUJMqV634M9SkNeQzI7T3lxLnE1rPPwXF3W1qcp tWrQ== X-Gm-Message-State: AAQBX9eJLE4s5e+2I+brs9WThs13+2lrSb0g8+WRPjuTn1aao/T5OiZR s7Vnl0arRYzEOfJhdfkStz5QHrINb2kuPpHJOek= X-Google-Smtp-Source: AKy350bXjwi8Ug83mrB+ve0vY0+BiB4dOMxb2JHLqg3/D5cFI8Xz+d6iFtltA5OVJwXX4cIFy+vEZA== X-Received: by 2002:a17:906:ac1:b0:92d:9767:8e0a with SMTP id z1-20020a1709060ac100b0092d97678e0amr29588752ejf.13.1680466214662; Sun, 02 Apr 2023 13:10:14 -0700 (PDT) Received: from dario-ThinkPad-T14s-Gen-2i.homenet.telecomitalia.it (host-95-248-31-153.retail.telecomitalia.it. [95.248.31.153]) by smtp.gmail.com with ESMTPSA id gl18-20020a170906e0d200b00924d38bbdc0sm3553127ejb.105.2023.04.02.13.10.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 02 Apr 2023 13:10:14 -0700 (PDT) From: Dario Binacchi To: linux-kernel@vger.kernel.org Cc: michael@amarulasolutions.com, linux-amarula@amarulasolutions.com, Dario Binacchi , Dmitry Torokhov , Jonathan Cameron , Oliver Graute , =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= , Wolfram Sang , linux-input@vger.kernel.org Subject: [PATCH 2/9] Input: edt-ft5x06 - remove unnecessary blank lines Date: Sun, 2 Apr 2023 22:09:44 +0200 Message-Id: <20230402200951.1032513-3-dario.binacchi@amarulasolutions.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20230402200951.1032513-1-dario.binacchi@amarulasolutions.com> References: <20230402200951.1032513-1-dario.binacchi@amarulasolutions.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" It removes unnecessary blank lines so that checkpatch doesn't complain anymore. Signed-off-by: Dario Binacchi --- drivers/input/touchscreen/edt-ft5x06.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/input/touchscreen/edt-ft5x06.c b/drivers/input/touchsc= reen/edt-ft5x06.c index daba6472fc65..c0ad3e4b6662 100644 --- a/drivers/input/touchscreen/edt-ft5x06.c +++ b/drivers/input/touchscreen/edt-ft5x06.c @@ -619,7 +619,6 @@ static void edt_ft5x06_restore_reg_parameters(struct ed= t_ft5x06_ts_data *tsdata) if (reg_addr->reg_report_rate !=3D NO_REGISTER) edt_ft5x06_register_write(tsdata, reg_addr->reg_report_rate, tsdata->report_rate); - } =20 #ifdef CONFIG_DEBUG_FS @@ -1459,7 +1458,6 @@ static int edt_ft5x06_ts_resume(struct device *dev) gpiod_set_value_cansleep(wake_gpio, 1); } =20 - return ret; } =20 --=20 2.32.0 From nobody Tue Feb 10 23:53:29 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3F4E0C77B60 for ; Sun, 2 Apr 2023 20:10:32 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230338AbjDBUK3 (ORCPT ); Sun, 2 Apr 2023 16:10:29 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45336 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230229AbjDBUKS (ORCPT ); Sun, 2 Apr 2023 16:10:18 -0400 Received: from mail-ed1-x529.google.com (mail-ed1-x529.google.com [IPv6:2a00:1450:4864:20::529]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E8235BB96 for ; Sun, 2 Apr 2023 13:10:16 -0700 (PDT) Received: by mail-ed1-x529.google.com with SMTP id cn12so109554807edb.4 for ; Sun, 02 Apr 2023 13:10:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; t=1680466216; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=QYEoj3HNykDYYL4XbvupGelYH0ebBXdpkyODlCn0pFQ=; b=Q7TzE39DQ+L0qB2Qih8MrfiRtgoebzX/vDV9Hs1ivN5YUoBKGDuLNuSZMGLdMoTOI9 qusPXgoWIaxMR1t79Y0Lo1/hRqdm94kPlaOEFI8lcoJviD2+RDFhbSKVva2WJeVyUDvR wwN/js2Ky8cqIlHxrQqil+yqnt0VBTe7p51Os= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680466216; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=QYEoj3HNykDYYL4XbvupGelYH0ebBXdpkyODlCn0pFQ=; b=DvowN69Qc/tFqdR2IU6qJX4Hf0KgZ1XoAnk3PUN7DV7UaV6d6uO/xXFU5Glv/2hxJr T3mhiyVHi5rIkjZPolLOCTQYtkXsJi38nhk2R+H94eIhVdpkqFjkKfentisdWZjpwUNG kMHg5faA1oDnM0roVrEIqCmgrNz1aU6fmGyHopaa9O0GdAEUNYvRaBrLvdqNnQsP4Xjj LQvTw4ocon+NHjXXmOGp1aKD++ckr4Sj+jkRkN1to+c8TxpW32Wet2vb3Fv6RYu59P7I EPCXnZSXBXk6sSdbXQp3TJwvyG5C49zSM4dW5p8bvcvtObO5fSNOIkvwdv6q0k6UDKWd ttug== X-Gm-Message-State: AAQBX9c1meqXHzyZma3NqoD+Zp9wbSUCFN5LqPANL1WFxrojws+24Cez Z5u2dIXUhysTUAkpEWDY/UaR0hnTY/65yX0YbTw= X-Google-Smtp-Source: AKy350b5JLZFUTSDU8ZpZFMocLI5FyB0PP46Z/gJrBT/pcsxuQGUn8ZA7sF7NcLdHGCnIeOvzy1lSw== X-Received: by 2002:a17:906:f754:b0:92e:fcc9:aa22 with SMTP id jp20-20020a170906f75400b0092efcc9aa22mr16072121ejb.37.1680466216192; Sun, 02 Apr 2023 13:10:16 -0700 (PDT) Received: from dario-ThinkPad-T14s-Gen-2i.homenet.telecomitalia.it (host-95-248-31-153.retail.telecomitalia.it. [95.248.31.153]) by smtp.gmail.com with ESMTPSA id gl18-20020a170906e0d200b00924d38bbdc0sm3553127ejb.105.2023.04.02.13.10.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 02 Apr 2023 13:10:15 -0700 (PDT) From: Dario Binacchi To: linux-kernel@vger.kernel.org Cc: michael@amarulasolutions.com, linux-amarula@amarulasolutions.com, Dario Binacchi , Dmitry Torokhov , Jonathan Cameron , Oliver Graute , =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= , Wolfram Sang , linux-input@vger.kernel.org Subject: [PATCH 3/9] Input: edt-ft5x06 - add spaces to ensure format specification Date: Sun, 2 Apr 2023 22:09:45 +0200 Message-Id: <20230402200951.1032513-4-dario.binacchi@amarulasolutions.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20230402200951.1032513-1-dario.binacchi@amarulasolutions.com> References: <20230402200951.1032513-1-dario.binacchi@amarulasolutions.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" It adds spaces around '-' as recommended by the Linux coding style. Signed-off-by: Dario Binacchi --- drivers/input/touchscreen/edt-ft5x06.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/input/touchscreen/edt-ft5x06.c b/drivers/input/touchsc= reen/edt-ft5x06.c index c0ad3e4b6662..c96fe6520578 100644 --- a/drivers/input/touchscreen/edt-ft5x06.c +++ b/drivers/input/touchscreen/edt-ft5x06.c @@ -183,11 +183,11 @@ static bool edt_ft5x06_ts_check_crc(struct edt_ft5x06= _ts_data *tsdata, for (i =3D 0; i < buflen - 1; i++) crc ^=3D buf[i]; =20 - if (crc !=3D buf[buflen-1]) { + if (crc !=3D buf[buflen - 1]) { tsdata->crc_errors++; dev_err_ratelimited(&tsdata->client->dev, "crc error: 0x%02x expected, got 0x%02x\n", - crc, buf[buflen-1]); + crc, buf[buflen - 1]); return false; } =20 --=20 2.32.0 From nobody Tue Feb 10 23:53:29 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id CEDACC76196 for ; Sun, 2 Apr 2023 20:10:34 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229565AbjDBUKc (ORCPT ); Sun, 2 Apr 2023 16:10:32 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45358 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230053AbjDBUKU (ORCPT ); Sun, 2 Apr 2023 16:10:20 -0400 Received: from mail-ed1-x535.google.com (mail-ed1-x535.google.com [IPv6:2a00:1450:4864:20::535]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7579A3586 for ; Sun, 2 Apr 2023 13:10:19 -0700 (PDT) Received: by mail-ed1-x535.google.com with SMTP id b20so109523438edd.1 for ; Sun, 02 Apr 2023 13:10:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; t=1680466217; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=/6yCxE8OoG8PeYtqKpR9SG7wxwNS753oO+7UKWNzpVg=; b=N9sz1W2nE5acZfsaVT+YC3J/c7YMv2SuZ2EhIM5begbM7seJrl65wteJHGxYZnCQWg oesgZqYRLy2aeHHLdg/QhWpBFRpVgFeVFrH22NLC1qUQFPGqz5790QzANSU5mSSPpfwv JgV4Jm0WtlkBHy498Qk3sUQD0+18MwQaGeOHY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680466217; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=/6yCxE8OoG8PeYtqKpR9SG7wxwNS753oO+7UKWNzpVg=; b=qF1w6pA9v+Ucoj6knGCd+uAzX6Iqt3jPklho/HAdJ6e8WvQspk3a3gWUwUsUIUFzDM xFqkjdYy0UwSwTYQiAbwWCZPokwaZOMN8PFBBmXTYG1utyNfzkAqRvZlngQLqNQqvs7R WIXN3n763qYO3Cc1FBZbYsDU9/4056vo9qhI6qAgWj9KQ06Hn9L4Kab5AxNtoSHmnWiy 6TqeBe4D+WH0bRkd2A34O69s/Cm/f+VDeF4JgV3AX7kDYH27QiukhShPxLT0093Xiara gFiOvQTxpTojCV8NR0hpFC+yRYG533Z5lhwmhyfx8/V8kM7DGc3QSgDMrbXYKQy9bG8t Ut4g== X-Gm-Message-State: AAQBX9eol+OLwvl/h4c9xXMVOtOo20HADqrza2EsGLQhXGK2KHbL2nwp xcMASKwvOucgk/72BTnWE/Z8oSEPLmtfSVoOC3A= X-Google-Smtp-Source: AKy350ZJmiV/iG/KdkY8Z4BybeVcfbuz3pwQ5ecPcXpiI6+BODgcGjO17mujGqBKrFmJ3/4np3nIHQ== X-Received: by 2002:a17:906:a150:b0:8a0:7158:15dc with SMTP id bu16-20020a170906a15000b008a0715815dcmr33439578ejb.74.1680466217623; Sun, 02 Apr 2023 13:10:17 -0700 (PDT) Received: from dario-ThinkPad-T14s-Gen-2i.homenet.telecomitalia.it (host-95-248-31-153.retail.telecomitalia.it. [95.248.31.153]) by smtp.gmail.com with ESMTPSA id gl18-20020a170906e0d200b00924d38bbdc0sm3553127ejb.105.2023.04.02.13.10.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 02 Apr 2023 13:10:17 -0700 (PDT) From: Dario Binacchi To: linux-kernel@vger.kernel.org Cc: michael@amarulasolutions.com, linux-amarula@amarulasolutions.com, Dario Binacchi , Dmitry Torokhov , Jonathan Cameron , Oliver Graute , =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= , Wolfram Sang , linux-input@vger.kernel.org Subject: [PATCH 4/9] Input: edt-ft5x06 - don't recalculate the CRC Date: Sun, 2 Apr 2023 22:09:46 +0200 Message-Id: <20230402200951.1032513-5-dario.binacchi@amarulasolutions.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20230402200951.1032513-1-dario.binacchi@amarulasolutions.com> References: <20230402200951.1032513-1-dario.binacchi@amarulasolutions.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" There is no need to recalculate the CRC when the data has not changed. Signed-off-by: Dario Binacchi --- drivers/input/touchscreen/edt-ft5x06.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/input/touchscreen/edt-ft5x06.c b/drivers/input/touchsc= reen/edt-ft5x06.c index c96fe6520578..d4f39724b259 100644 --- a/drivers/input/touchscreen/edt-ft5x06.c +++ b/drivers/input/touchscreen/edt-ft5x06.c @@ -319,7 +319,7 @@ static int edt_ft5x06_register_write(struct edt_ft5x06_= ts_data *tsdata, static int edt_ft5x06_register_read(struct edt_ft5x06_ts_data *tsdata, u8 addr) { - u8 wrbuf[2], rdbuf[2]; + u8 wrbuf[2], rdbuf[2], crc; int error; =20 switch (tsdata->version) { @@ -333,11 +333,11 @@ static int edt_ft5x06_register_read(struct edt_ft5x06= _ts_data *tsdata, if (error) return error; =20 - if ((wrbuf[0] ^ wrbuf[1] ^ rdbuf[0]) !=3D rdbuf[1]) { + crc =3D wrbuf[0] ^ wrbuf[1] ^ rdbuf[0]; + if (crc !=3D rdbuf[1]) { dev_err(&tsdata->client->dev, "crc error: 0x%02x expected, got 0x%02x\n", - wrbuf[0] ^ wrbuf[1] ^ rdbuf[0], - rdbuf[1]); + crc, rdbuf[1]); return -EIO; } break; --=20 2.32.0 From nobody Tue Feb 10 23:53:29 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2436FC7619A for ; Sun, 2 Apr 2023 20:10:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230289AbjDBUKg (ORCPT ); Sun, 2 Apr 2023 16:10:36 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45402 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230297AbjDBUKW (ORCPT ); Sun, 2 Apr 2023 16:10:22 -0400 Received: from mail-ed1-x529.google.com (mail-ed1-x529.google.com [IPv6:2a00:1450:4864:20::529]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1DDAC3586 for ; Sun, 2 Apr 2023 13:10:20 -0700 (PDT) Received: by mail-ed1-x529.google.com with SMTP id eh3so109434009edb.11 for ; Sun, 02 Apr 2023 13:10:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; t=1680466219; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=kMHERFML/oNzDxt2xRgB06w0p+QqR9zI3HtwO5KrpJg=; b=BTA0a7k7iFtvaI2JEereURx8iOMHTUOIQcSCoitVWC3sF+WGnPQVeju6CVDc/6tRB2 ZfpEnkmpRBCSppaEZ5OdsY/Oi+Jo32snp7n7puHWzt7bBzxZonHe9cHpKVYQdPMf9Vl7 ZjEVTpQBasomg2sk23RR/gSl5qHGWIR8C9U5c= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680466219; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=kMHERFML/oNzDxt2xRgB06w0p+QqR9zI3HtwO5KrpJg=; b=cnvFworFjtub1Sf05CTd/MmemvOy6+gy83gFLJKqHC6Tl/JKQ0gadZ/cbuF8Kh+7so r1W6sMQCk2Tep5DC4knTxmGSsCMPm01nvdDHQHsurk2aUiN7Io40w19NhEWdINgGC0po PVZ0QKObTDRlmxeWjY5lMipx7djmbbxNeLY4Hh9XlDp7+5vO36KVPtgyt3dlRaVdK4RX djWfysLOqmmiMYiXEcZ7EDuzV+knQ4/P/ubsgCE6TN6MIfmxyzzF7Tc6ZIDeQdAlqeF4 lOwBUTRmef9RMCtoE77gH/L1MR6hwDzig1mK448M70GqzUGj7KX6eBlNGqnSK56AdpjW hpUw== X-Gm-Message-State: AAQBX9dmoUNuONJjCsJx72anaJjmhJ3BEJYDYakD/kzOh5Gfg8mjbTGE dIecZcIJh8o55At1EqfQUbMbjzSKy9unqPARaSY= X-Google-Smtp-Source: AKy350YzePVZDu3bwXduDlhZsJ0xniTfatUrFkqFgAC9hiqa91HtRn0heuR8JnLEVJgG+BTqIbYKrw== X-Received: by 2002:a17:906:b049:b0:937:9a24:370b with SMTP id bj9-20020a170906b04900b009379a24370bmr34522323ejb.67.1680466219066; Sun, 02 Apr 2023 13:10:19 -0700 (PDT) Received: from dario-ThinkPad-T14s-Gen-2i.homenet.telecomitalia.it (host-95-248-31-153.retail.telecomitalia.it. [95.248.31.153]) by smtp.gmail.com with ESMTPSA id gl18-20020a170906e0d200b00924d38bbdc0sm3553127ejb.105.2023.04.02.13.10.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 02 Apr 2023 13:10:18 -0700 (PDT) From: Dario Binacchi To: linux-kernel@vger.kernel.org Cc: michael@amarulasolutions.com, linux-amarula@amarulasolutions.com, Dario Binacchi , Dmitry Torokhov , Jonathan Cameron , Oliver Graute , =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= , Wolfram Sang , linux-input@vger.kernel.org Subject: [PATCH 5/9] Input: edt-ft5x06 - remove code duplication Date: Sun, 2 Apr 2023 22:09:47 +0200 Message-Id: <20230402200951.1032513-6-dario.binacchi@amarulasolutions.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20230402200951.1032513-1-dario.binacchi@amarulasolutions.com> References: <20230402200951.1032513-1-dario.binacchi@amarulasolutions.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The use of the macros M06_REG_ADDR and M06_REG_CMD avoids code duplication without impacting the application load, and reduces the chances of errors or mistakes. Signed-off-by: Dario Binacchi --- drivers/input/touchscreen/edt-ft5x06.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/drivers/input/touchscreen/edt-ft5x06.c b/drivers/input/touchsc= reen/edt-ft5x06.c index d4f39724b259..7d82f412ab15 100644 --- a/drivers/input/touchscreen/edt-ft5x06.c +++ b/drivers/input/touchscreen/edt-ft5x06.c @@ -75,6 +75,9 @@ #define EDT_DEFAULT_NUM_X 1024 #define EDT_DEFAULT_NUM_Y 1024 =20 +#define M06_REG_CMD(factory) ((factory) ? 0xf3 : 0xfc) +#define M06_REG_ADDR(factory, addr) ((factory) ? (addr) & 0x7f : (addr) & = 0x3f) + enum edt_pmode { EDT_PMODE_NOT_SUPPORTED, EDT_PMODE_HIBERNATE, @@ -294,8 +297,8 @@ static int edt_ft5x06_register_write(struct edt_ft5x06_= ts_data *tsdata, =20 switch (tsdata->version) { case EDT_M06: - wrbuf[0] =3D tsdata->factory_mode ? 0xf3 : 0xfc; - wrbuf[1] =3D tsdata->factory_mode ? addr & 0x7f : addr & 0x3f; + wrbuf[0] =3D M06_REG_CMD(tsdata->factory_mode); + wrbuf[1] =3D M06_REG_ADDR(tsdata->factory_mode, addr); wrbuf[2] =3D value; wrbuf[3] =3D wrbuf[0] ^ wrbuf[1] ^ wrbuf[2]; return edt_ft5x06_ts_readwrite(tsdata->client, 4, @@ -324,8 +327,8 @@ static int edt_ft5x06_register_read(struct edt_ft5x06_t= s_data *tsdata, =20 switch (tsdata->version) { case EDT_M06: - wrbuf[0] =3D tsdata->factory_mode ? 0xf3 : 0xfc; - wrbuf[1] =3D tsdata->factory_mode ? addr & 0x7f : addr & 0x3f; + wrbuf[0] =3D M06_REG_CMD(tsdata->factory_mode); + wrbuf[1] =3D M06_REG_ADDR(tsdata->factory_mode, addr); wrbuf[1] |=3D tsdata->factory_mode ? 0x80 : 0x40; =20 error =3D edt_ft5x06_ts_readwrite(tsdata->client, 2, wrbuf, 2, --=20 2.32.0 From nobody Tue Feb 10 23:53:29 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id B56A3C76196 for ; Sun, 2 Apr 2023 20:10:40 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230476AbjDBUKj (ORCPT ); Sun, 2 Apr 2023 16:10:39 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45456 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230264AbjDBUKX (ORCPT ); Sun, 2 Apr 2023 16:10:23 -0400 Received: from mail-ed1-x534.google.com (mail-ed1-x534.google.com [IPv6:2a00:1450:4864:20::534]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9C273CC2E for ; Sun, 2 Apr 2023 13:10:22 -0700 (PDT) Received: by mail-ed1-x534.google.com with SMTP id eg48so109411312edb.13 for ; Sun, 02 Apr 2023 13:10:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; t=1680466220; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=AFjm9UZOr4B7pRsXgqjvbVyzqWT97tUm8W06JvPbgKQ=; b=O3nYWp+wncOn7KIYtTsObuYApJsAoEL4q+RnfvaUH7NaoUfBGA9w2AsigwGa8GK0LQ lOmWNaA7mk+nlJB47YhEmoIe7kfLHo6cvpaSiqhXyt/yYkQFqWgbcAzuh9/CKTrtvtnT CFxEU3X2w4DIFV4r9koGIseFEwOsrK8oONBdA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680466220; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=AFjm9UZOr4B7pRsXgqjvbVyzqWT97tUm8W06JvPbgKQ=; b=SPC8Nc5Bf1oesmh1IyXjE1ABTTICphNDu13+EzLgMYfLI4TC/NasgldW0JoIEz5qC9 4PJ4UxAJ/dQxREP1wU23YqyUpTiByCQHZE2melyHvzsYD49rDJHTnE/W2MV5pMc8Lreh GZEZ8AO7ZSU+O9c/AxfF5oKkLfrDVYLaNEA+O89P1p6M1uGHilJOfGnvnIwnxaJs3NQw iQaBakbIyySmH74v2Dw71ee1XyXbUiLL2SkN8ZP/9Mvtl+b6QOTS7XDhbgUTchqGIaCX HFpgayQGJEi3oaTluJs70dzv/neiEgV4XrCxSmE7mNaWePNpzI3UQUaDECYU9eOGdIK5 9dYA== X-Gm-Message-State: AAQBX9edlB6pi4H8JyIBnQriTP0cCG5SGDVIVUmzsP84jJVbkBZhve3A 9TllVxPoLuQCNNO8xAL5qBVXdLltZHLt2HqbUiQ= X-Google-Smtp-Source: AKy350ZrfvKhl6J8wrlb8EkFs1zqWNhrUu1U+K4T+XQ/FIO4ncxFjBgu9CPs8BDDnrJduJJjUsAHyQ== X-Received: by 2002:a17:907:84a:b0:947:87a2:31d7 with SMTP id ww10-20020a170907084a00b0094787a231d7mr13489859ejb.33.1680466220561; Sun, 02 Apr 2023 13:10:20 -0700 (PDT) Received: from dario-ThinkPad-T14s-Gen-2i.homenet.telecomitalia.it (host-95-248-31-153.retail.telecomitalia.it. [95.248.31.153]) by smtp.gmail.com with ESMTPSA id gl18-20020a170906e0d200b00924d38bbdc0sm3553127ejb.105.2023.04.02.13.10.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 02 Apr 2023 13:10:20 -0700 (PDT) From: Dario Binacchi To: linux-kernel@vger.kernel.org Cc: michael@amarulasolutions.com, linux-amarula@amarulasolutions.com, Dario Binacchi , Dmitry Torokhov , Jonathan Cameron , Oliver Graute , =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= , Wolfram Sang , linux-input@vger.kernel.org Subject: [PATCH 6/9] Input: edt-ft5x06 - don't print error messages with dev_dbg() Date: Sun, 2 Apr 2023 22:09:48 +0200 Message-Id: <20230402200951.1032513-7-dario.binacchi@amarulasolutions.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20230402200951.1032513-1-dario.binacchi@amarulasolutions.com> References: <20230402200951.1032513-1-dario.binacchi@amarulasolutions.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" In some parts of the code, error messages were improperly printed with dev_dbg() calls. In those cases, dev_dbg() has been replaced with dev_err(). Signed-off-by: Dario Binacchi --- 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/touchsc= reen/edt-ft5x06.c index 7d82f412ab15..89958881fca1 100644 --- a/drivers/input/touchscreen/edt-ft5x06.c +++ b/drivers/input/touchscreen/edt-ft5x06.c @@ -783,7 +783,7 @@ static ssize_t edt_ft5x06_debugfs_raw_data_read(struct = file *file, =20 error =3D edt_ft5x06_register_write(tsdata, 0x08, 0x01); if (error) { - dev_dbg(&client->dev, + dev_err(&client->dev, "failed to write 0x08 register, error %d\n", error); goto out; } @@ -797,13 +797,13 @@ static ssize_t edt_ft5x06_debugfs_raw_data_read(struc= t file *file, =20 if (val < 0) { error =3D val; - dev_dbg(&client->dev, + dev_err(&client->dev, "failed to read 0x08 register, error %d\n", error); goto out; } =20 if (retries =3D=3D 0) { - dev_dbg(&client->dev, + dev_err(&client->dev, "timed out waiting for register to settle\n"); error =3D -ETIMEDOUT; goto out; --=20 2.32.0 From nobody Tue Feb 10 23:53:29 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1F3B6C76196 for ; Sun, 2 Apr 2023 20:10:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230470AbjDBUKs (ORCPT ); Sun, 2 Apr 2023 16:10:48 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45402 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230331AbjDBUK1 (ORCPT ); Sun, 2 Apr 2023 16:10:27 -0400 Received: from mail-ed1-x52a.google.com (mail-ed1-x52a.google.com [IPv6:2a00:1450:4864:20::52a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2BC69CC05 for ; Sun, 2 Apr 2023 13:10:24 -0700 (PDT) Received: by mail-ed1-x52a.google.com with SMTP id eg48so109411485edb.13 for ; Sun, 02 Apr 2023 13:10:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; t=1680466222; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=JemIGhtdjG/TbtBcp8w+D7hK3pU2u0hM7wK5kdSBVec=; b=g9Tvx9lk/kHdQLQp48PShBumMe3X49wtUtPqxvPzc7nR+W4VM4FWh2CQSmNU4uuTH+ lKJoyCf9HKJHTs56uWU6Svf3cMFt4oieNoXsEW4o/NOK9rPLtJNw5OHDu9N4bb0Syw/3 L/J0LajmMQUGAQ7ZD14NR4xh8y6o1jJU0qikE= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680466222; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=JemIGhtdjG/TbtBcp8w+D7hK3pU2u0hM7wK5kdSBVec=; b=sQ3mSFfzJoydZKbXzylEidj5VjPHtyNaC9sr4jblbWKFAKYNar75ciUtOWzSAPkRUd Z+ep7Tz/neJQOQQy/Nj2yQnCQSu2kAkyiRVD4m6gH9ueeRsbJUMt2s/m+Y5tsuva7ipF 1f0W0uM6uydSeVcBfl7VR8dq3owv1mUV75QBuPj0gNkkCmuYfaRa+z0T7vLjHqA7utfN nwsNuhopmUti3kuBizrZzlyZHQ26viPbk1HTtLgzmgqbfLAN+/uEfEDB/ug2Ag9WHiS2 PBGoPQQI/xc9T4DAdXwkT69EJkmjOyq0URzMzWU7wUPxhZT23HLXBeNRzxH2lkipXbju PJIA== X-Gm-Message-State: AAQBX9fG9cPq3Th5rr9mNFjoKYFEhRKcAiohbvSA913Nrc0YgRkbeOlv P9bhiM+a3pQPRIZ6x2p9etoKZEipRbxDW4rRuJw= X-Google-Smtp-Source: AKy350YtG/43aQpznLS/lp3ljrl1GhQjLftorm/6C/YcYs2+SdFGqTFD6TqO50Jj7ygDmq+R0u0qug== X-Received: by 2002:a05:6402:450:b0:4fa:e8f3:9685 with SMTP id p16-20020a056402045000b004fae8f39685mr31991889edw.28.1680466222111; Sun, 02 Apr 2023 13:10:22 -0700 (PDT) Received: from dario-ThinkPad-T14s-Gen-2i.homenet.telecomitalia.it (host-95-248-31-153.retail.telecomitalia.it. [95.248.31.153]) by smtp.gmail.com with ESMTPSA id gl18-20020a170906e0d200b00924d38bbdc0sm3553127ejb.105.2023.04.02.13.10.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 02 Apr 2023 13:10:21 -0700 (PDT) From: Dario Binacchi To: linux-kernel@vger.kernel.org Cc: michael@amarulasolutions.com, linux-amarula@amarulasolutions.com, Dario Binacchi , Dmitry Torokhov , Jonathan Cameron , Oliver Graute , =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= , Wolfram Sang , linux-input@vger.kernel.org Subject: [PATCH 7/9] Input: edt-ft5x06 - convert to use regmap API Date: Sun, 2 Apr 2023 22:09:49 +0200 Message-Id: <20230402200951.1032513-8-dario.binacchi@amarulasolutions.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20230402200951.1032513-1-dario.binacchi@amarulasolutions.com> References: <20230402200951.1032513-1-dario.binacchi@amarulasolutions.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org It replaces custom read/write functions with regmap API, making the driver code more generic. Signed-off-by: Dario Binacchi --- drivers/input/touchscreen/edt-ft5x06.c | 424 +++++++++++++------------ 1 file changed, 214 insertions(+), 210 deletions(-) diff --git a/drivers/input/touchscreen/edt-ft5x06.c b/drivers/input/touchsc= reen/edt-ft5x06.c index 89958881fca1..8aae4c1e6b73 100644 --- a/drivers/input/touchscreen/edt-ft5x06.c +++ b/drivers/input/touchscreen/edt-ft5x06.c @@ -3,6 +3,7 @@ * Copyright (C) 2012 Simon Budig, * Daniel Wagener (M09 firmware support) * Lothar Wa=C3=9Fmann (DT support) + * Dario Binacchi (regmap support) */ =20 /* @@ -26,6 +27,7 @@ #include #include #include +#include #include #include #include @@ -115,6 +117,8 @@ struct edt_ft5x06_ts_data { struct gpio_desc *reset_gpio; struct gpio_desc *wake_gpio; =20 + struct regmap *regmap; + #if defined(CONFIG_DEBUG_FS) struct dentry *debug_dir; u8 *raw_buffer; @@ -145,37 +149,10 @@ struct edt_i2c_chip_data { int max_support_points; }; =20 -static int edt_ft5x06_ts_readwrite(struct i2c_client *client, - u16 wr_len, u8 *wr_buf, - u16 rd_len, u8 *rd_buf) -{ - struct i2c_msg wrmsg[2]; - int i =3D 0; - int ret; - - if (wr_len) { - wrmsg[i].addr =3D client->addr; - wrmsg[i].flags =3D 0; - wrmsg[i].len =3D wr_len; - wrmsg[i].buf =3D wr_buf; - i++; - } - if (rd_len) { - wrmsg[i].addr =3D client->addr; - wrmsg[i].flags =3D I2C_M_RD; - wrmsg[i].len =3D rd_len; - wrmsg[i].buf =3D rd_buf; - i++; - } - - ret =3D i2c_transfer(client->adapter, wrmsg, i); - if (ret < 0) - return ret; - if (ret !=3D i) - return -EIO; - - return 0; -} +static const struct regmap_config edt_ft5x06_i2c_regmap_config =3D { + .reg_bits =3D 8, + .val_bits =3D 8, +}; =20 static bool edt_ft5x06_ts_check_crc(struct edt_ft5x06_ts_data *tsdata, u8 *buf, int buflen) @@ -197,6 +174,127 @@ static bool edt_ft5x06_ts_check_crc(struct edt_ft5x06= _ts_data *tsdata, return true; } =20 +static int edt_M06_i2c_read(void *context, const void *reg_buf, size_t reg= _size, + void *val_buf, size_t val_size) +{ + struct device *dev =3D context; + struct i2c_client *i2c =3D to_i2c_client(dev); + struct edt_ft5x06_ts_data *tsdata =3D i2c_get_clientdata(i2c); + struct i2c_msg xfer[2]; + bool reg_read =3D false; + u8 addr; + u8 wlen; + u8 wbuf[4], rbuf[3]; + int ret; + + addr =3D *((u8 *)reg_buf); + wbuf[0] =3D addr; + switch (addr) { + case 0xf5: + wlen =3D 3; + wbuf[0] =3D 0xf5; + wbuf[1] =3D 0xe; + wbuf[2] =3D *((u8 *)val_buf); + break; + case 0xf9: + wlen =3D 1; + break; + default: + wlen =3D 2; + reg_read =3D true; + wbuf[0] =3D M06_REG_CMD(tsdata->factory_mode); + wbuf[1] =3D M06_REG_ADDR(tsdata->factory_mode, addr); + wbuf[1] |=3D tsdata->factory_mode ? 0x80 : 0x40; + } + + xfer[0].addr =3D i2c->addr; + xfer[0].flags =3D 0; + xfer[0].len =3D wlen; + xfer[0].buf =3D wbuf; + + xfer[1].addr =3D i2c->addr; + xfer[1].flags =3D I2C_M_RD; + xfer[1].len =3D reg_read ? 2 : val_size; + xfer[1].buf =3D reg_read ? rbuf : val_buf; + + ret =3D i2c_transfer(i2c->adapter, xfer, 2); + if (ret !=3D 2) { + if (ret < 0) + return ret; + + return -EIO; + } + + if (addr =3D=3D 0xf9) { + u8 *buf =3D (u8 *)val_buf; + + if (buf[0] !=3D 0xaa || buf[1] !=3D 0xaa || + buf[2] !=3D val_size) { + tsdata->header_errors++; + dev_err_ratelimited(dev, + "Unexpected header: %02x%02x%02x\n", + buf[0], buf[1], buf[2]); + return -EIO; + } + + if (!edt_ft5x06_ts_check_crc(tsdata, val_buf, val_size)) + return -EIO; + } else if (reg_read) { + u8 crc =3D wbuf[0] ^ wbuf[1] ^ rbuf[0]; + + if (crc !=3D rbuf[1]) { + dev_err(dev, "crc error: 0x%02x expected, got 0x%02x\n", + crc, rbuf[1]); + return -EIO; + } + + *((u8 *)val_buf) =3D rbuf[0]; + } + + return 0; +} + +static int edt_M06_i2c_write(void *context, const void *data, size_t count) +{ + struct device *dev =3D context; + struct i2c_client *i2c =3D to_i2c_client(dev); + struct edt_ft5x06_ts_data *tsdata =3D i2c_get_clientdata(i2c); + u8 addr, val; + u8 wbuf[4]; + struct i2c_msg xfer; + int ret; + + addr =3D *((u8 *)data); + val =3D *((u8 *)data + 1); + + wbuf[0] =3D M06_REG_CMD(tsdata->factory_mode); + wbuf[1] =3D M06_REG_ADDR(tsdata->factory_mode, addr); + wbuf[2] =3D val; + wbuf[3] =3D wbuf[0] ^ wbuf[1] ^ wbuf[2]; + + xfer.addr =3D i2c->addr; + xfer.flags =3D 0; + xfer.len =3D 4; + xfer.buf =3D wbuf; + + ret =3D i2c_transfer(i2c->adapter, &xfer, 1); + if (ret !=3D 1) { + if (ret < 0) + return ret; + + return -EIO; + } + + return 0; +} + +static const struct regmap_config edt_M06_i2c_regmap_config =3D { + .reg_bits =3D 8, + .val_bits =3D 8, + .read =3D edt_M06_i2c_read, + .write =3D edt_M06_i2c_write, +}; + static irqreturn_t edt_ft5x06_ts_isr(int irq, void *dev_id) { struct edt_ft5x06_ts_data *tsdata =3D dev_id; @@ -232,30 +330,13 @@ static irqreturn_t edt_ft5x06_ts_isr(int irq, void *d= ev_id) memset(rdbuf, 0, sizeof(rdbuf)); datalen =3D tplen * tsdata->max_support_points + offset + crclen; =20 - error =3D edt_ft5x06_ts_readwrite(tsdata->client, - sizeof(cmd), &cmd, - datalen, rdbuf); + error =3D regmap_bulk_read(tsdata->regmap, cmd, rdbuf, datalen); if (error) { dev_err_ratelimited(dev, "Unable to fetch data, error: %d\n", error); goto out; } =20 - /* M09/M12 does not send header or CRC */ - if (tsdata->version =3D=3D EDT_M06) { - if (rdbuf[0] !=3D 0xaa || rdbuf[1] !=3D 0xaa || - rdbuf[2] !=3D datalen) { - tsdata->header_errors++; - dev_err_ratelimited(dev, - "Unexpected header: %02x%02x%02x!\n", - rdbuf[0], rdbuf[1], rdbuf[2]); - goto out; - } - - if (!edt_ft5x06_ts_check_crc(tsdata, rdbuf, datalen)) - goto out; - } - for (i =3D 0; i < tsdata->max_support_points; i++) { u8 *buf =3D &rdbuf[i * tplen + offset]; =20 @@ -290,79 +371,6 @@ static irqreturn_t edt_ft5x06_ts_isr(int irq, void *de= v_id) return IRQ_HANDLED; } =20 -static int edt_ft5x06_register_write(struct edt_ft5x06_ts_data *tsdata, - u8 addr, u8 value) -{ - u8 wrbuf[4]; - - switch (tsdata->version) { - case EDT_M06: - wrbuf[0] =3D M06_REG_CMD(tsdata->factory_mode); - wrbuf[1] =3D M06_REG_ADDR(tsdata->factory_mode, addr); - wrbuf[2] =3D value; - wrbuf[3] =3D wrbuf[0] ^ wrbuf[1] ^ wrbuf[2]; - return edt_ft5x06_ts_readwrite(tsdata->client, 4, - wrbuf, 0, NULL); - - case EDT_M09: - case EDT_M12: - case EV_FT: - case GENERIC_FT: - wrbuf[0] =3D addr; - wrbuf[1] =3D value; - - return edt_ft5x06_ts_readwrite(tsdata->client, 2, - wrbuf, 0, NULL); - - default: - return -EINVAL; - } -} - -static int edt_ft5x06_register_read(struct edt_ft5x06_ts_data *tsdata, - u8 addr) -{ - u8 wrbuf[2], rdbuf[2], crc; - int error; - - switch (tsdata->version) { - case EDT_M06: - wrbuf[0] =3D M06_REG_CMD(tsdata->factory_mode); - wrbuf[1] =3D M06_REG_ADDR(tsdata->factory_mode, addr); - wrbuf[1] |=3D tsdata->factory_mode ? 0x80 : 0x40; - - error =3D edt_ft5x06_ts_readwrite(tsdata->client, 2, wrbuf, 2, - rdbuf); - if (error) - return error; - - crc =3D wrbuf[0] ^ wrbuf[1] ^ rdbuf[0]; - if (crc !=3D rdbuf[1]) { - dev_err(&tsdata->client->dev, - "crc error: 0x%02x expected, got 0x%02x\n", - crc, rdbuf[1]); - return -EIO; - } - break; - - case EDT_M09: - case EDT_M12: - case EV_FT: - case GENERIC_FT: - wrbuf[0] =3D addr; - error =3D edt_ft5x06_ts_readwrite(tsdata->client, 1, - wrbuf, 1, rdbuf); - if (error) - return error; - break; - - default: - return -EINVAL; - } - - return rdbuf[0]; -} - struct edt_ft5x06_attribute { struct device_attribute dattr; size_t field_offset; @@ -396,7 +404,7 @@ static ssize_t edt_ft5x06_setting_show(struct device *d= ev, struct edt_ft5x06_attribute *attr =3D container_of(dattr, struct edt_ft5x06_attribute, dattr); u8 *field =3D (u8 *)tsdata + attr->field_offset; - int val; + unsigned int val; size_t count =3D 0; int error =3D 0; u8 addr; @@ -429,9 +437,8 @@ static ssize_t edt_ft5x06_setting_show(struct device *d= ev, } =20 if (addr !=3D NO_REGISTER) { - val =3D edt_ft5x06_register_read(tsdata, addr); - if (val < 0) { - error =3D val; + error =3D regmap_read(tsdata->regmap, addr, &val); + if (error) { dev_err(&tsdata->client->dev, "Failed to fetch attribute %s, error %d\n", dattr->attr.name, error); @@ -504,7 +511,7 @@ static ssize_t edt_ft5x06_setting_store(struct device *= dev, } =20 if (addr !=3D NO_REGISTER) { - error =3D edt_ft5x06_register_write(tsdata, addr, val); + error =3D regmap_write(tsdata->regmap, addr, val); if (error) { dev_err(&tsdata->client->dev, "Failed to update attribute %s, error: %d\n", @@ -605,23 +612,19 @@ static const struct attribute_group edt_ft5x06_attr_g= roup =3D { static void edt_ft5x06_restore_reg_parameters(struct edt_ft5x06_ts_data *t= sdata) { struct edt_reg_addr *reg_addr =3D &tsdata->reg_addr; + struct regmap *regmap =3D tsdata->regmap; =20 - edt_ft5x06_register_write(tsdata, reg_addr->reg_threshold, - tsdata->threshold); - edt_ft5x06_register_write(tsdata, reg_addr->reg_gain, - tsdata->gain); + regmap_write(regmap, reg_addr->reg_threshold, tsdata->threshold); + regmap_write(regmap, reg_addr->reg_gain, tsdata->gain); if (reg_addr->reg_offset !=3D NO_REGISTER) - edt_ft5x06_register_write(tsdata, reg_addr->reg_offset, - tsdata->offset); + regmap_write(regmap, reg_addr->reg_offset, tsdata->offset); if (reg_addr->reg_offset_x !=3D NO_REGISTER) - edt_ft5x06_register_write(tsdata, reg_addr->reg_offset_x, - tsdata->offset_x); + regmap_write(regmap, reg_addr->reg_offset_x, tsdata->offset_x); if (reg_addr->reg_offset_y !=3D NO_REGISTER) - edt_ft5x06_register_write(tsdata, reg_addr->reg_offset_y, - tsdata->offset_y); + regmap_write(regmap, reg_addr->reg_offset_y, tsdata->offset_y); if (reg_addr->reg_report_rate !=3D NO_REGISTER) - edt_ft5x06_register_write(tsdata, reg_addr->reg_report_rate, - tsdata->report_rate); + regmap_write(regmap, reg_addr->reg_report_rate, + tsdata->report_rate); } =20 #ifdef CONFIG_DEBUG_FS @@ -629,7 +632,7 @@ static int edt_ft5x06_factory_mode(struct edt_ft5x06_ts= _data *tsdata) { struct i2c_client *client =3D tsdata->client; int retries =3D EDT_SWITCH_MODE_RETRIES; - int ret; + unsigned int val; int error; =20 if (tsdata->version !=3D EDT_M06) { @@ -651,7 +654,7 @@ static int edt_ft5x06_factory_mode(struct edt_ft5x06_ts= _data *tsdata) } =20 /* mode register is 0x3c when in the work mode */ - error =3D edt_ft5x06_register_write(tsdata, WORK_REGISTER_OPMODE, 0x03); + error =3D regmap_write(tsdata->regmap, WORK_REGISTER_OPMODE, 0x03); if (error) { dev_err(&client->dev, "failed to switch to factory mode, error %d\n", error); @@ -662,8 +665,9 @@ static int edt_ft5x06_factory_mode(struct edt_ft5x06_ts= _data *tsdata) do { mdelay(EDT_SWITCH_MODE_DELAY); /* mode register is 0x01 when in factory mode */ - ret =3D edt_ft5x06_register_read(tsdata, FACTORY_REGISTER_OPMODE); - if (ret =3D=3D 0x03) + error =3D regmap_read(tsdata->regmap, FACTORY_REGISTER_OPMODE, + &val); + if (!error && val =3D=3D 0x03) break; } while (--retries > 0); =20 @@ -689,11 +693,11 @@ static int edt_ft5x06_work_mode(struct edt_ft5x06_ts_= data *tsdata) { struct i2c_client *client =3D tsdata->client; int retries =3D EDT_SWITCH_MODE_RETRIES; - int ret; + unsigned int val; int error; =20 /* mode register is 0x01 when in the factory mode */ - error =3D edt_ft5x06_register_write(tsdata, FACTORY_REGISTER_OPMODE, 0x1); + error =3D regmap_write(tsdata->regmap, FACTORY_REGISTER_OPMODE, 0x1); if (error) { dev_err(&client->dev, "failed to switch to work mode, error: %d\n", error); @@ -705,8 +709,8 @@ static int edt_ft5x06_work_mode(struct edt_ft5x06_ts_da= ta *tsdata) do { mdelay(EDT_SWITCH_MODE_DELAY); /* mode register is 0x01 when in factory mode */ - ret =3D edt_ft5x06_register_read(tsdata, WORK_REGISTER_OPMODE); - if (ret =3D=3D 0x01) + error =3D regmap_read(tsdata->regmap, WORK_REGISTER_OPMODE, &val); + if (!error && val =3D=3D 0x01) break; } while (--retries > 0); =20 @@ -765,10 +769,10 @@ static ssize_t edt_ft5x06_debugfs_raw_data_read(struc= t file *file, struct edt_ft5x06_ts_data *tsdata =3D file->private_data; struct i2c_client *client =3D tsdata->client; int retries =3D EDT_RAW_DATA_RETRIES; - int val, i, error; + unsigned int val; + int i, error; size_t read =3D 0; int colbytes; - char wrbuf[3]; u8 *rdbuf; =20 if (*off < 0 || *off >=3D tsdata->raw_bufsize) @@ -781,7 +785,7 @@ static ssize_t edt_ft5x06_debugfs_raw_data_read(struct = file *file, goto out; } =20 - error =3D edt_ft5x06_register_write(tsdata, 0x08, 0x01); + error =3D regmap_write(tsdata->regmap, 0x08, 0x01); if (error) { dev_err(&client->dev, "failed to write 0x08 register, error %d\n", error); @@ -790,18 +794,18 @@ static ssize_t edt_ft5x06_debugfs_raw_data_read(struc= t file *file, =20 do { usleep_range(EDT_RAW_DATA_DELAY, EDT_RAW_DATA_DELAY + 100); - val =3D edt_ft5x06_register_read(tsdata, 0x08); - if (val < 1) + error =3D regmap_read(tsdata->regmap, 0x08, &val); + if (error) { + dev_err(&client->dev, + "failed to read 0x08 register, error %d\n", + error); + goto out; + } + + if (val =3D=3D 1) break; } while (--retries > 0); =20 - if (val < 0) { - error =3D val; - dev_err(&client->dev, - "failed to read 0x08 register, error %d\n", error); - goto out; - } - if (retries =3D=3D 0) { dev_err(&client->dev, "timed out waiting for register to settle\n"); @@ -812,13 +816,9 @@ static ssize_t edt_ft5x06_debugfs_raw_data_read(struct= file *file, rdbuf =3D tsdata->raw_buffer; colbytes =3D tsdata->num_y * sizeof(u16); =20 - wrbuf[0] =3D 0xf5; - wrbuf[1] =3D 0x0e; for (i =3D 0; i < tsdata->num_x; i++) { - wrbuf[2] =3D i; /* column index */ - error =3D edt_ft5x06_ts_readwrite(tsdata->client, - sizeof(wrbuf), wrbuf, - colbytes, rdbuf); + rdbuf[0] =3D i; /* column index */ + error =3D regmap_bulk_read(tsdata->regmap, 0xf5, rdbuf, colbytes); if (error) goto out; =20 @@ -894,8 +894,7 @@ static int edt_ft5x06_ts_identify(struct i2c_client *cl= ient, * to have garbage in there */ memset(rdbuf, 0, sizeof(rdbuf)); - error =3D edt_ft5x06_ts_readwrite(client, 1, "\xBB", - EDT_NAME_LEN - 1, rdbuf); + error =3D regmap_bulk_read(tsdata->regmap, 0xBB, rdbuf, EDT_NAME_LEN - 1); if (error) return error; =20 @@ -917,6 +916,14 @@ static int edt_ft5x06_ts_identify(struct i2c_client *c= lient, *p++ =3D '\0'; strscpy(model_name, rdbuf + 1, EDT_NAME_LEN); strscpy(fw_version, p ? p : "", EDT_NAME_LEN); + + regmap_exit(tsdata->regmap); + tsdata->regmap =3D regmap_init_i2c(client, + &edt_M06_i2c_regmap_config); + if (IS_ERR(tsdata->regmap)) { + dev_err(&client->dev, "regmap allocation failed\n"); + return PTR_ERR(tsdata->regmap); + } } else if (!strncasecmp(rdbuf, "EP0", 3)) { tsdata->version =3D EDT_M12; =20 @@ -943,15 +950,13 @@ static int edt_ft5x06_ts_identify(struct i2c_client *= client, */ tsdata->version =3D GENERIC_FT; =20 - error =3D edt_ft5x06_ts_readwrite(client, 1, "\xA6", - 2, rdbuf); + error =3D regmap_bulk_read(tsdata->regmap, 0xA6, rdbuf, 2); if (error) return error; =20 strscpy(fw_version, rdbuf, 2); =20 - error =3D edt_ft5x06_ts_readwrite(client, 1, "\xA8", - 1, rdbuf); + error =3D regmap_bulk_read(tsdata->regmap, 0xA8, rdbuf, 1); if (error) return error; =20 @@ -980,8 +985,7 @@ static int edt_ft5x06_ts_identify(struct i2c_client *cl= ient, break; case 0x59: /* Evervision Display with FT5xx6 TS */ tsdata->version =3D EV_FT; - error =3D edt_ft5x06_ts_readwrite(client, 1, "\x53", - 1, rdbuf); + error =3D regmap_bulk_read(tsdata->regmap, 0x53, rdbuf, 1); if (error) return error; strscpy(fw_version, rdbuf, 1); @@ -1003,42 +1007,40 @@ static void edt_ft5x06_ts_get_defaults(struct devic= e *dev, struct edt_ft5x06_ts_data *tsdata) { struct edt_reg_addr *reg_addr =3D &tsdata->reg_addr; + struct regmap *regmap =3D tsdata->regmap; u32 val; int error; =20 error =3D device_property_read_u32(dev, "threshold", &val); if (!error) { - edt_ft5x06_register_write(tsdata, reg_addr->reg_threshold, val); + regmap_write(regmap, reg_addr->reg_threshold, val); tsdata->threshold =3D val; } =20 error =3D device_property_read_u32(dev, "gain", &val); if (!error) { - edt_ft5x06_register_write(tsdata, reg_addr->reg_gain, val); + regmap_write(regmap, reg_addr->reg_gain, val); tsdata->gain =3D val; } =20 error =3D device_property_read_u32(dev, "offset", &val); if (!error) { if (reg_addr->reg_offset !=3D NO_REGISTER) - edt_ft5x06_register_write(tsdata, - reg_addr->reg_offset, val); + regmap_write(regmap, reg_addr->reg_offset, val); tsdata->offset =3D val; } =20 error =3D device_property_read_u32(dev, "offset-x", &val); if (!error) { if (reg_addr->reg_offset_x !=3D NO_REGISTER) - edt_ft5x06_register_write(tsdata, - reg_addr->reg_offset_x, val); + regmap_write(regmap, reg_addr->reg_offset_x, val); tsdata->offset_x =3D val; } =20 error =3D device_property_read_u32(dev, "offset-y", &val); if (!error) { if (reg_addr->reg_offset_y !=3D NO_REGISTER) - edt_ft5x06_register_write(tsdata, - reg_addr->reg_offset_y, val); + regmap_write(regmap, reg_addr->reg_offset_y, val); tsdata->offset_y =3D val; } } @@ -1046,33 +1048,30 @@ static void edt_ft5x06_ts_get_defaults(struct devic= e *dev, static void edt_ft5x06_ts_get_parameters(struct edt_ft5x06_ts_data *tsdata) { struct edt_reg_addr *reg_addr =3D &tsdata->reg_addr; + struct regmap *regmap =3D tsdata->regmap; + unsigned int val; =20 - tsdata->threshold =3D edt_ft5x06_register_read(tsdata, - reg_addr->reg_threshold); - tsdata->gain =3D edt_ft5x06_register_read(tsdata, reg_addr->reg_gain); + regmap_read(regmap, reg_addr->reg_threshold, &tsdata->threshold); + regmap_read(regmap, reg_addr->reg_gain, &tsdata->gain); if (reg_addr->reg_offset !=3D NO_REGISTER) - tsdata->offset =3D - edt_ft5x06_register_read(tsdata, reg_addr->reg_offset); + regmap_read(regmap, reg_addr->reg_offset, &tsdata->offset); if (reg_addr->reg_offset_x !=3D NO_REGISTER) - tsdata->offset_x =3D - edt_ft5x06_register_read(tsdata, - reg_addr->reg_offset_x); + regmap_read(regmap, reg_addr->reg_offset_x, &tsdata->offset_x); if (reg_addr->reg_offset_y !=3D NO_REGISTER) - tsdata->offset_y =3D - edt_ft5x06_register_read(tsdata, - reg_addr->reg_offset_y); + regmap_read(regmap, reg_addr->reg_offset_y, &tsdata->offset_y); if (reg_addr->reg_report_rate !=3D NO_REGISTER) - tsdata->report_rate =3D - edt_ft5x06_register_read(tsdata, - reg_addr->reg_report_rate); + regmap_read(regmap, reg_addr->reg_report_rate, + &tsdata->report_rate); tsdata->num_x =3D EDT_DEFAULT_NUM_X; - if (reg_addr->reg_num_x !=3D NO_REGISTER) - tsdata->num_x =3D edt_ft5x06_register_read(tsdata, - reg_addr->reg_num_x); + if (reg_addr->reg_num_x !=3D NO_REGISTER) { + if (!regmap_read(regmap, reg_addr->reg_num_x, &val)) + tsdata->num_x =3D val; + } tsdata->num_y =3D EDT_DEFAULT_NUM_Y; - if (reg_addr->reg_num_y !=3D NO_REGISTER) - tsdata->num_y =3D edt_ft5x06_register_read(tsdata, - reg_addr->reg_num_y); + if (reg_addr->reg_num_y !=3D NO_REGISTER) { + if (!regmap_read(regmap, reg_addr->reg_num_y, &val)) + tsdata->num_y =3D val; + } } =20 static void edt_ft5x06_ts_set_regs(struct edt_ft5x06_ts_data *tsdata) @@ -1142,7 +1141,7 @@ static int edt_ft5x06_ts_probe(struct i2c_client *cli= ent) const struct i2c_device_id *id =3D i2c_client_get_device_id(client); const struct edt_i2c_chip_data *chip_data; struct edt_ft5x06_ts_data *tsdata; - u8 buf[2] =3D { 0xfc, 0x00 }; + unsigned int val; struct input_dev *input; unsigned long irq_flags; int error; @@ -1156,6 +1155,12 @@ static int edt_ft5x06_ts_probe(struct i2c_client *cl= ient) return -ENOMEM; } =20 + tsdata->regmap =3D regmap_init_i2c(client, &edt_ft5x06_i2c_regmap_config); + if (IS_ERR(tsdata->regmap)) { + dev_err(&client->dev, "regmap allocation failed\n"); + return PTR_ERR(tsdata->regmap); + } + chip_data =3D device_get_match_data(&client->dev); if (!chip_data) chip_data =3D (const struct edt_i2c_chip_data *)id->driver_data; @@ -1258,6 +1263,7 @@ static int edt_ft5x06_ts_probe(struct i2c_client *cli= ent) tsdata->client =3D client; tsdata->input =3D input; tsdata->factory_mode =3D false; + i2c_set_clientdata(client, tsdata); =20 error =3D edt_ft5x06_ts_identify(client, tsdata); if (error) { @@ -1269,7 +1275,7 @@ static int edt_ft5x06_ts_probe(struct i2c_client *cli= ent) * Dummy read access. EP0700MLP1 returns bogus data on the first * register read access and ignores writes. */ - edt_ft5x06_ts_readwrite(tsdata->client, 2, buf, 2, buf); + regmap_read(tsdata->regmap, 0x00, &val); =20 edt_ft5x06_ts_set_regs(tsdata); edt_ft5x06_ts_get_defaults(&client->dev, tsdata); @@ -1291,9 +1297,8 @@ static int edt_ft5x06_ts_probe(struct i2c_client *cli= ent) if (tsdata->version =3D=3D EDT_M06) tsdata->report_rate /=3D 10; =20 - edt_ft5x06_register_write(tsdata, - tsdata->reg_addr.reg_report_rate, - tsdata->report_rate); + regmap_write(tsdata->regmap, tsdata->reg_addr.reg_report_rate, + tsdata->report_rate); } =20 dev_dbg(&client->dev, @@ -1318,8 +1323,6 @@ static int edt_ft5x06_ts_probe(struct i2c_client *cli= ent) return error; } =20 - i2c_set_clientdata(client, tsdata); - irq_flags =3D irq_get_trigger_type(client->irq); if (irq_flags =3D=3D IRQF_TRIGGER_NONE) irq_flags =3D IRQF_TRIGGER_FALLING; @@ -1357,6 +1360,7 @@ static void edt_ft5x06_ts_remove(struct i2c_client *c= lient) struct edt_ft5x06_ts_data *tsdata =3D i2c_get_clientdata(client); =20 edt_ft5x06_ts_teardown_debugfs(tsdata); + regmap_exit(tsdata->regmap); } =20 static int edt_ft5x06_ts_suspend(struct device *dev) @@ -1373,8 +1377,8 @@ static int edt_ft5x06_ts_suspend(struct device *dev) return 0; =20 /* Enter hibernate mode. */ - ret =3D edt_ft5x06_register_write(tsdata, PMOD_REGISTER_OPMODE, - PMOD_REGISTER_HIBERNATE); + ret =3D regmap_write(tsdata->regmap, PMOD_REGISTER_OPMODE, + PMOD_REGISTER_HIBERNATE); if (ret) dev_warn(dev, "Failed to set hibernate mode\n"); =20 --=20 2.32.0 From nobody Tue Feb 10 23:53:29 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 484FAC77B60 for ; Sun, 2 Apr 2023 20:10:44 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230513AbjDBUKm (ORCPT ); Sun, 2 Apr 2023 16:10:42 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45500 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230325AbjDBUKZ (ORCPT ); Sun, 2 Apr 2023 16:10:25 -0400 Received: from mail-ed1-x535.google.com (mail-ed1-x535.google.com [IPv6:2a00:1450:4864:20::535]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3524FCC3A for ; Sun, 2 Apr 2023 13:10:24 -0700 (PDT) Received: by mail-ed1-x535.google.com with SMTP id b20so109523981edd.1 for ; Sun, 02 Apr 2023 13:10:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; t=1680466223; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=vKHTsVqE1aT1cdcOBW/aMh8k9NVa86bMl3ifc5Yx2Wk=; b=ZX/RqwIvU3d1R+i4XBGekHVa1JDlG4wFRU98W4Xv93C1RKpIpl8AqMhDMsonFH9Hhf FYkGAXyMFxuk35wSKO0r2zzIwlfuurPtD12iPdlKNqCQyv1LM0Prf0aA2wMY6s5GKM+6 OE8VWzBiI1fJeNDWmFvFldEY0wDcJgVgUhn0k= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680466223; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=vKHTsVqE1aT1cdcOBW/aMh8k9NVa86bMl3ifc5Yx2Wk=; b=S4Y2OQLY6wTtPYWpH4WiDZDr38d3sOVQ4Y/tUuAhC5OfDlQEXZ6SCcJdBdfHLHuH6V M31+dELxdbW5vVVGtwDRlgXpXenqsqQ8sZKQgIz8H/Tvz4rh3q9Np2TgQ0SepnQKXSD+ XJnOXdvi7t8Hp4LyYhTmer0pavcHZdyzUOVu2DJR1QN8BI/iKzOaJHbkxvoYpdRVHQQW u/SMqvJwQCFnm4XITDorldgsFfPyTSToOwwrU5CsYFIaRRY2NreKGhBQk/UAJwQnjGTO uZ6/2IJxE6hU1ELBUnucWS1sfam1zNGjIbXllAMLvweFhrUd1BW9ledk5lCTmH8FBq2X /OeQ== X-Gm-Message-State: AAQBX9cBVs6HTxODKg59xv2UyY+69u7AR8boDGRcyeAWuMegw9CNnY7/ cn273RVs7DDx8OI8+NP3PF66hixnz9Q5IFIf7Hk= X-Google-Smtp-Source: AKy350bcJ30wLjvIzA6SYVa70CsgGFz3H3xm7zWgQr/X7yWBqVHR+qJnoVuVel+3GF1jQzn6DVO1Xw== X-Received: by 2002:a17:906:4a4e:b0:889:1eb1:7517 with SMTP id a14-20020a1709064a4e00b008891eb17517mr35894731ejv.30.1680466223564; Sun, 02 Apr 2023 13:10:23 -0700 (PDT) Received: from dario-ThinkPad-T14s-Gen-2i.homenet.telecomitalia.it (host-95-248-31-153.retail.telecomitalia.it. [95.248.31.153]) by smtp.gmail.com with ESMTPSA id gl18-20020a170906e0d200b00924d38bbdc0sm3553127ejb.105.2023.04.02.13.10.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 02 Apr 2023 13:10:23 -0700 (PDT) From: Dario Binacchi To: linux-kernel@vger.kernel.org Cc: michael@amarulasolutions.com, linux-amarula@amarulasolutions.com, Dario Binacchi , Dmitry Torokhov , Jonathan Cameron , Oliver Graute , =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= , Wolfram Sang , linux-input@vger.kernel.org Subject: [PATCH 8/9] Input: edt-ft5x06 - unify the crc check Date: Sun, 2 Apr 2023 22:09:50 +0200 Message-Id: <20230402200951.1032513-9-dario.binacchi@amarulasolutions.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20230402200951.1032513-1-dario.binacchi@amarulasolutions.com> References: <20230402200951.1032513-1-dario.binacchi@amarulasolutions.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" With this patch, the CRC is always verified by the same function, even in the case of accessing registers where the number of bytes is minimal. Signed-off-by: Dario Binacchi --- drivers/input/touchscreen/edt-ft5x06.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/drivers/input/touchscreen/edt-ft5x06.c b/drivers/input/touchsc= reen/edt-ft5x06.c index 8aae4c1e6b73..fdb32e3591be 100644 --- a/drivers/input/touchscreen/edt-ft5x06.c +++ b/drivers/input/touchscreen/edt-ft5x06.c @@ -240,13 +240,10 @@ static int edt_M06_i2c_read(void *context, const void= *reg_buf, size_t reg_size, if (!edt_ft5x06_ts_check_crc(tsdata, val_buf, val_size)) return -EIO; } else if (reg_read) { - u8 crc =3D wbuf[0] ^ wbuf[1] ^ rbuf[0]; - - if (crc !=3D rbuf[1]) { - dev_err(dev, "crc error: 0x%02x expected, got 0x%02x\n", - crc, rbuf[1]); + wbuf[2] =3D rbuf[0]; + wbuf[3] =3D rbuf[1]; + if (!edt_ft5x06_ts_check_crc(tsdata, wbuf, 4)) return -EIO; - } =20 *((u8 *)val_buf) =3D rbuf[0]; } --=20 2.32.0 From nobody Tue Feb 10 23:53:29 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 39496C7619A for ; Sun, 2 Apr 2023 20:10:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230452AbjDBUKp (ORCPT ); Sun, 2 Apr 2023 16:10:45 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45458 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230300AbjDBUK1 (ORCPT ); Sun, 2 Apr 2023 16:10:27 -0400 Received: from mail-ed1-x529.google.com (mail-ed1-x529.google.com [IPv6:2a00:1450:4864:20::529]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BC25DCDE2 for ; Sun, 2 Apr 2023 13:10:25 -0700 (PDT) Received: by mail-ed1-x529.google.com with SMTP id cn12so109555545edb.4 for ; Sun, 02 Apr 2023 13:10:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; t=1680466225; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=YKRIdGHuZOd/fQcotLl6knbHASupHjbM4BeF84H3jy8=; b=KemN7IfEaOKpyLMRAKesUNvo24XAovAd4ZbIiIGt+CDFvnp3LWFFq8s9nJ1oPJI1YG vkFLJ91RDd4+nFRefEQHRP5s30PMiMsN3BgnytdSGmJjNFJSFwT7zPGEv2fHNFHIMu9q FMrNnNJLaqYIU5iQxiU5i/K8Qb3y2qJgco94I= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680466225; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=YKRIdGHuZOd/fQcotLl6knbHASupHjbM4BeF84H3jy8=; b=Ur3hzieMHJYptYs3V+OSLm54r4FErrv1uY7Nfuq/m5n4yzBcZP3kX1D3Vy9PqDF0Hg 7evjAPzqtapXlh3abmIYkBNW+mLcwyjCpKLW5QLRqCzVKD/KMjNjs/2pNTFLFvLqxpie aBiAnaGH8Oy2LCfkiQSMIREXrS+R0zJxLxKQ3ibxOIr2v3e3HofcJQ2sdYSuLd2Ic5jk ogbSpU/4AHwFWYIzNXCqXLsncBvZd8Z19SmoKkhgX++iYkK0MYbCWT6IgxqGtxcftTOK nK9m1wpEB6+f77428TDPF4VKp3FPk1o9+zK4FErJ+naWqkIju3og8SpwLksHdL5QcDkS 3bcw== X-Gm-Message-State: AAQBX9fFvr0DSg/FEI2BAafUD6QIEqwn8rowNLhsJhuGteaPTRfKM3u0 Lf/oJ0bQLzlO40fIgS58ylZj54FvwJ7OzvHHjeo= X-Google-Smtp-Source: AKy350bmW8+mqHitZKifCu3kSyviwg6CmmU0N6sR5cecSEU/DKNNAPOiklDjW2pcVfw3y6wb++6PWw== X-Received: by 2002:a17:906:4796:b0:93f:3084:d6f with SMTP id cw22-20020a170906479600b0093f30840d6fmr34022998ejc.18.1680466224998; Sun, 02 Apr 2023 13:10:24 -0700 (PDT) Received: from dario-ThinkPad-T14s-Gen-2i.homenet.telecomitalia.it (host-95-248-31-153.retail.telecomitalia.it. [95.248.31.153]) by smtp.gmail.com with ESMTPSA id gl18-20020a170906e0d200b00924d38bbdc0sm3553127ejb.105.2023.04.02.13.10.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 02 Apr 2023 13:10:24 -0700 (PDT) From: Dario Binacchi To: linux-kernel@vger.kernel.org Cc: michael@amarulasolutions.com, linux-amarula@amarulasolutions.com, Dario Binacchi , Dmitry Torokhov , Jonathan Cameron , Oliver Graute , =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= , Wolfram Sang , linux-input@vger.kernel.org Subject: [PATCH 9/9] Input: edt-ft5x06: Calculate points data length only once Date: Sun, 2 Apr 2023 22:09:51 +0200 Message-Id: <20230402200951.1032513-10-dario.binacchi@amarulasolutions.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20230402200951.1032513-1-dario.binacchi@amarulasolutions.com> References: <20230402200951.1032513-1-dario.binacchi@amarulasolutions.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" It is pointless and expensive to calculate data in the interrupt that depends on the type of touchscreen, which is detected on the driver probe and cannot then be changed. So calculate the size of the data buffer on the driver probe, as well as the data retrieval command, and then use them in the ISR. Signed-off-by: Dario Binacchi --- drivers/input/touchscreen/edt-ft5x06.c | 56 +++++++++++++------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/drivers/input/touchscreen/edt-ft5x06.c b/drivers/input/touchsc= reen/edt-ft5x06.c index fdb32e3591be..24ab9e9f5b21 100644 --- a/drivers/input/touchscreen/edt-ft5x06.c +++ b/drivers/input/touchscreen/edt-ft5x06.c @@ -135,6 +135,10 @@ struct edt_ft5x06_ts_data { int offset_y; int report_rate; int max_support_points; + int point_len; + u8 tdata_cmd; + int tdata_len; + int tdata_offset; =20 char name[EDT_NAME_LEN]; char fw_version[EDT_NAME_LEN]; @@ -296,38 +300,13 @@ static irqreturn_t edt_ft5x06_ts_isr(int irq, void *d= ev_id) { struct edt_ft5x06_ts_data *tsdata =3D dev_id; struct device *dev =3D &tsdata->client->dev; - u8 cmd; u8 rdbuf[63]; int i, type, x, y, id; - int offset, tplen, datalen, crclen; int error; =20 - switch (tsdata->version) { - case EDT_M06: - cmd =3D 0xf9; /* tell the controller to send touch data */ - offset =3D 5; /* where the actual touch data starts */ - tplen =3D 4; /* data comes in so called frames */ - crclen =3D 1; /* length of the crc data */ - break; - - case EDT_M09: - case EDT_M12: - case EV_FT: - case GENERIC_FT: - cmd =3D 0x0; - offset =3D 3; - tplen =3D 6; - crclen =3D 0; - break; - - default: - goto out; - } - memset(rdbuf, 0, sizeof(rdbuf)); - datalen =3D tplen * tsdata->max_support_points + offset + crclen; - - error =3D regmap_bulk_read(tsdata->regmap, cmd, rdbuf, datalen); + error =3D regmap_bulk_read(tsdata->regmap, tsdata->tdata_cmd, rdbuf, + tsdata->tdata_len); if (error) { dev_err_ratelimited(dev, "Unable to fetch data, error: %d\n", error); @@ -335,7 +314,7 @@ static irqreturn_t edt_ft5x06_ts_isr(int irq, void *dev= _id) } =20 for (i =3D 0; i < tsdata->max_support_points; i++) { - u8 *buf =3D &rdbuf[i * tplen + offset]; + u8 *buf =3D &rdbuf[i * tsdata->point_len + tsdata->tdata_offset]; =20 type =3D buf[0] >> 6; /* ignore Reserved events */ @@ -1071,6 +1050,26 @@ static void edt_ft5x06_ts_get_parameters(struct edt_= ft5x06_ts_data *tsdata) } } =20 +static void edt_ft5x06_ts_set_tdata_parameters(struct edt_ft5x06_ts_data *= tsdata) +{ + int crclen; + + if (tsdata->version =3D=3D EDT_M06) { + tsdata->tdata_cmd =3D 0xf9; + tsdata->tdata_offset =3D 5; + tsdata->point_len =3D 4; + crclen =3D 1; + } else { + tsdata->tdata_cmd =3D 0x0; + tsdata->tdata_offset =3D 3; + tsdata->point_len =3D 6; + crclen =3D 0; + } + + tsdata->tdata_len =3D tsdata->point_len * tsdata->max_support_points + + tsdata->tdata_offset + crclen; +} + static void edt_ft5x06_ts_set_regs(struct edt_ft5x06_ts_data *tsdata) { struct edt_reg_addr *reg_addr =3D &tsdata->reg_addr; @@ -1274,6 +1273,7 @@ static int edt_ft5x06_ts_probe(struct i2c_client *cli= ent) */ regmap_read(tsdata->regmap, 0x00, &val); =20 + edt_ft5x06_ts_set_tdata_parameters(tsdata); edt_ft5x06_ts_set_regs(tsdata); edt_ft5x06_ts_get_defaults(&client->dev, tsdata); edt_ft5x06_ts_get_parameters(tsdata); --=20 2.32.0