ov2659            836 drivers/media/i2c/ov2659.c static inline struct ov2659 *to_ov2659(struct v4l2_subdev *sd)
ov2659            838 drivers/media/i2c/ov2659.c 	return container_of(sd, struct ov2659, sd);
ov2659            910 drivers/media/i2c/ov2659.c static void ov2659_pll_calc_params(struct ov2659 *ov2659)
ov2659            912 drivers/media/i2c/ov2659.c 	const struct ov2659_platform_data *pdata = ov2659->pdata;
ov2659            914 drivers/media/i2c/ov2659.c 	struct i2c_client *client = ov2659->client;
ov2659            926 drivers/media/i2c/ov2659.c 				actual  = ov2659->xvclk_frequency;
ov2659            943 drivers/media/i2c/ov2659.c 	ov2659->pll.ctrl1 = ctrl1_reg;
ov2659            944 drivers/media/i2c/ov2659.c 	ov2659->pll.ctrl2 = ctrl2_reg;
ov2659            945 drivers/media/i2c/ov2659.c 	ov2659->pll.ctrl3 = ctrl3_reg;
ov2659            952 drivers/media/i2c/ov2659.c static int ov2659_set_pixel_clock(struct ov2659 *ov2659)
ov2659            954 drivers/media/i2c/ov2659.c 	struct i2c_client *client = ov2659->client;
ov2659            956 drivers/media/i2c/ov2659.c 		{REG_SC_PLL_CTRL1, ov2659->pll.ctrl1},
ov2659            957 drivers/media/i2c/ov2659.c 		{REG_SC_PLL_CTRL2, ov2659->pll.ctrl2},
ov2659            958 drivers/media/i2c/ov2659.c 		{REG_SC_PLL_CTRL3, ov2659->pll.ctrl3},
ov2659            976 drivers/media/i2c/ov2659.c static void ov2659_set_streaming(struct ov2659 *ov2659, int on)
ov2659            978 drivers/media/i2c/ov2659.c 	struct i2c_client *client = ov2659->client;
ov2659           1048 drivers/media/i2c/ov2659.c 	struct ov2659 *ov2659 = to_ov2659(sd);
ov2659           1057 drivers/media/i2c/ov2659.c 		mutex_lock(&ov2659->lock);
ov2659           1059 drivers/media/i2c/ov2659.c 		mutex_unlock(&ov2659->lock);
ov2659           1066 drivers/media/i2c/ov2659.c 	mutex_lock(&ov2659->lock);
ov2659           1067 drivers/media/i2c/ov2659.c 	fmt->format = ov2659->format;
ov2659           1068 drivers/media/i2c/ov2659.c 	mutex_unlock(&ov2659->lock);
ov2659           1071 drivers/media/i2c/ov2659.c 		ov2659->format.code, ov2659->format.width,
ov2659           1072 drivers/media/i2c/ov2659.c 		ov2659->format.height);
ov2659           1113 drivers/media/i2c/ov2659.c 	struct ov2659 *ov2659 = to_ov2659(sd);
ov2659           1132 drivers/media/i2c/ov2659.c 	mutex_lock(&ov2659->lock);
ov2659           1142 drivers/media/i2c/ov2659.c 		if (ov2659->streaming) {
ov2659           1143 drivers/media/i2c/ov2659.c 			mutex_unlock(&ov2659->lock);
ov2659           1147 drivers/media/i2c/ov2659.c 		ov2659->frame_size = size;
ov2659           1148 drivers/media/i2c/ov2659.c 		ov2659->format = fmt->format;
ov2659           1149 drivers/media/i2c/ov2659.c 		ov2659->format_ctrl_regs =
ov2659           1152 drivers/media/i2c/ov2659.c 		if (ov2659->format.code != MEDIA_BUS_FMT_SBGGR8_1X8)
ov2659           1153 drivers/media/i2c/ov2659.c 			val = ov2659->pdata->link_frequency / 2;
ov2659           1155 drivers/media/i2c/ov2659.c 			val = ov2659->pdata->link_frequency;
ov2659           1157 drivers/media/i2c/ov2659.c 		ret = v4l2_ctrl_s_ctrl_int64(ov2659->link_frequency, val);
ov2659           1164 drivers/media/i2c/ov2659.c 	mutex_unlock(&ov2659->lock);
ov2659           1168 drivers/media/i2c/ov2659.c static int ov2659_set_frame_size(struct ov2659 *ov2659)
ov2659           1170 drivers/media/i2c/ov2659.c 	struct i2c_client *client = ov2659->client;
ov2659           1174 drivers/media/i2c/ov2659.c 	return ov2659_write_array(ov2659->client, ov2659->frame_size->regs);
ov2659           1177 drivers/media/i2c/ov2659.c static int ov2659_set_format(struct ov2659 *ov2659)
ov2659           1179 drivers/media/i2c/ov2659.c 	struct i2c_client *client = ov2659->client;
ov2659           1183 drivers/media/i2c/ov2659.c 	return ov2659_write_array(ov2659->client, ov2659->format_ctrl_regs);
ov2659           1189 drivers/media/i2c/ov2659.c 	struct ov2659 *ov2659 = to_ov2659(sd);
ov2659           1194 drivers/media/i2c/ov2659.c 	mutex_lock(&ov2659->lock);
ov2659           1198 drivers/media/i2c/ov2659.c 	if (ov2659->streaming == on)
ov2659           1203 drivers/media/i2c/ov2659.c 		ov2659_set_streaming(ov2659, 0);
ov2659           1204 drivers/media/i2c/ov2659.c 		ov2659->streaming = on;
ov2659           1208 drivers/media/i2c/ov2659.c 	ret = ov2659_set_pixel_clock(ov2659);
ov2659           1210 drivers/media/i2c/ov2659.c 		ret = ov2659_set_frame_size(ov2659);
ov2659           1212 drivers/media/i2c/ov2659.c 		ret = ov2659_set_format(ov2659);
ov2659           1214 drivers/media/i2c/ov2659.c 		ov2659_set_streaming(ov2659, 1);
ov2659           1215 drivers/media/i2c/ov2659.c 		ov2659->streaming = on;
ov2659           1219 drivers/media/i2c/ov2659.c 	mutex_unlock(&ov2659->lock);
ov2659           1223 drivers/media/i2c/ov2659.c static int ov2659_set_test_pattern(struct ov2659 *ov2659, int value)
ov2659           1225 drivers/media/i2c/ov2659.c 	struct i2c_client *client = v4l2_get_subdevdata(&ov2659->sd);
ov2659           1248 drivers/media/i2c/ov2659.c 	struct ov2659 *ov2659 =
ov2659           1249 drivers/media/i2c/ov2659.c 			container_of(ctrl->handler, struct ov2659, ctrls);
ov2659           1253 drivers/media/i2c/ov2659.c 		return ov2659_set_test_pattern(ov2659, ctrl->val);
ov2659           1399 drivers/media/i2c/ov2659.c 	struct ov2659 *ov2659;
ov2659           1408 drivers/media/i2c/ov2659.c 	ov2659 = devm_kzalloc(&client->dev, sizeof(*ov2659), GFP_KERNEL);
ov2659           1409 drivers/media/i2c/ov2659.c 	if (!ov2659)
ov2659           1412 drivers/media/i2c/ov2659.c 	ov2659->pdata = pdata;
ov2659           1413 drivers/media/i2c/ov2659.c 	ov2659->client = client;
ov2659           1419 drivers/media/i2c/ov2659.c 	ov2659->xvclk_frequency = clk_get_rate(clk);
ov2659           1420 drivers/media/i2c/ov2659.c 	if (ov2659->xvclk_frequency < 6000000 ||
ov2659           1421 drivers/media/i2c/ov2659.c 	    ov2659->xvclk_frequency > 27000000)
ov2659           1424 drivers/media/i2c/ov2659.c 	v4l2_ctrl_handler_init(&ov2659->ctrls, 2);
ov2659           1425 drivers/media/i2c/ov2659.c 	ov2659->link_frequency =
ov2659           1426 drivers/media/i2c/ov2659.c 			v4l2_ctrl_new_std(&ov2659->ctrls, &ov2659_ctrl_ops,
ov2659           1431 drivers/media/i2c/ov2659.c 	v4l2_ctrl_new_std_menu_items(&ov2659->ctrls, &ov2659_ctrl_ops,
ov2659           1435 drivers/media/i2c/ov2659.c 	ov2659->sd.ctrl_handler = &ov2659->ctrls;
ov2659           1437 drivers/media/i2c/ov2659.c 	if (ov2659->ctrls.error) {
ov2659           1439 drivers/media/i2c/ov2659.c 			__func__, ov2659->ctrls.error);
ov2659           1440 drivers/media/i2c/ov2659.c 		return  ov2659->ctrls.error;
ov2659           1443 drivers/media/i2c/ov2659.c 	sd = &ov2659->sd;
ov2659           1454 drivers/media/i2c/ov2659.c 	ov2659->pad.flags = MEDIA_PAD_FL_SOURCE;
ov2659           1456 drivers/media/i2c/ov2659.c 	ret = media_entity_pads_init(&sd->entity, 1, &ov2659->pad);
ov2659           1458 drivers/media/i2c/ov2659.c 		v4l2_ctrl_handler_free(&ov2659->ctrls);
ov2659           1463 drivers/media/i2c/ov2659.c 	mutex_init(&ov2659->lock);
ov2659           1465 drivers/media/i2c/ov2659.c 	ov2659_get_default_format(&ov2659->format);
ov2659           1466 drivers/media/i2c/ov2659.c 	ov2659->frame_size = &ov2659_framesizes[2];
ov2659           1467 drivers/media/i2c/ov2659.c 	ov2659->format_ctrl_regs = ov2659_formats[0].format_ctrl_regs;
ov2659           1474 drivers/media/i2c/ov2659.c 	ov2659_pll_calc_params(ov2659);
ov2659           1476 drivers/media/i2c/ov2659.c 	ret = v4l2_async_register_subdev(&ov2659->sd);
ov2659           1485 drivers/media/i2c/ov2659.c 	v4l2_ctrl_handler_free(&ov2659->ctrls);
ov2659           1487 drivers/media/i2c/ov2659.c 	mutex_destroy(&ov2659->lock);
ov2659           1494 drivers/media/i2c/ov2659.c 	struct ov2659 *ov2659 = to_ov2659(sd);
ov2659           1496 drivers/media/i2c/ov2659.c 	v4l2_ctrl_handler_free(&ov2659->ctrls);
ov2659           1499 drivers/media/i2c/ov2659.c 	mutex_destroy(&ov2659->lock);