#include <linux/gpio/consumer.h>
#include <linux/led-class-flash.h>
#include <linux/module.h>
#include <linux/regulator/consumer.h>
#include <linux/platform_device.h>
#include <media/v4l2-flash-led-class.h>
#define FLASH_TIMEOUT_DEFAULT …
#define FLASH_MAX_TIMEOUT_DEFAULT …
struct sgm3140 { … };
static struct sgm3140 *flcdev_to_sgm3140(struct led_classdev_flash *flcdev)
{ … }
static int sgm3140_strobe_set(struct led_classdev_flash *fled_cdev, bool state)
{ … }
static int sgm3140_strobe_get(struct led_classdev_flash *fled_cdev, bool *state)
{ … }
static int sgm3140_timeout_set(struct led_classdev_flash *fled_cdev,
u32 timeout)
{ … }
static const struct led_flash_ops sgm3140_flash_ops = …;
static int sgm3140_brightness_set(struct led_classdev *led_cdev,
enum led_brightness brightness)
{ … }
static void sgm3140_powerdown_timer(struct timer_list *t)
{ … }
static void sgm3140_init_flash_timeout(struct sgm3140 *priv)
{ … }
#if IS_ENABLED(CONFIG_V4L2_FLASH_LED_CLASS)
static void sgm3140_init_v4l2_flash_config(struct sgm3140 *priv,
struct v4l2_flash_config *v4l2_sd_cfg)
{ … }
#else
static void sgm3140_init_v4l2_flash_config(struct sgm3140 *priv,
struct v4l2_flash_config *v4l2_sd_cfg)
{
}
#endif
static int sgm3140_probe(struct platform_device *pdev)
{ … }
static void sgm3140_remove(struct platform_device *pdev)
{ … }
static const struct of_device_id sgm3140_dt_match[] = …;
MODULE_DEVICE_TABLE(of, sgm3140_dt_match);
static struct platform_driver sgm3140_driver = …;
module_platform_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;