All of lore.kernel.org
 help / color / mirror / Atom feed
* [lm-sensors] [PATCH] hdaps - switch to using input-polldev
@ 2007-05-25  4:38 Dmitry Torokhov
  2007-05-25 11:54 ` Jean Delvare
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Dmitry Torokhov @ 2007-05-25  4:38 UTC (permalink / raw)
  To: lm-sensors

Not tested - no hardware...

-- 
Dmitry

HWMON: hdaps - convert to use input-polldev.

Switch to using input-polldev skeleton instead of implementing
polling loop by itself. This also fixes problem with trylock
on a mutex in atomic context.

Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
---

 drivers/hwmon/Kconfig |    1 
 drivers/hwmon/hdaps.c |   55 +++++++++++++++++++++-----------------------------
 2 files changed, 25 insertions(+), 31 deletions(-)

Index: work/drivers/hwmon/Kconfig
=================================--- work.orig/drivers/hwmon/Kconfig
+++ work/drivers/hwmon/Kconfig
@@ -602,6 +602,7 @@ config SENSORS_W83627EHF
 config SENSORS_HDAPS
 	tristate "IBM Hard Drive Active Protection System (hdaps)"
 	depends on INPUT && X86
+	select INPUT_POLLDEV
 	default n
 	help
 	  This driver provides support for the IBM Hard Drive Active Protection
Index: work/drivers/hwmon/hdaps.c
=================================--- work.orig/drivers/hwmon/hdaps.c
+++ work/drivers/hwmon/hdaps.c
@@ -28,7 +28,7 @@
 
 #include <linux/delay.h>
 #include <linux/platform_device.h>
-#include <linux/input.h>
+#include <linux/input-polldev.h>
 #include <linux/kernel.h>
 #include <linux/mutex.h>
 #include <linux/module.h>
@@ -61,13 +61,12 @@
 #define INIT_TIMEOUT_MSECS	4000	/* wait up to 4s for device init ... */
 #define INIT_WAIT_MSECS		200	/* ... in 200ms increments */
 
-#define HDAPS_POLL_PERIOD	(HZ/20)	/* poll for input every 1/20s */
+#define HDAPS_POLL_INTERVAL	50	/* poll for input every 1/20s (50 ms)*/
 #define HDAPS_INPUT_FUZZ	4	/* input event threshold */
 #define HDAPS_INPUT_FLAT	4
 
-static struct timer_list hdaps_timer;
 static struct platform_device *pdev;
-static struct input_dev *hdaps_idev;
+static struct input_polled_dev *hdaps_idev;
 static unsigned int hdaps_invert;
 static u8 km_activity;
 static int rest_x;
@@ -323,24 +322,19 @@ static void hdaps_calibrate(void)
 	__hdaps_read_pair(HDAPS_PORT_XPOS, HDAPS_PORT_YPOS, &rest_x, &rest_y);
 }
 
-static void hdaps_mousedev_poll(unsigned long unused)
+static void hdaps_mousedev_poll(struct input_polled_dev *dev)
 {
+	struct input_dev *input_dev = dev->input;
 	int x, y;
 
-	/* Cannot sleep.  Try nonblockingly.  If we fail, try again later. */
-	if (mutex_trylock(&hdaps_mtx)) {
-		mod_timer(&hdaps_timer,jiffies + HDAPS_POLL_PERIOD);
-		return;
-	}
+	mutex_lock(&hdaps_mtx);
 
 	if (__hdaps_read_pair(HDAPS_PORT_XPOS, HDAPS_PORT_YPOS, &x, &y))
 		goto out;
 
-	input_report_abs(hdaps_idev, ABS_X, x - rest_x);
-	input_report_abs(hdaps_idev, ABS_Y, y - rest_y);
-	input_sync(hdaps_idev);
-
-	mod_timer(&hdaps_timer, jiffies + HDAPS_POLL_PERIOD);
+	input_report_abs(input_dev, ABS_X, x - rest_x);
+	input_report_abs(input_dev, ABS_Y, y - rest_y);
+	input_sync(input_dev);
 
 out:
 	mutex_unlock(&hdaps_mtx);
@@ -536,6 +530,7 @@ static struct dmi_system_id __initdata h
 
 static int __init hdaps_init(void)
 {
+	struct input_dev *idev;
 	int ret;
 
 	if (!dmi_check_system(hdaps_whitelist)) {
@@ -563,39 +558,37 @@ static int __init hdaps_init(void)
 	if (ret)
 		goto out_device;
 
-	hdaps_idev = input_allocate_device();
+	hdaps_idev = input_allocate_polled_device();
 	if (!hdaps_idev) {
 		ret = -ENOMEM;
 		goto out_group;
 	}
 
+	hdaps_idev->poll = hdaps_mousedev_poll;
+	hdaps_idev->poll_interval = HDAPS_POLL_INTERVAL;
+
 	/* initial calibrate for the input device */
 	hdaps_calibrate();
 
 	/* initialize the input class */
-	hdaps_idev->name = "hdaps";
-	hdaps_idev->dev.parent = &pdev->dev;
-	hdaps_idev->evbit[0] = BIT(EV_ABS);
-	input_set_abs_params(hdaps_idev, ABS_X,
+	idev = hdaps_idev->input;
+	idev->name = "hdaps";
+	idev->dev.parent = &pdev->dev;
+	idev->evbit[0] = BIT(EV_ABS);
+	input_set_abs_params(idev, ABS_X,
 			-256, 256, HDAPS_INPUT_FUZZ, HDAPS_INPUT_FLAT);
-	input_set_abs_params(hdaps_idev, ABS_Y,
+	input_set_abs_params(idev, ABS_Y,
 			-256, 256, HDAPS_INPUT_FUZZ, HDAPS_INPUT_FLAT);
 
-	ret = input_register_device(hdaps_idev);
+	ret = input_register_polled_device(hdaps_idev);
 	if (ret)
 		goto out_idev;
 
-	/* start up our timer for the input device */
-	init_timer(&hdaps_timer);
-	hdaps_timer.function = hdaps_mousedev_poll;
-	hdaps_timer.expires = jiffies + HDAPS_POLL_PERIOD;
-	add_timer(&hdaps_timer);
-
 	printk(KERN_INFO "hdaps: driver successfully loaded.\n");
 	return 0;
 
 out_idev:
-	input_free_device(hdaps_idev);
+	input_free_polled_device(hdaps_idev);
 out_group:
 	sysfs_remove_group(&pdev->dev.kobj, &hdaps_attribute_group);
 out_device:
@@ -611,8 +604,8 @@ out:
 
 static void __exit hdaps_exit(void)
 {
-	del_timer_sync(&hdaps_timer);
-	input_unregister_device(hdaps_idev);
+	input_unregister_polled_device(hdaps_idev);
+	input_free_polled_device(hdaps_idev);
 	sysfs_remove_group(&pdev->dev.kobj, &hdaps_attribute_group);
 	platform_device_unregister(pdev);
 	platform_driver_unregister(&hdaps_driver);

_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors

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

* Re: [lm-sensors] [PATCH] hdaps - switch to using input-polldev
  2007-05-25  4:38 [lm-sensors] [PATCH] hdaps - switch to using input-polldev Dmitry Torokhov
@ 2007-05-25 11:54 ` Jean Delvare
  2007-05-25 12:33 ` Dmitry Torokhov
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Jean Delvare @ 2007-05-25 11:54 UTC (permalink / raw)
  To: lm-sensors

Hi Dmitry,

On Fri, 25 May 2007 00:38:34 -0400, Dmitry Torokhov wrote:
> Not tested - no hardware...

Neither do I. Please send these patches to the maintainers of the
affected drivers, I don't think they are reading the lm-sensors list
(which wasn't the best list for these patches anyway, as they affect
the input functions, not the hardware monitoring functions):

hdaps -> Robert Love
ams -> Stelian Pop
applesmc -> Nicolas Boichat

-- 
Jean Delvare

_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors

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

* Re: [lm-sensors] [PATCH] hdaps - switch to using input-polldev
  2007-05-25  4:38 [lm-sensors] [PATCH] hdaps - switch to using input-polldev Dmitry Torokhov
  2007-05-25 11:54 ` Jean Delvare
@ 2007-05-25 12:33 ` Dmitry Torokhov
  2007-05-25 21:09 ` Jean Delvare
  2007-05-26  0:02 ` Henrique de Moraes Holschuh
  3 siblings, 0 replies; 5+ messages in thread
From: Dmitry Torokhov @ 2007-05-25 12:33 UTC (permalink / raw)
  To: lm-sensors

Hi Jean,

On 5/25/07, Jean Delvare <khali@linux-fr.org> wrote:
> Hi Dmitry,
>
> On Fri, 25 May 2007 00:38:34 -0400, Dmitry Torokhov wrote:
> > Not tested - no hardware...
>
> Neither do I. Please send these patches to the maintainers of the
> affected drivers, I don't think they are reading the lm-sensors list
> (which wasn't the best list for these patches anyway, as they affect
> the input functions, not the hardware monitoring functions):

What list do you think would suit better? LKML? I doubt they read
linux-input either...

> hdaps -> Robert Love

Will do.

> ams -> Stelian Pop

Check.

> applesmc -> Nicolas Boichat

Check. But for some reason Nicolas always bounces by email. ;(

-- 
Dmitry

_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors

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

* Re: [lm-sensors] [PATCH] hdaps - switch to using input-polldev
  2007-05-25  4:38 [lm-sensors] [PATCH] hdaps - switch to using input-polldev Dmitry Torokhov
  2007-05-25 11:54 ` Jean Delvare
  2007-05-25 12:33 ` Dmitry Torokhov
@ 2007-05-25 21:09 ` Jean Delvare
  2007-05-26  0:02 ` Henrique de Moraes Holschuh
  3 siblings, 0 replies; 5+ messages in thread
From: Jean Delvare @ 2007-05-25 21:09 UTC (permalink / raw)
  To: lm-sensors

On Fri, 25 May 2007 08:33:07 -0400, Dmitry Torokhov wrote:
> Hi Jean,
> 
> On 5/25/07, Jean Delvare <khali@linux-fr.org> wrote:
> > Hi Dmitry,
> >
> > On Fri, 25 May 2007 00:38:34 -0400, Dmitry Torokhov wrote:
> > > Not tested - no hardware...
> >
> > Neither do I. Please send these patches to the maintainers of the
> > affected drivers, I don't think they are reading the lm-sensors list
> > (which wasn't the best list for these patches anyway, as they affect
> > the input functions, not the hardware monitoring functions):
> 
> What list do you think would suit better? LKML? I doubt they read
> linux-input either...

I'd say linux-input + Cc to the driver maintainer.

> > hdaps -> Robert Love
> 
> Will do.
> 
> > ams -> Stelian Pop
> 
> Check.

Sorry, I missed that. I stupidly assumed that the other patches were
looking the same as the first one.

> > applesmc -> Nicolas Boichat
> 
> Check. But for some reason Nicolas always bounces by email. ;(

Strange, it works for me. I'll forward your post to him to make sure.

-- 
Jean Delvare

_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors

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

* Re: [lm-sensors] [PATCH] hdaps - switch to using input-polldev
  2007-05-25  4:38 [lm-sensors] [PATCH] hdaps - switch to using input-polldev Dmitry Torokhov
                   ` (2 preceding siblings ...)
  2007-05-25 21:09 ` Jean Delvare
@ 2007-05-26  0:02 ` Henrique de Moraes Holschuh
  3 siblings, 0 replies; 5+ messages in thread
From: Henrique de Moraes Holschuh @ 2007-05-26  0:02 UTC (permalink / raw)
  To: lm-sensors

On Fri, 25 May 2007, Dmitry Torokhov wrote:
> What list do you think would suit better? LKML? I doubt they read
> linux-input either...
> 
> > hdaps -> Robert Love
> 
> Will do.

Also, please send it to hdaps-devel@lists.sourceforge.net.

-- 
  "One disk to rule them all, One disk to find them. One disk to bring
  them all and in the darkness grind them. In the Land of Redmond
  where the shadows lie." -- The Silicon Valley Tarot
  Henrique Holschuh

_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors

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

end of thread, other threads:[~2007-05-26  0:02 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-05-25  4:38 [lm-sensors] [PATCH] hdaps - switch to using input-polldev Dmitry Torokhov
2007-05-25 11:54 ` Jean Delvare
2007-05-25 12:33 ` Dmitry Torokhov
2007-05-25 21:09 ` Jean Delvare
2007-05-26  0:02 ` Henrique de Moraes Holschuh

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.