All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] lis3lv02d: provide means to disable polled input interface
@ 2010-04-09 12:56 ` Jiri Kosina
  0 siblings, 0 replies; 23+ messages in thread
From: Jiri Kosina @ 2010-04-09 12:56 UTC (permalink / raw)
  To: Eric Piel, Andrew Morton, Samu Onkalo, Pavel Machek
  Cc: lm-sensors, linux-kernel, Marcin Derlukiewicz

lis3lv02d driver creates emulated joystick interface for events reported 
by the sensor.
Because of HW, this has to be implemented as polled input device, with
20Hz frequency.

This is reported to create 20% CPU usage increase (and proportionaly higher
power consumption) just for the ipolldevd kernel thread (which is used
to read the sensor).

As most users probably only use the freefall functionality of the driver
and not the joystick interface, provide means for disabling the registration
of joystick device altogether via module parameter.
(I'd rather make it default to 0, but this will break backwards compatibility).

Signed-off-by: Jiri Kosina <jkosina@suse.cz>

--- 
 drivers/hwmon/lis3lv02d.c |   16 +++++++++-------
 1 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/drivers/hwmon/lis3lv02d.c b/drivers/hwmon/lis3lv02d.c
index b2f2277..bfbc02c 100644
--- a/drivers/hwmon/lis3lv02d.c
+++ b/drivers/hwmon/lis3lv02d.c
@@ -41,6 +41,9 @@
 
 /* joystick device poll interval in milliseconds */
 #define MDPS_POLL_INTERVAL 50
+static int enable_joystick = 1;
+module_param_named(joystick, enable_joystick, int, 0400);
+MODULE_PARM_DESC(joystick, "Enable joystick emulation (0 = disable, 1 = enable). Default: 1");
 /*
  * The sensor can also generate interrupts (DRDY) but it's pretty pointless
  * because they are generated even if the data do not change. So it's better
@@ -434,14 +437,13 @@ EXPORT_SYMBOL_GPL(lis3lv02d_joystick_enable);
 
 void lis3lv02d_joystick_disable(void)
 {
-	if (!lis3_dev.idev)
-		return;
-
 	if (lis3_dev.irq)
 		misc_deregister(&lis3lv02d_misc_device);
-	input_unregister_polled_device(lis3_dev.idev);
-	input_free_polled_device(lis3_dev.idev);
-	lis3_dev.idev = NULL;
+	if (lis3_dev.idev) {
+		input_unregister_polled_device(lis3_dev.idev);
+		input_free_polled_device(lis3_dev.idev);
+		lis3_dev.idev = NULL;
+	}
 }
 EXPORT_SYMBOL_GPL(lis3lv02d_joystick_disable);
 
@@ -559,7 +561,7 @@ int lis3lv02d_init_device(struct lis3lv02d *dev)
 	lis3lv02d_add_fs(dev);
 	lis3lv02d_poweron(dev);
 
-	if (lis3lv02d_joystick_enable())
+	if (enable_joystick && lis3lv02d_joystick_enable())
 		printk(KERN_ERR DRIVER_NAME ": joystick initialization failed\n");
 
 	/* passing in platform specific data is purely optional and only

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

end of thread, other threads:[~2010-04-16 14:30 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-04-09 12:56 [PATCH] lis3lv02d: provide means to disable polled input interface Jiri Kosina
2010-04-09 12:56 ` [lm-sensors] [PATCH] lis3lv02d: provide means to disable polled Jiri Kosina
2010-04-09 13:29 ` [PATCH] lis3lv02d: provide means to disable polled input interface Éric Piel
2010-04-09 13:29   ` [lm-sensors] [PATCH] lis3lv02d: provide means to disable polled Éric Piel
2010-04-09 13:32   ` [PATCH] lis3lv02d: provide means to disable polled input interface Jiri Kosina
2010-04-09 13:32     ` [lm-sensors] [PATCH] lis3lv02d: provide means to disable polled Jiri Kosina
2010-04-09 18:11     ` [lm-sensors] [PATCH] lis3lv02d: provide means to disable polled input interface Jean Delvare
2010-04-09 18:11       ` [lm-sensors] [PATCH] lis3lv02d: provide means to disable polled Jean Delvare
2010-04-16 11:41     ` [PATCH] lis3lv02d: provide means to disable polled input interface Marcin Derlukiewicz
2010-04-16 11:41       ` [lm-sensors] [PATCH] lis3lv02d: provide means to disable polled Marcin Derlukiewicz
2010-04-16 12:00       ` [PATCH] lis3lv02d: provide means to disable polled input interface samu.p.onkalo
2010-04-16 12:00         ` [lm-sensors] [PATCH] lis3lv02d: provide means to disable polled samu.p.onkalo
2010-04-16 12:13         ` [PATCH] lis3lv02d: provide means to disable polled input interface Marcin Derlukiewicz
2010-04-16 12:13           ` [lm-sensors] [PATCH] lis3lv02d: provide means to disable polled Marcin Derlukiewicz
2010-04-16 13:56           ` [PATCH] lis3lv02d: provide means to disable polled input interface Éric Piel
2010-04-16 13:56             ` [lm-sensors] [PATCH] lis3lv02d: provide means to disable polled Éric Piel
2010-04-16 14:26             ` [PATCH] lis3lv02d: provide means to disable polled input interface Marcin Derlukiewicz
2010-04-16 14:26               ` [lm-sensors] [PATCH] lis3lv02d: provide means to disable polled Marcin Derlukiewicz
2010-04-16 14:30               ` [PATCH] lis3lv02d: provide means to disable polled input interface Éric Piel
2010-04-16 14:30                 ` [lm-sensors] [PATCH] lis3lv02d: provide means to disable polled Éric Piel
2010-04-16 12:06       ` [PATCH] lis3lv02d: provide means to disable polled input interface Éric Piel
2010-04-16 12:06         ` [lm-sensors] [PATCH] lis3lv02d: provide means to disable polled Éric Piel
2010-04-09 21:41   ` [PATCH] lis3lv02d: provide means to disable polled input interface Frans Pop

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.