Inter-revision diff: patch 9

Comparing v3 (message) to v4 (message)

--- v3
+++ v4
@@ -1,119 +1,62 @@
-Read whole info block in one i2c transaction.
-And then re-read the matrix size after applying pdata config, since
-it may have changed.
-Note, however, that the matrix x & y size are just displayed for
-information purposes.  They aren't actually used by the driver itself.
-
-Also, parse and info print the firmware major and minor version numbers.
+For objects with multiple instances, dump them all, prepending each with
+its "Instance #".
 
 Signed-off-by: Daniel Kurtz <djkurtz@chromium.org>
 ---
- drivers/input/touchscreen/atmel_mxt_ts.c |   65 +++++------------------------
- 1 files changed, 12 insertions(+), 53 deletions(-)
+ drivers/input/touchscreen/atmel_mxt_ts.c |   30 +++++++++++++++++++++---------
+ 1 files changed, 21 insertions(+), 9 deletions(-)
 
 diff --git a/drivers/input/touchscreen/atmel_mxt_ts.c b/drivers/input/touchscreen/atmel_mxt_ts.c
-index 1da814b..13ecbb4 100644
+index 65fd89b..281fcbd 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"
+@@ -882,7 +882,7 @@ static ssize_t mxt_object_show(struct device *dev,
+ 	struct mxt_data *data = dev_get_drvdata(dev);
+ 	struct mxt_object *object;
+ 	int count = 0;
+-	int i, j;
++	int i, j, k;
+ 	int error;
+ 	u8 val;
+ 	u8 *obuf;
+@@ -902,18 +902,30 @@ static ssize_t mxt_object_show(struct device *dev,
+ 		count += scnprintf(buf + count, PAGE_SIZE - count,
+ 				"T%u:\n", object->type);
  
- /* Registers */
-+#define MXT_INFO		0x00
- #define MXT_FAMILY_ID		0x00
- #define MXT_VARIANT_ID		0x01
- #define MXT_VERSION		0x02
-@@ -738,41 +739,6 @@ static void mxt_handle_pdata(struct mxt_data *data)
+-		error = __mxt_read_reg(data->client, object->start_address,
+-				object->size + 1, obuf);
+-		if (error)
+-			break;
++		for (j = 0; j < object->instances + 1; j++) {
++			u16 size = object->size + 1;
++			u16 addr = object->start_address + j * size;
++
++			error = __mxt_read_reg(data->client, addr, size, obuf);
++			if (error)
++				break;
+ 
+-		for (j = 0; j < object->size + 1; j++) {
+-			val = obuf[j];
++			if (object->instances > 0)
++				count += scnprintf(buf + count,
++						PAGE_SIZE - count,
++						"Instance %u\n", j);
+ 
++			for (k = 0; k < object->size + 1; k++) {
++				val = obuf[k];
++
++				count += scnprintf(buf + count,
++						PAGE_SIZE - count,
++						"\t[%2u]: %02x (%d)\n",
++						k, val, val);
++			}
+ 			count += scnprintf(buf + count, PAGE_SIZE - count,
+-					"\t[%2d]: %02x (%d)\n", j, val, val);
++					"\n");
+ 		}
+-		count += scnprintf(buf + count, PAGE_SIZE - count, "\n");
  	}
- }
  
--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, 1, &val);
--	if (error)
--		return error;
--	info->family_id = val;
--
--	error = mxt_read_reg(client, MXT_VARIANT_ID, 1, &val);
--	if (error)
--		return error;
--	info->variant_id = val;
--
--	error = mxt_read_reg(client, MXT_VERSION, 1, &val);
--	if (error)
--		return error;
--	info->version = val;
--
--	error = mxt_read_reg(client, MXT_BUILD, 1, &val);
--	if (error)
--		return error;
--	info->build = val;
--
--	error = mxt_read_reg(client, MXT_OBJECT_NUM, 1, &val);
--	if (error)
--		return error;
--	info->object_num = val;
--
--	return 0;
--}
--
- static int mxt_get_object_table(struct mxt_data *data)
- {
- 	int error;
-@@ -808,11 +774,12 @@ static int mxt_get_object_table(struct mxt_data *data)
- static int mxt_initialize(struct mxt_data *data)
- {
- 	struct i2c_client *client = data->client;
-+	struct device *dev = &client->dev;
- 	struct mxt_info *info = &data->info;
- 	int error;
--	u8 val;
- 
--	error = mxt_get_info(data);
-+	/* Read 7-byte info block starting at address 0 */
-+	error = mxt_read_reg(client, MXT_INFO, sizeof(*info), info);
- 	if (error)
- 		return error;
- 
-@@ -847,26 +814,18 @@ static int mxt_initialize(struct mxt_data *data)
- 			MXT_COMMAND_RESET, 1);
- 	msleep(MXT_RESET_TIME);
- 
--	/* Update matrix size at info struct */
--	error = mxt_read_reg(client, MXT_MATRIX_X_SIZE, 1, &val);
--	if (error)
--		return error;
--	info->matrix_xsize = val;
--
--	error = mxt_read_reg(client, MXT_MATRIX_Y_SIZE, 1, &val);
-+	/* Update matrix size, since it may have been modified by pdata */
-+	error = mxt_read_reg(client, MXT_MATRIX_X_SIZE, 2,
-+			     &info->matrix_xsize);
- 	if (error)
- 		return error;
--	info->matrix_ysize = val;
- 
--	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);
-+	dev_info(dev, "Family ID: %d Variant ID: %d Major.Minor.Build: %d.%d.%d\n",
-+		 info->family_id, info->variant_id, info->version >> 4,
-+		 info->version & 0xf, info->build);
- 
--	dev_info(&client->dev,
--			"Matrix X Size: %d Matrix Y Size: %d Object Num: %d\n",
--			info->matrix_xsize, info->matrix_ysize,
--			info->object_num);
-+	dev_info(dev, "Matrix X Size: %d Matrix Y Size: %d Object Num: %d\n",
-+		 info->matrix_xsize, info->matrix_ysize, info->object_num);
- 
- 	return 0;
- }
+ 	kfree(obuf);
 -- 
 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