linux-2.6-mid-35 commit 1b0857fcd88 (cy8ctmg110:
Add multi-touch capabilities) breaks the kernel build.

There was an error while formatting the patches in email
that resulted in a clean applying patch, which is missing
a chunk of code.

Without that chunk of code, the kernel will not build with
that patch applied.

This patch fixes the kernel build problem.

Compile and run-time tested in kernel-mrst-2.6.35.2 with
  CONFIG_CY8CTMG110_MULTIPLE_INPUT=y
and
  CONFIG_CY8CTMG110_MULTIPLE_INPUT=n

Compile tested against linux-2.6-mid-35 with:
  CONFIG_CY8CTMG110_MULTIPLE_INPUT=y
and
  CONFIG_CY8CTMG110_MULTIPLE_INPUT=n

Tracked on bugs.meego.com as #5951

Signed-off-by: James Ketrenos<jketr...@linux.intel.com>
---
 drivers/input/touchscreen/cy8ctmg110_ts.c |   56 +++++++++++++++++++---------
 1 files changed, 38 insertions(+), 18 deletions(-)

diff --git a/drivers/input/touchscreen/cy8ctmg110_ts.c 
b/drivers/input/touchscreen/cy8ctmg110_ts.c
index 9221d80..0a18f72 100644
--- a/drivers/input/touchscreen/cy8ctmg110_ts.c
+++ b/drivers/input/touchscreen/cy8ctmg110_ts.c
@@ -311,37 +311,57 @@ static int cy8ctmg110_probe(struct i2c_client *client,
                return -EIO;

        ts = kzalloc(sizeof(struct cy8ctmg110), GFP_KERNEL);
-       input_dev = input_allocate_device();

-       if (!ts || !input_dev) {
+       if (!ts) {
                err = -ENOMEM;
                goto err_free_mem;
        }

        ts->client = client;
        i2c_set_clientdata(client, ts);
-
-       ts->input = input_dev;
        ts->polling = polling;

-       snprintf(ts->phys, sizeof(ts->phys), "%s/input0",
-                                               dev_name(&client->dev));
+       spin_lock_init(&ts->lock);
+
+#ifdef CONFIG_TOUCHSCREEN_CY8CTMG110_MULTIPLE_INPUT
+       /* Allocate one input device per supported contact point */
+       for (contact = 0; contact<  MAX_FINGERS; contact++) {
+#endif

-       input_dev->name = CY8CTMG110_DRIVER_NAME " Touchscreen";
-       input_dev->phys = ts->phys;
-       input_dev->id.bustype = BUS_I2C;
+               input_dev = input_allocate_device();
+               if (!input_dev) {
+                       err = -ENOMEM;
+                       goto err_free_mem;
+               }

-       spin_lock_init(&ts->lock);
+#ifdef CONFIG_TOUCHSCREEN_CY8CTMG110_MULTIPLE_INPUT
+               ts->input[contact] = input_dev;
+               snprintf(ts->phys[contact], sizeof(ts->phys[contact]),
+                       "%s/input%d", dev_name(&client->dev), contact);
+               input_dev->phys = ts->phys[contact];
+#else
+               ts->input = input_dev;
+               snprintf(ts->phys, sizeof(ts->phys),
+                       "%s/input0", dev_name(&client->dev));
+               input_dev->phys = ts->phys;
+#endif
+
+               input_dev->name = CY8CTMG110_DRIVER_NAME " Touchscreen";
+               input_dev->id.bustype = BUS_I2C;

-       input_set_capability(input_dev, EV_KEY, BTN_TOUCH);
-       input_set_capability(input_dev, EV_ABS, ABS_X);
-       input_set_capability(input_dev, EV_ABS, ABS_Y);
+               input_set_capability(input_dev, EV_KEY, BTN_TOUCH);
+               input_set_capability(input_dev, EV_ABS, ABS_X);
+               input_set_capability(input_dev, EV_ABS, ABS_Y);

-       /* Initialize these with 4 fuzz for jitter... */
-       input_set_abs_params(input_dev, ABS_X, CY8CTMG110_X_MIN,
-                            CY8CTMG110_X_MAX, 4, 0);
-       input_set_abs_params(input_dev, ABS_Y, CY8CTMG110_Y_MIN,
-                            CY8CTMG110_Y_MAX, 4, 0);
+               /* Initialize these with 4 fuzz for jitter... */
+               input_set_abs_params(input_dev, ABS_X, CY8CTMG110_X_MIN,
+                                    CY8CTMG110_X_MAX, 4, 0);
+               input_set_abs_params(input_dev, ABS_Y, CY8CTMG110_Y_MIN,
+                                    CY8CTMG110_Y_MAX, 4, 0);
+
+#ifdef CONFIG_TOUCHSCREEN_CY8CTMG110_MULTIPLE_INPUT
+       }
+#endif

        err = gpio_request(CY8CTMG110_RESET_PIN_GPIO, NULL);

--
1.7.1


_______________________________________________
MeeGo-dev mailing list
MeeGo-dev@meego.com
http://lists.meego.com/listinfo/meego-dev

Reply via email to