drivers/media/i2c/ov9282.c
1000
struct ov9282 *ov9282 = to_ov9282(sd);
drivers/media/i2c/ov9282.c
1005
mutex_lock(&ov9282->mutex);
drivers/media/i2c/ov9282.c
1017
ov9282_fill_pad_format(ov9282, mode, code, fmt);
drivers/media/i2c/ov9282.c
1025
ret = ov9282_update_controls(ov9282, mode, fmt);
drivers/media/i2c/ov9282.c
1027
ov9282->cur_mode = mode;
drivers/media/i2c/ov9282.c
1028
ov9282->code = code;
drivers/media/i2c/ov9282.c
1032
mutex_unlock(&ov9282->mutex);
drivers/media/i2c/ov9282.c
1047
struct ov9282 *ov9282 = to_ov9282(sd);
drivers/media/i2c/ov9282.c
1051
ov9282_fill_pad_format(ov9282, &supported_modes[DEFAULT_MODE],
drivers/media/i2c/ov9282.c
1052
ov9282->code, &fmt);
drivers/media/i2c/ov9282.c
1058
__ov9282_get_pad_crop(struct ov9282 *ov9282,
drivers/media/i2c/ov9282.c
1066
return &ov9282->cur_mode->crop;
drivers/media/i2c/ov9282.c
1078
struct ov9282 *ov9282 = to_ov9282(sd);
drivers/media/i2c/ov9282.c
1080
mutex_lock(&ov9282->mutex);
drivers/media/i2c/ov9282.c
1081
sel->r = *__ov9282_get_pad_crop(ov9282, sd_state, sel->pad,
drivers/media/i2c/ov9282.c
1083
mutex_unlock(&ov9282->mutex);
drivers/media/i2c/ov9282.c
1115
static int ov9282_start_streaming(struct ov9282 *ov9282)
drivers/media/i2c/ov9282.c
1131
ret = ov9282_write_regs(ov9282, common_regs_list.regs,
drivers/media/i2c/ov9282.c
1134
dev_err(ov9282->dev, "fail to write common registers");
drivers/media/i2c/ov9282.c
1138
bitdepth_index = ov9282->code == MEDIA_BUS_FMT_Y10_1X10 ? 0 : 1;
drivers/media/i2c/ov9282.c
1139
ret = ov9282_write_regs(ov9282, bitdepth_regs[bitdepth_index], 2);
drivers/media/i2c/ov9282.c
1141
dev_err(ov9282->dev, "fail to write bitdepth regs");
drivers/media/i2c/ov9282.c
1146
reg_list = &ov9282->cur_mode->reg_list;
drivers/media/i2c/ov9282.c
1147
ret = ov9282_write_regs(ov9282, reg_list->regs, reg_list->num_of_regs);
drivers/media/i2c/ov9282.c
1149
dev_err(ov9282->dev, "fail to write initial registers");
drivers/media/i2c/ov9282.c
1154
ret = __v4l2_ctrl_handler_setup(ov9282->sd.ctrl_handler);
drivers/media/i2c/ov9282.c
1156
dev_err(ov9282->dev, "fail to setup handler");
drivers/media/i2c/ov9282.c
1161
ret = ov9282_write_reg(ov9282, OV9282_REG_MODE_SELECT,
drivers/media/i2c/ov9282.c
1164
dev_err(ov9282->dev, "fail to start streaming");
drivers/media/i2c/ov9282.c
1177
static int ov9282_stop_streaming(struct ov9282 *ov9282)
drivers/media/i2c/ov9282.c
1179
return ov9282_write_reg(ov9282, OV9282_REG_MODE_SELECT,
drivers/media/i2c/ov9282.c
1192
struct ov9282 *ov9282 = to_ov9282(sd);
drivers/media/i2c/ov9282.c
1195
mutex_lock(&ov9282->mutex);
drivers/media/i2c/ov9282.c
1198
ret = pm_runtime_resume_and_get(ov9282->dev);
drivers/media/i2c/ov9282.c
1202
ret = ov9282_start_streaming(ov9282);
drivers/media/i2c/ov9282.c
1206
ov9282_stop_streaming(ov9282);
drivers/media/i2c/ov9282.c
1207
pm_runtime_put(ov9282->dev);
drivers/media/i2c/ov9282.c
1210
mutex_unlock(&ov9282->mutex);
drivers/media/i2c/ov9282.c
1215
pm_runtime_put(ov9282->dev);
drivers/media/i2c/ov9282.c
1217
mutex_unlock(&ov9282->mutex);
drivers/media/i2c/ov9282.c
1228
static int ov9282_detect(struct ov9282 *ov9282)
drivers/media/i2c/ov9282.c
1233
ret = ov9282_read_reg(ov9282, OV9282_REG_ID, 2, &val);
drivers/media/i2c/ov9282.c
1238
dev_err(ov9282->dev, "chip id mismatch: %x!=%x",
drivers/media/i2c/ov9282.c
1246
static int ov9282_configure_regulators(struct ov9282 *ov9282)
drivers/media/i2c/ov9282.c
1251
ov9282->supplies[i].supply = ov9282_supply_names[i];
drivers/media/i2c/ov9282.c
1253
return devm_regulator_bulk_get(ov9282->dev,
drivers/media/i2c/ov9282.c
1255
ov9282->supplies);
drivers/media/i2c/ov9282.c
1264
static int ov9282_parse_hw_config(struct ov9282 *ov9282)
drivers/media/i2c/ov9282.c
1266
struct fwnode_handle *fwnode = dev_fwnode(ov9282->dev);
drivers/media/i2c/ov9282.c
1279
ov9282->reset_gpio = devm_gpiod_get_optional(ov9282->dev, "reset",
drivers/media/i2c/ov9282.c
1281
if (IS_ERR(ov9282->reset_gpio)) {
drivers/media/i2c/ov9282.c
1282
dev_err(ov9282->dev, "failed to get reset gpio %pe",
drivers/media/i2c/ov9282.c
1283
ov9282->reset_gpio);
drivers/media/i2c/ov9282.c
1284
return PTR_ERR(ov9282->reset_gpio);
drivers/media/i2c/ov9282.c
1288
ov9282->inclk = devm_v4l2_sensor_clk_get(ov9282->dev, NULL);
drivers/media/i2c/ov9282.c
1289
if (IS_ERR(ov9282->inclk))
drivers/media/i2c/ov9282.c
1290
return dev_err_probe(ov9282->dev, PTR_ERR(ov9282->inclk),
drivers/media/i2c/ov9282.c
1293
ret = ov9282_configure_regulators(ov9282);
drivers/media/i2c/ov9282.c
1295
return dev_err_probe(ov9282->dev, ret,
drivers/media/i2c/ov9282.c
1298
rate = clk_get_rate(ov9282->inclk);
drivers/media/i2c/ov9282.c
1300
dev_err(ov9282->dev, "inclk frequency mismatch");
drivers/media/i2c/ov9282.c
1313
ov9282->noncontinuous_clock =
drivers/media/i2c/ov9282.c
1317
dev_err(ov9282->dev,
drivers/media/i2c/ov9282.c
1325
dev_err(ov9282->dev, "no link frequencies defined");
drivers/media/i2c/ov9282.c
1379
struct ov9282 *ov9282 = to_ov9282(sd);
drivers/media/i2c/ov9282.c
1382
ret = regulator_bulk_enable(OV9282_NUM_SUPPLIES, ov9282->supplies);
drivers/media/i2c/ov9282.c
1390
gpiod_set_value_cansleep(ov9282->reset_gpio, 1);
drivers/media/i2c/ov9282.c
1392
ret = clk_prepare_enable(ov9282->inclk);
drivers/media/i2c/ov9282.c
1394
dev_err(ov9282->dev, "fail to enable inclk");
drivers/media/i2c/ov9282.c
1400
ret = ov9282_write_reg(ov9282, OV9282_REG_MIPI_CTRL00, 1,
drivers/media/i2c/ov9282.c
1401
ov9282->noncontinuous_clock ?
drivers/media/i2c/ov9282.c
1404
dev_err(ov9282->dev, "fail to write MIPI_CTRL00");
drivers/media/i2c/ov9282.c
1411
clk_disable_unprepare(ov9282->inclk);
drivers/media/i2c/ov9282.c
1413
gpiod_set_value_cansleep(ov9282->reset_gpio, 0);
drivers/media/i2c/ov9282.c
1415
regulator_bulk_disable(OV9282_NUM_SUPPLIES, ov9282->supplies);
drivers/media/i2c/ov9282.c
1429
struct ov9282 *ov9282 = to_ov9282(sd);
drivers/media/i2c/ov9282.c
1431
gpiod_set_value_cansleep(ov9282->reset_gpio, 0);
drivers/media/i2c/ov9282.c
1433
clk_disable_unprepare(ov9282->inclk);
drivers/media/i2c/ov9282.c
1435
regulator_bulk_disable(OV9282_NUM_SUPPLIES, ov9282->supplies);
drivers/media/i2c/ov9282.c
1446
static int ov9282_init_controls(struct ov9282 *ov9282)
drivers/media/i2c/ov9282.c
1448
struct v4l2_ctrl_handler *ctrl_hdlr = &ov9282->ctrl_handler;
drivers/media/i2c/ov9282.c
1449
const struct ov9282_mode *mode = ov9282->cur_mode;
drivers/media/i2c/ov9282.c
1461
ctrl_hdlr->lock = &ov9282->mutex;
drivers/media/i2c/ov9282.c
1465
ov9282->exp_ctrl = v4l2_ctrl_new_std(ctrl_hdlr,
drivers/media/i2c/ov9282.c
1473
ov9282->again_ctrl = v4l2_ctrl_new_std(ctrl_hdlr,
drivers/media/i2c/ov9282.c
1481
v4l2_ctrl_cluster(2, &ov9282->exp_ctrl);
drivers/media/i2c/ov9282.c
1483
ov9282->vblank_ctrl = v4l2_ctrl_new_std(ctrl_hdlr,
drivers/media/i2c/ov9282.c
1497
ov9282->pixel_rate = v4l2_ctrl_new_std(ctrl_hdlr, &ov9282_ctrl_ops,
drivers/media/i2c/ov9282.c
1503
ov9282->link_freq_ctrl = v4l2_ctrl_new_int_menu(ctrl_hdlr,
drivers/media/i2c/ov9282.c
1510
if (ov9282->link_freq_ctrl)
drivers/media/i2c/ov9282.c
1511
ov9282->link_freq_ctrl->flags |= V4L2_CTRL_FLAG_READ_ONLY;
drivers/media/i2c/ov9282.c
1513
hblank_min = mode->hblank_min[ov9282->noncontinuous_clock ? 0 : 1];
drivers/media/i2c/ov9282.c
1514
ov9282->hblank_ctrl = v4l2_ctrl_new_std(ctrl_hdlr,
drivers/media/i2c/ov9282.c
1525
exposure_us = ov9282_exposure_to_us(ov9282, OV9282_EXPOSURE_DEFAULT);
drivers/media/i2c/ov9282.c
1526
ov9282->flash_duration =
drivers/media/i2c/ov9282.c
1531
ret = v4l2_fwnode_device_parse(ov9282->dev, &props);
drivers/media/i2c/ov9282.c
1539
dev_err(ov9282->dev, "control init failed: %d",
drivers/media/i2c/ov9282.c
1545
ov9282->sd.ctrl_handler = ctrl_hdlr;
drivers/media/i2c/ov9282.c
1558
struct ov9282 *ov9282;
drivers/media/i2c/ov9282.c
1561
ov9282 = devm_kzalloc(&client->dev, sizeof(*ov9282), GFP_KERNEL);
drivers/media/i2c/ov9282.c
1562
if (!ov9282)
drivers/media/i2c/ov9282.c
1565
ov9282->dev = &client->dev;
drivers/media/i2c/ov9282.c
1568
v4l2_i2c_subdev_init(&ov9282->sd, client, &ov9282_subdev_ops);
drivers/media/i2c/ov9282.c
1569
ov9282->sd.internal_ops = &ov9282_internal_ops;
drivers/media/i2c/ov9282.c
1570
v4l2_i2c_subdev_set_name(&ov9282->sd, client,
drivers/media/i2c/ov9282.c
1571
device_get_match_data(ov9282->dev), NULL);
drivers/media/i2c/ov9282.c
1573
ret = ov9282_parse_hw_config(ov9282);
drivers/media/i2c/ov9282.c
1575
dev_err(ov9282->dev, "HW configuration is not supported");
drivers/media/i2c/ov9282.c
1579
mutex_init(&ov9282->mutex);
drivers/media/i2c/ov9282.c
1581
ret = ov9282_power_on(ov9282->dev);
drivers/media/i2c/ov9282.c
1583
dev_err(ov9282->dev, "failed to power-on the sensor");
drivers/media/i2c/ov9282.c
1588
ret = ov9282_detect(ov9282);
drivers/media/i2c/ov9282.c
1590
dev_err(ov9282->dev, "failed to find sensor: %d", ret);
drivers/media/i2c/ov9282.c
1595
ov9282->cur_mode = &supported_modes[DEFAULT_MODE];
drivers/media/i2c/ov9282.c
1596
ov9282->code = MEDIA_BUS_FMT_Y10_1X10;
drivers/media/i2c/ov9282.c
1597
ov9282->vblank = ov9282->cur_mode->vblank;
drivers/media/i2c/ov9282.c
1599
ret = ov9282_init_controls(ov9282);
drivers/media/i2c/ov9282.c
1601
dev_err(ov9282->dev, "failed to init controls: %d", ret);
drivers/media/i2c/ov9282.c
1606
ov9282->sd.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE |
drivers/media/i2c/ov9282.c
1608
ov9282->sd.entity.function = MEDIA_ENT_F_CAM_SENSOR;
drivers/media/i2c/ov9282.c
1611
ov9282->pad.flags = MEDIA_PAD_FL_SOURCE;
drivers/media/i2c/ov9282.c
1612
ret = media_entity_pads_init(&ov9282->sd.entity, 1, &ov9282->pad);
drivers/media/i2c/ov9282.c
1614
dev_err(ov9282->dev, "failed to init entity pads: %d", ret);
drivers/media/i2c/ov9282.c
1618
ret = v4l2_async_register_subdev_sensor(&ov9282->sd);
drivers/media/i2c/ov9282.c
1620
dev_err(ov9282->dev,
drivers/media/i2c/ov9282.c
1625
pm_runtime_set_active(ov9282->dev);
drivers/media/i2c/ov9282.c
1626
pm_runtime_enable(ov9282->dev);
drivers/media/i2c/ov9282.c
1627
pm_runtime_idle(ov9282->dev);
drivers/media/i2c/ov9282.c
1632
media_entity_cleanup(&ov9282->sd.entity);
drivers/media/i2c/ov9282.c
1634
v4l2_ctrl_handler_free(ov9282->sd.ctrl_handler);
drivers/media/i2c/ov9282.c
1636
ov9282_power_off(ov9282->dev);
drivers/media/i2c/ov9282.c
1638
mutex_destroy(&ov9282->mutex);
drivers/media/i2c/ov9282.c
1652
struct ov9282 *ov9282 = to_ov9282(sd);
drivers/media/i2c/ov9282.c
1663
mutex_destroy(&ov9282->mutex);
drivers/media/i2c/ov9282.c
483
static inline struct ov9282 *to_ov9282(struct v4l2_subdev *subdev)
drivers/media/i2c/ov9282.c
485
return container_of(subdev, struct ov9282, sd);
drivers/media/i2c/ov9282.c
497
static int ov9282_read_reg(struct ov9282 *ov9282, u16 reg, u32 len, u32 *val)
drivers/media/i2c/ov9282.c
499
struct i2c_client *client = v4l2_get_subdevdata(&ov9282->sd);
drivers/media/i2c/ov9282.c
540
static int ov9282_write_reg(struct ov9282 *ov9282, u16 reg, u32 len, u32 val)
drivers/media/i2c/ov9282.c
542
struct i2c_client *client = v4l2_get_subdevdata(&ov9282->sd);
drivers/media/i2c/ov9282.c
564
static int ov9282_write_regs(struct ov9282 *ov9282,
drivers/media/i2c/ov9282.c
571
ret = ov9282_write_reg(ov9282, regs[i].address, 1, regs[i].val);
drivers/media/i2c/ov9282.c
587
static int ov9282_update_controls(struct ov9282 *ov9282,
drivers/media/i2c/ov9282.c
595
ret = __v4l2_ctrl_s_ctrl(ov9282->link_freq_ctrl, mode->link_freq_idx);
drivers/media/i2c/ov9282.c
601
ret = __v4l2_ctrl_modify_range(ov9282->pixel_rate, pixel_rate,
drivers/media/i2c/ov9282.c
606
hblank_min = mode->hblank_min[ov9282->noncontinuous_clock ? 0 : 1];
drivers/media/i2c/ov9282.c
607
ret = __v4l2_ctrl_modify_range(ov9282->hblank_ctrl, hblank_min,
drivers/media/i2c/ov9282.c
613
return __v4l2_ctrl_modify_range(ov9282->vblank_ctrl, mode->vblank_min,
drivers/media/i2c/ov9282.c
617
static u32 ov9282_exposure_to_us(struct ov9282 *ov9282, u32 exposure)
drivers/media/i2c/ov9282.c
620
u32 frame_width = ov9282->cur_mode->width + ov9282->hblank_ctrl->val;
drivers/media/i2c/ov9282.c
621
u32 trow_us = frame_width / (ov9282->pixel_rate->val / 1000000UL);
drivers/media/i2c/ov9282.c
634
static int ov9282_update_exp_gain(struct ov9282 *ov9282, u32 exposure, u32 gain)
drivers/media/i2c/ov9282.c
637
u32 exposure_us = ov9282_exposure_to_us(ov9282, exposure);
drivers/media/i2c/ov9282.c
639
dev_dbg(ov9282->dev, "Set exp %u (~%u us), analog gain %u",
drivers/media/i2c/ov9282.c
642
ret = ov9282_write_reg(ov9282, OV9282_REG_HOLD, 1, 1);
drivers/media/i2c/ov9282.c
646
ret = ov9282_write_reg(ov9282, OV9282_REG_EXPOSURE, 3, exposure << 4);
drivers/media/i2c/ov9282.c
650
ret = ov9282_write_reg(ov9282, OV9282_REG_AGAIN, 1, gain);
drivers/media/i2c/ov9282.c
654
ret = __v4l2_ctrl_modify_range(ov9282->flash_duration,
drivers/media/i2c/ov9282.c
659
ov9282_write_reg(ov9282, OV9282_REG_HOLD, 1, 0);
drivers/media/i2c/ov9282.c
664
static int ov9282_set_ctrl_hflip(struct ov9282 *ov9282, int value)
drivers/media/i2c/ov9282.c
667
int ret = ov9282_read_reg(ov9282, OV9282_REG_TIMING_FORMAT_2, 1,
drivers/media/i2c/ov9282.c
677
return ov9282_write_reg(ov9282, OV9282_REG_TIMING_FORMAT_2, 1,
drivers/media/i2c/ov9282.c
681
static int ov9282_set_ctrl_vflip(struct ov9282 *ov9282, int value)
drivers/media/i2c/ov9282.c
684
int ret = ov9282_read_reg(ov9282, OV9282_REG_TIMING_FORMAT_1, 1,
drivers/media/i2c/ov9282.c
694
return ov9282_write_reg(ov9282, OV9282_REG_TIMING_FORMAT_1, 1,
drivers/media/i2c/ov9282.c
698
static int ov9282_set_ctrl_flash_strobe_oe(struct ov9282 *ov9282, bool enable)
drivers/media/i2c/ov9282.c
703
ret = ov9282_read_reg(ov9282, OV9282_REG_OUTPUT_ENABLE6, 1, ¤t_val);
drivers/media/i2c/ov9282.c
712
return ov9282_write_reg(ov9282, OV9282_REG_OUTPUT_ENABLE6, 1, current_val);
drivers/media/i2c/ov9282.c
715
static u32 ov9282_us_to_flash_duration(struct ov9282 *ov9282, u32 value)
drivers/media/i2c/ov9282.c
726
u32 frame_width = ov9282->cur_mode->width + ov9282->hblank_ctrl->val;
drivers/media/i2c/ov9282.c
731
static u32 ov9282_flash_duration_to_us(struct ov9282 *ov9282, u32 value)
drivers/media/i2c/ov9282.c
738
u32 frame_width = ov9282->cur_mode->width + ov9282->hblank_ctrl->val;
drivers/media/i2c/ov9282.c
743
static int ov9282_set_ctrl_flash_duration(struct ov9282 *ov9282, u32 value)
drivers/media/i2c/ov9282.c
745
u32 val = ov9282_us_to_flash_duration(ov9282, value);
drivers/media/i2c/ov9282.c
748
ret = ov9282_write_reg(ov9282, OV9282_REG_STROBE_FRAME_SPAN, 1,
drivers/media/i2c/ov9282.c
753
ret = ov9282_write_reg(ov9282, OV9282_REG_STROBE_FRAME_SPAN + 1, 1,
drivers/media/i2c/ov9282.c
758
ret = ov9282_write_reg(ov9282, OV9282_REG_STROBE_FRAME_SPAN + 2, 1,
drivers/media/i2c/ov9282.c
763
return ov9282_write_reg(ov9282, OV9282_REG_STROBE_FRAME_SPAN + 3, 1,
drivers/media/i2c/ov9282.c
781
struct ov9282 *ov9282 =
drivers/media/i2c/ov9282.c
782
container_of(ctrl->handler, struct ov9282, ctrl_handler);
drivers/media/i2c/ov9282.c
790
ov9282->vblank = ov9282->vblank_ctrl->val;
drivers/media/i2c/ov9282.c
792
dev_dbg(ov9282->dev, "Received vblank %u, new lpfr %u",
drivers/media/i2c/ov9282.c
793
ov9282->vblank,
drivers/media/i2c/ov9282.c
794
ov9282->vblank + ov9282->cur_mode->height);
drivers/media/i2c/ov9282.c
796
ret = __v4l2_ctrl_modify_range(ov9282->exp_ctrl,
drivers/media/i2c/ov9282.c
798
ov9282->vblank +
drivers/media/i2c/ov9282.c
799
ov9282->cur_mode->height -
drivers/media/i2c/ov9282.c
806
if (!pm_runtime_get_if_in_use(ov9282->dev))
drivers/media/i2c/ov9282.c
812
analog_gain = ov9282->again_ctrl->val;
drivers/media/i2c/ov9282.c
814
dev_dbg(ov9282->dev, "Received exp %u, analog gain %u",
drivers/media/i2c/ov9282.c
817
ret = ov9282_update_exp_gain(ov9282, exposure, analog_gain);
drivers/media/i2c/ov9282.c
820
lpfr = ov9282->vblank + ov9282->cur_mode->height;
drivers/media/i2c/ov9282.c
821
ret = ov9282_write_reg(ov9282, OV9282_REG_LPFR, 2, lpfr);
drivers/media/i2c/ov9282.c
824
ret = ov9282_set_ctrl_hflip(ov9282, ctrl->val);
drivers/media/i2c/ov9282.c
827
ret = ov9282_set_ctrl_vflip(ov9282, ctrl->val);
drivers/media/i2c/ov9282.c
830
ret = ov9282_write_reg(ov9282, OV9282_REG_TIMING_HTS, 2,
drivers/media/i2c/ov9282.c
831
(ctrl->val + ov9282->cur_mode->width) >> 1);
drivers/media/i2c/ov9282.c
834
ret = ov9282_set_ctrl_flash_strobe_oe(ov9282, ctrl->val);
drivers/media/i2c/ov9282.c
837
ret = ov9282_set_ctrl_flash_duration(ov9282, ctrl->val);
drivers/media/i2c/ov9282.c
840
dev_err(ov9282->dev, "Invalid control %d", ctrl->id);
drivers/media/i2c/ov9282.c
844
pm_runtime_put(ov9282->dev);
drivers/media/i2c/ov9282.c
851
struct ov9282 *ov9282 =
drivers/media/i2c/ov9282.c
852
container_of_const(ctrl->handler, struct ov9282, ctrl_handler);
drivers/media/i2c/ov9282.c
856
u32 fd = ov9282_us_to_flash_duration(ov9282, us);
drivers/media/i2c/ov9282.c
859
u32 us0 = ov9282_flash_duration_to_us(ov9282, fd);
drivers/media/i2c/ov9282.c
860
u32 us1 = ov9282_flash_duration_to_us(ov9282, fd + 1);
drivers/media/i2c/ov9282.c
868
dev_dbg(ov9282->dev, "using next valid strobe_duration %u instead of %u\n",
drivers/media/i2c/ov9282.c
942
static void ov9282_fill_pad_format(struct ov9282 *ov9282,
drivers/media/i2c/ov9282.c
969
struct ov9282 *ov9282 = to_ov9282(sd);
drivers/media/i2c/ov9282.c
971
mutex_lock(&ov9282->mutex);
drivers/media/i2c/ov9282.c
979
ov9282_fill_pad_format(ov9282, ov9282->cur_mode, ov9282->code,
drivers/media/i2c/ov9282.c
983
mutex_unlock(&ov9282->mutex);