Lines Matching refs:ak7375_dev
152 static void ak7375_subdev_cleanup(struct ak7375_device *ak7375_dev) in ak7375_subdev_cleanup() argument
154 v4l2_async_unregister_subdev(&ak7375_dev->sd); in ak7375_subdev_cleanup()
155 v4l2_ctrl_handler_free(&ak7375_dev->ctrls_vcm); in ak7375_subdev_cleanup()
156 media_entity_cleanup(&ak7375_dev->sd.entity); in ak7375_subdev_cleanup()
180 struct ak7375_device *ak7375_dev; in ak7375_probe() local
184 ak7375_dev = devm_kzalloc(&client->dev, sizeof(*ak7375_dev), in ak7375_probe()
186 if (!ak7375_dev) in ak7375_probe()
189 ak7375_dev->cdef = device_get_match_data(&client->dev); in ak7375_probe()
192 ak7375_dev->supplies[i].supply = ak7375_supply_names[i]; in ak7375_probe()
196 ak7375_dev->supplies); in ak7375_probe()
202 v4l2_i2c_subdev_init(&ak7375_dev->sd, client, &ak7375_ops); in ak7375_probe()
203 ak7375_dev->sd.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE; in ak7375_probe()
204 ak7375_dev->sd.internal_ops = &ak7375_int_ops; in ak7375_probe()
205 ak7375_dev->sd.entity.function = MEDIA_ENT_F_LENS; in ak7375_probe()
207 ret = ak7375_init_controls(ak7375_dev); in ak7375_probe()
211 ret = media_entity_pads_init(&ak7375_dev->sd.entity, 0, NULL); in ak7375_probe()
215 ret = v4l2_async_register_subdev(&ak7375_dev->sd); in ak7375_probe()
226 v4l2_ctrl_handler_free(&ak7375_dev->ctrls_vcm); in ak7375_probe()
227 media_entity_cleanup(&ak7375_dev->sd.entity); in ak7375_probe()
235 struct ak7375_device *ak7375_dev = sd_to_ak7375_vcm(sd); in ak7375_remove() local
237 ak7375_subdev_cleanup(ak7375_dev); in ak7375_remove()
250 struct ak7375_device *ak7375_dev = sd_to_ak7375_vcm(sd); in ak7375_vcm_suspend() local
251 const struct ak73xx_chipdef *cdef = ak7375_dev->cdef; in ak7375_vcm_suspend()
254 if (!ak7375_dev->active) in ak7375_vcm_suspend()
257 for (val = ak7375_dev->focus->val & ~(cdef->ctrl_steps - 1); in ak7375_vcm_suspend()
259 ret = ak7375_i2c_write(ak7375_dev, cdef->reg_position, in ak7375_vcm_suspend()
268 ret = ak7375_i2c_write(ak7375_dev, cdef->reg_cont, in ak7375_vcm_suspend()
275 ak7375_dev->supplies); in ak7375_vcm_suspend()
279 ak7375_dev->active = false; in ak7375_vcm_suspend()
293 struct ak7375_device *ak7375_dev = sd_to_ak7375_vcm(sd); in ak7375_vcm_resume() local
294 const struct ak73xx_chipdef *cdef = ak7375_dev->cdef; in ak7375_vcm_resume()
297 if (ak7375_dev->active) in ak7375_vcm_resume()
301 ak7375_dev->supplies); in ak7375_vcm_resume()
308 ret = ak7375_i2c_write(ak7375_dev, cdef->reg_cont, in ak7375_vcm_resume()
315 for (val = ak7375_dev->focus->val % cdef->ctrl_steps; in ak7375_vcm_resume()
316 val <= ak7375_dev->focus->val; in ak7375_vcm_resume()
318 ret = ak7375_i2c_write(ak7375_dev, cdef->reg_position, in ak7375_vcm_resume()
326 ak7375_dev->active = true; in ak7375_vcm_resume()