lkml.org 
[lkml]   [2019]   [Aug]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH v1 04/63] Input: atmel_mxt_ts - split large i2c transfers into blocks
    From
    Date
    Hi Dmitry

    On 2019/08/17 2:18, Dmitry Torokhov wrote:
    > On Fri, Aug 16, 2019 at 05:28:53PM +0900, Jiada Wang wrote:
    >> From: Nick Dyer <nick.dyer@itdev.co.uk>
    >>
    >> On some firmware variants, the size of the info block exceeds what can
    >> be read in a single transfer.
    >>
    >> Signed-off-by: Nick Dyer <nick.dyer@itdev.co.uk>
    >> (cherry picked from ndyer/linux/for-upstream commit 74c4f5277cfa403d43fafc404119dc57a08677db)
    >> [gdavis: Forward port and fix conflicts due to v4.14.51 commit
    >> 960fe000b1d3 ("Input: atmel_mxt_ts - fix the firmware
    >> update").]
    >> Signed-off-by: George G. Davis <george_davis@mentor.com>
    >> Signed-off-by: Jiada Wang <jiada_wang@mentor.com>
    >> ---
    >> drivers/input/touchscreen/atmel_mxt_ts.c | 27 +++++++++++++++++++++---
    >> 1 file changed, 24 insertions(+), 3 deletions(-)
    >>
    >> diff --git a/drivers/input/touchscreen/atmel_mxt_ts.c b/drivers/input/touchscreen/atmel_mxt_ts.c
    >> index 9b165d23e092..2d70ddf71cd9 100644
    >> --- a/drivers/input/touchscreen/atmel_mxt_ts.c
    >> +++ b/drivers/input/touchscreen/atmel_mxt_ts.c
    >> @@ -40,7 +40,7 @@
    >> #define MXT_OBJECT_START 0x07
    >> #define MXT_OBJECT_SIZE 6
    >> #define MXT_INFO_CHECKSUM_SIZE 3
    >> -#define MXT_MAX_BLOCK_WRITE 256
    >> +#define MXT_MAX_BLOCK_WRITE 255
    >>
    >> /* Object types */
    >> #define MXT_DEBUG_DIAGNOSTIC_T37 37
    >> @@ -659,6 +659,27 @@ static int __mxt_read_reg(struct i2c_client *client,
    >> return ret;
    >> }
    >>
    >> +static int mxt_read_blks(struct mxt_data *data, u16 start, u16 count, u8 *buf)
    >
    > Can we call this __mxt_read_reg() and the original read reg call
    > __mxt_read_chunk()?
    >
    yes, I will update in v2 patch-set,
    so that every call to __mxt_read_reg() in atmel driver,
    can have the feature to split large size transfer.

    Thanks,
    Jiada

    >> +{
    >> + u16 offset = 0;
    >> + int error;
    >> + u16 size;
    >> +
    >> + while (offset < count) {
    >> + size = min(MXT_MAX_BLOCK_WRITE, count - offset);
    >> +
    >> + error = __mxt_read_reg(data->client,
    >> + start + offset,
    >> + size, buf + offset);
    >> + if (error)
    >> + return error;
    >> +
    >> + offset += size;
    >> + }
    >> +
    >> + return 0;
    >> +}
    >
    > Thanks.
    >

    \
     
     \ /
      Last update: 2019-08-22 07:30    [W:2.460 / U:0.200 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site