linux-input.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/1] input: ff-memless: Change FF_ENVELOPE_INTERVAL to a module parameter.
@ 2015-08-28 11:56 Kalle Jokiniemi
  2015-08-29  0:29 ` Dmitry Torokhov
  0 siblings, 1 reply; 4+ messages in thread
From: Kalle Jokiniemi @ 2015-08-28 11:56 UTC (permalink / raw)
  To: dmitry.torokhov; +Cc: linux-input, Kalle Jokiniemi

Sometimes you need to have tighter control over the ff-memless
effects. E.g. when creating short button / VKB press effects,
the effect duration is typically <= 40ms, and you want to have
a short acceleration period in beginning and fade out the end
to avoid "electric tooth brush" effect. With 50ms envelope
interval this control is not possible.

To allow this control without patching over ff-memless, change the
FF_ENVELOPE_INTERVAL macro to a module parameter that can be modified
via kernel command line or during runtime from
/sys/module/ff_memless/parameters/ff_envelope_interval sysfs file.

Signed-off-by: Kalle Jokiniemi <kalle.jokiniemi@jolla.com>
---
 drivers/input/ff-memless.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/input/ff-memless.c b/drivers/input/ff-memless.c
index fcc6c33..058e4cb 100644
--- a/drivers/input/ff-memless.c
+++ b/drivers/input/ff-memless.c
@@ -41,7 +41,8 @@ MODULE_DESCRIPTION("Force feedback support for memoryless devices");
 #define FF_MEMLESS_EFFECTS	16
 
 /* Envelope update interval in ms */
-#define FF_ENVELOPE_INTERVAL	50
+static int ff_envelope_interval = 50;
+module_param(ff_envelope_interval, int, S_IWUSR | S_IRUGO);
 
 #define FF_EFFECT_STARTED	0
 #define FF_EFFECT_PLAYING	1
@@ -96,7 +97,7 @@ static unsigned long calculate_next_time(struct ml_effect_state *state)
 			msecs_to_jiffies(envelope->attack_length);
 		if (time_before(state->adj_at, attack_stop))
 			return state->adj_at +
-					msecs_to_jiffies(FF_ENVELOPE_INTERVAL);
+					msecs_to_jiffies(ff_envelope_interval);
 	}
 
 	if (state->effect->replay.length) {
@@ -110,7 +111,7 @@ static unsigned long calculate_next_time(struct ml_effect_state *state)
 
 			/* already fading, advance to next checkpoint */
 			next_fade = state->adj_at +
-					msecs_to_jiffies(FF_ENVELOPE_INTERVAL);
+					msecs_to_jiffies(ff_envelope_interval);
 			if (time_before(next_fade, state->stop_at))
 				return next_fade;
 		}
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2015-09-03 17:41 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-08-28 11:56 [PATCH 1/1] input: ff-memless: Change FF_ENVELOPE_INTERVAL to a module parameter Kalle Jokiniemi
2015-08-29  0:29 ` Dmitry Torokhov
2015-08-31  8:47   ` Kalle Jokiniemi
2015-09-03 17:41     ` Dmitry Torokhov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).