Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3ef7de53 authored by Jacek Anaszewski's avatar Jacek Anaszewski Committed by Bryan Wu
Browse files

leds: Improve and export led_update_brightness



led_update_brightness helper function used to be exploited only locally
in the led-class.c module, where its result was being passed to the
brightness_show sysfs callback. With the introduction of v4l2-flash
subdevice the same functionality becomes required for reading current
brightness from a LED device. This patch adds checking of return value
of the brightness_get callback and moves the led_update_brightness()
function to the LED subsystem public API.

Signed-off-by: default avatarJacek Anaszewski <j.anaszewski@samsung.com>
Acked-by: default avatarKyungmin Park <kyungmin.park@samsung.com>
Cc: Richard Purdie <rpurdie@rpsys.net>
Signed-off-by: default avatarBryan Wu <cooloney@gmail.com>
parent 914ae25a
Loading
Loading
Loading
Loading
+0 −6
Original line number Diff line number Diff line
@@ -24,12 +24,6 @@

static struct class *leds_class;

static void led_update_brightness(struct led_classdev *led_cdev)
{
	if (led_cdev->brightness_get)
		led_cdev->brightness = led_cdev->brightness_get(led_cdev);
}

static ssize_t brightness_show(struct device *dev,
		struct device_attribute *attr, char *buf)
{
+16 −0
Original line number Diff line number Diff line
@@ -127,3 +127,19 @@ void led_set_brightness(struct led_classdev *led_cdev,
	__led_set_brightness(led_cdev, brightness);
}
EXPORT_SYMBOL(led_set_brightness);

int led_update_brightness(struct led_classdev *led_cdev)
{
	int ret = 0;

	if (led_cdev->brightness_get) {
		ret = led_cdev->brightness_get(led_cdev);
		if (ret >= 0) {
			led_cdev->brightness = ret;
			return 0;
		}
	}

	return ret;
}
EXPORT_SYMBOL(led_update_brightness);
+10 −0
Original line number Diff line number Diff line
@@ -140,6 +140,16 @@ extern void led_blink_set_oneshot(struct led_classdev *led_cdev,
 */
extern void led_set_brightness(struct led_classdev *led_cdev,
			       enum led_brightness brightness);
/**
 * led_update_brightness - update LED brightness
 * @led_cdev: the LED to query
 *
 * Get an LED's current brightness and update led_cdev->brightness
 * member with the obtained value.
 *
 * Returns: 0 on success or negative error value on failure
 */
extern int led_update_brightness(struct led_classdev *led_cdev);

/*
 * LED Triggers