lkml.org 
[lkml]   [2020]   [Feb]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 4.19 152/252] Input: edt-ft5x06 - work around first register access error
    Date
    From: Philipp Zabel <p.zabel@pengutronix.de>

    [ Upstream commit e112324cc0422c046f1cf54c56f333d34fa20885 ]

    The EP0700MLP1 returns bogus data on the first register read access
    (reading the threshold parameter from register 0x00):

    edt_ft5x06 2-0038: crc error: 0xfc expected, got 0x40

    It ignores writes until then. This patch adds a dummy read after which
    the number of sensors and parameter read/writes work correctly.

    Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
    Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
    Tested-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/input/touchscreen/edt-ft5x06.c | 7 +++++++
    1 file changed, 7 insertions(+)

    diff --git a/drivers/input/touchscreen/edt-ft5x06.c b/drivers/input/touchscreen/edt-ft5x06.c
    index 1e18ca0d1b4e1..3fdaa644a82c1 100644
    --- a/drivers/input/touchscreen/edt-ft5x06.c
    +++ b/drivers/input/touchscreen/edt-ft5x06.c
    @@ -968,6 +968,7 @@ static int edt_ft5x06_ts_probe(struct i2c_client *client,
    {
    const struct edt_i2c_chip_data *chip_data;
    struct edt_ft5x06_ts_data *tsdata;
    + u8 buf[2] = { 0xfc, 0x00 };
    struct input_dev *input;
    unsigned long irq_flags;
    int error;
    @@ -1037,6 +1038,12 @@ static int edt_ft5x06_ts_probe(struct i2c_client *client,
    return error;
    }

    + /*
    + * 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);
    +
    edt_ft5x06_ts_set_regs(tsdata);
    edt_ft5x06_ts_get_defaults(&client->dev, tsdata);
    edt_ft5x06_ts_get_parameters(tsdata);
    --
    2.20.1
    \
     
     \ /
      Last update: 2020-02-14 17:16    [W:4.168 / U:0.888 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site