Lines Matching full:effect
356 struct ff_effect *effect) in pidff_set_constant_force_report() argument
361 effect->u.constant.level); in pidff_set_constant_force_report()
370 static int pidff_needs_set_constant(struct ff_effect *effect, in pidff_needs_set_constant() argument
373 return effect->u.constant.level != old->u.constant.level; in pidff_needs_set_constant()
377 * Send set effect report to the device
380 struct ff_effect *effect) in pidff_set_effect_report() argument
388 effect->replay.length); in pidff_set_effect_report()
390 pidff->set_effect[PID_TRIGGER_BUTTON].value[0] = effect->trigger.button; in pidff_set_effect_report()
392 effect->trigger.interval); in pidff_set_effect_report()
400 PIDFF_FIXED_WHEEL_DIRECTION : effect->direction, in pidff_set_effect_report()
406 effect->replay.delay); in pidff_set_effect_report()
415 static int pidff_needs_set_effect(struct ff_effect *effect, in pidff_needs_set_effect() argument
418 return effect->replay.length != old->replay.length || in pidff_needs_set_effect()
419 effect->trigger.interval != old->trigger.interval || in pidff_needs_set_effect()
420 effect->trigger.button != old->trigger.button || in pidff_needs_set_effect()
421 effect->direction != old->direction || in pidff_needs_set_effect()
422 effect->replay.delay != old->replay.delay; in pidff_needs_set_effect()
426 * Send periodic effect report to the device
429 struct ff_effect *effect) in pidff_set_periodic_report() argument
434 effect->u.periodic.magnitude); in pidff_set_periodic_report()
436 effect->u.periodic.offset); in pidff_set_periodic_report()
437 pidff_set(&pidff->set_periodic[PID_PHASE], effect->u.periodic.phase); in pidff_set_periodic_report()
439 effect->u.periodic.period); in pidff_set_periodic_report()
446 * Test if periodic effect parameters have changed
448 static int pidff_needs_set_periodic(struct ff_effect *effect, in pidff_needs_set_periodic() argument
451 return effect->u.periodic.magnitude != old->u.periodic.magnitude || in pidff_needs_set_periodic()
452 effect->u.periodic.offset != old->u.periodic.offset || in pidff_needs_set_periodic()
453 effect->u.periodic.phase != old->u.periodic.phase || in pidff_needs_set_periodic()
454 effect->u.periodic.period != old->u.periodic.period; in pidff_needs_set_periodic()
458 * Send condition effect reports to the device
461 struct ff_effect *effect) in pidff_set_condition_report() argument
477 effect->u.condition[i].center); in pidff_set_condition_report()
479 effect->u.condition[i].right_coeff); in pidff_set_condition_report()
481 effect->u.condition[i].left_coeff); in pidff_set_condition_report()
483 effect->u.condition[i].right_saturation); in pidff_set_condition_report()
485 effect->u.condition[i].left_saturation); in pidff_set_condition_report()
487 effect->u.condition[i].deadband); in pidff_set_condition_report()
494 * Test if condition effect parameters have changed
496 static int pidff_needs_set_condition(struct ff_effect *effect, in pidff_needs_set_condition() argument
503 struct ff_condition_effect *cond = &effect->u.condition[i]; in pidff_needs_set_condition()
521 struct ff_effect *effect) in pidff_set_ramp_force_report() argument
526 effect->u.ramp.start_level); in pidff_set_ramp_force_report()
528 effect->u.ramp.end_level); in pidff_set_ramp_force_report()
536 static int pidff_needs_set_ramp(struct ff_effect *effect, struct ff_effect *old) in pidff_needs_set_ramp() argument
538 return effect->u.ramp.start_level != old->u.ramp.start_level || in pidff_needs_set_ramp()
539 effect->u.ramp.end_level != old->u.ramp.end_level; in pidff_needs_set_ramp()
636 * Send a request for effect upload to the device
683 hid_dbg(pidff->hid, "device error during effect creation\n"); in pidff_request_effect_upload()
692 * Play the effect with PID id n times
713 * Play the effect with effect id @effect_id for @value times
723 * Erase effect with PID id
724 * Decrease the device effect counter
737 * Stop and erase effect with effect_id
749 * a full fifo to prevent the effect removal. in pidff_erase_effect()
759 * Effect upload handler
761 static int pidff_upload_effect(struct input_dev *dev, struct ff_effect *effect, in pidff_upload_effect() argument
771 pidff->pid_id[effect->id]; in pidff_upload_effect()
774 switch (effect->type) { in pidff_upload_effect()
782 if (!old || pidff_needs_set_effect(effect, old)) in pidff_upload_effect()
783 pidff_set_effect_report(pidff, effect); in pidff_upload_effect()
784 if (!old || pidff_needs_set_constant(effect, old)) in pidff_upload_effect()
785 pidff_set_constant_force_report(pidff, effect); in pidff_upload_effect()
786 if (pidff_needs_set_envelope(&effect->u.constant.envelope, in pidff_upload_effect()
788 pidff_set_envelope_report(pidff, &effect->u.constant.envelope); in pidff_upload_effect()
793 switch (effect->u.periodic.waveform) { in pidff_upload_effect()
822 if (!old || pidff_needs_set_effect(effect, old)) in pidff_upload_effect()
823 pidff_set_effect_report(pidff, effect); in pidff_upload_effect()
824 if (!old || pidff_needs_set_periodic(effect, old)) in pidff_upload_effect()
825 pidff_set_periodic_report(pidff, effect); in pidff_upload_effect()
826 if (pidff_needs_set_envelope(&effect->u.periodic.envelope, in pidff_upload_effect()
828 pidff_set_envelope_report(pidff, &effect->u.periodic.envelope); in pidff_upload_effect()
838 if (!old || pidff_needs_set_effect(effect, old)) in pidff_upload_effect()
839 pidff_set_effect_report(pidff, effect); in pidff_upload_effect()
840 if (!old || pidff_needs_set_ramp(effect, old)) in pidff_upload_effect()
841 pidff_set_ramp_force_report(pidff, effect); in pidff_upload_effect()
842 if (pidff_needs_set_envelope(&effect->u.ramp.envelope, in pidff_upload_effect()
844 pidff_set_envelope_report(pidff, &effect->u.ramp.envelope); in pidff_upload_effect()
852 switch(effect->type) { in pidff_upload_effect()
871 if (!old || pidff_needs_set_effect(effect, old)) in pidff_upload_effect()
872 pidff_set_effect_report(pidff, effect); in pidff_upload_effect()
873 if (!old || pidff_needs_set_condition(effect, old)) in pidff_upload_effect()
874 pidff_set_condition_report(pidff, effect); in pidff_upload_effect()
883 pidff->pid_id[effect->id] = in pidff_upload_effect()
1150 hid_err(pidff->hid, "effect lists not found\n"); in pidff_find_special_fields()
1170 hid_err(pidff->hid, "effect operation field not found\n"); in pidff_find_special_fields()
1178 hid_err(pidff->hid, "no effect types found\n"); in pidff_find_special_fields()
1193 hid_err(pidff->hid, "effect operation identifiers not found\n"); in pidff_find_special_fields()
1201 * Find the implemented effect types
1213 "effect type number %d is invalid\n", i); in pidff_find_effects()
1300 "has constant effect but no envelope\n"); in pidff_init_fields()
1303 "has ramp effect but no envelope\n"); in pidff_init_fields()
1307 "has periodic effect but no envelope\n"); in pidff_init_fields()
1312 hid_warn(pidff->hid, "unknown constant effect layout\n"); in pidff_init_fields()
1318 hid_warn(pidff->hid, "unknown ramp effect layout\n"); in pidff_init_fields()
1329 hid_warn(pidff->hid, "unknown condition effect layout\n"); in pidff_init_fields()
1340 hid_warn(pidff->hid, "unknown periodic effect layout\n"); in pidff_init_fields()
1363 * effect upload and cancel it immediately. If the approved in pidff_check_autocenter()
1364 * effect id was one above the minimum, then we assume the first in pidff_check_autocenter()
1365 * effect id is a built-in spring type effect used for autocenter in pidff_check_autocenter()