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