diff options
author | Daniel Kurtz <djkurtz@chromium.org> | 2012-06-28 21:08:14 +0800 |
---|---|---|
committer | Henrik Rydberg <rydberg@euromail.se> | 2012-06-29 15:58:04 +0200 |
commit | 23003a8496b3f8100ed215dfda438cece5745545 (patch) | |
tree | e68d4437c3bbb43bcc5411ff86de2ac66967c6dd /drivers | |
parent | cf94bc09c89c923d339c68cf89360c02578ceee3 (diff) | |
download | op-kernel-dev-23003a8496b3f8100ed215dfda438cece5745545.zip op-kernel-dev-23003a8496b3f8100ed215dfda438cece5745545.tar.gz |
Input: atmel_mxt_ts - read ID information block in one i2c transaction
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>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/input/touchscreen/atmel_mxt_ts.c | 26 |
1 files changed, 3 insertions, 23 deletions
diff --git a/drivers/input/touchscreen/atmel_mxt_ts.c b/drivers/input/touchscreen/atmel_mxt_ts.c index 99d5210..fac3791 100644 --- a/drivers/input/touchscreen/atmel_mxt_ts.c +++ b/drivers/input/touchscreen/atmel_mxt_ts.c @@ -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; } |