ov13858          1050 drivers/media/i2c/ov13858.c #define to_ov13858(_sd)	container_of(_sd, struct ov13858, sd)
ov13858          1053 drivers/media/i2c/ov13858.c static int ov13858_read_reg(struct ov13858 *ov13858, u16 reg, u32 len,
ov13858          1056 drivers/media/i2c/ov13858.c 	struct i2c_client *client = v4l2_get_subdevdata(&ov13858->sd);
ov13858          1089 drivers/media/i2c/ov13858.c static int ov13858_write_reg(struct ov13858 *ov13858, u16 reg, u32 len,
ov13858          1092 drivers/media/i2c/ov13858.c 	struct i2c_client *client = v4l2_get_subdevdata(&ov13858->sd);
ov13858          1118 drivers/media/i2c/ov13858.c static int ov13858_write_regs(struct ov13858 *ov13858,
ov13858          1121 drivers/media/i2c/ov13858.c 	struct i2c_client *client = v4l2_get_subdevdata(&ov13858->sd);
ov13858          1126 drivers/media/i2c/ov13858.c 		ret = ov13858_write_reg(ov13858, regs[i].address, 1,
ov13858          1141 drivers/media/i2c/ov13858.c static int ov13858_write_reg_list(struct ov13858 *ov13858,
ov13858          1144 drivers/media/i2c/ov13858.c 	return ov13858_write_regs(ov13858, r_list->regs, r_list->num_of_regs);
ov13858          1150 drivers/media/i2c/ov13858.c 	struct ov13858 *ov13858 = to_ov13858(sd);
ov13858          1155 drivers/media/i2c/ov13858.c 	mutex_lock(&ov13858->mutex);
ov13858          1158 drivers/media/i2c/ov13858.c 	try_fmt->width = ov13858->cur_mode->width;
ov13858          1159 drivers/media/i2c/ov13858.c 	try_fmt->height = ov13858->cur_mode->height;
ov13858          1164 drivers/media/i2c/ov13858.c 	mutex_unlock(&ov13858->mutex);
ov13858          1169 drivers/media/i2c/ov13858.c static int ov13858_update_digital_gain(struct ov13858 *ov13858, u32 d_gain)
ov13858          1173 drivers/media/i2c/ov13858.c 	ret = ov13858_write_reg(ov13858, OV13858_REG_B_MWB_GAIN,
ov13858          1178 drivers/media/i2c/ov13858.c 	ret = ov13858_write_reg(ov13858, OV13858_REG_G_MWB_GAIN,
ov13858          1183 drivers/media/i2c/ov13858.c 	ret = ov13858_write_reg(ov13858, OV13858_REG_R_MWB_GAIN,
ov13858          1189 drivers/media/i2c/ov13858.c static int ov13858_enable_test_pattern(struct ov13858 *ov13858, u32 pattern)
ov13858          1194 drivers/media/i2c/ov13858.c 	ret = ov13858_read_reg(ov13858, OV13858_REG_TEST_PATTERN,
ov13858          1206 drivers/media/i2c/ov13858.c 	return ov13858_write_reg(ov13858, OV13858_REG_TEST_PATTERN,
ov13858          1212 drivers/media/i2c/ov13858.c 	struct ov13858 *ov13858 = container_of(ctrl->handler,
ov13858          1213 drivers/media/i2c/ov13858.c 					       struct ov13858, ctrl_handler);
ov13858          1214 drivers/media/i2c/ov13858.c 	struct i2c_client *client = v4l2_get_subdevdata(&ov13858->sd);
ov13858          1222 drivers/media/i2c/ov13858.c 		max = ov13858->cur_mode->height + ctrl->val - 8;
ov13858          1223 drivers/media/i2c/ov13858.c 		__v4l2_ctrl_modify_range(ov13858->exposure,
ov13858          1224 drivers/media/i2c/ov13858.c 					 ov13858->exposure->minimum,
ov13858          1225 drivers/media/i2c/ov13858.c 					 max, ov13858->exposure->step, max);
ov13858          1239 drivers/media/i2c/ov13858.c 		ret = ov13858_write_reg(ov13858, OV13858_REG_ANALOG_GAIN,
ov13858          1243 drivers/media/i2c/ov13858.c 		ret = ov13858_update_digital_gain(ov13858, ctrl->val);
ov13858          1246 drivers/media/i2c/ov13858.c 		ret = ov13858_write_reg(ov13858, OV13858_REG_EXPOSURE,
ov13858          1252 drivers/media/i2c/ov13858.c 		ret = ov13858_write_reg(ov13858, OV13858_REG_VTS,
ov13858          1254 drivers/media/i2c/ov13858.c 					ov13858->cur_mode->height
ov13858          1258 drivers/media/i2c/ov13858.c 		ret = ov13858_enable_test_pattern(ov13858, ctrl->val);
ov13858          1316 drivers/media/i2c/ov13858.c static int ov13858_do_get_pad_format(struct ov13858 *ov13858,
ov13858          1321 drivers/media/i2c/ov13858.c 	struct v4l2_subdev *sd = &ov13858->sd;
ov13858          1327 drivers/media/i2c/ov13858.c 		ov13858_update_pad_format(ov13858->cur_mode, fmt);
ov13858          1337 drivers/media/i2c/ov13858.c 	struct ov13858 *ov13858 = to_ov13858(sd);
ov13858          1340 drivers/media/i2c/ov13858.c 	mutex_lock(&ov13858->mutex);
ov13858          1341 drivers/media/i2c/ov13858.c 	ret = ov13858_do_get_pad_format(ov13858, cfg, fmt);
ov13858          1342 drivers/media/i2c/ov13858.c 	mutex_unlock(&ov13858->mutex);
ov13858          1352 drivers/media/i2c/ov13858.c 	struct ov13858 *ov13858 = to_ov13858(sd);
ov13858          1361 drivers/media/i2c/ov13858.c 	mutex_lock(&ov13858->mutex);
ov13858          1376 drivers/media/i2c/ov13858.c 		ov13858->cur_mode = mode;
ov13858          1377 drivers/media/i2c/ov13858.c 		__v4l2_ctrl_s_ctrl(ov13858->link_freq, mode->link_freq_index);
ov13858          1380 drivers/media/i2c/ov13858.c 		__v4l2_ctrl_s_ctrl_int64(ov13858->pixel_rate, pixel_rate);
ov13858          1383 drivers/media/i2c/ov13858.c 		vblank_def = ov13858->cur_mode->vts_def -
ov13858          1384 drivers/media/i2c/ov13858.c 			     ov13858->cur_mode->height;
ov13858          1385 drivers/media/i2c/ov13858.c 		vblank_min = ov13858->cur_mode->vts_min -
ov13858          1386 drivers/media/i2c/ov13858.c 			     ov13858->cur_mode->height;
ov13858          1388 drivers/media/i2c/ov13858.c 			ov13858->vblank, vblank_min,
ov13858          1389 drivers/media/i2c/ov13858.c 			OV13858_VTS_MAX - ov13858->cur_mode->height, 1,
ov13858          1391 drivers/media/i2c/ov13858.c 		__v4l2_ctrl_s_ctrl(ov13858->vblank, vblank_def);
ov13858          1394 drivers/media/i2c/ov13858.c 			 - ov13858->cur_mode->width;
ov13858          1395 drivers/media/i2c/ov13858.c 		__v4l2_ctrl_modify_range(ov13858->hblank, h_blank,
ov13858          1399 drivers/media/i2c/ov13858.c 	mutex_unlock(&ov13858->mutex);
ov13858          1412 drivers/media/i2c/ov13858.c static int ov13858_start_streaming(struct ov13858 *ov13858)
ov13858          1414 drivers/media/i2c/ov13858.c 	struct i2c_client *client = v4l2_get_subdevdata(&ov13858->sd);
ov13858          1419 drivers/media/i2c/ov13858.c 	ret = ov13858_write_reg(ov13858, OV13858_REG_SOFTWARE_RST,
ov13858          1428 drivers/media/i2c/ov13858.c 	link_freq_index = ov13858->cur_mode->link_freq_index;
ov13858          1430 drivers/media/i2c/ov13858.c 	ret = ov13858_write_reg_list(ov13858, reg_list);
ov13858          1437 drivers/media/i2c/ov13858.c 	reg_list = &ov13858->cur_mode->reg_list;
ov13858          1438 drivers/media/i2c/ov13858.c 	ret = ov13858_write_reg_list(ov13858, reg_list);
ov13858          1445 drivers/media/i2c/ov13858.c 	ret =  __v4l2_ctrl_handler_setup(ov13858->sd.ctrl_handler);
ov13858          1449 drivers/media/i2c/ov13858.c 	return ov13858_write_reg(ov13858, OV13858_REG_MODE_SELECT,
ov13858          1455 drivers/media/i2c/ov13858.c static int ov13858_stop_streaming(struct ov13858 *ov13858)
ov13858          1457 drivers/media/i2c/ov13858.c 	return ov13858_write_reg(ov13858, OV13858_REG_MODE_SELECT,
ov13858          1463 drivers/media/i2c/ov13858.c 	struct ov13858 *ov13858 = to_ov13858(sd);
ov13858          1467 drivers/media/i2c/ov13858.c 	mutex_lock(&ov13858->mutex);
ov13858          1468 drivers/media/i2c/ov13858.c 	if (ov13858->streaming == enable) {
ov13858          1469 drivers/media/i2c/ov13858.c 		mutex_unlock(&ov13858->mutex);
ov13858          1484 drivers/media/i2c/ov13858.c 		ret = ov13858_start_streaming(ov13858);
ov13858          1488 drivers/media/i2c/ov13858.c 		ov13858_stop_streaming(ov13858);
ov13858          1492 drivers/media/i2c/ov13858.c 	ov13858->streaming = enable;
ov13858          1493 drivers/media/i2c/ov13858.c 	mutex_unlock(&ov13858->mutex);
ov13858          1500 drivers/media/i2c/ov13858.c 	mutex_unlock(&ov13858->mutex);
ov13858          1509 drivers/media/i2c/ov13858.c 	struct ov13858 *ov13858 = to_ov13858(sd);
ov13858          1511 drivers/media/i2c/ov13858.c 	if (ov13858->streaming)
ov13858          1512 drivers/media/i2c/ov13858.c 		ov13858_stop_streaming(ov13858);
ov13858          1521 drivers/media/i2c/ov13858.c 	struct ov13858 *ov13858 = to_ov13858(sd);
ov13858          1524 drivers/media/i2c/ov13858.c 	if (ov13858->streaming) {
ov13858          1525 drivers/media/i2c/ov13858.c 		ret = ov13858_start_streaming(ov13858);
ov13858          1533 drivers/media/i2c/ov13858.c 	ov13858_stop_streaming(ov13858);
ov13858          1534 drivers/media/i2c/ov13858.c 	ov13858->streaming = false;
ov13858          1539 drivers/media/i2c/ov13858.c static int ov13858_identify_module(struct ov13858 *ov13858)
ov13858          1541 drivers/media/i2c/ov13858.c 	struct i2c_client *client = v4l2_get_subdevdata(&ov13858->sd);
ov13858          1545 drivers/media/i2c/ov13858.c 	ret = ov13858_read_reg(ov13858, OV13858_REG_CHIP_ID,
ov13858          1589 drivers/media/i2c/ov13858.c static int ov13858_init_controls(struct ov13858 *ov13858)
ov13858          1591 drivers/media/i2c/ov13858.c 	struct i2c_client *client = v4l2_get_subdevdata(&ov13858->sd);
ov13858          1602 drivers/media/i2c/ov13858.c 	ctrl_hdlr = &ov13858->ctrl_handler;
ov13858          1607 drivers/media/i2c/ov13858.c 	mutex_init(&ov13858->mutex);
ov13858          1608 drivers/media/i2c/ov13858.c 	ctrl_hdlr->lock = &ov13858->mutex;
ov13858          1609 drivers/media/i2c/ov13858.c 	ov13858->link_freq = v4l2_ctrl_new_int_menu(ctrl_hdlr,
ov13858          1615 drivers/media/i2c/ov13858.c 	if (ov13858->link_freq)
ov13858          1616 drivers/media/i2c/ov13858.c 		ov13858->link_freq->flags |= V4L2_CTRL_FLAG_READ_ONLY;
ov13858          1621 drivers/media/i2c/ov13858.c 	ov13858->pixel_rate = v4l2_ctrl_new_std(ctrl_hdlr, &ov13858_ctrl_ops,
ov13858          1626 drivers/media/i2c/ov13858.c 	mode = ov13858->cur_mode;
ov13858          1629 drivers/media/i2c/ov13858.c 	ov13858->vblank = v4l2_ctrl_new_std(
ov13858          1636 drivers/media/i2c/ov13858.c 	ov13858->hblank = v4l2_ctrl_new_std(
ov13858          1639 drivers/media/i2c/ov13858.c 	if (ov13858->hblank)
ov13858          1640 drivers/media/i2c/ov13858.c 		ov13858->hblank->flags |= V4L2_CTRL_FLAG_READ_ONLY;
ov13858          1643 drivers/media/i2c/ov13858.c 	ov13858->exposure = v4l2_ctrl_new_std(
ov13858          1669 drivers/media/i2c/ov13858.c 	ov13858->sd.ctrl_handler = ctrl_hdlr;
ov13858          1675 drivers/media/i2c/ov13858.c 	mutex_destroy(&ov13858->mutex);
ov13858          1680 drivers/media/i2c/ov13858.c static void ov13858_free_controls(struct ov13858 *ov13858)
ov13858          1682 drivers/media/i2c/ov13858.c 	v4l2_ctrl_handler_free(ov13858->sd.ctrl_handler);
ov13858          1683 drivers/media/i2c/ov13858.c 	mutex_destroy(&ov13858->mutex);
ov13858          1689 drivers/media/i2c/ov13858.c 	struct ov13858 *ov13858;
ov13858          1697 drivers/media/i2c/ov13858.c 	ov13858 = devm_kzalloc(&client->dev, sizeof(*ov13858), GFP_KERNEL);
ov13858          1698 drivers/media/i2c/ov13858.c 	if (!ov13858)
ov13858          1702 drivers/media/i2c/ov13858.c 	v4l2_i2c_subdev_init(&ov13858->sd, client, &ov13858_subdev_ops);
ov13858          1705 drivers/media/i2c/ov13858.c 	ret = ov13858_identify_module(ov13858);
ov13858          1712 drivers/media/i2c/ov13858.c 	ov13858->cur_mode = &supported_modes[0];
ov13858          1714 drivers/media/i2c/ov13858.c 	ret = ov13858_init_controls(ov13858);
ov13858          1719 drivers/media/i2c/ov13858.c 	ov13858->sd.internal_ops = &ov13858_internal_ops;
ov13858          1720 drivers/media/i2c/ov13858.c 	ov13858->sd.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
ov13858          1721 drivers/media/i2c/ov13858.c 	ov13858->sd.entity.ops = &ov13858_subdev_entity_ops;
ov13858          1722 drivers/media/i2c/ov13858.c 	ov13858->sd.entity.function = MEDIA_ENT_F_CAM_SENSOR;
ov13858          1725 drivers/media/i2c/ov13858.c 	ov13858->pad.flags = MEDIA_PAD_FL_SOURCE;
ov13858          1726 drivers/media/i2c/ov13858.c 	ret = media_entity_pads_init(&ov13858->sd.entity, 1, &ov13858->pad);
ov13858          1732 drivers/media/i2c/ov13858.c 	ret = v4l2_async_register_subdev_sensor_common(&ov13858->sd);
ov13858          1747 drivers/media/i2c/ov13858.c 	media_entity_cleanup(&ov13858->sd.entity);
ov13858          1750 drivers/media/i2c/ov13858.c 	ov13858_free_controls(ov13858);
ov13858          1759 drivers/media/i2c/ov13858.c 	struct ov13858 *ov13858 = to_ov13858(sd);
ov13858          1763 drivers/media/i2c/ov13858.c 	ov13858_free_controls(ov13858);