lkml.org 
[lkml]   [2012]   [Apr]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 08/14 v3] Input: atmel_mxt_ts - optimize writing of object table entries
    Date
    Write each object using a single bulk i2c write transfer.

    Signed-off-by: Daniel Kurtz <djkurtz@chromium.org>
    Reviewed-by: Joonyoung Shim <jy0922.shim@samsung.com>
    ---
    drivers/input/touchscreen/atmel_mxt_ts.c | 31 ++++++++++++++---------------
    1 files changed, 15 insertions(+), 16 deletions(-)

    diff --git a/drivers/input/touchscreen/atmel_mxt_ts.c b/drivers/input/touchscreen/atmel_mxt_ts.c
    index 03b292f..1da814b 100644
    --- a/drivers/input/touchscreen/atmel_mxt_ts.c
    +++ b/drivers/input/touchscreen/atmel_mxt_ts.c
    @@ -636,34 +636,33 @@ end:
    static int mxt_check_reg_init(struct mxt_data *data)
    {
    const struct mxt_platform_data *pdata = data->pdata;
    - struct mxt_object *object;
    struct device *dev = &data->client->dev;
    - int index = 0;
    - int i, j, config_offset;
    + int i, offset;
    + int ret;

    if (!pdata->config) {
    dev_dbg(dev, "No cfg data defined, skipping reg init\n");
    return 0;
    }

    - for (i = 0; i < data->info.object_num; i++) {
    - object = data->object_table + i;
    + for (offset = 0, i = 0; i < data->info.object_num; i++) {
    + struct mxt_object *object = &data->object_table[i];
    + size_t config_size;

    if (!mxt_object_writable(object->type))
    continue;

    - for (j = 0;
    - j < (object->size + 1) * (object->instances + 1);
    - j++) {
    - config_offset = index + j;
    - if (config_offset > pdata->config_length) {
    - dev_err(dev, "Not enough config data!\n");
    - return -EINVAL;
    - }
    - mxt_write_object(data, object->type, j,
    - pdata->config[config_offset]);
    + config_size = (object->size + 1) * (object->instances + 1);
    + if (offset + config_size > pdata->config_length) {
    + dev_err(dev, "Not enough config data!\n");
    + return -EINVAL;
    }
    - index += (object->size + 1) * (object->instances + 1);
    +
    + ret = mxt_write_reg(data->client, object->start_address,
    + config_size, &pdata->config[offset]);
    + if (ret)
    + return ret;
    + offset += config_size;
    }

    return 0;
    --
    1.7.7.3


    \
     
     \ /
      Last update: 2012-04-18 22:37    [W:0.027 / U:0.016 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site