rename kernel-power folder to kernel-bfs.
[kernel-bfs] / kernel-bfs-2.6.28 / debian / patches / leds-lp5523.diff
1 --- kernel-power-2.6.28.orig/drivers/leds/leds-lp5523.c
2 +++ kernel-power-2.6.28/drivers/leds/leds-lp5523.c
3 @@ -120,6 +120,8 @@
4         u8                      led_nr;
5         u8                      led_current;
6         struct led_classdev     cdev;
7 +       struct work_struct      work;
8 +       u8 brightness;
9  };
10  
11  struct lp5523_chip {
12 @@ -472,10 +474,10 @@
13         return pos;
14  }
15  
16 -static void lp5523_set_brightness(struct led_classdev *cdev,
17 -                            enum led_brightness brightness)
18 +static void lp5523_set_brightness_work(struct work_struct  *work)
19  {
20 -       struct lp5523_led *led = cdev_to_led(cdev);
21 +        struct lp5523_led *led =
22 +                container_of(work, struct lp5523_led, work);
23         struct lp5523_chip *chip = led_to_lp5523(led);
24         struct i2c_client *client = chip->client;
25  
26 @@ -483,10 +485,20 @@
27  
28         lp5523_write(client,
29                      LP5523_REG_LED_PWM_BASE + led->led_nr,
30 -                    (u8)brightness);
31 +                    led->brightness);
32  
33         mutex_unlock(&chip->lock);
34  }
35 +static void lp5523_set_brightness(struct led_classdev *cdev,
36 +                            enum led_brightness brightness)
37 +{
38 +       struct lp5523_led *led = cdev_to_led(cdev);
39 +       struct lp5523_chip *chip = led_to_lp5523(led);
40 +       struct i2c_client *client = chip->client;
41 +
42 +       led->brightness = (u8)brightness;
43 +       schedule_work(&led->work);
44 +}
45  
46  static int lp5523_do_store_load(struct lp5523_engine *engine,
47                                 const char *buf, size_t len)
48 @@ -792,6 +804,7 @@
49  
50         led->cdev.name = name;
51         led->cdev.brightness_set = lp5523_set_brightness;
52 +       INIT_WORK( &led->work, lp5523_set_brightness_work); 
53         if (led_classdev_register(dev, &led->cdev) < 0) {
54                 dev_err(dev, "couldn't register led %d\n", id);
55                 return -1;