Lines Matching refs:flash
84 static int lm3646_mode_ctrl(struct lm3646_flash *flash, in lm3646_mode_ctrl() argument
89 return regmap_write(flash->regmap, in lm3646_mode_ctrl()
90 REG_ENABLE, flash->mode_reg | MODE_SHDN); in lm3646_mode_ctrl()
92 return regmap_write(flash->regmap, in lm3646_mode_ctrl()
93 REG_ENABLE, flash->mode_reg | MODE_TORCH); in lm3646_mode_ctrl()
95 return regmap_write(flash->regmap, in lm3646_mode_ctrl()
96 REG_ENABLE, flash->mode_reg | MODE_FLASH); in lm3646_mode_ctrl()
104 struct lm3646_flash *flash = to_lm3646_flash(ctrl); in lm3646_get_ctrl() local
111 rval = regmap_read(flash->regmap, REG_FLAG, ®_val); in lm3646_get_ctrl()
138 struct lm3646_flash *flash = to_lm3646_flash(ctrl); in lm3646_set_ctrl() local
146 return lm3646_mode_ctrl(flash, ctrl->val); in lm3646_set_ctrl()
148 return lm3646_mode_ctrl(flash, V4L2_FLASH_LED_MODE_NONE); in lm3646_set_ctrl()
151 return regmap_update_bits(flash->regmap, in lm3646_set_ctrl()
158 rval = regmap_read(flash->regmap, REG_ENABLE, ®_val); in lm3646_set_ctrl()
162 return lm3646_mode_ctrl(flash, V4L2_FLASH_LED_MODE_FLASH); in lm3646_set_ctrl()
171 rval = regmap_read(flash->regmap, REG_ENABLE, ®_val); in lm3646_set_ctrl()
175 return lm3646_mode_ctrl(flash, in lm3646_set_ctrl()
180 return regmap_update_bits(flash->regmap, in lm3646_set_ctrl()
186 return regmap_update_bits(flash->regmap, in lm3646_set_ctrl()
192 return regmap_update_bits(flash->regmap, in lm3646_set_ctrl()
206 static int lm3646_init_controls(struct lm3646_flash *flash) in lm3646_init_controls() argument
209 struct v4l2_ctrl_handler *hdl = &flash->ctrls_led; in lm3646_init_controls()
231 LM3646_FLASH_TOUT_STEP, flash->pdata->flash_timeout); in lm3646_init_controls()
259 flash->subdev_led.ctrl_handler = hdl; in lm3646_init_controls()
274 static int lm3646_subdev_init(struct lm3646_flash *flash) in lm3646_subdev_init() argument
276 struct i2c_client *client = to_i2c_client(flash->dev); in lm3646_subdev_init()
279 v4l2_i2c_subdev_init(&flash->subdev_led, client, &lm3646_ops); in lm3646_subdev_init()
280 flash->subdev_led.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE; in lm3646_subdev_init()
281 strcpy(flash->subdev_led.name, LM3646_NAME); in lm3646_subdev_init()
282 rval = lm3646_init_controls(flash); in lm3646_subdev_init()
285 rval = media_entity_init(&flash->subdev_led.entity, 0, NULL, 0); in lm3646_subdev_init()
288 flash->subdev_led.entity.type = MEDIA_ENT_T_V4L2_SUBDEV_FLASH; in lm3646_subdev_init()
292 v4l2_ctrl_handler_free(&flash->ctrls_led); in lm3646_subdev_init()
296 static int lm3646_init_device(struct lm3646_flash *flash) in lm3646_init_device() argument
302 rval = regmap_read(flash->regmap, REG_ENABLE, ®_val); in lm3646_init_device()
305 flash->mode_reg = reg_val & 0xfc; in lm3646_init_device()
308 rval = lm3646_mode_ctrl(flash, V4L2_FLASH_LED_MODE_NONE); in lm3646_init_device()
316 rval = regmap_update_bits(flash->regmap, in lm3646_init_device()
319 (flash->pdata->led1_flash_brt)); in lm3646_init_device()
328 rval = regmap_update_bits(flash->regmap, in lm3646_init_device()
331 (flash->pdata->led1_torch_brt)); in lm3646_init_device()
336 return regmap_read(flash->regmap, REG_FLAG, ®_val); in lm3646_init_device()
342 struct lm3646_flash *flash; in lm3646_probe() local
346 flash = devm_kzalloc(&client->dev, sizeof(*flash), GFP_KERNEL); in lm3646_probe()
347 if (flash == NULL) in lm3646_probe()
350 flash->regmap = devm_regmap_init_i2c(client, &lm3646_regmap); in lm3646_probe()
351 if (IS_ERR(flash->regmap)) in lm3646_probe()
352 return PTR_ERR(flash->regmap); in lm3646_probe()
366 flash->pdata = pdata; in lm3646_probe()
367 flash->dev = &client->dev; in lm3646_probe()
369 rval = lm3646_subdev_init(flash); in lm3646_probe()
373 rval = lm3646_init_device(flash); in lm3646_probe()
377 i2c_set_clientdata(client, flash); in lm3646_probe()
384 struct lm3646_flash *flash = i2c_get_clientdata(client); in lm3646_remove() local
386 v4l2_device_unregister_subdev(&flash->subdev_led); in lm3646_remove()
387 v4l2_ctrl_handler_free(&flash->ctrls_led); in lm3646_remove()
388 media_entity_cleanup(&flash->subdev_led.entity); in lm3646_remove()