Inter-revision diff: patch 15

Comparing v4 (message) to v1 (message)

--- v4
+++ v1
@@ -1,32 +1,62 @@
-Print unsigned values as '%u'.
-Also, parse and print the firmware version in its canonical format, as
-suggested by Nick Dyer.
+Write each object using a single bulk i2c write transfer.
 
 Signed-off-by: Daniel Kurtz <djkurtz@chromium.org>
 ---
- drivers/input/touchscreen/atmel_mxt_ts.c |    8 ++++----
- 1 files changed, 4 insertions(+), 4 deletions(-)
+ drivers/input/touchscreen/atmel_mxt_ts.c |   28 ++++++++++++++--------------
+ 1 files changed, 14 insertions(+), 14 deletions(-)
 
 diff --git a/drivers/input/touchscreen/atmel_mxt_ts.c b/drivers/input/touchscreen/atmel_mxt_ts.c
-index 214bf8d..9200cf4 100644
+index 9e1ce03..0277381 100644
 --- a/drivers/input/touchscreen/atmel_mxt_ts.c
 +++ b/drivers/input/touchscreen/atmel_mxt_ts.c
-@@ -837,12 +837,12 @@ static int mxt_initialize(struct mxt_data *data)
- 	msleep(MXT_RESET_TIME);
+@@ -609,33 +609,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, config_size;
++	int i, offset;
++	int ret;
  
- 	dev_info(&client->dev,
--			"Family ID: %d Variant ID: %d Version: %d Build: %d\n",
--			info->family_id, info->variant_id, info->version,
--			info->build);
-+			"Family ID: %u Variant ID: %u Major.Minor.Build: %u.%u.%02X\n",
-+			info->family_id, info->variant_id, info->version >> 4,
-+			info->version & 0xf, info->build);
+ 	if (!pdata->config) {
+ 		dev_dbg(dev, "No cfg data defined, skipping reg init\n");
+ 		return 0;
+ 	}
  
- 	dev_info(&client->dev,
--			"Matrix X Size: %d Matrix Y Size: %d Object Num: %d\n",
-+			"Matrix X Size: %u Matrix Y Size: %u Object Num: %u\n",
- 			info->matrix_xsize, info->matrix_ysize,
- 			info->object_num);
+-	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;
+ 
+ 		config_size = object->size * object->instances;
+-		for (j = 0; j < config_size; 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]);
++		if (offset + config_size > pdata->config_length) {
++			dev_err(dev, "Not enough config data!\n");
++			return -EINVAL;
+ 		}
+-		index += config_size;
++
++		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
+
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help