Messages in this thread Patch in this message | | | From | Shem Multinymous <> | Subject | [PATCH 11/12] hdaps: Stop polling timer when suspended | Date | Sun, 06 Aug 2006 10:26:56 +0300 |
| |
This patch stops the hdaps driver's polling timer when the module is suspended. Accessing a shut-down accelerometer is not harmful, but let's avoid it anyway.
Signed-off-by: Shem Multinymous <multinymous@gmail.com> --- hdaps.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-)
diff -up a/drivers/hwmon/hdaps.c a/drivers/hwmon/hdaps.c --- a/drivers/hwmon/hdaps.c +++ a/drivers/hwmon/hdaps.c @@ -374,13 +374,19 @@ static int hdaps_probe(struct platform_d static int hdaps_suspend(struct platform_device *dev, pm_message_t state) { + /* Don't do hdaps polls until resume re-initializes the sensor. */ + del_timer_sync(&hdaps_timer); hdaps_device_shutdown(); return 0; } static int hdaps_resume(struct platform_device *dev) { - return hdaps_device_init(); + int ret = hdaps_device_init(); + if (ret) + return ret; + mod_timer(&hdaps_timer, jiffies + HZ/sampling_rate); + return 0; } static struct platform_driver hdaps_driver = { @@ -421,7 +427,7 @@ static void hdaps_mousedev_poll(unsigned /* Any of "successful", "not yet ready" and "not prefetched"? */ if (ret!=0 && ret!=-EBUSY && ret!=-ENODATA) { printk(KERN_ERR - "hdaps: poll failed, disabling mousedev updates\n"); + "hdaps: poll failed, disabling update timer\n"); return; } @@ -720,6 +726,9 @@ static int __init hdaps_init(void) goto out; } + /* Init timer before platform_driver_register, in case of suspend */ + init_timer(&hdaps_timer); + hdaps_timer.function = hdaps_mousedev_poll; ret = platform_driver_register(&hdaps_driver); if (ret) goto out; @@ -754,11 +763,7 @@ static int __init hdaps_init(void) input_register_device(hdaps_idev); - /* start up our timer for the input device */ - init_timer(&hdaps_timer); - hdaps_timer.function = hdaps_mousedev_poll; - hdaps_timer.expires = jiffies + HZ/sampling_rate; - add_timer(&hdaps_timer); + mod_timer(&hdaps_timer, jiffies + HZ/sampling_rate); printk(KERN_INFO "hdaps: driver successfully loaded.\n"); return 0; - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |