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