mirror of https://github.com/torvalds/linux.git
leds: flash: Add support for flash/strobe duration
Add support for the new V4L2_CID_FLASH_DURATION control to the LEDs driver. Signed-off-by: Richard Leitner <richard.leitner@linux.dev> Link: https://lore.kernel.org/r/20250507-ov9282-flash-strobe-v4-2-72b299c1b7c9@linux.dev Signed-off-by: Lee Jones <lee@kernel.org>
This commit is contained in:
parent
f1c86ab986
commit
6a09ae8281
|
|
@ -440,6 +440,21 @@ int led_update_flash_brightness(struct led_classdev_flash *fled_cdev)
|
|||
}
|
||||
EXPORT_SYMBOL_GPL(led_update_flash_brightness);
|
||||
|
||||
int led_set_flash_duration(struct led_classdev_flash *fled_cdev, u32 duration)
|
||||
{
|
||||
struct led_classdev *led_cdev = &fled_cdev->led_cdev;
|
||||
struct led_flash_setting *s = &fled_cdev->duration;
|
||||
|
||||
s->val = duration;
|
||||
led_clamp_align(s);
|
||||
|
||||
if (!(led_cdev->flags & LED_SUSPENDED))
|
||||
return call_flash_op(fled_cdev, duration_set, s->val);
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(led_set_flash_duration);
|
||||
|
||||
MODULE_AUTHOR("Jacek Anaszewski <j.anaszewski@samsung.com>");
|
||||
MODULE_DESCRIPTION("LED Flash class interface");
|
||||
MODULE_LICENSE("GPL v2");
|
||||
|
|
|
|||
|
|
@ -45,6 +45,8 @@ struct led_flash_ops {
|
|||
int (*timeout_set)(struct led_classdev_flash *fled_cdev, u32 timeout);
|
||||
/* get the flash LED fault */
|
||||
int (*fault_get)(struct led_classdev_flash *fled_cdev, u32 *fault);
|
||||
/* set flash duration */
|
||||
int (*duration_set)(struct led_classdev_flash *fled_cdev, u32 duration);
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
@ -75,6 +77,9 @@ struct led_classdev_flash {
|
|||
/* flash timeout value in microseconds along with its constraints */
|
||||
struct led_flash_setting timeout;
|
||||
|
||||
/* flash timeout value in microseconds along with its constraints */
|
||||
struct led_flash_setting duration;
|
||||
|
||||
/* LED Flash class sysfs groups */
|
||||
const struct attribute_group *sysfs_groups[LED_FLASH_SYSFS_GROUPS_SIZE];
|
||||
};
|
||||
|
|
@ -209,4 +214,15 @@ int led_set_flash_timeout(struct led_classdev_flash *fled_cdev, u32 timeout);
|
|||
*/
|
||||
int led_get_flash_fault(struct led_classdev_flash *fled_cdev, u32 *fault);
|
||||
|
||||
/**
|
||||
* led_set_flash_duration - set flash LED duration
|
||||
* @fled_cdev: the flash LED to set
|
||||
* @timeout: the flash duration to set it to
|
||||
*
|
||||
* Set the flash strobe duration.
|
||||
*
|
||||
* Returns: 0 on success or negative error value on failure
|
||||
*/
|
||||
int led_set_flash_duration(struct led_classdev_flash *fled_cdev, u32 duration);
|
||||
|
||||
#endif /* __LINUX_FLASH_LEDS_H_INCLUDED */
|
||||
|
|
|
|||
Loading…
Reference in New Issue