diff options
author | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2011-03-19 02:38:50 -0400 |
---|---|---|
committer | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2011-03-19 02:38:50 -0400 |
commit | 97eb3f24352ec6632c2127b35d8087d2a809a9b9 (patch) | |
tree | 722948059bbd325bbca232269490124231df80d4 /drivers/input/input.c | |
parent | 439581ec07fa9cf3f519dd461a2cf41cfd3adcb4 (diff) | |
parent | def179c271ac9b5020deca798470521f14d11edd (diff) |
Merge branch 'next' into for-linus
Diffstat (limited to 'drivers/input/input.c')
-rw-r--r-- | drivers/input/input.c | 56 |
1 files changed, 7 insertions, 49 deletions
diff --git a/drivers/input/input.c b/drivers/input/input.c index b8894a059f87..d6e8bd8a851c 100644 --- a/drivers/input/input.c +++ b/drivers/input/input.c | |||
@@ -26,7 +26,6 @@ | |||
26 | #include <linux/device.h> | 26 | #include <linux/device.h> |
27 | #include <linux/mutex.h> | 27 | #include <linux/mutex.h> |
28 | #include <linux/rcupdate.h> | 28 | #include <linux/rcupdate.h> |
29 | #include <linux/smp_lock.h> | ||
30 | #include "input-compat.h" | 29 | #include "input-compat.h" |
31 | 30 | ||
32 | MODULE_AUTHOR("Vojtech Pavlik <vojtech@suse.cz>"); | 31 | MODULE_AUTHOR("Vojtech Pavlik <vojtech@suse.cz>"); |
@@ -792,22 +791,9 @@ int input_get_keycode(struct input_dev *dev, struct input_keymap_entry *ke) | |||
792 | int retval; | 791 | int retval; |
793 | 792 | ||
794 | spin_lock_irqsave(&dev->event_lock, flags); | 793 | spin_lock_irqsave(&dev->event_lock, flags); |
795 | 794 | retval = dev->getkeycode(dev, ke); | |
796 | if (dev->getkeycode) { | ||
797 | /* | ||
798 | * Support for legacy drivers, that don't implement the new | ||
799 | * ioctls | ||
800 | */ | ||
801 | u32 scancode = ke->index; | ||
802 | |||
803 | memcpy(ke->scancode, &scancode, sizeof(scancode)); | ||
804 | ke->len = sizeof(scancode); | ||
805 | retval = dev->getkeycode(dev, scancode, &ke->keycode); | ||
806 | } else { | ||
807 | retval = dev->getkeycode_new(dev, ke); | ||
808 | } | ||
809 | |||
810 | spin_unlock_irqrestore(&dev->event_lock, flags); | 795 | spin_unlock_irqrestore(&dev->event_lock, flags); |
796 | |||
811 | return retval; | 797 | return retval; |
812 | } | 798 | } |
813 | EXPORT_SYMBOL(input_get_keycode); | 799 | EXPORT_SYMBOL(input_get_keycode); |
@@ -832,35 +818,7 @@ int input_set_keycode(struct input_dev *dev, | |||
832 | 818 | ||
833 | spin_lock_irqsave(&dev->event_lock, flags); | 819 | spin_lock_irqsave(&dev->event_lock, flags); |
834 | 820 | ||
835 | if (dev->setkeycode) { | 821 | retval = dev->setkeycode(dev, ke, &old_keycode); |
836 | /* | ||
837 | * Support for legacy drivers, that don't implement the new | ||
838 | * ioctls | ||
839 | */ | ||
840 | unsigned int scancode; | ||
841 | |||
842 | retval = input_scancode_to_scalar(ke, &scancode); | ||
843 | if (retval) | ||
844 | goto out; | ||
845 | |||
846 | /* | ||
847 | * We need to know the old scancode, in order to generate a | ||
848 | * keyup effect, if the set operation happens successfully | ||
849 | */ | ||
850 | if (!dev->getkeycode) { | ||
851 | retval = -EINVAL; | ||
852 | goto out; | ||
853 | } | ||
854 | |||
855 | retval = dev->getkeycode(dev, scancode, &old_keycode); | ||
856 | if (retval) | ||
857 | goto out; | ||
858 | |||
859 | retval = dev->setkeycode(dev, scancode, ke->keycode); | ||
860 | } else { | ||
861 | retval = dev->setkeycode_new(dev, ke, &old_keycode); | ||
862 | } | ||
863 | |||
864 | if (retval) | 822 | if (retval) |
865 | goto out; | 823 | goto out; |
866 | 824 | ||
@@ -1847,11 +1805,11 @@ int input_register_device(struct input_dev *dev) | |||
1847 | dev->rep[REP_PERIOD] = 33; | 1805 | dev->rep[REP_PERIOD] = 33; |
1848 | } | 1806 | } |
1849 | 1807 | ||
1850 | if (!dev->getkeycode && !dev->getkeycode_new) | 1808 | if (!dev->getkeycode) |
1851 | dev->getkeycode_new = input_default_getkeycode; | 1809 | dev->getkeycode = input_default_getkeycode; |
1852 | 1810 | ||
1853 | if (!dev->setkeycode && !dev->setkeycode_new) | 1811 | if (!dev->setkeycode) |
1854 | dev->setkeycode_new = input_default_setkeycode; | 1812 | dev->setkeycode = input_default_setkeycode; |
1855 | 1813 | ||
1856 | dev_set_name(&dev->dev, "input%ld", | 1814 | dev_set_name(&dev->dev, "input%ld", |
1857 | (unsigned long) atomic_inc_return(&input_no) - 1); | 1815 | (unsigned long) atomic_inc_return(&input_no) - 1); |