Input: atmel_mxt_ts - read ID information block in one i2c transaction
authorDaniel Kurtz <djkurtz@chromium.org>
Thu, 28 Jun 2012 13:08:14 +0000 (21:08 +0800)
committerHenrik Rydberg <rydberg@euromail.se>
Fri, 29 Jun 2012 13:58:04 +0000 (15:58 +0200)
Reading the whole info block in one i2c transaction speeds up driver
probe significantly, especially on slower i2c busses.

Signed-off-by: Daniel Kurtz <djkurtz@chromium.org>
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
drivers/input/touchscreen/atmel_mxt_ts.c

index 99d5210c7ae8dda063141cc61bfd7b10bcad2c96..fac379146546df6617aaf11c9d671d3240fad7b3 100644 (file)
@@ -36,6 +36,7 @@
 #define MXT_FW_NAME            "maxtouch.fw"
 
 /* Registers */
+#define MXT_INFO               0x00
 #define MXT_FAMILY_ID          0x00
 #define MXT_VARIANT_ID         0x01
 #define MXT_VERSION            0x02
@@ -760,32 +761,11 @@ static int mxt_get_info(struct mxt_data *data)
        struct i2c_client *client = data->client;
        struct mxt_info *info = &data->info;
        int error;
-       u8 val;
-
-       error = mxt_read_reg(client, MXT_FAMILY_ID, &val);
-       if (error)
-               return error;
-       info->family_id = val;
-
-       error = mxt_read_reg(client, MXT_VARIANT_ID, &val);
-       if (error)
-               return error;
-       info->variant_id = val;
-
-       error = mxt_read_reg(client, MXT_VERSION, &val);
-       if (error)
-               return error;
-       info->version = val;
-
-       error = mxt_read_reg(client, MXT_BUILD, &val);
-       if (error)
-               return error;
-       info->build = val;
 
-       error = mxt_read_reg(client, MXT_OBJECT_NUM, &val);
+       /* Read 7-byte info block starting at address 0 */
+       error = __mxt_read_reg(client, MXT_INFO, sizeof(*info), info);
        if (error)
                return error;
-       info->object_num = val;
 
        return 0;
 }