priv->has_native_gain = true;
printk(KERN_NOTICE "KLGDFF: Using HAS_NATIVE_GAIN\n");
}
- if (FFPL_HAS_AUTOCENTER & flags) {
+
+ if (FF_AUTOCENTER & priv->supported_effects) {
priv->has_autocenter = true;
- set_bit(FF_AUTOCENTER, dev->ffbit);
+ input_set_capability(dev, EV_FF, FF_AUTOCENTER);
printk(KERN_NOTICE "KLGDFF: Using HAS_AUTOCENTER\n");
}
- set_bit(FF_GAIN, dev->ffbit);
+
+ input_set_capability(dev, EV_FF, FF_GAIN);
for (idx = 0; idx <= (FF_WAVEFORM_MAX - FF_EFFECT_MIN); idx++) {
if (test_bit(idx, &priv->supported_effects)) {
printk(KERN_NOTICE "KLGDFF: Has bit %d, effect type %d\n", idx, FF_EFFECT_MIN + idx);
#define FFPL_TIMING_CONDITION BIT(9) /* Let the plugin take care of starting and stopping of condition effects */
#define FFPL_HAS_NATIVE_GAIN BIT(15) /* Device can adjust the gain by itself */
-#define FFPL_HAS_AUTOCENTER BIT(16) /* Device supports autocentering */
enum ffpl_control_command {
/* Force feedback state transitions */
input_set_capability(dev, EV_KEY, BTN_TRIGGER);
input_set_abs_params(dev, ABS_X, -0x7fff, 0x7fff, 0, 0);
input_set_abs_params(dev, ABS_Y, -0x7fff, 0x7fff, 0, 0);
+ set_bit(FF_AUTOCENTER, &ffbits);
ret = ffpl_init_plugin(&ff_plugin, dev, EFFECT_COUNT, ffbits,
- FFPL_HAS_EMP_TO_SRT | FFPL_REPLACE_STARTED | FFPL_HAS_AUTOCENTER | FFPL_MEMLESS_RAMP | FFPL_TIMING_CONDITION,
+ FFPL_HAS_EMP_TO_SRT | FFPL_REPLACE_STARTED | FFPL_MEMLESS_RAMP | FFPL_TIMING_CONDITION,
klgdff_control, &test_user);
if (ret) {
printk(KERN_ERR "KLGDFF-TD: Cannot init plugin\n");