drivers/media/i2c/ov7251.c
1005
ret = ov7251_write_reg(ov7251, OV7251_PRE_ISP_00, val);
drivers/media/i2c/ov7251.c
1007
ov7251->pre_isp_00 = val;
drivers/media/i2c/ov7251.c
1017
static int ov7251_vts_configure(struct ov7251 *ov7251, s32 vblank)
drivers/media/i2c/ov7251.c
1021
vts[0] = ((ov7251->current_mode->height + vblank) & 0xff00) >> 8;
drivers/media/i2c/ov7251.c
1022
vts[1] = ((ov7251->current_mode->height + vblank) & 0x00ff);
drivers/media/i2c/ov7251.c
1024
return ov7251_write_seq_regs(ov7251, OV7251_TIMING_VTS_REG, vts, 2);
drivers/media/i2c/ov7251.c
1029
struct ov7251 *ov7251 = container_of(ctrl->handler,
drivers/media/i2c/ov7251.c
1030
struct ov7251, ctrls);
drivers/media/i2c/ov7251.c
1037
exposure_max = ov7251->current_mode->height + ctrl->val -
drivers/media/i2c/ov7251.c
1039
__v4l2_ctrl_modify_range(ov7251->exposure,
drivers/media/i2c/ov7251.c
1040
ov7251->exposure->minimum,
drivers/media/i2c/ov7251.c
1042
ov7251->exposure->step,
drivers/media/i2c/ov7251.c
1043
min(ov7251->exposure->val,
drivers/media/i2c/ov7251.c
1049
if (!pm_runtime_get_if_in_use(ov7251->dev))
drivers/media/i2c/ov7251.c
1054
ret = ov7251_set_exposure(ov7251, ctrl->val);
drivers/media/i2c/ov7251.c
1057
ret = ov7251_set_gain(ov7251, ctrl->val);
drivers/media/i2c/ov7251.c
1060
ret = ov7251_set_test_pattern(ov7251, ctrl->val);
drivers/media/i2c/ov7251.c
1063
ret = ov7251_set_hflip(ov7251, ctrl->val);
drivers/media/i2c/ov7251.c
1066
ret = ov7251_set_vflip(ov7251, ctrl->val);
drivers/media/i2c/ov7251.c
1069
ret = ov7251_vts_configure(ov7251, ctrl->val);
drivers/media/i2c/ov7251.c
1076
pm_runtime_put(ov7251->dev);
drivers/media/i2c/ov7251.c
1137
__ov7251_get_pad_format(struct ov7251 *ov7251,
drivers/media/i2c/ov7251.c
1146
return &ov7251->fmt;
drivers/media/i2c/ov7251.c
1156
struct ov7251 *ov7251 = to_ov7251(sd);
drivers/media/i2c/ov7251.c
1158
mutex_lock(&ov7251->lock);
drivers/media/i2c/ov7251.c
1159
format->format = *__ov7251_get_pad_format(ov7251, sd_state,
drivers/media/i2c/ov7251.c
1162
mutex_unlock(&ov7251->lock);
drivers/media/i2c/ov7251.c
1168
__ov7251_get_pad_crop(struct ov7251 *ov7251,
drivers/media/i2c/ov7251.c
1176
return &ov7251->crop;
drivers/media/i2c/ov7251.c
1188
ov7251_find_mode_by_ival(struct ov7251 *ov7251, struct v4l2_fract *timeperframe)
drivers/media/i2c/ov7251.c
1190
const struct ov7251_mode_info *mode = ov7251->current_mode;
drivers/media/i2c/ov7251.c
1220
struct ov7251 *ov7251 = to_ov7251(sd);
drivers/media/i2c/ov7251.c
1227
mutex_lock(&ov7251->lock);
drivers/media/i2c/ov7251.c
1229
__crop = __ov7251_get_pad_crop(ov7251, sd_state, format->pad,
drivers/media/i2c/ov7251.c
1241
ret = __v4l2_ctrl_modify_range(ov7251->exposure,
drivers/media/i2c/ov7251.c
1247
ret = __v4l2_ctrl_s_ctrl(ov7251->exposure,
drivers/media/i2c/ov7251.c
1252
ret = __v4l2_ctrl_s_ctrl(ov7251->gain, 16);
drivers/media/i2c/ov7251.c
1258
ret = __v4l2_ctrl_modify_range(ov7251->vblank,
drivers/media/i2c/ov7251.c
1264
ov7251->current_mode = new_mode;
drivers/media/i2c/ov7251.c
1267
__format = __ov7251_get_pad_format(ov7251, sd_state, format->pad,
drivers/media/i2c/ov7251.c
1282
mutex_unlock(&ov7251->lock);
drivers/media/i2c/ov7251.c
1308
struct ov7251 *ov7251 = to_ov7251(sd);
drivers/media/i2c/ov7251.c
1313
mutex_lock(&ov7251->lock);
drivers/media/i2c/ov7251.c
1314
sel->r = *__ov7251_get_pad_crop(ov7251, sd_state, sel->pad,
drivers/media/i2c/ov7251.c
1316
mutex_unlock(&ov7251->lock);
drivers/media/i2c/ov7251.c
1339
struct ov7251 *ov7251 = to_ov7251(subdev);
drivers/media/i2c/ov7251.c
1342
mutex_lock(&ov7251->lock);
drivers/media/i2c/ov7251.c
1345
ret = pm_runtime_resume_and_get(ov7251->dev);
drivers/media/i2c/ov7251.c
1347
mutex_unlock(&ov7251->lock);
drivers/media/i2c/ov7251.c
1351
ret = ov7251_pll_configure(ov7251);
drivers/media/i2c/ov7251.c
1353
dev_err(ov7251->dev, "error configuring PLLs\n");
drivers/media/i2c/ov7251.c
1357
ret = ov7251_set_register_array(ov7251,
drivers/media/i2c/ov7251.c
1358
ov7251->current_mode->data,
drivers/media/i2c/ov7251.c
1359
ov7251->current_mode->data_size);
drivers/media/i2c/ov7251.c
1361
dev_err(ov7251->dev, "could not set mode %dx%d\n",
drivers/media/i2c/ov7251.c
1362
ov7251->current_mode->width,
drivers/media/i2c/ov7251.c
1363
ov7251->current_mode->height);
drivers/media/i2c/ov7251.c
1366
ret = __v4l2_ctrl_handler_setup(&ov7251->ctrls);
drivers/media/i2c/ov7251.c
1368
dev_err(ov7251->dev, "could not sync v4l2 controls\n");
drivers/media/i2c/ov7251.c
1371
ret = ov7251_write_reg(ov7251, OV7251_SC_MODE_SELECT,
drivers/media/i2c/ov7251.c
1376
ret = ov7251_write_reg(ov7251, OV7251_SC_MODE_SELECT,
drivers/media/i2c/ov7251.c
1378
pm_runtime_put(ov7251->dev);
drivers/media/i2c/ov7251.c
1381
mutex_unlock(&ov7251->lock);
drivers/media/i2c/ov7251.c
1385
pm_runtime_put(ov7251->dev);
drivers/media/i2c/ov7251.c
1386
mutex_unlock(&ov7251->lock);
drivers/media/i2c/ov7251.c
1394
struct ov7251 *ov7251 = to_ov7251(subdev);
drivers/media/i2c/ov7251.c
1403
mutex_lock(&ov7251->lock);
drivers/media/i2c/ov7251.c
1404
fi->interval = ov7251->current_mode->timeperframe;
drivers/media/i2c/ov7251.c
1405
mutex_unlock(&ov7251->lock);
drivers/media/i2c/ov7251.c
1414
struct ov7251 *ov7251 = to_ov7251(subdev);
drivers/media/i2c/ov7251.c
1425
mutex_lock(&ov7251->lock);
drivers/media/i2c/ov7251.c
1426
new_mode = ov7251_find_mode_by_ival(ov7251, &fi->interval);
drivers/media/i2c/ov7251.c
1428
if (new_mode != ov7251->current_mode) {
drivers/media/i2c/ov7251.c
1429
ret = __v4l2_ctrl_modify_range(ov7251->exposure,
drivers/media/i2c/ov7251.c
1435
ret = __v4l2_ctrl_s_ctrl(ov7251->exposure,
drivers/media/i2c/ov7251.c
1440
ret = __v4l2_ctrl_s_ctrl(ov7251->gain, 16);
drivers/media/i2c/ov7251.c
1444
ov7251->current_mode = new_mode;
drivers/media/i2c/ov7251.c
1447
fi->interval = ov7251->current_mode->timeperframe;
drivers/media/i2c/ov7251.c
1450
mutex_unlock(&ov7251->lock);
drivers/media/i2c/ov7251.c
1479
static int ov7251_check_hwcfg(struct ov7251 *ov7251)
drivers/media/i2c/ov7251.c
1481
struct fwnode_handle *fwnode = dev_fwnode(ov7251->dev);
drivers/media/i2c/ov7251.c
1495
return dev_err_probe(ov7251->dev, -EPROBE_DEFER,
drivers/media/i2c/ov7251.c
1501
return dev_err_probe(ov7251->dev, ret,
drivers/media/i2c/ov7251.c
1505
ret = dev_err_probe(ov7251->dev, -EINVAL,
drivers/media/i2c/ov7251.c
1520
ret = dev_err_probe(ov7251->dev, -EINVAL,
drivers/media/i2c/ov7251.c
1525
ov7251->link_freq_idx = i;
drivers/media/i2c/ov7251.c
1533
static int ov7251_detect_chip(struct ov7251 *ov7251)
drivers/media/i2c/ov7251.c
1538
ret = ov7251_read_reg(ov7251, OV7251_CHIP_ID_HIGH, &chip_id_high);
drivers/media/i2c/ov7251.c
1540
return dev_err_probe(ov7251->dev, -ENODEV,
drivers/media/i2c/ov7251.c
1543
ret = ov7251_read_reg(ov7251, OV7251_CHIP_ID_LOW, &chip_id_low);
drivers/media/i2c/ov7251.c
1545
return dev_err_probe(ov7251->dev, -ENODEV,
drivers/media/i2c/ov7251.c
1548
ret = ov7251_read_reg(ov7251, OV7251_SC_GP_IO_IN1, &chip_rev);
drivers/media/i2c/ov7251.c
1550
return dev_err_probe(ov7251->dev, -ENODEV,
drivers/media/i2c/ov7251.c
1554
dev_info(ov7251->dev,
drivers/media/i2c/ov7251.c
1561
ov7251->i2c_client->addr);
drivers/media/i2c/ov7251.c
1566
static int ov7251_init_ctrls(struct ov7251 *ov7251)
drivers/media/i2c/ov7251.c
1572
v4l2_ctrl_handler_init(&ov7251->ctrls, 7);
drivers/media/i2c/ov7251.c
1573
ov7251->ctrls.lock = &ov7251->lock;
drivers/media/i2c/ov7251.c
1575
v4l2_ctrl_new_std(&ov7251->ctrls, &ov7251_ctrl_ops,
drivers/media/i2c/ov7251.c
1577
v4l2_ctrl_new_std(&ov7251->ctrls, &ov7251_ctrl_ops,
drivers/media/i2c/ov7251.c
1579
ov7251->exposure = v4l2_ctrl_new_std(&ov7251->ctrls, &ov7251_ctrl_ops,
drivers/media/i2c/ov7251.c
1581
ov7251->gain = v4l2_ctrl_new_std(&ov7251->ctrls, &ov7251_ctrl_ops,
drivers/media/i2c/ov7251.c
1583
v4l2_ctrl_new_std_menu_items(&ov7251->ctrls, &ov7251_ctrl_ops,
drivers/media/i2c/ov7251.c
1588
pixel_rate = pixel_rates[ov7251->link_freq_idx];
drivers/media/i2c/ov7251.c
1589
ov7251->pixel_clock = v4l2_ctrl_new_std(&ov7251->ctrls,
drivers/media/i2c/ov7251.c
1594
ov7251->link_freq = v4l2_ctrl_new_int_menu(&ov7251->ctrls,
drivers/media/i2c/ov7251.c
1598
ov7251->link_freq_idx,
drivers/media/i2c/ov7251.c
1600
if (ov7251->link_freq)
drivers/media/i2c/ov7251.c
1601
ov7251->link_freq->flags |= V4L2_CTRL_FLAG_READ_ONLY;
drivers/media/i2c/ov7251.c
1602
if (ov7251->pixel_clock)
drivers/media/i2c/ov7251.c
1603
ov7251->pixel_clock->flags |= V4L2_CTRL_FLAG_READ_ONLY;
drivers/media/i2c/ov7251.c
1605
hblank = OV7251_FIXED_PPL - ov7251->current_mode->width;
drivers/media/i2c/ov7251.c
1606
ov7251->hblank = v4l2_ctrl_new_std(&ov7251->ctrls, &ov7251_ctrl_ops,
drivers/media/i2c/ov7251.c
1609
if (ov7251->hblank)
drivers/media/i2c/ov7251.c
1610
ov7251->hblank->flags |= V4L2_CTRL_FLAG_READ_ONLY;
drivers/media/i2c/ov7251.c
1612
vblank_max = OV7251_TIMING_MAX_VTS - ov7251->current_mode->height;
drivers/media/i2c/ov7251.c
1613
vblank_def = ov7251->current_mode->vts - ov7251->current_mode->height;
drivers/media/i2c/ov7251.c
1614
ov7251->vblank = v4l2_ctrl_new_std(&ov7251->ctrls, &ov7251_ctrl_ops,
drivers/media/i2c/ov7251.c
1619
ov7251->sd.ctrl_handler = &ov7251->ctrls;
drivers/media/i2c/ov7251.c
1621
if (ov7251->ctrls.error) {
drivers/media/i2c/ov7251.c
1622
v4l2_ctrl_handler_free(&ov7251->ctrls);
drivers/media/i2c/ov7251.c
1623
return ov7251->ctrls.error;
drivers/media/i2c/ov7251.c
1632
struct ov7251 *ov7251;
drivers/media/i2c/ov7251.c
1636
ov7251 = devm_kzalloc(dev, sizeof(struct ov7251), GFP_KERNEL);
drivers/media/i2c/ov7251.c
1637
if (!ov7251)
drivers/media/i2c/ov7251.c
164
static inline struct ov7251 *to_ov7251(struct v4l2_subdev *sd)
drivers/media/i2c/ov7251.c
1640
ov7251->i2c_client = client;
drivers/media/i2c/ov7251.c
1641
ov7251->dev = dev;
drivers/media/i2c/ov7251.c
1643
ret = ov7251_check_hwcfg(ov7251);
drivers/media/i2c/ov7251.c
1648
ov7251->xclk = devm_v4l2_sensor_clk_get(dev, NULL);
drivers/media/i2c/ov7251.c
1649
if (IS_ERR(ov7251->xclk))
drivers/media/i2c/ov7251.c
1650
return dev_err_probe(dev, PTR_ERR(ov7251->xclk),
drivers/media/i2c/ov7251.c
1653
ov7251->xclk_freq = clk_get_rate(ov7251->xclk);
drivers/media/i2c/ov7251.c
1656
if (ov7251->xclk_freq == supported_xclk_rates[i])
drivers/media/i2c/ov7251.c
166
return container_of(sd, struct ov7251, sd);
drivers/media/i2c/ov7251.c
1662
ov7251->xclk_freq);
drivers/media/i2c/ov7251.c
1664
ov7251->pll_cfgs = ov7251_pll_cfgs[i];
drivers/media/i2c/ov7251.c
1666
ov7251->io_regulator = devm_regulator_get(dev, "vdddo");
drivers/media/i2c/ov7251.c
1667
if (IS_ERR(ov7251->io_regulator)) {
drivers/media/i2c/ov7251.c
1669
return PTR_ERR(ov7251->io_regulator);
drivers/media/i2c/ov7251.c
1672
ov7251->core_regulator = devm_regulator_get(dev, "vddd");
drivers/media/i2c/ov7251.c
1673
if (IS_ERR(ov7251->core_regulator)) {
drivers/media/i2c/ov7251.c
1675
return PTR_ERR(ov7251->core_regulator);
drivers/media/i2c/ov7251.c
1678
ov7251->analog_regulator = devm_regulator_get(dev, "vdda");
drivers/media/i2c/ov7251.c
1679
if (IS_ERR(ov7251->analog_regulator)) {
drivers/media/i2c/ov7251.c
1681
return PTR_ERR(ov7251->analog_regulator);
drivers/media/i2c/ov7251.c
1684
ov7251->enable_gpio = devm_gpiod_get(dev, "enable", GPIOD_OUT_LOW);
drivers/media/i2c/ov7251.c
1685
if (IS_ERR(ov7251->enable_gpio)) {
drivers/media/i2c/ov7251.c
1687
return PTR_ERR(ov7251->enable_gpio);
drivers/media/i2c/ov7251.c
1690
mutex_init(&ov7251->lock);
drivers/media/i2c/ov7251.c
1692
ov7251->current_mode = &ov7251_mode_info_data[0];
drivers/media/i2c/ov7251.c
1693
ret = ov7251_init_ctrls(ov7251);
drivers/media/i2c/ov7251.c
1699
v4l2_i2c_subdev_init(&ov7251->sd, client, &ov7251_subdev_ops);
drivers/media/i2c/ov7251.c
1700
ov7251->sd.internal_ops = &ov7251_internal_ops;
drivers/media/i2c/ov7251.c
1701
ov7251->sd.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
drivers/media/i2c/ov7251.c
1702
ov7251->pad.flags = MEDIA_PAD_FL_SOURCE;
drivers/media/i2c/ov7251.c
1703
ov7251->sd.dev = &client->dev;
drivers/media/i2c/ov7251.c
1704
ov7251->sd.entity.function = MEDIA_ENT_F_CAM_SENSOR;
drivers/media/i2c/ov7251.c
1706
ret = media_entity_pads_init(&ov7251->sd.entity, 1, &ov7251->pad);
drivers/media/i2c/ov7251.c
1712
ret = ov7251_set_power_on(ov7251->dev);
drivers/media/i2c/ov7251.c
1716
ret = ov7251_detect_chip(ov7251);
drivers/media/i2c/ov7251.c
1724
ret = ov7251_read_reg(ov7251, OV7251_PRE_ISP_00,
drivers/media/i2c/ov7251.c
1725
&ov7251->pre_isp_00);
drivers/media/i2c/ov7251.c
1732
ret = ov7251_read_reg(ov7251, OV7251_TIMING_FORMAT1,
drivers/media/i2c/ov7251.c
1733
&ov7251->timing_format1);
drivers/media/i2c/ov7251.c
1740
ret = ov7251_read_reg(ov7251, OV7251_TIMING_FORMAT2,
drivers/media/i2c/ov7251.c
1741
&ov7251->timing_format2);
drivers/media/i2c/ov7251.c
1752
ret = v4l2_async_register_subdev(&ov7251->sd);
drivers/media/i2c/ov7251.c
1758
ov7251_init_state(&ov7251->sd, NULL);
drivers/media/i2c/ov7251.c
1763
pm_runtime_disable(ov7251->dev);
drivers/media/i2c/ov7251.c
1764
pm_runtime_put_noidle(ov7251->dev);
drivers/media/i2c/ov7251.c
1766
ov7251_set_power_off(ov7251->dev);
drivers/media/i2c/ov7251.c
1768
media_entity_cleanup(&ov7251->sd.entity);
drivers/media/i2c/ov7251.c
1770
v4l2_ctrl_handler_free(&ov7251->ctrls);
drivers/media/i2c/ov7251.c
1772
mutex_destroy(&ov7251->lock);
drivers/media/i2c/ov7251.c
1780
struct ov7251 *ov7251 = to_ov7251(sd);
drivers/media/i2c/ov7251.c
1782
v4l2_async_unregister_subdev(&ov7251->sd);
drivers/media/i2c/ov7251.c
1783
media_entity_cleanup(&ov7251->sd.entity);
drivers/media/i2c/ov7251.c
1784
v4l2_ctrl_handler_free(&ov7251->ctrls);
drivers/media/i2c/ov7251.c
1785
mutex_destroy(&ov7251->lock);
drivers/media/i2c/ov7251.c
1787
pm_runtime_disable(ov7251->dev);
drivers/media/i2c/ov7251.c
1788
if (!pm_runtime_status_suspended(ov7251->dev))
drivers/media/i2c/ov7251.c
1789
ov7251_set_power_off(ov7251->dev);
drivers/media/i2c/ov7251.c
1790
pm_runtime_set_suspended(ov7251->dev);
drivers/media/i2c/ov7251.c
684
static int ov7251_regulators_enable(struct ov7251 *ov7251)
drivers/media/i2c/ov7251.c
692
ret = regulator_enable(ov7251->io_regulator);
drivers/media/i2c/ov7251.c
694
dev_err(ov7251->dev, "set io voltage failed\n");
drivers/media/i2c/ov7251.c
698
ret = regulator_enable(ov7251->analog_regulator);
drivers/media/i2c/ov7251.c
700
dev_err(ov7251->dev, "set analog voltage failed\n");
drivers/media/i2c/ov7251.c
704
ret = regulator_enable(ov7251->core_regulator);
drivers/media/i2c/ov7251.c
706
dev_err(ov7251->dev, "set core voltage failed\n");
drivers/media/i2c/ov7251.c
713
regulator_disable(ov7251->analog_regulator);
drivers/media/i2c/ov7251.c
716
regulator_disable(ov7251->io_regulator);
drivers/media/i2c/ov7251.c
721
static void ov7251_regulators_disable(struct ov7251 *ov7251)
drivers/media/i2c/ov7251.c
725
ret = regulator_disable(ov7251->core_regulator);
drivers/media/i2c/ov7251.c
727
dev_err(ov7251->dev, "core regulator disable failed\n");
drivers/media/i2c/ov7251.c
729
ret = regulator_disable(ov7251->analog_regulator);
drivers/media/i2c/ov7251.c
731
dev_err(ov7251->dev, "analog regulator disable failed\n");
drivers/media/i2c/ov7251.c
733
ret = regulator_disable(ov7251->io_regulator);
drivers/media/i2c/ov7251.c
735
dev_err(ov7251->dev, "io regulator disable failed\n");
drivers/media/i2c/ov7251.c
738
static int ov7251_write_reg(struct ov7251 *ov7251, u16 reg, u8 val)
drivers/media/i2c/ov7251.c
747
ret = i2c_master_send(ov7251->i2c_client, regbuf, 3);
drivers/media/i2c/ov7251.c
749
dev_err(ov7251->dev, "%s: write reg error %d: reg=%x, val=%x\n",
drivers/media/i2c/ov7251.c
757
static int ov7251_write_seq_regs(struct ov7251 *ov7251, u16 reg, u8 *val,
drivers/media/i2c/ov7251.c
772
ret = i2c_master_send(ov7251->i2c_client, regbuf, nregbuf);
drivers/media/i2c/ov7251.c
774
dev_err(ov7251->dev,
drivers/media/i2c/ov7251.c
783
static int ov7251_read_reg(struct ov7251 *ov7251, u16 reg, u8 *val)
drivers/media/i2c/ov7251.c
791
ret = i2c_master_send(ov7251->i2c_client, regbuf, 2);
drivers/media/i2c/ov7251.c
793
dev_err(ov7251->dev, "%s: write reg error %d: reg=%x\n",
drivers/media/i2c/ov7251.c
798
ret = i2c_master_recv(ov7251->i2c_client, val, 1);
drivers/media/i2c/ov7251.c
800
dev_err(ov7251->dev, "%s: read reg error %d: reg=%x\n",
drivers/media/i2c/ov7251.c
808
static int ov7251_pll_configure(struct ov7251 *ov7251)
drivers/media/i2c/ov7251.c
813
configs = ov7251->pll_cfgs;
drivers/media/i2c/ov7251.c
815
ret = ov7251_write_reg(ov7251, OV7251_PLL1_PRE_DIV_REG,
drivers/media/i2c/ov7251.c
816
configs->pll1[ov7251->link_freq_idx]->pre_div);
drivers/media/i2c/ov7251.c
820
ret = ov7251_write_reg(ov7251, OV7251_PLL1_MULT_REG,
drivers/media/i2c/ov7251.c
821
configs->pll1[ov7251->link_freq_idx]->mult);
drivers/media/i2c/ov7251.c
824
ret = ov7251_write_reg(ov7251, OV7251_PLL1_DIVIDER_REG,
drivers/media/i2c/ov7251.c
825
configs->pll1[ov7251->link_freq_idx]->div);
drivers/media/i2c/ov7251.c
829
ret = ov7251_write_reg(ov7251, OV7251_PLL1_PIX_DIV_REG,
drivers/media/i2c/ov7251.c
830
configs->pll1[ov7251->link_freq_idx]->pix_div);
drivers/media/i2c/ov7251.c
834
ret = ov7251_write_reg(ov7251, OV7251_PLL1_MIPI_DIV_REG,
drivers/media/i2c/ov7251.c
835
configs->pll1[ov7251->link_freq_idx]->mipi_div);
drivers/media/i2c/ov7251.c
839
ret = ov7251_write_reg(ov7251, OV7251_PLL2_PRE_DIV_REG,
drivers/media/i2c/ov7251.c
844
ret = ov7251_write_reg(ov7251, OV7251_PLL2_MULT_REG,
drivers/media/i2c/ov7251.c
849
ret = ov7251_write_reg(ov7251, OV7251_PLL2_DIVIDER_REG,
drivers/media/i2c/ov7251.c
854
ret = ov7251_write_reg(ov7251, OV7251_PLL2_SYS_DIV_REG,
drivers/media/i2c/ov7251.c
859
ret = ov7251_write_reg(ov7251, OV7251_PLL2_ADC_DIV_REG,
drivers/media/i2c/ov7251.c
865
static int ov7251_set_exposure(struct ov7251 *ov7251, s32 exposure)
drivers/media/i2c/ov7251.c
875
return ov7251_write_seq_regs(ov7251, reg, val, 3);
drivers/media/i2c/ov7251.c
878
static int ov7251_set_gain(struct ov7251 *ov7251, s32 gain)
drivers/media/i2c/ov7251.c
887
return ov7251_write_seq_regs(ov7251, reg, val, 2);
drivers/media/i2c/ov7251.c
890
static int ov7251_set_register_array(struct ov7251 *ov7251,
drivers/media/i2c/ov7251.c
898
ret = ov7251_write_reg(ov7251, settings->reg, settings->val);
drivers/media/i2c/ov7251.c
910
struct ov7251 *ov7251 = to_ov7251(sd);
drivers/media/i2c/ov7251.c
914
ret = ov7251_regulators_enable(ov7251);
drivers/media/i2c/ov7251.c
918
ret = clk_prepare_enable(ov7251->xclk);
drivers/media/i2c/ov7251.c
920
dev_err(ov7251->dev, "clk prepare enable failed\n");
drivers/media/i2c/ov7251.c
921
ov7251_regulators_disable(ov7251);
drivers/media/i2c/ov7251.c
927
gpiod_set_value_cansleep(ov7251->enable_gpio, 1);
drivers/media/i2c/ov7251.c
931
DIV_ROUND_UP(ov7251->xclk_freq, 1000));
drivers/media/i2c/ov7251.c
934
ret = ov7251_set_register_array(ov7251,
drivers/media/i2c/ov7251.c
938
dev_err(ov7251->dev, "error during global init\n");
drivers/media/i2c/ov7251.c
939
gpiod_set_value_cansleep(ov7251->enable_gpio, 0);
drivers/media/i2c/ov7251.c
940
clk_disable_unprepare(ov7251->xclk);
drivers/media/i2c/ov7251.c
941
ov7251_regulators_disable(ov7251);
drivers/media/i2c/ov7251.c
952
struct ov7251 *ov7251 = to_ov7251(sd);
drivers/media/i2c/ov7251.c
954
clk_disable_unprepare(ov7251->xclk);
drivers/media/i2c/ov7251.c
955
gpiod_set_value_cansleep(ov7251->enable_gpio, 0);
drivers/media/i2c/ov7251.c
956
ov7251_regulators_disable(ov7251);
drivers/media/i2c/ov7251.c
961
static int ov7251_set_hflip(struct ov7251 *ov7251, s32 value)
drivers/media/i2c/ov7251.c
963
u8 val = ov7251->timing_format2;
drivers/media/i2c/ov7251.c
971
ret = ov7251_write_reg(ov7251, OV7251_TIMING_FORMAT2, val);
drivers/media/i2c/ov7251.c
973
ov7251->timing_format2 = val;
drivers/media/i2c/ov7251.c
978
static int ov7251_set_vflip(struct ov7251 *ov7251, s32 value)
drivers/media/i2c/ov7251.c
980
u8 val = ov7251->timing_format1;
drivers/media/i2c/ov7251.c
988
ret = ov7251_write_reg(ov7251, OV7251_TIMING_FORMAT1, val);
drivers/media/i2c/ov7251.c
990
ov7251->timing_format1 = val;
drivers/media/i2c/ov7251.c
995
static int ov7251_set_test_pattern(struct ov7251 *ov7251, s32 value)
drivers/media/i2c/ov7251.c
997
u8 val = ov7251->pre_isp_00;