staging: android: timed_output : disable the timed output device when the device...
authorKim, Milo <Milo.Kim@ti.com>
Fri, 27 Apr 2012 05:01:10 +0000 (22:01 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 30 Apr 2012 01:36:35 +0000 (21:36 -0400)
(Life cycle of timed output device driver)

1) register the device as the timed output
2) enable() ops is called via the sysfs
   timeout > 0 : timer is activated and device is turned on
   timeout = 0 : timer is cancelled and device is off
3) unregister the timed output device if not used any more

So the registered device should be disabled explicitly when the module is removed.
('disabled' means the timer is stopped and the device is turned off)

Rather than implementing that code in each driver,
just call enable() with timeout = 0 to clean up the driver.

Signed-off-by: Milo(Woogyom) Kim <milo.kim@ti.com>
Cc: Mike Lockwood <lockwood@android.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/android/timed_output.c

index f373422308e01619e3a537790a8abe70ea31031c..38d930cadad36738f922e4faf7018d72068836ab 100644 (file)
@@ -99,6 +99,7 @@ EXPORT_SYMBOL_GPL(timed_output_dev_register);
 
 void timed_output_dev_unregister(struct timed_output_dev *tdev)
 {
+       tdev->enable(tdev, 0);
        device_remove_file(tdev->dev, &dev_attr_enable);
        device_destroy(timed_output_class, MKDEV(0, tdev->index));
        dev_set_drvdata(tdev->dev, NULL);