Lines Matching refs:ak7375_dev
115 static void ak7375_subdev_cleanup(struct ak7375_device *ak7375_dev)
117 v4l2_async_unregister_subdev(&ak7375_dev->sd);
118 v4l2_ctrl_handler_free(&ak7375_dev->ctrls_vcm);
119 media_entity_cleanup(&ak7375_dev->sd.entity);
142 struct ak7375_device *ak7375_dev;
145 ak7375_dev = devm_kzalloc(&client->dev, sizeof(*ak7375_dev),
147 if (!ak7375_dev)
150 v4l2_i2c_subdev_init(&ak7375_dev->sd, client, &ak7375_ops);
151 ak7375_dev->sd.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
152 ak7375_dev->sd.internal_ops = &ak7375_int_ops;
153 ak7375_dev->sd.entity.function = MEDIA_ENT_F_LENS;
155 ret = ak7375_init_controls(ak7375_dev);
159 ret = media_entity_pads_init(&ak7375_dev->sd.entity, 0, NULL);
163 ret = v4l2_async_register_subdev(&ak7375_dev->sd);
174 v4l2_ctrl_handler_free(&ak7375_dev->ctrls_vcm);
175 media_entity_cleanup(&ak7375_dev->sd.entity);
183 struct ak7375_device *ak7375_dev = sd_to_ak7375_vcm(sd);
185 ak7375_subdev_cleanup(ak7375_dev);
202 struct ak7375_device *ak7375_dev = sd_to_ak7375_vcm(sd);
205 if (!ak7375_dev->active)
208 for (val = ak7375_dev->focus->val & ~(AK7375_CTRL_STEPS - 1);
210 ret = ak7375_i2c_write(ak7375_dev, AK7375_REG_POSITION,
218 ret = ak7375_i2c_write(ak7375_dev, AK7375_REG_CONT,
223 ak7375_dev->active = false;
238 struct ak7375_device *ak7375_dev = sd_to_ak7375_vcm(sd);
241 if (ak7375_dev->active)
244 ret = ak7375_i2c_write(ak7375_dev, AK7375_REG_CONT,
251 for (val = ak7375_dev->focus->val % AK7375_CTRL_STEPS;
252 val <= ak7375_dev->focus->val;
254 ret = ak7375_i2c_write(ak7375_dev, AK7375_REG_POSITION,
262 ak7375_dev->active = true;