Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

leds: ipaq-micro: Implement brightness_set_blocking op

Since brightness setting can sleep for this driver, implement
brightness_set_blocking op, instead of brightness_set.
It makes this driver compatible with LED triggers.

Signed-off-by: Jacek Anaszewski <j.anaszewski@samsung.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>

+3 -3
+3 -3
drivers/leds/leds-ipaq-micro.c
··· 20 20 #define LED_AUTOSTOP (1 << 5) /* LED ON/OFF auto stop set 0:disable, 1:enable */ 21 21 #define LED_ALWAYS (1 << 6) /* LED Interrupt Mask 0:No mask, 1:mask */ 22 22 23 - static void micro_leds_brightness_set(struct led_classdev *led_cdev, 23 + static int micro_leds_brightness_set(struct led_classdev *led_cdev, 24 24 enum led_brightness value) 25 25 { 26 26 struct ipaq_micro *micro = dev_get_drvdata(led_cdev->dev->parent->parent); ··· 50 50 msg.tx_data[2] = 1; 51 51 msg.tx_data[3] = 0; /* Duty cycle 256 */ 52 52 } 53 - ipaq_micro_tx_msg_sync(micro, &msg); 53 + return ipaq_micro_tx_msg_sync(micro, &msg); 54 54 } 55 55 56 56 /* Maximum duty cycle in ms 256/10 sec = 25600 ms */ ··· 102 102 103 103 static struct led_classdev micro_led = { 104 104 .name = "led-ipaq-micro", 105 - .brightness_set = micro_leds_brightness_set, 105 + .brightness_set_blocking = micro_leds_brightness_set, 106 106 .blink_set = micro_leds_blink_set, 107 107 .flags = LED_CORE_SUSPENDRESUME, 108 108 };