* Atmel maXTouch Touchscreen driver
  *
  * Copyright (C) 2010 Samsung Electronics Co.Ltd
+ * Copyright (C) 2012 Google, Inc.
+ *
  * Author: Joonyoung Shim <jy0922.shim@samsung.com>
  *
  * This program is free software; you can redistribute  it and/or modify it
 struct mxt_object {
        u8 type;
        u16 start_address;
-       u8 size;                /* Size of each instance - 1 */
-       u8 instances;           /* Number of instances - 1 */
+       u8 size_minus_one;
+       u8 instances_minus_one;
        u8 num_report_ids;
 } __packed;
 
        u8 T19_reportid;
 };
 
+static size_t mxt_obj_size(const struct mxt_object *obj)
+{
+       return obj->size_minus_one + 1;
+}
+
+static size_t mxt_obj_instances(const struct mxt_object *obj)
+{
+       return obj->instances_minus_one + 1;
+}
+
 static bool mxt_object_readable(unsigned int type)
 {
        switch (type) {
        u16 reg;
 
        object = mxt_get_object(data, type);
-       if (!object || offset >= object->size + 1)
+       if (!object || offset >= mxt_obj_size(object))
                return -EINVAL;
 
        reg = object->start_address;
                if (!mxt_object_writable(object->type))
                        continue;
 
-               size = (object->size + 1) * (object->instances + 1);
+               size = mxt_obj_size(object) * mxt_obj_instances(object);
                if (index + size > pdata->config_length) {
                        dev_err(dev, "Not enough config data!\n");
                        return -EINVAL;
                if (object->num_report_ids) {
                        min_id = reportid;
                        reportid += object->num_report_ids *
-                                       (object->instances + 1);
+                                       mxt_obj_instances(object);
                        max_id = reportid - 1;
                } else {
                        min_id = 0;
                }
 
                dev_dbg(&data->client->dev,
-                       "Type %2d Start %3d Size %3d Instances %2d ReportIDs %3u : %3u\n",
-                       object->type, object->start_address, object->size + 1,
-                       object->instances + 1, min_id, max_id);
+                       "Type %2d Start %3d Size %3zd Instances %2zd ReportIDs %3u : %3u\n",
+                       object->type, object->start_address,
+                       mxt_obj_size(object), mxt_obj_instances(object),
+                       min_id, max_id);
 
                switch (object->type) {
                case MXT_GEN_COMMAND_T6:
 {
        int i;
 
-       if (object->instances > 0)
+       if (mxt_obj_instances(object) > 1)
                count += scnprintf(buf + count, PAGE_SIZE - count,
                                   "Instance %u\n", instance);
 
-       for (i = 0; i < object->size + 1; i++)
+       for (i = 0; i < mxt_obj_size(object); i++)
                count += scnprintf(buf + count, PAGE_SIZE - count,
                                "\t[%2u]: %02x (%d)\n", i, val[i], val[i]);
        count += scnprintf(buf + count, PAGE_SIZE - count, "\n");
                count += scnprintf(buf + count, PAGE_SIZE - count,
                                "T%u:\n", object->type);
 
-               for (j = 0; j < object->instances + 1; j++) {
-                       u16 size = object->size + 1;
+               for (j = 0; j < mxt_obj_instances(object); j++) {
+                       u16 size = mxt_obj_size(object);
                        u16 addr = object->start_address + j * size;
 
                        error = __mxt_read_reg(data->client, addr, size, obuf);