diff options
author | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2010-08-10 11:41:58 -0400 |
---|---|---|
committer | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2010-08-10 11:41:58 -0400 |
commit | 5fc0d36c00e6a2d0a9f2a0a815cff5b9a13b080d (patch) | |
tree | 819d3f27a826f29210398615f4918a4cd9154836 /drivers/input/keyboard | |
parent | d01d0756f75e7a5b4b43764ad45b83c4340f11d6 (diff) | |
parent | 6ac8a99b906b01eaceef0057dbee4a225a32c423 (diff) |
Merge branch 'next' into for-linus
Diffstat (limited to 'drivers/input/keyboard')
-rw-r--r-- | drivers/input/keyboard/gpio_keys.c | 22 | ||||
-rw-r--r-- | drivers/input/keyboard/hil_kbd.c | 21 |
2 files changed, 34 insertions, 9 deletions
diff --git a/drivers/input/keyboard/gpio_keys.c b/drivers/input/keyboard/gpio_keys.c index a9fd147f2ba..6069abe31e4 100644 --- a/drivers/input/keyboard/gpio_keys.c +++ b/drivers/input/keyboard/gpio_keys.c | |||
@@ -39,6 +39,8 @@ struct gpio_keys_drvdata { | |||
39 | struct input_dev *input; | 39 | struct input_dev *input; |
40 | struct mutex disable_lock; | 40 | struct mutex disable_lock; |
41 | unsigned int n_buttons; | 41 | unsigned int n_buttons; |
42 | int (*enable)(struct device *dev); | ||
43 | void (*disable)(struct device *dev); | ||
42 | struct gpio_button_data data[0]; | 44 | struct gpio_button_data data[0]; |
43 | }; | 45 | }; |
44 | 46 | ||
@@ -423,6 +425,21 @@ fail2: | |||
423 | return error; | 425 | return error; |
424 | } | 426 | } |
425 | 427 | ||
428 | static int gpio_keys_open(struct input_dev *input) | ||
429 | { | ||
430 | struct gpio_keys_drvdata *ddata = input_get_drvdata(input); | ||
431 | |||
432 | return ddata->enable ? ddata->enable(input->dev.parent) : 0; | ||
433 | } | ||
434 | |||
435 | static void gpio_keys_close(struct input_dev *input) | ||
436 | { | ||
437 | struct gpio_keys_drvdata *ddata = input_get_drvdata(input); | ||
438 | |||
439 | if (ddata->disable) | ||
440 | ddata->disable(input->dev.parent); | ||
441 | } | ||
442 | |||
426 | static int __devinit gpio_keys_probe(struct platform_device *pdev) | 443 | static int __devinit gpio_keys_probe(struct platform_device *pdev) |
427 | { | 444 | { |
428 | struct gpio_keys_platform_data *pdata = pdev->dev.platform_data; | 445 | struct gpio_keys_platform_data *pdata = pdev->dev.platform_data; |
@@ -444,13 +461,18 @@ static int __devinit gpio_keys_probe(struct platform_device *pdev) | |||
444 | 461 | ||
445 | ddata->input = input; | 462 | ddata->input = input; |
446 | ddata->n_buttons = pdata->nbuttons; | 463 | ddata->n_buttons = pdata->nbuttons; |
464 | ddata->enable = pdata->enable; | ||
465 | ddata->disable = pdata->disable; | ||
447 | mutex_init(&ddata->disable_lock); | 466 | mutex_init(&ddata->disable_lock); |
448 | 467 | ||
449 | platform_set_drvdata(pdev, ddata); | 468 | platform_set_drvdata(pdev, ddata); |
469 | input_set_drvdata(input, ddata); | ||
450 | 470 | ||
451 | input->name = pdev->name; | 471 | input->name = pdev->name; |
452 | input->phys = "gpio-keys/input0"; | 472 | input->phys = "gpio-keys/input0"; |
453 | input->dev.parent = &pdev->dev; | 473 | input->dev.parent = &pdev->dev; |
474 | input->open = gpio_keys_open; | ||
475 | input->close = gpio_keys_close; | ||
454 | 476 | ||
455 | input->id.bustype = BUS_HOST; | 477 | input->id.bustype = BUS_HOST; |
456 | input->id.vendor = 0x0001; | 478 | input->id.vendor = 0x0001; |
diff --git a/drivers/input/keyboard/hil_kbd.c b/drivers/input/keyboard/hil_kbd.c index c83f4b2ec7d..ddd5afd301d 100644 --- a/drivers/input/keyboard/hil_kbd.c +++ b/drivers/input/keyboard/hil_kbd.c | |||
@@ -232,15 +232,16 @@ static void hil_dev_handle_ptr_events(struct hil_dev *ptr) | |||
232 | if (absdev) { | 232 | if (absdev) { |
233 | val = lo + (hi << 8); | 233 | val = lo + (hi << 8); |
234 | #ifdef TABLET_AUTOADJUST | 234 | #ifdef TABLET_AUTOADJUST |
235 | if (val < dev->absmin[ABS_X + i]) | 235 | if (val < input_abs_min(dev, ABS_X + i)) |
236 | dev->absmin[ABS_X + i] = val; | 236 | input_abs_set_min(dev, ABS_X + i, val); |
237 | if (val > dev->absmax[ABS_X + i]) | 237 | if (val > input_abs_max(dev, ABS_X + i)) |
238 | dev->absmax[ABS_X + i] = val; | 238 | XXinput_abs_set_max(dev, ABS_X + i, val); |
239 | #endif | 239 | #endif |
240 | if (i%3) val = dev->absmax[ABS_X + i] - val; | 240 | if (i % 3) |
241 | val = input_abs_max(dev, ABS_X + i) - val; | ||
241 | input_report_abs(dev, ABS_X + i, val); | 242 | input_report_abs(dev, ABS_X + i, val); |
242 | } else { | 243 | } else { |
243 | val = (int) (((int8_t)lo) | ((int8_t)hi << 8)); | 244 | val = (int) (((int8_t) lo) | ((int8_t) hi << 8)); |
244 | if (i % 3) | 245 | if (i % 3) |
245 | val *= -1; | 246 | val *= -1; |
246 | input_report_rel(dev, REL_X + i, val); | 247 | input_report_rel(dev, REL_X + i, val); |
@@ -387,9 +388,11 @@ static void hil_dev_pointer_setup(struct hil_dev *ptr) | |||
387 | 388 | ||
388 | #ifdef TABLET_AUTOADJUST | 389 | #ifdef TABLET_AUTOADJUST |
389 | for (i = 0; i < ABS_MAX; i++) { | 390 | for (i = 0; i < ABS_MAX; i++) { |
390 | int diff = input_dev->absmax[ABS_X + i] / 10; | 391 | int diff = input_abs_max(input_dev, ABS_X + i) / 10; |
391 | input_dev->absmin[ABS_X + i] += diff; | 392 | input_abs_set_min(input_dev, ABS_X + i, |
392 | input_dev->absmax[ABS_X + i] -= diff; | 393 | input_abs_min(input_dev, ABS_X + i) + diff) |
394 | XXinput_abs_set_max(input_dev, ABS_X + i, | ||
395 | input_abs_max(input_dev, ABS_X + i) - diff) | ||
393 | } | 396 | } |
394 | #endif | 397 | #endif |
395 | 398 | ||