From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
To: Martin Kepplinger <martink@posteo.de>
Cc: Dixit Parmar <dixitparmar19@gmail.com>,
Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>,
Matthias Fend <matthias.fend@wolfvision.net>,
linux-input@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [PATCH 1/8] Input: st1232 - simplify parsing of read buffer
Date: Tue, 22 Oct 2019 12:56:15 -0700 [thread overview]
Message-ID: <20191022195622.66976-2-dmitry.torokhov@gmail.com> (raw)
In-Reply-To: <20191022195622.66976-1-dmitry.torokhov@gmail.com>
Avoid complex 2-variable loop when parsing touchscreen data to make the
code clearer.
Acked-by: Martin Kepplinger <martink@posteo.de>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
---
drivers/input/touchscreen/st1232.c | 50 +++++++++++++++---------------
1 file changed, 25 insertions(+), 25 deletions(-)
diff --git a/drivers/input/touchscreen/st1232.c b/drivers/input/touchscreen/st1232.c
index 1139714e72e2..47033ef3749a 100644
--- a/drivers/input/touchscreen/st1232.c
+++ b/drivers/input/touchscreen/st1232.c
@@ -57,38 +57,38 @@ static int st1232_ts_read_data(struct st1232_ts_data *ts)
{
struct st1232_ts_finger *finger = ts->finger;
struct i2c_client *client = ts->client;
- struct i2c_msg msg[2];
- int error;
- int i, y;
u8 start_reg = ts->chip_info->start_reg;
- u8 *buf = ts->read_buf;
-
- /* read touchscreen data */
- msg[0].addr = client->addr;
- msg[0].flags = 0;
- msg[0].len = 1;
- msg[0].buf = &start_reg;
-
- msg[1].addr = ts->client->addr;
- msg[1].flags = I2C_M_RD;
- msg[1].len = ts->read_buf_len;
- msg[1].buf = buf;
+ struct i2c_msg msg[] = {
+ {
+ .addr = client->addr,
+ .len = sizeof(start_reg),
+ .buf = &start_reg,
+ },
+ {
+ .addr = client->addr,
+ .flags = I2C_M_RD,
+ .len = ts->read_buf_len,
+ .buf = ts->read_buf,
+ }
+ };
+ int ret;
+ int i;
+ u8 *buf;
- error = i2c_transfer(client->adapter, msg, 2);
- if (error < 0)
- return error;
+ ret = i2c_transfer(client->adapter, msg, ARRAY_SIZE(msg));
+ if (ret != ARRAY_SIZE(msg))
+ return ret < 0 ? ret : -EIO;
- for (i = 0, y = 0; i < ts->chip_info->max_fingers; i++, y += 3) {
- finger[i].is_valid = buf[i + y] >> 7;
+ for (i = 0; i < ts->chip_info->max_fingers; i++) {
+ buf = &ts->read_buf[i * 4];
+ finger[i].is_valid = buf[0] >> 7;
if (finger[i].is_valid) {
- finger[i].x = ((buf[i + y] & 0x0070) << 4) |
- buf[i + y + 1];
- finger[i].y = ((buf[i + y] & 0x0007) << 8) |
- buf[i + y + 2];
+ finger[i].x = ((buf[0] & 0x70) << 4) | buf[1];
+ finger[i].y = ((buf[0] & 0x07) << 8) | buf[2];
/* st1232 includes a z-axis / touch strength */
if (ts->chip_info->have_z)
- finger[i].t = buf[i + 6];
+ finger[i].t = ts->read_buf[i + 6];
}
}
--
2.23.0.866.gb869b98d4c-goog
next prev parent reply other threads:[~2019-10-22 19:57 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-10-22 19:56 [PATCH 0/8] Face lift for st1232 touchscreen driver Dmitry Torokhov
2019-10-22 19:56 ` Dmitry Torokhov [this message]
2019-10-22 19:56 ` [PATCH 2/8] Input: st1232 - do not unconditionally configure as wakeup source Dmitry Torokhov
2019-10-22 19:56 ` [PATCH 3/8] Input: st1232 - rely on I2C core to configure wakeup interrupt Dmitry Torokhov
2019-10-22 19:56 ` [PATCH 4/8] Input: st1232 - do not reset the chip too early Dmitry Torokhov
2019-10-22 19:56 ` [PATCH 5/8] Input: st1232 - do not allocate fingers data separately Dmitry Torokhov
2019-10-22 19:56 ` [PATCH 6/8] Input: st1232 - do not set parent device explicitly Dmitry Torokhov
2019-10-22 19:56 ` [PATCH 7/8] Input: st1232 - note that the receive buffer is DMA-safe Dmitry Torokhov
2019-10-22 19:56 ` [PATCH 8/8] Input: st1232 - switch to using MT-B protocol Dmitry Torokhov
2019-10-28 7:28 ` AW: [PATCH 0/8] Face lift for st1232 touchscreen driver Matthias Fend
2019-10-29 4:09 ` Dmitry Torokhov
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=20191022195622.66976-2-dmitry.torokhov@gmail.com \
--to=dmitry.torokhov@gmail.com \
--cc=dixitparmar19@gmail.com \
--cc=kuninori.morimoto.gx@renesas.com \
--cc=linux-input@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=martink@posteo.de \
--cc=matthias.fend@wolfvision.net \
/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.