Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Input: mms114 - fix handling of mms345l

MMS345L is another first generation touch screen from Melfas,
which uses the same registers as MMS152.

However, using I2C_M_NOSTART for it causes errors when reading:

i2c i2c-0: sendbytes: NAK bailout.
mms114 0-0048: __mms114_read_reg: i2c transfer failed (-5)

The driver works fine as soon as I2C_M_NOSTART is removed.

Reviewed-by: Andi Shyti <andi@etezian.org>
Signed-off-by: Stephan Gerhold <stephan@gerhold.net>
Link: https://lore.kernel.org/r/20200405170904.61512-1-stephan@gerhold.net
[dtor: removed separate mms345l handling, made everyone use standard
transfer mode, propagated the 10bit addressing flag to the read part of the
transfer as well.]
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>

authored by

Stephan Gerhold and committed by
Dmitry Torokhov
3f8f7705 f27ad893

+5 -7
+5 -7
drivers/input/touchscreen/mms114.c
··· 91 91 if (reg <= MMS114_MODE_CONTROL && reg + len > MMS114_MODE_CONTROL) 92 92 BUG(); 93 93 94 - /* Write register: use repeated start */ 94 + /* Write register */ 95 95 xfer[0].addr = client->addr; 96 - xfer[0].flags = I2C_M_TEN | I2C_M_NOSTART; 96 + xfer[0].flags = client->flags & I2C_M_TEN; 97 97 xfer[0].len = 1; 98 98 xfer[0].buf = &buf; 99 99 100 100 /* Read data */ 101 101 xfer[1].addr = client->addr; 102 - xfer[1].flags = I2C_M_RD; 102 + xfer[1].flags = (client->flags & I2C_M_TEN) | I2C_M_RD; 103 103 xfer[1].len = len; 104 104 xfer[1].buf = val; 105 105 ··· 428 428 const void *match_data; 429 429 int error; 430 430 431 - if (!i2c_check_functionality(client->adapter, 432 - I2C_FUNC_PROTOCOL_MANGLING)) { 433 - dev_err(&client->dev, 434 - "Need i2c bus that supports protocol mangling\n"); 431 + if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) { 432 + dev_err(&client->dev, "Not supported I2C adapter\n"); 435 433 return -ENODEV; 436 434 } 437 435