Lines Matching defs:flash

81 static int lm3646_mode_ctrl(struct lm3646_flash *flash,
86 return regmap_write(flash->regmap,
87 REG_ENABLE, flash->mode_reg | MODE_SHDN);
89 return regmap_write(flash->regmap,
90 REG_ENABLE, flash->mode_reg | MODE_TORCH);
92 return regmap_write(flash->regmap,
93 REG_ENABLE, flash->mode_reg | MODE_FLASH);
101 struct lm3646_flash *flash = to_lm3646_flash(ctrl);
108 rval = regmap_read(flash->regmap, REG_FLAG, &reg_val);
135 struct lm3646_flash *flash = to_lm3646_flash(ctrl);
143 return lm3646_mode_ctrl(flash, ctrl->val);
144 /* switch to SHDN mode before flash strobe on */
145 return lm3646_mode_ctrl(flash, V4L2_FLASH_LED_MODE_NONE);
148 return regmap_update_bits(flash->regmap,
154 /* read and check current mode of chip to start flash */
155 rval = regmap_read(flash->regmap, REG_ENABLE, &reg_val);
158 /* flash on */
159 return lm3646_mode_ctrl(flash, V4L2_FLASH_LED_MODE_FLASH);
164 * flash mode will be turned automatically
165 * from FLASH mode to SHDN mode after flash duration timeout
166 * read and check current mode of chip to stop flash
168 rval = regmap_read(flash->regmap, REG_ENABLE, &reg_val);
172 return lm3646_mode_ctrl(flash,
177 return regmap_update_bits(flash->regmap,
183 return regmap_update_bits(flash->regmap,
189 return regmap_update_bits(flash->regmap,
203 static int lm3646_init_controls(struct lm3646_flash *flash)
206 struct v4l2_ctrl_handler *hdl = &flash->ctrls_led;
210 /* flash mode */
215 /* flash source */
219 /* flash strobe */
221 /* flash strobe stop */
224 /* flash strobe timeout */
228 LM3646_FLASH_TOUT_STEP, flash->pdata->flash_timeout);
230 /* max flash current */
256 flash->subdev_led.ctrl_handler = hdl;
271 static int lm3646_subdev_init(struct lm3646_flash *flash)
273 struct i2c_client *client = to_i2c_client(flash->dev);
276 v4l2_i2c_subdev_init(&flash->subdev_led, client, &lm3646_ops);
277 flash->subdev_led.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
278 strscpy(flash->subdev_led.name, LM3646_NAME,
279 sizeof(flash->subdev_led.name));
280 rval = lm3646_init_controls(flash);
283 rval = media_entity_pads_init(&flash->subdev_led.entity, 0, NULL);
286 flash->subdev_led.entity.function = MEDIA_ENT_F_FLASH;
290 v4l2_ctrl_handler_free(&flash->ctrls_led);
294 static int lm3646_init_device(struct lm3646_flash *flash)
300 rval = regmap_read(flash->regmap, REG_ENABLE, &reg_val);
303 flash->mode_reg = reg_val & 0xfc;
306 rval = lm3646_mode_ctrl(flash, V4L2_FLASH_LED_MODE_NONE);
311 * LED1 flash current setting
312 * LED2 flash current = Total(Max) flash current - LED1 flash current
314 rval = regmap_update_bits(flash->regmap,
317 (flash->pdata->led1_flash_brt));
326 rval = regmap_update_bits(flash->regmap,
329 (flash->pdata->led1_torch_brt));
334 return regmap_read(flash->regmap, REG_FLAG, &reg_val);
340 struct lm3646_flash *flash;
344 flash = devm_kzalloc(&client->dev, sizeof(*flash), GFP_KERNEL);
345 if (flash == NULL)
348 flash->regmap = devm_regmap_init_i2c(client, &lm3646_regmap);
349 if (IS_ERR(flash->regmap))
350 return PTR_ERR(flash->regmap);
364 flash->pdata = pdata;
365 flash->dev = &client->dev;
367 rval = lm3646_subdev_init(flash);
371 rval = lm3646_init_device(flash);
375 i2c_set_clientdata(client, flash);
382 struct lm3646_flash *flash = i2c_get_clientdata(client);
384 v4l2_device_unregister_subdev(&flash->subdev_led);
385 v4l2_ctrl_handler_free(&flash->ctrls_led);
386 media_entity_cleanup(&flash->subdev_led.entity);