Lines Matching defs:flash
68 static int lm3560_mode_ctrl(struct lm3560_flash *flash)
72 switch (flash->led_mode) {
74 rval = regmap_update_bits(flash->regmap,
78 rval = regmap_update_bits(flash->regmap,
82 rval = regmap_update_bits(flash->regmap,
90 static int lm3560_enable_ctrl(struct lm3560_flash *flash,
97 rval = regmap_update_bits(flash->regmap,
100 rval = regmap_update_bits(flash->regmap,
104 rval = regmap_update_bits(flash->regmap,
107 rval = regmap_update_bits(flash->regmap,
114 static int lm3560_torch_brt_ctrl(struct lm3560_flash *flash,
121 return lm3560_enable_ctrl(flash, led_no, false);
123 rval = lm3560_enable_ctrl(flash, led_no, true);
127 rval = regmap_update_bits(flash->regmap,
130 rval = regmap_update_bits(flash->regmap,
137 static int lm3560_flash_brt_ctrl(struct lm3560_flash *flash,
144 return lm3560_enable_ctrl(flash, led_no, false);
146 rval = lm3560_enable_ctrl(flash, led_no, true);
150 rval = regmap_update_bits(flash->regmap,
153 rval = regmap_update_bits(flash->regmap,
162 struct lm3560_flash *flash = to_lm3560_flash(ctrl, led_no);
165 mutex_lock(&flash->lock);
170 rval = regmap_read(flash->regmap, REG_FLAG, ®_val);
183 mutex_unlock(&flash->lock);
189 struct lm3560_flash *flash = to_lm3560_flash(ctrl, led_no);
193 mutex_lock(&flash->lock);
197 flash->led_mode = ctrl->val;
198 if (flash->led_mode != V4L2_FLASH_LED_MODE_FLASH)
199 rval = lm3560_mode_ctrl(flash);
203 rval = regmap_update_bits(flash->regmap,
210 if (flash->led_mode != V4L2_FLASH_LED_MODE_FLASH) {
214 flash->led_mode = V4L2_FLASH_LED_MODE_FLASH;
215 rval = lm3560_mode_ctrl(flash);
219 if (flash->led_mode != V4L2_FLASH_LED_MODE_FLASH) {
223 flash->led_mode = V4L2_FLASH_LED_MODE_NONE;
224 rval = lm3560_mode_ctrl(flash);
229 rval = regmap_update_bits(flash->regmap,
234 rval = lm3560_flash_brt_ctrl(flash, led_no, ctrl->val);
238 rval = lm3560_torch_brt_ctrl(flash, led_no, ctrl->val);
243 mutex_unlock(&flash->lock);
278 static int lm3560_init_controls(struct lm3560_flash *flash,
282 u32 max_flash_brt = flash->pdata->max_flash_brt[led_no];
283 u32 max_torch_brt = flash->pdata->max_torch_brt[led_no];
284 struct v4l2_ctrl_handler *hdl = &flash->ctrls_led[led_no];
289 /* flash mode */
293 flash->led_mode = V4L2_FLASH_LED_MODE_NONE;
295 /* flash source */
299 /* flash strobe */
302 /* flash strobe stop */
305 /* flash strobe timeout */
308 flash->pdata->max_flash_timeout,
310 flash->pdata->max_flash_timeout);
312 /* flash brt */
334 flash->subdev_led[led_no].ctrl_handler = hdl;
349 static int lm3560_subdev_init(struct lm3560_flash *flash,
352 struct i2c_client *client = to_i2c_client(flash->dev);
355 v4l2_i2c_subdev_init(&flash->subdev_led[led_no], client, &lm3560_ops);
356 flash->subdev_led[led_no].flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
357 strscpy(flash->subdev_led[led_no].name, led_name,
358 sizeof(flash->subdev_led[led_no].name));
359 rval = lm3560_init_controls(flash, led_no);
362 rval = media_entity_pads_init(&flash->subdev_led[led_no].entity, 0, NULL);
365 flash->subdev_led[led_no].entity.function = MEDIA_ENT_F_FLASH;
370 v4l2_ctrl_handler_free(&flash->ctrls_led[led_no]);
374 static int lm3560_init_device(struct lm3560_flash *flash)
380 rval = regmap_update_bits(flash->regmap,
381 REG_FLASH_TOUT, 0x60, flash->pdata->peak);
385 flash->led_mode = V4L2_FLASH_LED_MODE_NONE;
386 rval = lm3560_mode_ctrl(flash);
390 rval = regmap_read(flash->regmap, REG_FLAG, ®_val);
397 struct lm3560_flash *flash;
401 flash = devm_kzalloc(&client->dev, sizeof(*flash), GFP_KERNEL);
402 if (flash == NULL)
405 flash->regmap = devm_regmap_init_i2c(client, &lm3560_regmap);
406 if (IS_ERR(flash->regmap)) {
407 rval = PTR_ERR(flash->regmap);
425 flash->pdata = pdata;
426 flash->dev = &client->dev;
427 mutex_init(&flash->lock);
429 rval = lm3560_subdev_init(flash, LM3560_LED0, "lm3560-led0");
433 rval = lm3560_subdev_init(flash, LM3560_LED1, "lm3560-led1");
437 rval = lm3560_init_device(flash);
441 i2c_set_clientdata(client, flash);
448 struct lm3560_flash *flash = i2c_get_clientdata(client);
452 v4l2_device_unregister_subdev(&flash->subdev_led[i]);
453 v4l2_ctrl_handler_free(&flash->ctrls_led[i]);
454 media_entity_cleanup(&flash->subdev_led[i].entity);
482 MODULE_DESCRIPTION("Texas Instruments LM3560 LED flash driver");