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);