Hi Daniel, > For objects with multiple instances, dump them all, prepending each with > its "Instance #". > > Signed-off-by: Daniel Kurtz <djkurtz@xxxxxxxxxxxx> > --- The number of nested for loops is in the red here... How about this (untested) version instead? Thanks, Henrik >From 7e1ae92ac21abb6215df7b0714ca809fb86116c3 Mon Sep 17 00:00:00 2001 From: Daniel Kurtz <djkurtz@xxxxxxxxxxxx> Date: Tue, 26 Jun 2012 14:56:57 +0800 Subject: [PATCH] Input: atmel_mxt_ts - print all instances when dumping objects For objects with multiple instances, dump them all, prepending each with its "Instance #". [rydberg@xxxxxxxxxxx: break out mxt_print_instance()] Signed-off-by: Daniel Kurtz <djkurtz@xxxxxxxxxxxx> Signed-off-by: Henrik Rydberg <rydberg@xxxxxxxxxxx> --- drivers/input/touchscreen/atmel_mxt_ts.c | 36 +++++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/drivers/input/touchscreen/atmel_mxt_ts.c b/drivers/input/touchscreen/atmel_mxt_ts.c index c8cfd7b..5609372 100644 --- a/drivers/input/touchscreen/atmel_mxt_ts.c +++ b/drivers/input/touchscreen/atmel_mxt_ts.c @@ -877,6 +877,25 @@ static void mxt_calc_resolution(struct mxt_data *data) } } +static int mxt_print_instance(char *buf, int count, + struct mxt_object *object, int i, + const u8 *val) +{ + int j; + + if (object->instances > 0) + count += scnprintf(buf + count, PAGE_SIZE - count, + "Instance %u\n", i); + + for (j = 0; j < object->size + 1; j++) + count += scnprintf(buf + count, PAGE_SIZE - count, + "\t[%2u]: %02x (%d)\n", j, val[j], val[j]); + + count += scnprintf(buf + count, PAGE_SIZE - count, "\n"); + + return count; +} + static ssize_t mxt_object_show(struct device *dev, struct device_attribute *attr, char *buf) { @@ -885,7 +904,6 @@ static ssize_t mxt_object_show(struct device *dev, int count = 0; int i, j; int error; - u8 val; u8 *obuf; /* Pre-allocate buffer large enough to hold max sized object. */ @@ -903,18 +921,16 @@ static ssize_t mxt_object_show(struct device *dev, count += scnprintf(buf + count, PAGE_SIZE - count, "T%u:\n", object->type); - 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; - for (j = 0; j < object->size + 1; j++) { - val = obuf[j]; + error = __mxt_read_reg(data->client, addr, size, obuf); + if (error) + break; - count += scnprintf(buf + count, PAGE_SIZE - count, - "\t[%2d]: %02x (%d)\n", j, val, val); + count = mxt_print_instance(buf, count, object, j, obuf); } - count += scnprintf(buf + count, PAGE_SIZE - count, "\n"); } kfree(obuf); -- 1.7.11 -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html