Commit 551ea73838c5eba18d673bd4e7fb0fec77cdcb8a
Committed by
Linus Torvalds
1 parent
8d2587970b
Exists in
master
and in
39 other branches
leds: convert bd2802 driver to dev_pm_ops
There is a move to deprecate bus-specific PM operations and move to using dev_pm_ops instead in order to reduce the amount of boilerplate code in buses and facilitiate updates to the PM core. Do this move for the bs2802 driver. [akpm@linux-foundation.org: fix warnings] Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Cc: Kim Kyuwon <q1.kim@samsung.com> Cc: Kim Kyuwon <chammoru@gmail.com> Cc: Richard Purdie <rpurdie@rpsys.net> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Showing 1 changed file with 28 additions and 19 deletions Side-by-side Diff
drivers/leds/leds-bd2802.c
... | ... | @@ -19,8 +19,8 @@ |
19 | 19 | #include <linux/leds.h> |
20 | 20 | #include <linux/leds-bd2802.h> |
21 | 21 | #include <linux/slab.h> |
22 | +#include <linux/pm.h> | |
22 | 23 | |
23 | - | |
24 | 24 | #define LED_CTL(rgb2en, rgb1en) ((rgb2en) << 4 | ((rgb1en) << 0)) |
25 | 25 | |
26 | 26 | #define BD2802_LED_OFFSET 0xa |
... | ... | @@ -319,20 +319,6 @@ |
319 | 319 | bd2802_update_state(led, id, color, BD2802_OFF); |
320 | 320 | } |
321 | 321 | |
322 | -static void bd2802_restore_state(struct bd2802_led *led) | |
323 | -{ | |
324 | - int i; | |
325 | - | |
326 | - for (i = 0; i < LED_NUM; i++) { | |
327 | - if (led->led[i].r) | |
328 | - bd2802_turn_on(led, i, RED, led->led[i].r); | |
329 | - if (led->led[i].g) | |
330 | - bd2802_turn_on(led, i, GREEN, led->led[i].g); | |
331 | - if (led->led[i].b) | |
332 | - bd2802_turn_on(led, i, BLUE, led->led[i].b); | |
333 | - } | |
334 | -} | |
335 | - | |
336 | 322 | #define BD2802_SET_REGISTER(reg_addr, reg_name) \ |
337 | 323 | static ssize_t bd2802_store_reg##reg_addr(struct device *dev, \ |
338 | 324 | struct device_attribute *attr, const char *buf, size_t count) \ |
339 | 325 | |
... | ... | @@ -761,8 +747,25 @@ |
761 | 747 | return 0; |
762 | 748 | } |
763 | 749 | |
764 | -static int bd2802_suspend(struct i2c_client *client, pm_message_t mesg) | |
750 | +#ifdef CONFIG_PM | |
751 | + | |
752 | +static void bd2802_restore_state(struct bd2802_led *led) | |
765 | 753 | { |
754 | + int i; | |
755 | + | |
756 | + for (i = 0; i < LED_NUM; i++) { | |
757 | + if (led->led[i].r) | |
758 | + bd2802_turn_on(led, i, RED, led->led[i].r); | |
759 | + if (led->led[i].g) | |
760 | + bd2802_turn_on(led, i, GREEN, led->led[i].g); | |
761 | + if (led->led[i].b) | |
762 | + bd2802_turn_on(led, i, BLUE, led->led[i].b); | |
763 | + } | |
764 | +} | |
765 | + | |
766 | +static int bd2802_suspend(struct device *dev) | |
767 | +{ | |
768 | + struct i2c_client *client = to_i2c_client(dev); | |
766 | 769 | struct bd2802_led *led = i2c_get_clientdata(client); |
767 | 770 | |
768 | 771 | gpio_set_value(led->pdata->reset_gpio, 0); |
769 | 772 | |
... | ... | @@ -770,8 +773,9 @@ |
770 | 773 | return 0; |
771 | 774 | } |
772 | 775 | |
773 | -static int bd2802_resume(struct i2c_client *client) | |
776 | +static int bd2802_resume(struct device *dev) | |
774 | 777 | { |
778 | + struct i2c_client *client = to_i2c_client(dev); | |
775 | 779 | struct bd2802_led *led = i2c_get_clientdata(client); |
776 | 780 | |
777 | 781 | if (!bd2802_is_all_off(led) || led->adf_on) { |
... | ... | @@ -782,6 +786,12 @@ |
782 | 786 | return 0; |
783 | 787 | } |
784 | 788 | |
789 | +static SIMPLE_DEV_PM_OPS(bd2802_pm, bd2802_suspend, bd2802_resume); | |
790 | +#define BD2802_PM (&bd2802_pm) | |
791 | +#else /* CONFIG_PM */ | |
792 | +#define BD2802_PM NULL | |
793 | +#endif | |
794 | + | |
785 | 795 | static const struct i2c_device_id bd2802_id[] = { |
786 | 796 | { "BD2802", 0 }, |
787 | 797 | { } |
788 | 798 | |
... | ... | @@ -791,11 +801,10 @@ |
791 | 801 | static struct i2c_driver bd2802_i2c_driver = { |
792 | 802 | .driver = { |
793 | 803 | .name = "BD2802", |
804 | + .pm = BD2802_PM, | |
794 | 805 | }, |
795 | 806 | .probe = bd2802_probe, |
796 | 807 | .remove = __exit_p(bd2802_remove), |
797 | - .suspend = bd2802_suspend, | |
798 | - .resume = bd2802_resume, | |
799 | 808 | .id_table = bd2802_id, |
800 | 809 | }; |
801 | 810 |