Lines Matching refs:sensor

670 	struct ov5647 *sensor = to_sensor(sd);  in ov5647_set_mode()  local
678 ret = ov5647_write_array(sd, sensor->mode->reg_list, in ov5647_set_mode()
679 sensor->mode->num_regs); in ov5647_set_mode()
706 struct ov5647 *sensor = to_sensor(sd); in ov5647_stream_on() local
721 if (sensor->clock_ncont) in ov5647_stream_on()
755 struct ov5647 *sensor = dev_get_drvdata(dev); in ov5647_power_on() local
760 if (sensor->pwdn) { in ov5647_power_on()
761 gpiod_set_value_cansleep(sensor->pwdn, 0); in ov5647_power_on()
765 ret = clk_prepare_enable(sensor->xclk); in ov5647_power_on()
771 ret = ov5647_write_array(&sensor->sd, sensor_oe_enable_regs, in ov5647_power_on()
779 ret = ov5647_stream_off(&sensor->sd); in ov5647_power_on()
788 clk_disable_unprepare(sensor->xclk); in ov5647_power_on()
790 gpiod_set_value_cansleep(sensor->pwdn, 1); in ov5647_power_on()
797 struct ov5647 *sensor = dev_get_drvdata(dev); in ov5647_power_off() local
803 ret = ov5647_write_array(&sensor->sd, sensor_oe_disable_regs, in ov5647_power_off()
809 ret = ov5647_read(&sensor->sd, OV5647_SW_STANDBY, &rdval); in ov5647_power_off()
814 ret = ov5647_write(&sensor->sd, OV5647_SW_STANDBY, rdval); in ov5647_power_off()
818 clk_disable_unprepare(sensor->xclk); in ov5647_power_off()
819 gpiod_set_value_cansleep(sensor->pwdn, 1); in ov5647_power_off()
876 struct ov5647 *sensor = to_sensor(sd); in ov5647_s_stream() local
879 mutex_lock(&sensor->lock); in ov5647_s_stream()
880 if (sensor->streaming == enable) { in ov5647_s_stream()
881 mutex_unlock(&sensor->lock); in ov5647_s_stream()
904 sensor->streaming = enable; in ov5647_s_stream()
905 mutex_unlock(&sensor->lock); in ov5647_s_stream()
912 mutex_unlock(&sensor->lock); in ov5647_s_stream()
958 struct ov5647 *sensor = to_sensor(sd); in ov5647_get_pad_fmt() local
960 mutex_lock(&sensor->lock); in ov5647_get_pad_fmt()
967 sensor_format = &sensor->mode->format; in ov5647_get_pad_fmt()
972 mutex_unlock(&sensor->lock); in ov5647_get_pad_fmt()
982 struct ov5647 *sensor = to_sensor(sd); in ov5647_set_pad_fmt() local
990 mutex_lock(&sensor->lock); in ov5647_set_pad_fmt()
997 sensor->mode = mode; in ov5647_set_pad_fmt()
998 __v4l2_ctrl_modify_range(sensor->pixel_rate, mode->pixel_rate, in ov5647_set_pad_fmt()
1002 __v4l2_ctrl_modify_range(sensor->hblank, hblank, hblank, 1, in ov5647_set_pad_fmt()
1006 __v4l2_ctrl_modify_range(sensor->vblank, OV5647_VBLANK_MIN, in ov5647_set_pad_fmt()
1009 __v4l2_ctrl_s_ctrl(sensor->vblank, vblank); in ov5647_set_pad_fmt()
1013 __v4l2_ctrl_modify_range(sensor->exposure, in ov5647_set_pad_fmt()
1014 sensor->exposure->minimum, in ov5647_set_pad_fmt()
1015 exposure_max, sensor->exposure->step, in ov5647_set_pad_fmt()
1019 mutex_unlock(&sensor->lock); in ov5647_set_pad_fmt()
1030 struct ov5647 *sensor = to_sensor(sd); in ov5647_get_selection() local
1032 mutex_lock(&sensor->lock); in ov5647_get_selection()
1033 sel->r = *__ov5647_get_pad_crop(sensor, sd_state, sel->pad, in ov5647_get_selection()
1035 mutex_unlock(&sensor->lock); in ov5647_get_selection()
1196 struct ov5647 *sensor = container_of(ctrl->handler, in ov5647_s_ctrl() local
1198 struct v4l2_subdev *sd = &sensor->sd; in ov5647_s_ctrl()
1209 exposure_max = sensor->mode->format.height + ctrl->val - 4; in ov5647_s_ctrl()
1211 __v4l2_ctrl_modify_range(sensor->exposure, in ov5647_s_ctrl()
1212 sensor->exposure->minimum, in ov5647_s_ctrl()
1213 exposure_max, sensor->exposure->step, in ov5647_s_ctrl()
1243 sensor->mode->format.height + ctrl->val); in ov5647_s_ctrl()
1268 static int ov5647_init_controls(struct ov5647 *sensor) in ov5647_init_controls() argument
1270 struct i2c_client *client = v4l2_get_subdevdata(&sensor->sd); in ov5647_init_controls()
1273 v4l2_ctrl_handler_init(&sensor->ctrls, 8); in ov5647_init_controls()
1275 v4l2_ctrl_new_std(&sensor->ctrls, &ov5647_ctrl_ops, in ov5647_init_controls()
1278 v4l2_ctrl_new_std(&sensor->ctrls, &ov5647_ctrl_ops, in ov5647_init_controls()
1281 v4l2_ctrl_new_std_menu(&sensor->ctrls, &ov5647_ctrl_ops, in ov5647_init_controls()
1285 exposure_max = sensor->mode->vts - 4; in ov5647_init_controls()
1287 sensor->exposure = v4l2_ctrl_new_std(&sensor->ctrls, &ov5647_ctrl_ops, in ov5647_init_controls()
1294 v4l2_ctrl_new_std(&sensor->ctrls, &ov5647_ctrl_ops, in ov5647_init_controls()
1298 sensor->pixel_rate = v4l2_ctrl_new_std(&sensor->ctrls, &ov5647_ctrl_ops, in ov5647_init_controls()
1300 sensor->mode->pixel_rate, in ov5647_init_controls()
1301 sensor->mode->pixel_rate, 1, in ov5647_init_controls()
1302 sensor->mode->pixel_rate); in ov5647_init_controls()
1305 hblank = sensor->mode->hts - sensor->mode->format.width; in ov5647_init_controls()
1306 sensor->hblank = v4l2_ctrl_new_std(&sensor->ctrls, &ov5647_ctrl_ops, in ov5647_init_controls()
1310 sensor->vblank = v4l2_ctrl_new_std(&sensor->ctrls, &ov5647_ctrl_ops, in ov5647_init_controls()
1313 sensor->mode->format.height, 1, in ov5647_init_controls()
1314 sensor->mode->vts - in ov5647_init_controls()
1315 sensor->mode->format.height); in ov5647_init_controls()
1317 if (sensor->ctrls.error) in ov5647_init_controls()
1320 sensor->pixel_rate->flags |= V4L2_CTRL_FLAG_READ_ONLY; in ov5647_init_controls()
1321 sensor->hblank->flags |= V4L2_CTRL_FLAG_READ_ONLY; in ov5647_init_controls()
1322 sensor->sd.ctrl_handler = &sensor->ctrls; in ov5647_init_controls()
1328 __func__, sensor->ctrls.error); in ov5647_init_controls()
1329 v4l2_ctrl_handler_free(&sensor->ctrls); in ov5647_init_controls()
1331 return sensor->ctrls.error; in ov5647_init_controls()
1334 static int ov5647_parse_dt(struct ov5647 *sensor, struct device_node *np) in ov5647_parse_dt() argument
1350 sensor->clock_ncont = bus_cfg.bus.mipi_csi2.flags & in ov5647_parse_dt()
1363 struct ov5647 *sensor; in ov5647_probe() local
1368 sensor = devm_kzalloc(dev, sizeof(*sensor), GFP_KERNEL); in ov5647_probe()
1369 if (!sensor) in ov5647_probe()
1373 ret = ov5647_parse_dt(sensor, np); in ov5647_probe()
1380 sensor->xclk = devm_clk_get(dev, NULL); in ov5647_probe()
1381 if (IS_ERR(sensor->xclk)) { in ov5647_probe()
1383 return PTR_ERR(sensor->xclk); in ov5647_probe()
1386 xclk_freq = clk_get_rate(sensor->xclk); in ov5647_probe()
1393 sensor->pwdn = devm_gpiod_get_optional(dev, "pwdn", GPIOD_OUT_HIGH); in ov5647_probe()
1394 if (IS_ERR(sensor->pwdn)) { in ov5647_probe()
1399 mutex_init(&sensor->lock); in ov5647_probe()
1401 sensor->mode = OV5647_DEFAULT_MODE; in ov5647_probe()
1403 ret = ov5647_init_controls(sensor); in ov5647_probe()
1407 sd = &sensor->sd; in ov5647_probe()
1412 sensor->pad.flags = MEDIA_PAD_FL_SOURCE; in ov5647_probe()
1414 ret = media_entity_pads_init(&sd->entity, 1, &sensor->pad); in ov5647_probe()
1444 v4l2_ctrl_handler_free(&sensor->ctrls); in ov5647_probe()
1446 mutex_destroy(&sensor->lock); in ov5647_probe()
1454 struct ov5647 *sensor = to_sensor(sd); in ov5647_remove() local
1456 v4l2_async_unregister_subdev(&sensor->sd); in ov5647_remove()
1457 media_entity_cleanup(&sensor->sd.entity); in ov5647_remove()
1458 v4l2_ctrl_handler_free(&sensor->ctrls); in ov5647_remove()
1461 mutex_destroy(&sensor->lock); in ov5647_remove()