diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2011-02-16 04:36:05 -0500 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2011-02-16 04:44:30 -0500 |
commit | 9035a97a32836d0e456ddafaaf249a844e6e4b5e (patch) | |
tree | 41ec3db083bdb46cd831f0d39db1fe294ae7d55f /drivers/media/rc/rc-main.c | |
parent | fe16d949b45036d9f80e20e07bde1ddacc930b10 (diff) | |
parent | 452858338aec31c1f4414bf07f31663690479869 (diff) |
Merge branch 'drm-intel-fixes' into drm-intel-next
Grab the latest stabilisation bits from -fixes and some suspend and
resume fixes from linus.
Conflicts:
drivers/gpu/drm/i915/i915_drv.h
drivers/gpu/drm/i915/i915_irq.c
Diffstat (limited to 'drivers/media/rc/rc-main.c')
-rw-r--r-- | drivers/media/rc/rc-main.c | 28 |
1 files changed, 17 insertions, 11 deletions
diff --git a/drivers/media/rc/rc-main.c b/drivers/media/rc/rc-main.c index 72be8a02118c..512a2f4ada0e 100644 --- a/drivers/media/rc/rc-main.c +++ b/drivers/media/rc/rc-main.c | |||
@@ -458,21 +458,27 @@ static int ir_getkeycode(struct input_dev *idev, | |||
458 | index = ir_lookup_by_scancode(rc_map, scancode); | 458 | index = ir_lookup_by_scancode(rc_map, scancode); |
459 | } | 459 | } |
460 | 460 | ||
461 | if (index >= rc_map->len) { | 461 | if (index < rc_map->len) { |
462 | if (!(ke->flags & INPUT_KEYMAP_BY_INDEX)) | 462 | entry = &rc_map->scan[index]; |
463 | IR_dprintk(1, "unknown key for scancode 0x%04x\n", | 463 | |
464 | scancode); | 464 | ke->index = index; |
465 | ke->keycode = entry->keycode; | ||
466 | ke->len = sizeof(entry->scancode); | ||
467 | memcpy(ke->scancode, &entry->scancode, sizeof(entry->scancode)); | ||
468 | |||
469 | } else if (!(ke->flags & INPUT_KEYMAP_BY_INDEX)) { | ||
470 | /* | ||
471 | * We do not really know the valid range of scancodes | ||
472 | * so let's respond with KEY_RESERVED to anything we | ||
473 | * do not have mapping for [yet]. | ||
474 | */ | ||
475 | ke->index = index; | ||
476 | ke->keycode = KEY_RESERVED; | ||
477 | } else { | ||
465 | retval = -EINVAL; | 478 | retval = -EINVAL; |
466 | goto out; | 479 | goto out; |
467 | } | 480 | } |
468 | 481 | ||
469 | entry = &rc_map->scan[index]; | ||
470 | |||
471 | ke->index = index; | ||
472 | ke->keycode = entry->keycode; | ||
473 | ke->len = sizeof(entry->scancode); | ||
474 | memcpy(ke->scancode, &entry->scancode, sizeof(entry->scancode)); | ||
475 | |||
476 | retval = 0; | 482 | retval = 0; |
477 | 483 | ||
478 | out: | 484 | out: |