Lines Matching full:effect
292 struct ff_effect *effect) in pidff_set_constant_force_report() argument
297 effect->u.constant.level); in pidff_set_constant_force_report()
306 static int pidff_needs_set_constant(struct ff_effect *effect, in pidff_needs_set_constant() argument
309 return effect->u.constant.level != old->u.constant.level; in pidff_needs_set_constant()
313 * Send set effect report to the device
316 struct ff_effect *effect) in pidff_set_effect_report() argument
326 effect->replay.length == 0 ? PID_INFINITE : effect->replay.length; in pidff_set_effect_report()
328 pidff->set_effect[PID_TRIGGER_BUTTON].value[0] = effect->trigger.button; in pidff_set_effect_report()
330 effect->trigger.interval; in pidff_set_effect_report()
338 PIDFF_FIXED_WHEEL_DIRECTION : effect->direction, in pidff_set_effect_report()
343 pidff->set_effect[PID_START_DELAY].value[0] = effect->replay.delay; in pidff_set_effect_report()
352 static int pidff_needs_set_effect(struct ff_effect *effect, in pidff_needs_set_effect() argument
355 return effect->replay.length != old->replay.length || in pidff_needs_set_effect()
356 effect->trigger.interval != old->trigger.interval || in pidff_needs_set_effect()
357 effect->trigger.button != old->trigger.button || in pidff_needs_set_effect()
358 effect->direction != old->direction || in pidff_needs_set_effect()
359 effect->replay.delay != old->replay.delay; in pidff_needs_set_effect()
363 * Send periodic effect report to the device
366 struct ff_effect *effect) in pidff_set_periodic_report() argument
371 effect->u.periodic.magnitude); in pidff_set_periodic_report()
373 effect->u.periodic.offset); in pidff_set_periodic_report()
374 pidff_set(&pidff->set_periodic[PID_PHASE], effect->u.periodic.phase); in pidff_set_periodic_report()
375 pidff->set_periodic[PID_PERIOD].value[0] = effect->u.periodic.period; in pidff_set_periodic_report()
383 * Test if periodic effect parameters have changed
385 static int pidff_needs_set_periodic(struct ff_effect *effect, in pidff_needs_set_periodic() argument
388 return effect->u.periodic.magnitude != old->u.periodic.magnitude || in pidff_needs_set_periodic()
389 effect->u.periodic.offset != old->u.periodic.offset || in pidff_needs_set_periodic()
390 effect->u.periodic.phase != old->u.periodic.phase || in pidff_needs_set_periodic()
391 effect->u.periodic.period != old->u.periodic.period; in pidff_needs_set_periodic()
395 * Send condition effect reports to the device
398 struct ff_effect *effect) in pidff_set_condition_report() argument
414 effect->u.condition[i].center); in pidff_set_condition_report()
416 effect->u.condition[i].right_coeff); in pidff_set_condition_report()
418 effect->u.condition[i].left_coeff); in pidff_set_condition_report()
420 effect->u.condition[i].right_saturation); in pidff_set_condition_report()
422 effect->u.condition[i].left_saturation); in pidff_set_condition_report()
424 effect->u.condition[i].deadband); in pidff_set_condition_report()
431 * Test if condition effect parameters have changed
433 static int pidff_needs_set_condition(struct ff_effect *effect, in pidff_needs_set_condition() argument
440 struct ff_condition_effect *cond = &effect->u.condition[i]; in pidff_needs_set_condition()
458 struct ff_effect *effect) in pidff_set_ramp_force_report() argument
463 effect->u.ramp.start_level); in pidff_set_ramp_force_report()
465 effect->u.ramp.end_level); in pidff_set_ramp_force_report()
473 static int pidff_needs_set_ramp(struct ff_effect *effect, struct ff_effect *old) in pidff_needs_set_ramp() argument
475 return effect->u.ramp.start_level != old->u.ramp.start_level || in pidff_needs_set_ramp()
476 effect->u.ramp.end_level != old->u.ramp.end_level; in pidff_needs_set_ramp()
480 * Send a request for effect upload to the device
524 * Play the effect with PID id n times
544 * Play the effect with effect id @effect_id for @value times
556 * Erase effect with PID id
566 * Stop and erase effect with effect_id
576 prevent the effect removal. */ in pidff_erase_effect()
585 * Effect upload handler
587 static int pidff_upload_effect(struct input_dev *dev, struct ff_effect *effect, in pidff_upload_effect() argument
597 pidff->pid_id[effect->id]; in pidff_upload_effect()
600 switch (effect->type) { in pidff_upload_effect()
608 if (!old || pidff_needs_set_effect(effect, old)) in pidff_upload_effect()
609 pidff_set_effect_report(pidff, effect); in pidff_upload_effect()
610 if (!old || pidff_needs_set_constant(effect, old)) in pidff_upload_effect()
611 pidff_set_constant_force_report(pidff, effect); in pidff_upload_effect()
612 if (pidff_needs_set_envelope(&effect->u.constant.envelope, in pidff_upload_effect()
614 pidff_set_envelope_report(pidff, &effect->u.constant.envelope); in pidff_upload_effect()
619 switch (effect->u.periodic.waveform) { in pidff_upload_effect()
648 if (!old || pidff_needs_set_effect(effect, old)) in pidff_upload_effect()
649 pidff_set_effect_report(pidff, effect); in pidff_upload_effect()
650 if (!old || pidff_needs_set_periodic(effect, old)) in pidff_upload_effect()
651 pidff_set_periodic_report(pidff, effect); in pidff_upload_effect()
652 if (pidff_needs_set_envelope(&effect->u.periodic.envelope, in pidff_upload_effect()
654 pidff_set_envelope_report(pidff, &effect->u.periodic.envelope); in pidff_upload_effect()
664 if (!old || pidff_needs_set_effect(effect, old)) in pidff_upload_effect()
665 pidff_set_effect_report(pidff, effect); in pidff_upload_effect()
666 if (!old || pidff_needs_set_ramp(effect, old)) in pidff_upload_effect()
667 pidff_set_ramp_force_report(pidff, effect); in pidff_upload_effect()
668 if (pidff_needs_set_envelope(&effect->u.ramp.envelope, in pidff_upload_effect()
670 pidff_set_envelope_report(pidff, &effect->u.ramp.envelope); in pidff_upload_effect()
680 if (!old || pidff_needs_set_effect(effect, old)) in pidff_upload_effect()
681 pidff_set_effect_report(pidff, effect); in pidff_upload_effect()
682 if (!old || pidff_needs_set_condition(effect, old)) in pidff_upload_effect()
683 pidff_set_condition_report(pidff, effect); in pidff_upload_effect()
693 if (!old || pidff_needs_set_effect(effect, old)) in pidff_upload_effect()
694 pidff_set_effect_report(pidff, effect); in pidff_upload_effect()
695 if (!old || pidff_needs_set_condition(effect, old)) in pidff_upload_effect()
696 pidff_set_condition_report(pidff, effect); in pidff_upload_effect()
706 if (!old || pidff_needs_set_effect(effect, old)) in pidff_upload_effect()
707 pidff_set_effect_report(pidff, effect); in pidff_upload_effect()
708 if (!old || pidff_needs_set_condition(effect, old)) in pidff_upload_effect()
709 pidff_set_condition_report(pidff, effect); in pidff_upload_effect()
719 if (!old || pidff_needs_set_effect(effect, old)) in pidff_upload_effect()
720 pidff_set_effect_report(pidff, effect); in pidff_upload_effect()
721 if (!old || pidff_needs_set_condition(effect, old)) in pidff_upload_effect()
722 pidff_set_condition_report(pidff, effect); in pidff_upload_effect()
731 pidff->pid_id[effect->id] = in pidff_upload_effect()
1003 hid_err(pidff->hid, "effect lists not found\n"); in pidff_find_special_fields()
1023 hid_err(pidff->hid, "effect operation field not found\n"); in pidff_find_special_fields()
1035 hid_err(pidff->hid, "no effect types found\n"); in pidff_find_special_fields()
1050 hid_err(pidff->hid, "effect operation identifiers not found\n"); in pidff_find_special_fields()
1058 * Find the implemented effect types
1070 "effect type number %d is invalid\n", i); in pidff_find_effects()
1158 "has constant effect but no envelope\n"); in pidff_init_fields()
1161 "has ramp effect but no envelope\n"); in pidff_init_fields()
1165 "has periodic effect but no envelope\n"); in pidff_init_fields()
1170 hid_warn(pidff->hid, "unknown constant effect layout\n"); in pidff_init_fields()
1176 hid_warn(pidff->hid, "unknown ramp effect layout\n"); in pidff_init_fields()
1187 hid_warn(pidff->hid, "unknown condition effect layout\n"); in pidff_init_fields()
1198 hid_warn(pidff->hid, "unknown periodic effect layout\n"); in pidff_init_fields()
1261 * effect upload and cancel it immediately. If the approved in pidff_check_autocenter()
1262 * effect id was one above the minimum, then we assume the first in pidff_check_autocenter()
1263 * effect id is a built-in spring type effect used for autocenter in pidff_check_autocenter()