~ubuntu-branches/ubuntu/precise/linux-ti-omap4/precise

« back to all changes in this revision

Viewing changes to drivers/leds/leds-bd2802.c

  • Committer: Bazaar Package Importer
  • Author(s): Paolo Pisati
  • Date: 2011-06-29 15:23:51 UTC
  • mfrom: (26.1.1 natty-proposed)
  • Revision ID: james.westby@ubuntu.com-20110629152351-xs96tm303d95rpbk
Tags: 3.0.0-1200.2
* Rebased against 3.0.0-6.7
* BSP from TI based on 3.0.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
19
19
#include <linux/leds.h>
20
20
#include <linux/leds-bd2802.h>
21
21
#include <linux/slab.h>
22
 
 
 
22
#include <linux/pm.h>
23
23
 
24
24
#define LED_CTL(rgb2en, rgb1en) ((rgb2en) << 4 | ((rgb1en) << 0))
25
25
 
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)   \
761
747
        return 0;
762
748
}
763
749
 
764
 
static int bd2802_suspend(struct i2c_client *client, pm_message_t mesg)
765
 
{
 
750
#ifdef CONFIG_PM
 
751
 
 
752
static void bd2802_restore_state(struct bd2802_led *led)
 
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);
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
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
        { }
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