Lines Matching defs:dw9719

5  * Based on linux/modules/camera/drivers/media/i2c/imx/dw9719.c in this repo:
55 static int dw9719_detect(struct dw9719_device *dw9719)
60 ret = cci_read(dw9719->regmap, DW9719_INFO, &val, NULL);
65 dev_err(dw9719->dev, "Failed to detect correct id\n");
72 static int dw9719_power_down(struct dw9719_device *dw9719)
74 return regulator_disable(dw9719->regulator);
77 static int dw9719_power_up(struct dw9719_device *dw9719)
81 ret = regulator_enable(dw9719->regulator);
86 cci_write(dw9719->regmap, DW9719_CONTROL, 1, &ret);
91 cci_write(dw9719->regmap, DW9719_CONTROL, DW9719_ENABLE_RINGING, &ret);
92 cci_write(dw9719->regmap, DW9719_MODE,
93 dw9719->sac_mode << DW9719_MODE_SAC_SHIFT, &ret);
94 cci_write(dw9719->regmap, DW9719_VCM_FREQ, dw9719->vcm_freq, &ret);
97 dw9719_power_down(dw9719);
102 static int dw9719_t_focus_abs(struct dw9719_device *dw9719, s32 value)
104 return cci_write(dw9719->regmap, DW9719_VCM_CURRENT, value, NULL);
109 struct dw9719_device *dw9719 = container_of(ctrl->handler,
115 if (!pm_runtime_get_if_in_use(dw9719->dev))
120 ret = dw9719_t_focus_abs(dw9719, ctrl->val);
126 pm_runtime_put(dw9719->dev);
138 struct dw9719_device *dw9719 = to_dw9719_device(sd);
142 for (val = dw9719->ctrls.focus->val; val >= 0;
144 ret = dw9719_t_focus_abs(dw9719, val);
151 return dw9719_power_down(dw9719);
157 struct dw9719_device *dw9719 = to_dw9719_device(sd);
158 int current_focus = dw9719->ctrls.focus->val;
162 ret = dw9719_power_up(dw9719);
168 ret = dw9719_t_focus_abs(dw9719, val);
178 dw9719_power_down(dw9719);
199 static int dw9719_init_controls(struct dw9719_device *dw9719)
204 v4l2_ctrl_handler_init(&dw9719->ctrls.handler, 1);
206 dw9719->ctrls.focus = v4l2_ctrl_new_std(&dw9719->ctrls.handler, ops,
210 if (dw9719->ctrls.handler.error) {
211 dev_err(dw9719->dev, "Error initialising v4l2 ctrls\n");
212 ret = dw9719->ctrls.handler.error;
216 dw9719->sd.ctrl_handler = &dw9719->ctrls.handler;
220 v4l2_ctrl_handler_free(&dw9719->ctrls.handler);
228 struct dw9719_device *dw9719;
231 dw9719 = devm_kzalloc(&client->dev, sizeof(*dw9719), GFP_KERNEL);
232 if (!dw9719)
235 dw9719->regmap = devm_cci_regmap_init_i2c(client, 8);
236 if (IS_ERR(dw9719->regmap))
237 return PTR_ERR(dw9719->regmap);
239 dw9719->dev = &client->dev;
240 dw9719->sac_mode = DW9719_MODE_SAC3;
241 dw9719->vcm_freq = DW9719_DEFAULT_VCM_FREQ;
245 &dw9719->sac_mode);
249 &dw9719->vcm_freq);
251 dw9719->regulator = devm_regulator_get(&client->dev, "vdd");
252 if (IS_ERR(dw9719->regulator))
253 return dev_err_probe(&client->dev, PTR_ERR(dw9719->regulator),
256 v4l2_i2c_subdev_init(&dw9719->sd, client, &dw9719_ops);
257 dw9719->sd.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
258 dw9719->sd.internal_ops = &dw9719_internal_ops;
260 ret = dw9719_init_controls(dw9719);
264 ret = media_entity_pads_init(&dw9719->sd.entity, 0, NULL);
268 dw9719->sd.entity.function = MEDIA_ENT_F_LENS;
277 ret = dw9719_power_up(dw9719);
281 ret = dw9719_detect(dw9719);
289 ret = v4l2_async_register_subdev(&dw9719->sd);
303 dw9719_power_down(dw9719);
305 media_entity_cleanup(&dw9719->sd.entity);
307 v4l2_ctrl_handler_free(&dw9719->ctrls.handler);
315 struct dw9719_device *dw9719 =
319 v4l2_ctrl_handler_free(&dw9719->ctrls.handler);
320 media_entity_cleanup(&dw9719->sd.entity);
324 dw9719_power_down(dw9719);
329 { "dw9719" },
339 .name = "dw9719",