struct ff_device — force-feedback part of an input device
struct ff_device { int (* upload) (struct input_dev *dev, struct ff_effect *effect,struct ff_effect *old); int (* erase) (struct input_dev *dev, int effect_id); int (* playback) (struct input_dev *dev, int effect_id, int value); void (* set_gain) (struct input_dev *dev, u16 gain); void (* set_autocenter) (struct input_dev *dev, u16 magnitude); void (* destroy) (struct ff_device *); void * private; unsigned long ffbit[BITS_TO_LONGS(FF_CNT)]; struct mutex mutex; int max_effects; struct ff_effect * effects; struct file * effect_owners[]; };
Called to upload an new effect into device
Called to erase an effect from device
Called to request device to start playing specified effect
Called to set specified gain
Called to auto-center device
called by input core when parent input device is being destroyed
driver-specific data, will be freed automatically
bitmap of force feedback capabilities truly supported by device (not emulated like ones in input_dev->ffbit)
mutex for serializing access to the device
maximum number of effects supported by device
pointer to an array of effects currently loaded into device
array of effect owners; when file handle owning an effect gets closed the effect is automatically erased
Every force-feedback device must implement upload
and playback
methods; erase
is optional. set_gain
and set_autocenter
need
only be implemented if driver sets up FF_GAIN and FF_AUTOCENTER
bits.
Note that playback
, set_gain
and set_autocenter
are called with
dev->event_lock spinlock held and interrupts off and thus may not
sleep.