summaryrefslogtreecommitdiff
path: root/drivers/leds/led-class.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2009-01-09 21:55:37 (GMT)
committerLinus Torvalds <torvalds@linux-foundation.org>2009-01-09 21:55:37 (GMT)
commitd7d717fa889fc7a60c38497846c7618940a999d9 (patch)
tree8a19ffa13d305588a4433defb9f128ed68ecf47c /drivers/leds/led-class.c
parentb64dc5a4842c3420d7a093bf5e8979c57ceb789c (diff)
parentce70a24575414d615f6a7a05caf9b7e8f91a1b6f (diff)
downloadlinux-fsl-qoriq-d7d717fa889fc7a60c38497846c7618940a999d9.tar.xz
Merge branch 'for-linus' of git://git.o-hand.com/linux-rpurdie-leds
* 'for-linus' of git://git.o-hand.com/linux-rpurdie-leds: leds: ledtrig-timer - on deactivation hardware blinking should be disabled leds: Add suspend/resume to the core class leds: Add WM8350 LED driver leds: leds-pcs9532 - Move i2c work to a workqueque leds: leds-pca9532 - fix memory leak and properly handle errors leds: Fix wrong loop direction on removal in leds-ams-delta leds: fix Cobalt Raq LED dependency leds: Fix sparse warning in leds-ams-delta leds: Fixup kdoc comment to match parameter names leds: Make header variable naming consistent leds: eds-pca9532: mark pca9532_event() static leds: ALIX.2 LEDs driver
Diffstat (limited to 'drivers/leds/led-class.c')
-rw-r--r--drivers/leds/led-class.c24
1 files changed, 23 insertions, 1 deletions
diff --git a/drivers/leds/led-class.c b/drivers/leds/led-class.c
index 6c4a326..52f82e3 100644
--- a/drivers/leds/led-class.c
+++ b/drivers/leds/led-class.c
@@ -91,9 +91,29 @@ void led_classdev_resume(struct led_classdev *led_cdev)
}
EXPORT_SYMBOL_GPL(led_classdev_resume);
+static int led_suspend(struct device *dev, pm_message_t state)
+{
+ struct led_classdev *led_cdev = dev_get_drvdata(dev);
+
+ if (led_cdev->flags & LED_CORE_SUSPENDRESUME)
+ led_classdev_suspend(led_cdev);
+
+ return 0;
+}
+
+static int led_resume(struct device *dev)
+{
+ struct led_classdev *led_cdev = dev_get_drvdata(dev);
+
+ if (led_cdev->flags & LED_CORE_SUSPENDRESUME)
+ led_classdev_resume(led_cdev);
+
+ return 0;
+}
+
/**
* led_classdev_register - register a new object of led_classdev class.
- * @dev: The device to register.
+ * @parent: The device to register.
* @led_cdev: the led_classdev structure for this device.
*/
int led_classdev_register(struct device *parent, struct led_classdev *led_cdev)
@@ -174,6 +194,8 @@ static int __init leds_init(void)
leds_class = class_create(THIS_MODULE, "leds");
if (IS_ERR(leds_class))
return PTR_ERR(leds_class);
+ leds_class->suspend = led_suspend;
+ leds_class->resume = led_resume;
return 0;
}