leds: implement sysfs interface locking mechanism
Add a mechanism for locking LED subsystem sysfs interface. This patch prepares ground for addition of LED Flash Class extension, whose API will be integrated with V4L2 Flash API. Such a fusion enforces introducing a locking scheme, which will secure consistent access to the LED Flash Class device. The mechanism being introduced allows for disabling LED subsystem sysfs interface by calling led_sysfs_disable function and enabling it by calling led_sysfs_enable. The functions alter the LED_SYSFS_DISABLE flag state and must be called under mutex lock. The state of the lock is checked with use of led_sysfs_is_disabled function. Such a design allows for providing immediate feedback to the user space on whether the LED Flash Class device is available or is under V4L2 Flash sub-device control. Signed-off-by: Jacek Anaszewski <j.anaszewski@samsung.com> Acked-by: Kyungmin Park <kyungmin.park@samsung.com> Cc: Richard Purdie <rpurdie@rpsys.net> Signed-off-by: Bryan Wu <cooloney@gmail.com>
This commit is contained in:

committed by
Bryan Wu

szülő
3f6e42c808
commit
acd899e4f3
@@ -143,3 +143,21 @@ int led_update_brightness(struct led_classdev *led_cdev)
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL(led_update_brightness);
|
||||
|
||||
/* Caller must ensure led_cdev->led_access held */
|
||||
void led_sysfs_disable(struct led_classdev *led_cdev)
|
||||
{
|
||||
lockdep_assert_held(&led_cdev->led_access);
|
||||
|
||||
led_cdev->flags |= LED_SYSFS_DISABLE;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(led_sysfs_disable);
|
||||
|
||||
/* Caller must ensure led_cdev->led_access held */
|
||||
void led_sysfs_enable(struct led_classdev *led_cdev)
|
||||
{
|
||||
lockdep_assert_held(&led_cdev->led_access);
|
||||
|
||||
led_cdev->flags &= ~LED_SYSFS_DISABLE;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(led_sysfs_enable);
|
||||
|
Reference in New Issue
Block a user