1 --- kernel-power-2.6.28.orig/drivers/leds/leds-lp5523.c
2 +++ kernel-power-2.6.28/drivers/leds/leds-lp5523.c
6 struct led_classdev cdev;
7 + struct work_struct work;
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)
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;
29 LP5523_REG_LED_PWM_BASE + led->led_nr,
33 mutex_unlock(&chip->lock);
35 +static void lp5523_set_brightness(struct led_classdev *cdev,
36 + enum led_brightness brightness)
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;
42 + led->brightness = (u8)brightness;
43 + schedule_work(&led->work);
46 static int lp5523_do_store_load(struct lp5523_engine *engine,
47 const char *buf, size_t len)
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);