Lines Matching refs:sensor
690 struct ov5647 *sensor = to_sensor(sd); in ov5647_set_mode() local
698 ret = ov5647_write_array(sd, sensor->mode->reg_list, in ov5647_set_mode()
699 sensor->mode->num_regs); in ov5647_set_mode()
726 struct ov5647 *sensor = to_sensor(sd); in ov5647_stream_on() local
741 if (sensor->clock_ncont) in ov5647_stream_on()
775 struct ov5647 *sensor = dev_get_drvdata(dev); in ov5647_power_on() local
780 if (sensor->pwdn) { in ov5647_power_on()
781 gpiod_set_value_cansleep(sensor->pwdn, 0); in ov5647_power_on()
785 ret = clk_prepare_enable(sensor->xclk); in ov5647_power_on()
791 ret = ov5647_write_array(&sensor->sd, sensor_oe_enable_regs, in ov5647_power_on()
799 ret = ov5647_stream_off(&sensor->sd); in ov5647_power_on()
808 clk_disable_unprepare(sensor->xclk); in ov5647_power_on()
810 gpiod_set_value_cansleep(sensor->pwdn, 1); in ov5647_power_on()
817 struct ov5647 *sensor = dev_get_drvdata(dev); in ov5647_power_off() local
823 ret = ov5647_write_array(&sensor->sd, sensor_oe_disable_regs, in ov5647_power_off()
829 ret = ov5647_read(&sensor->sd, OV5647_SW_STANDBY, &rdval); in ov5647_power_off()
834 ret = ov5647_write(&sensor->sd, OV5647_SW_STANDBY, rdval); in ov5647_power_off()
838 clk_disable_unprepare(sensor->xclk); in ov5647_power_off()
839 gpiod_set_value_cansleep(sensor->pwdn, 1); in ov5647_power_off()
896 struct ov5647 *sensor = to_sensor(sd); in ov5647_s_stream() local
899 mutex_lock(&sensor->lock); in ov5647_s_stream()
920 mutex_unlock(&sensor->lock); in ov5647_s_stream()
927 mutex_unlock(&sensor->lock); in ov5647_s_stream()
973 struct ov5647 *sensor = to_sensor(sd); in ov5647_get_pad_fmt() local
975 mutex_lock(&sensor->lock); in ov5647_get_pad_fmt()
982 sensor_format = &sensor->mode->format; in ov5647_get_pad_fmt()
987 mutex_unlock(&sensor->lock); in ov5647_get_pad_fmt()
997 struct ov5647 *sensor = to_sensor(sd); in ov5647_set_pad_fmt() local
1005 mutex_lock(&sensor->lock); in ov5647_set_pad_fmt()
1012 sensor->mode = mode; in ov5647_set_pad_fmt()
1013 __v4l2_ctrl_modify_range(sensor->pixel_rate, mode->pixel_rate, in ov5647_set_pad_fmt()
1017 __v4l2_ctrl_modify_range(sensor->hblank, hblank, hblank, 1, in ov5647_set_pad_fmt()
1021 __v4l2_ctrl_modify_range(sensor->vblank, OV5647_VBLANK_MIN, in ov5647_set_pad_fmt()
1024 __v4l2_ctrl_s_ctrl(sensor->vblank, vblank); in ov5647_set_pad_fmt()
1028 __v4l2_ctrl_modify_range(sensor->exposure, in ov5647_set_pad_fmt()
1029 sensor->exposure->minimum, in ov5647_set_pad_fmt()
1030 exposure_max, sensor->exposure->step, in ov5647_set_pad_fmt()
1034 mutex_unlock(&sensor->lock); in ov5647_set_pad_fmt()
1045 struct ov5647 *sensor = to_sensor(sd); in ov5647_get_selection() local
1047 mutex_lock(&sensor->lock); in ov5647_get_selection()
1048 sel->r = *__ov5647_get_pad_crop(sensor, sd_state, sel->pad, in ov5647_get_selection()
1050 mutex_unlock(&sensor->lock); in ov5647_get_selection()
1211 struct ov5647 *sensor = container_of(ctrl->handler, in ov5647_s_ctrl() local
1213 struct v4l2_subdev *sd = &sensor->sd; in ov5647_s_ctrl()
1224 exposure_max = sensor->mode->format.height + ctrl->val - 4; in ov5647_s_ctrl()
1226 __v4l2_ctrl_modify_range(sensor->exposure, in ov5647_s_ctrl()
1227 sensor->exposure->minimum, in ov5647_s_ctrl()
1228 exposure_max, sensor->exposure->step, in ov5647_s_ctrl()
1258 sensor->mode->format.height + ctrl->val); in ov5647_s_ctrl()
1287 static int ov5647_init_controls(struct ov5647 *sensor) in ov5647_init_controls() argument
1289 struct i2c_client *client = v4l2_get_subdevdata(&sensor->sd); in ov5647_init_controls()
1292 v4l2_ctrl_handler_init(&sensor->ctrls, 9); in ov5647_init_controls()
1294 v4l2_ctrl_new_std(&sensor->ctrls, &ov5647_ctrl_ops, in ov5647_init_controls()
1297 v4l2_ctrl_new_std(&sensor->ctrls, &ov5647_ctrl_ops, in ov5647_init_controls()
1300 v4l2_ctrl_new_std_menu(&sensor->ctrls, &ov5647_ctrl_ops, in ov5647_init_controls()
1304 exposure_max = sensor->mode->vts - 4; in ov5647_init_controls()
1306 sensor->exposure = v4l2_ctrl_new_std(&sensor->ctrls, &ov5647_ctrl_ops, in ov5647_init_controls()
1313 v4l2_ctrl_new_std(&sensor->ctrls, &ov5647_ctrl_ops, in ov5647_init_controls()
1317 sensor->pixel_rate = v4l2_ctrl_new_std(&sensor->ctrls, &ov5647_ctrl_ops, in ov5647_init_controls()
1319 sensor->mode->pixel_rate, in ov5647_init_controls()
1320 sensor->mode->pixel_rate, 1, in ov5647_init_controls()
1321 sensor->mode->pixel_rate); in ov5647_init_controls()
1324 hblank = sensor->mode->hts - sensor->mode->format.width; in ov5647_init_controls()
1325 sensor->hblank = v4l2_ctrl_new_std(&sensor->ctrls, &ov5647_ctrl_ops, in ov5647_init_controls()
1329 sensor->vblank = v4l2_ctrl_new_std(&sensor->ctrls, &ov5647_ctrl_ops, in ov5647_init_controls()
1332 sensor->mode->format.height, 1, in ov5647_init_controls()
1333 sensor->mode->vts - in ov5647_init_controls()
1334 sensor->mode->format.height); in ov5647_init_controls()
1336 v4l2_ctrl_new_std_menu_items(&sensor->ctrls, &ov5647_ctrl_ops, in ov5647_init_controls()
1341 if (sensor->ctrls.error) in ov5647_init_controls()
1344 sensor->pixel_rate->flags |= V4L2_CTRL_FLAG_READ_ONLY; in ov5647_init_controls()
1345 sensor->hblank->flags |= V4L2_CTRL_FLAG_READ_ONLY; in ov5647_init_controls()
1346 sensor->sd.ctrl_handler = &sensor->ctrls; in ov5647_init_controls()
1352 __func__, sensor->ctrls.error); in ov5647_init_controls()
1353 v4l2_ctrl_handler_free(&sensor->ctrls); in ov5647_init_controls()
1355 return sensor->ctrls.error; in ov5647_init_controls()
1358 static int ov5647_parse_dt(struct ov5647 *sensor, struct device_node *np) in ov5647_parse_dt() argument
1374 sensor->clock_ncont = bus_cfg.bus.mipi_csi2.flags & in ov5647_parse_dt()
1384 struct ov5647 *sensor; in ov5647_probe() local
1389 sensor = devm_kzalloc(dev, sizeof(*sensor), GFP_KERNEL); in ov5647_probe()
1390 if (!sensor) in ov5647_probe()
1394 ret = ov5647_parse_dt(sensor, np); in ov5647_probe()
1401 sensor->xclk = devm_clk_get(dev, NULL); in ov5647_probe()
1402 if (IS_ERR(sensor->xclk)) { in ov5647_probe()
1404 return PTR_ERR(sensor->xclk); in ov5647_probe()
1407 xclk_freq = clk_get_rate(sensor->xclk); in ov5647_probe()
1414 sensor->pwdn = devm_gpiod_get_optional(dev, "pwdn", GPIOD_OUT_HIGH); in ov5647_probe()
1415 if (IS_ERR(sensor->pwdn)) { in ov5647_probe()
1420 mutex_init(&sensor->lock); in ov5647_probe()
1422 sensor->mode = OV5647_DEFAULT_MODE; in ov5647_probe()
1424 ret = ov5647_init_controls(sensor); in ov5647_probe()
1428 sd = &sensor->sd; in ov5647_probe()
1433 sensor->pad.flags = MEDIA_PAD_FL_SOURCE; in ov5647_probe()
1435 ret = media_entity_pads_init(&sd->entity, 1, &sensor->pad); in ov5647_probe()
1465 v4l2_ctrl_handler_free(&sensor->ctrls); in ov5647_probe()
1467 mutex_destroy(&sensor->lock); in ov5647_probe()
1475 struct ov5647 *sensor = to_sensor(sd); in ov5647_remove() local
1477 v4l2_async_unregister_subdev(&sensor->sd); in ov5647_remove()
1478 media_entity_cleanup(&sensor->sd.entity); in ov5647_remove()
1479 v4l2_ctrl_handler_free(&sensor->ctrls); in ov5647_remove()
1482 mutex_destroy(&sensor->lock); in ov5647_remove()