v4l2_flash
struct v4l2_flash *v4l2_flash,
struct led_classdev_flash *fled_cdev = v4l2_flash->fled_cdev;
static s32 aat1290_brightness_to_intensity(struct v4l2_flash *v4l2_flash,
struct led_classdev_flash *fled_cdev = v4l2_flash->fled_cdev;
static int aat1290_led_external_strobe_set(struct v4l2_flash *v4l2_flash,
struct aat1290_led *led = fled_cdev_to_led(v4l2_flash->fled_cdev);
struct led_classdev_flash *fled_cdev = v4l2_flash->fled_cdev;
led->v4l2_flash = v4l2_flash_init(dev, of_fwnode_handle(sub_node),
if (IS_ERR(led->v4l2_flash)) {
ret = PTR_ERR(led->v4l2_flash);
v4l2_flash_release(led->v4l2_flash);
struct v4l2_flash *v4l2_flash;
struct v4l2_flash *vf;
struct v4l2_flash *vfind;
v4l2_flash_release(sub_leds[FLED1].v4l2_flash);
v4l2_flash_release(sub_leds[FLED1].v4l2_flash);
v4l2_flash_release(sub_leds[FLED2].v4l2_flash);
struct v4l2_flash *v4l2_flash;
struct v4l2_flash *v4l2_flash,
flcdev_to_sub_led(v4l2_flash->fled_cdev);
sub_led->v4l2_flash = v4l2_flash_init(dev, of_fwnode_handle(sub_node),
if (IS_ERR(sub_led->v4l2_flash)) {
ret = PTR_ERR(sub_led->v4l2_flash);
static int mt6360_flash_external_strobe_set(struct v4l2_flash *v4l2_flash,
struct led_classdev_flash *flash = v4l2_flash->fled_cdev;
led->v4l2_flash = v4l2_flash_init(parent, init_data->fwnode,
if (IS_ERR(led->v4l2_flash)) {
return PTR_ERR(led->v4l2_flash);
if (led->v4l2_flash)
v4l2_flash_release(led->v4l2_flash);
struct v4l2_flash *v4l2_flash;
static int mt6370_flash_external_strobe_set(struct v4l2_flash *v4l2_flash,
struct led_classdev_flash *flash = v4l2_flash->fled_cdev;
static void mt6370_v4l2_flash_release(void *v4l2_flash)
v4l2_flash_release(v4l2_flash);
led->v4l2_flash = v4l2_flash_init(parent, fwnode, &led->flash, &v4l2_flash_ops,
if (IS_ERR(led->v4l2_flash))
return dev_err_probe(parent, PTR_ERR(led->v4l2_flash),
return devm_add_action_or_reset(parent, mt6370_v4l2_flash_release, led->v4l2_flash);
struct v4l2_flash *v4l2_flash;
struct v4l2_flash **v4l2_flash;
static int qcom_flash_external_strobe_set(struct v4l2_flash *v4l2_flash, bool enable)
struct led_classdev_flash *fled_cdev = v4l2_flash->fled_cdev;
qcom_flash_intensity_to_led_brightness(struct v4l2_flash *v4l2_flash, s32 intensity)
struct led_classdev_flash *fled_cdev = v4l2_flash->fled_cdev;
static s32 qcom_flash_brightness_to_led_intensity(struct v4l2_flash *v4l2_flash,
struct led_classdev_flash *fled_cdev = v4l2_flash->fled_cdev;
struct v4l2_flash *v4l2_flash;
v4l2_flash = v4l2_flash_init(dev, fwnode, &led->flash, &qcom_v4l2_flash_ops, &v4l2_cfg);
if (IS_ERR(v4l2_flash))
return PTR_ERR(v4l2_flash);
flash_data->v4l2_flash[flash_data->leds_count] = v4l2_flash;
flash_data->v4l2_flash = devm_kcalloc(dev, count,
sizeof(*flash_data->v4l2_flash), GFP_KERNEL);
if (!flash_data->v4l2_flash)
while (flash_data->v4l2_flash[flash_data->leds_count] && flash_data->leds_count)
v4l2_flash_release(flash_data->v4l2_flash[flash_data->leds_count--]);
while (flash_data->v4l2_flash[flash_data->leds_count] && flash_data->leds_count)
v4l2_flash_release(flash_data->v4l2_flash[flash_data->leds_count--]);
static int rt4505_flash_external_strobe_set(struct v4l2_flash *v4l2_flash,
struct led_classdev_flash *flash = v4l2_flash->fled_cdev;
priv->v4l2_flash = v4l2_flash_init(priv->dev, init_data.fwnode,
if (IS_ERR(priv->v4l2_flash)) {
return PTR_ERR(priv->v4l2_flash);
v4l2_flash_release(priv->v4l2_flash);
struct v4l2_flash *v4l2_flash;
v4l2_flash_release(rt->v4l2_flash);
rt->v4l2_flash = v4l2_flash_init(dev, child, fled, NULL, &v4l2_sd_cfg);
if (IS_ERR(rt->v4l2_flash)) {
ret = PTR_ERR(rt->v4l2_flash);
struct v4l2_flash *v4l2_flash;
struct v4l2_flash *v4l2_flash;
priv->v4l2_flash = v4l2_flash_init(&pdev->dev,
if (IS_ERR(priv->v4l2_flash)) {
ret = PTR_ERR(priv->v4l2_flash);
v4l2_flash_release(priv->v4l2_flash);
struct v4l2_flash *v4l2_flash;
static int tps6131x_flash_external_strobe_set(struct v4l2_flash *v4l2_flash, bool enable)
struct led_classdev_flash *fled_cdev = v4l2_flash->fled_cdev;
tps6131x->v4l2_flash = v4l2_flash_init(tps6131x->dev, tps6131x->led_node,
if (IS_ERR(tps6131x->v4l2_flash)) {
return PTR_ERR(tps6131x->v4l2_flash);
v4l2_flash_release(tps6131x->v4l2_flash);
ctrl->val = call_flash_op(v4l2_flash,
if (WARN_ON_ONCE(!v4l2_flash->fled_cdev))
led_cdev = &v4l2_flash->fled_cdev->led_cdev;
if (WARN_ON_ONCE(!v4l2_flash->iled_cdev))
led_cdev = v4l2_flash->iled_cdev;
static int v4l2_flash_update_led_brightness(struct v4l2_flash *v4l2_flash,
struct v4l2_ctrl **ctrls = v4l2_flash->ctrls;
if (WARN_ON_ONCE(!v4l2_flash->fled_cdev))
led_cdev = &v4l2_flash->fled_cdev->led_cdev;
if (WARN_ON_ONCE(!v4l2_flash->iled_cdev))
led_cdev = v4l2_flash->iled_cdev;
if (has_flash_op(v4l2_flash, led_brightness_to_intensity))
ctrl->val = call_flash_op(v4l2_flash,
struct v4l2_flash *v4l2_flash = v4l2_ctrl_to_v4l2_flash(c);
struct led_classdev_flash *fled_cdev = v4l2_flash->fled_cdev;
#define has_flash_op(v4l2_flash, op) \
return v4l2_flash_update_led_brightness(v4l2_flash, c);
(v4l2_flash && v4l2_flash->ops && v4l2_flash->ops->op)
#define call_flash_op(v4l2_flash, op, arg) \
(has_flash_op(v4l2_flash, op) ? \
struct v4l2_flash *v4l2_flash = v4l2_ctrl_to_v4l2_flash(c);
struct led_classdev_flash *fled_cdev = v4l2_flash->fled_cdev;
struct v4l2_ctrl **ctrls = v4l2_flash->ctrls;
v4l2_flash->ops->op(v4l2_flash, arg) : \
return v4l2_flash_set_led_brightness(v4l2_flash, c);
ret = call_flash_op(v4l2_flash,
ret = call_flash_op(v4l2_flash,
return v4l2_flash_set_led_brightness(v4l2_flash,
return call_flash_op(v4l2_flash, external_strobe_set,
static void __fill_ctrl_init_data(struct v4l2_flash *v4l2_flash,
struct led_classdev_flash *fled_cdev = v4l2_flash->fled_cdev;
if (v4l2_flash->iled_cdev) {
static int v4l2_flash_init_controls(struct v4l2_flash *v4l2_flash,
v4l2_flash->ctrls = devm_kcalloc(v4l2_flash->sd.dev,
sizeof(*v4l2_flash->ctrls),
if (!v4l2_flash->ctrls)
__fill_ctrl_init_data(v4l2_flash, flash_cfg, ctrl_init_data);
v4l2_ctrl_handler_init(&v4l2_flash->hdl, num_ctrls);
ctrl = v4l2_ctrl_new_std_menu(&v4l2_flash->hdl,
ctrl = v4l2_ctrl_new_std(&v4l2_flash->hdl,
v4l2_flash->ctrls[i] = ctrl;
if (v4l2_flash->hdl.error) {
ret = v4l2_flash->hdl.error;
v4l2_ctrl_handler_setup(&v4l2_flash->hdl);
v4l2_flash->sd.ctrl_handler = &v4l2_flash->hdl;
v4l2_ctrl_handler_free(&v4l2_flash->hdl);
static int __sync_device_with_v4l2_controls(struct v4l2_flash *v4l2_flash)
struct led_classdev_flash *fled_cdev = v4l2_flash->fled_cdev;
struct v4l2_ctrl **ctrls = v4l2_flash->ctrls;
ret = v4l2_flash_set_led_brightness(v4l2_flash,
ret = v4l2_flash_set_led_brightness(v4l2_flash,
ret = call_flash_op(v4l2_flash, external_strobe_set,
struct v4l2_flash *v4l2_flash = v4l2_subdev_to_v4l2_flash(sd);
struct led_classdev_flash *fled_cdev = v4l2_flash->fled_cdev;
struct led_classdev *led_cdev_ind = v4l2_flash->iled_cdev;
ret = __sync_device_with_v4l2_controls(v4l2_flash);
struct v4l2_flash *v4l2_flash = v4l2_subdev_to_v4l2_flash(sd);
struct led_classdev_flash *fled_cdev = v4l2_flash->fled_cdev;
struct led_classdev *led_cdev_ind = v4l2_flash->iled_cdev;
if (v4l2_flash->ctrls[STROBE_SOURCE])
v4l2_flash->ctrls[STROBE_SOURCE],
static struct v4l2_flash *__v4l2_flash_init(
struct v4l2_flash *v4l2_flash;
v4l2_flash = devm_kzalloc(dev, sizeof(*v4l2_flash), GFP_KERNEL);
if (!v4l2_flash)
sd = &v4l2_flash->sd;
v4l2_flash->fled_cdev = fled_cdev;
v4l2_flash->iled_cdev = iled_cdev;
v4l2_flash->ops = ops;
ret = v4l2_flash_init_controls(v4l2_flash, config);
return v4l2_flash;
struct v4l2_flash *v4l2_flash_init(
struct v4l2_flash *v4l2_flash_indicator_init(
void v4l2_flash_release(struct v4l2_flash *v4l2_flash)
if (IS_ERR_OR_NULL(v4l2_flash))
sd = &v4l2_flash->sd;
static int v4l2_flash_set_led_brightness(struct v4l2_flash *v4l2_flash,
struct v4l2_ctrl **ctrls = v4l2_flash->ctrls;
if (has_flash_op(v4l2_flash, intensity_to_led_brightness))
brightness = call_flash_op(v4l2_flash,
if (has_flash_op(v4l2_flash, led_brightness_to_intensity))
struct v4l2_flash *v4l2_flash;
struct v4l2_flash *v4l2_flash_ind;
light->v4l2_flash = v4l2_flash_init(dev, NULL, fled, &v4l2_flash_ops,
if (IS_ERR(light->v4l2_flash))
return PTR_ERR(light->v4l2_flash);
v4l2_flash_release(light->v4l2_flash);
v4l2_flash_release(light->v4l2_flash);
return container_of(sd, struct v4l2_flash, sd);
static inline struct v4l2_flash *v4l2_ctrl_to_v4l2_flash(struct v4l2_ctrl *c)
return container_of(c->handler, struct v4l2_flash, hdl);
struct v4l2_flash *v4l2_flash_init(
struct v4l2_flash *v4l2_flash_indicator_init(
void v4l2_flash_release(struct v4l2_flash *v4l2_flash);
static inline struct v4l2_flash *v4l2_flash_init(
struct v4l2_flash;
static inline struct v4l2_flash *v4l2_flash_indicator_init(
static inline void v4l2_flash_release(struct v4l2_flash *v4l2_flash)
int (*external_strobe_set)(struct v4l2_flash *v4l2_flash,
(struct v4l2_flash *v4l2_flash, s32 intensity);
(struct v4l2_flash *v4l2_flash, enum led_brightness);
static inline struct v4l2_flash *v4l2_subdev_to_v4l2_flash(