Lines Matching refs:ov2659

221 struct ov2659 {  struct
832 static inline struct ov2659 *to_ov2659(struct v4l2_subdev *sd) in to_ov2659()
834 return container_of(sd, struct ov2659, sd); in to_ov2659()
906 static void ov2659_pll_calc_params(struct ov2659 *ov2659) in ov2659_pll_calc_params() argument
908 const struct ov2659_platform_data *pdata = ov2659->pdata; in ov2659_pll_calc_params()
910 struct i2c_client *client = ov2659->client; in ov2659_pll_calc_params()
923 actual = ov2659->xvclk_frequency; in ov2659_pll_calc_params()
943 ov2659->pll.ctrl1 = ctrl1_reg; in ov2659_pll_calc_params()
944 ov2659->pll.ctrl2 = ctrl2_reg; in ov2659_pll_calc_params()
945 ov2659->pll.ctrl3 = ctrl3_reg; in ov2659_pll_calc_params()
952 static int ov2659_set_pixel_clock(struct ov2659 *ov2659) in ov2659_set_pixel_clock() argument
954 struct i2c_client *client = ov2659->client; in ov2659_set_pixel_clock()
956 {REG_SC_PLL_CTRL1, ov2659->pll.ctrl1}, in ov2659_set_pixel_clock()
957 {REG_SC_PLL_CTRL2, ov2659->pll.ctrl2}, in ov2659_set_pixel_clock()
958 {REG_SC_PLL_CTRL3, ov2659->pll.ctrl3}, in ov2659_set_pixel_clock()
976 static void ov2659_set_streaming(struct ov2659 *ov2659, int on) in ov2659_set_streaming() argument
978 struct i2c_client *client = ov2659->client; in ov2659_set_streaming()
1048 struct ov2659 *ov2659 = to_ov2659(sd); in ov2659_get_fmt() local
1055 mutex_lock(&ov2659->lock); in ov2659_get_fmt()
1057 mutex_unlock(&ov2659->lock); in ov2659_get_fmt()
1061 mutex_lock(&ov2659->lock); in ov2659_get_fmt()
1062 fmt->format = ov2659->format; in ov2659_get_fmt()
1063 mutex_unlock(&ov2659->lock); in ov2659_get_fmt()
1066 ov2659->format.code, ov2659->format.width, in ov2659_get_fmt()
1067 ov2659->format.height); in ov2659_get_fmt()
1108 struct ov2659 *ov2659 = to_ov2659(sd); in ov2659_set_fmt() local
1126 mutex_lock(&ov2659->lock); in ov2659_set_fmt()
1134 if (ov2659->streaming) { in ov2659_set_fmt()
1135 mutex_unlock(&ov2659->lock); in ov2659_set_fmt()
1139 ov2659->frame_size = size; in ov2659_set_fmt()
1140 ov2659->format = fmt->format; in ov2659_set_fmt()
1141 ov2659->format_ctrl_regs = in ov2659_set_fmt()
1144 if (ov2659->format.code != MEDIA_BUS_FMT_SBGGR8_1X8) in ov2659_set_fmt()
1145 val = ov2659->pdata->link_frequency / 2; in ov2659_set_fmt()
1147 val = ov2659->pdata->link_frequency; in ov2659_set_fmt()
1149 ret = v4l2_ctrl_s_ctrl_int64(ov2659->link_frequency, val); in ov2659_set_fmt()
1156 mutex_unlock(&ov2659->lock); in ov2659_set_fmt()
1160 static int ov2659_set_frame_size(struct ov2659 *ov2659) in ov2659_set_frame_size() argument
1162 struct i2c_client *client = ov2659->client; in ov2659_set_frame_size()
1166 return ov2659_write_array(ov2659->client, ov2659->frame_size->regs); in ov2659_set_frame_size()
1169 static int ov2659_set_format(struct ov2659 *ov2659) in ov2659_set_format() argument
1171 struct i2c_client *client = ov2659->client; in ov2659_set_format()
1175 return ov2659_write_array(ov2659->client, ov2659->format_ctrl_regs); in ov2659_set_format()
1181 struct ov2659 *ov2659 = to_ov2659(sd); in ov2659_s_stream() local
1186 mutex_lock(&ov2659->lock); in ov2659_s_stream()
1190 if (ov2659->streaming == on) in ov2659_s_stream()
1195 ov2659_set_streaming(ov2659, 0); in ov2659_s_stream()
1196 ov2659->streaming = on; in ov2659_s_stream()
1200 ov2659_set_pixel_clock(ov2659); in ov2659_s_stream()
1201 ov2659_set_frame_size(ov2659); in ov2659_s_stream()
1202 ov2659_set_format(ov2659); in ov2659_s_stream()
1203 ov2659_set_streaming(ov2659, 1); in ov2659_s_stream()
1204 ov2659->streaming = on; in ov2659_s_stream()
1207 mutex_unlock(&ov2659->lock); in ov2659_s_stream()
1211 static int ov2659_set_test_pattern(struct ov2659 *ov2659, int value) in ov2659_set_test_pattern() argument
1213 struct i2c_client *client = v4l2_get_subdevdata(&ov2659->sd); in ov2659_set_test_pattern()
1236 struct ov2659 *ov2659 = in ov2659_s_ctrl() local
1237 container_of(ctrl->handler, struct ov2659, ctrls); in ov2659_s_ctrl()
1241 return ov2659_set_test_pattern(ov2659, ctrl->val); in ov2659_s_ctrl()
1374 struct ov2659 *ov2659; in ov2659_probe() local
1383 ov2659 = devm_kzalloc(&client->dev, sizeof(*ov2659), GFP_KERNEL); in ov2659_probe()
1384 if (!ov2659) in ov2659_probe()
1387 ov2659->pdata = pdata; in ov2659_probe()
1388 ov2659->client = client; in ov2659_probe()
1394 ov2659->xvclk_frequency = clk_get_rate(clk); in ov2659_probe()
1395 if (ov2659->xvclk_frequency < 6000000 || in ov2659_probe()
1396 ov2659->xvclk_frequency > 27000000) in ov2659_probe()
1399 v4l2_ctrl_handler_init(&ov2659->ctrls, 2); in ov2659_probe()
1400 ov2659->link_frequency = in ov2659_probe()
1401 v4l2_ctrl_new_std(&ov2659->ctrls, &ov2659_ctrl_ops, in ov2659_probe()
1406 v4l2_ctrl_new_std_menu_items(&ov2659->ctrls, &ov2659_ctrl_ops, in ov2659_probe()
1410 ov2659->sd.ctrl_handler = &ov2659->ctrls; in ov2659_probe()
1412 if (ov2659->ctrls.error) { in ov2659_probe()
1414 __func__, ov2659->ctrls.error); in ov2659_probe()
1415 return ov2659->ctrls.error; in ov2659_probe()
1418 sd = &ov2659->sd; in ov2659_probe()
1427 ov2659->pad.flags = MEDIA_PAD_FL_SOURCE; in ov2659_probe()
1429 ret = media_entity_init(&sd->entity, 1, &ov2659->pad, 0); in ov2659_probe()
1431 v4l2_ctrl_handler_free(&ov2659->ctrls); in ov2659_probe()
1436 mutex_init(&ov2659->lock); in ov2659_probe()
1438 ov2659_get_default_format(&ov2659->format); in ov2659_probe()
1439 ov2659->frame_size = &ov2659_framesizes[2]; in ov2659_probe()
1440 ov2659->format_ctrl_regs = ov2659_formats[0].format_ctrl_regs; in ov2659_probe()
1447 ov2659_pll_calc_params(ov2659); in ov2659_probe()
1449 ret = v4l2_async_register_subdev(&ov2659->sd); in ov2659_probe()
1458 v4l2_ctrl_handler_free(&ov2659->ctrls); in ov2659_probe()
1462 mutex_destroy(&ov2659->lock); in ov2659_probe()
1469 struct ov2659 *ov2659 = to_ov2659(sd); in ov2659_remove() local
1471 v4l2_ctrl_handler_free(&ov2659->ctrls); in ov2659_remove()
1476 mutex_destroy(&ov2659->lock); in ov2659_remove()