Implement a new force feedback interface, in which all non-driver-specific operations are separated to a common module. This module handles effect type validations, effect timers, locking, etc. As a result, support is added for gain and envelope for memoryless devices, periodic => rumble conversion for memoryless devices and rumble => periodic conversion for devices with periodic support instead of rumble support. Also the effect memory of devices is not emptied if the root user opens and closes the device while another user is using effects. This module also obsoletes some flawed locking and timer code in few ff drivers. The effects are now file descriptor specific instead of the previous strange half-process half-fd specific behaviour. This is a minor change and most likely no force feedback aware programs are affected by this negatively. Otherwise the userspace interface is left unaltered. The module is named ff-effects and can only be built as builtin. The code should really be a part of input module, but we want to avoid having to rename input.c. Signed-off-by: Anssi Hannula --- This patch replaces the patches 3 and 4 of my last patchset. drivers/input/Kconfig | 5 drivers/input/Makefile | 1 drivers/input/evdev.c | 30 - drivers/input/ff-effects.c | 894 +++++++++++++++++++++++++++++++++++ drivers/input/input.c | 12 include/linux/input.h | 81 +++ 6 files changed, 1006 insertions(+), 17 deletions(-)