drivers/media/i2c/ov7251.c
1004
ret = ov7251_write_reg(ov7251, OV7251_PRE_ISP_00, val);
drivers/media/i2c/ov7251.c
1006
ov7251->pre_isp_00 = val;
drivers/media/i2c/ov7251.c
1016
static int ov7251_vts_configure(struct ov7251 *ov7251, s32 vblank)
drivers/media/i2c/ov7251.c
1020
vts[0] = ((ov7251->current_mode->height + vblank) & 0xff00) >> 8;
drivers/media/i2c/ov7251.c
1021
vts[1] = ((ov7251->current_mode->height + vblank) & 0x00ff);
drivers/media/i2c/ov7251.c
1023
return ov7251_write_seq_regs(ov7251, OV7251_TIMING_VTS_REG, vts, 2);
drivers/media/i2c/ov7251.c
1028
struct ov7251 *ov7251 = container_of(ctrl->handler,
drivers/media/i2c/ov7251.c
1029
struct ov7251, ctrls);
drivers/media/i2c/ov7251.c
1036
exposure_max = ov7251->current_mode->height + ctrl->val -
drivers/media/i2c/ov7251.c
1038
__v4l2_ctrl_modify_range(ov7251->exposure,
drivers/media/i2c/ov7251.c
1039
ov7251->exposure->minimum,
drivers/media/i2c/ov7251.c
1041
ov7251->exposure->step,
drivers/media/i2c/ov7251.c
1042
min(ov7251->exposure->val,
drivers/media/i2c/ov7251.c
1048
if (!pm_runtime_get_if_in_use(ov7251->dev))
drivers/media/i2c/ov7251.c
1053
ret = ov7251_set_exposure(ov7251, ctrl->val);
drivers/media/i2c/ov7251.c
1056
ret = ov7251_set_gain(ov7251, ctrl->val);
drivers/media/i2c/ov7251.c
1059
ret = ov7251_set_test_pattern(ov7251, ctrl->val);
drivers/media/i2c/ov7251.c
1062
ret = ov7251_set_hflip(ov7251, ctrl->val);
drivers/media/i2c/ov7251.c
1065
ret = ov7251_set_vflip(ov7251, ctrl->val);
drivers/media/i2c/ov7251.c
1068
ret = ov7251_vts_configure(ov7251, ctrl->val);
drivers/media/i2c/ov7251.c
1075
pm_runtime_put(ov7251->dev);
drivers/media/i2c/ov7251.c
1136
__ov7251_get_pad_format(struct ov7251 *ov7251,
drivers/media/i2c/ov7251.c
1145
return &ov7251->fmt;
drivers/media/i2c/ov7251.c
1155
struct ov7251 *ov7251 = to_ov7251(sd);
drivers/media/i2c/ov7251.c
1157
mutex_lock(&ov7251->lock);
drivers/media/i2c/ov7251.c
1158
format->format = *__ov7251_get_pad_format(ov7251, sd_state,
drivers/media/i2c/ov7251.c
1161
mutex_unlock(&ov7251->lock);
drivers/media/i2c/ov7251.c
1167
__ov7251_get_pad_crop(struct ov7251 *ov7251,
drivers/media/i2c/ov7251.c
1175
return &ov7251->crop;
drivers/media/i2c/ov7251.c
1187
ov7251_find_mode_by_ival(struct ov7251 *ov7251, struct v4l2_fract *timeperframe)
drivers/media/i2c/ov7251.c
1189
const struct ov7251_mode_info *mode = ov7251->current_mode;
drivers/media/i2c/ov7251.c
1219
struct ov7251 *ov7251 = to_ov7251(sd);
drivers/media/i2c/ov7251.c
1226
mutex_lock(&ov7251->lock);
drivers/media/i2c/ov7251.c
1228
__crop = __ov7251_get_pad_crop(ov7251, sd_state, format->pad,
drivers/media/i2c/ov7251.c
1240
ret = __v4l2_ctrl_modify_range(ov7251->exposure,
drivers/media/i2c/ov7251.c
1246
ret = __v4l2_ctrl_s_ctrl(ov7251->exposure,
drivers/media/i2c/ov7251.c
1251
ret = __v4l2_ctrl_s_ctrl(ov7251->gain, 16);
drivers/media/i2c/ov7251.c
1257
ret = __v4l2_ctrl_modify_range(ov7251->vblank,
drivers/media/i2c/ov7251.c
1263
ov7251->current_mode = new_mode;
drivers/media/i2c/ov7251.c
1266
__format = __ov7251_get_pad_format(ov7251, sd_state, format->pad,
drivers/media/i2c/ov7251.c
1281
mutex_unlock(&ov7251->lock);
drivers/media/i2c/ov7251.c
1307
struct ov7251 *ov7251 = to_ov7251(sd);
drivers/media/i2c/ov7251.c
1312
mutex_lock(&ov7251->lock);
drivers/media/i2c/ov7251.c
1313
sel->r = *__ov7251_get_pad_crop(ov7251, sd_state, sel->pad,
drivers/media/i2c/ov7251.c
1315
mutex_unlock(&ov7251->lock);
drivers/media/i2c/ov7251.c
1338
struct ov7251 *ov7251 = to_ov7251(subdev);
drivers/media/i2c/ov7251.c
1341
mutex_lock(&ov7251->lock);
drivers/media/i2c/ov7251.c
1344
ret = pm_runtime_resume_and_get(ov7251->dev);
drivers/media/i2c/ov7251.c
1346
mutex_unlock(&ov7251->lock);
drivers/media/i2c/ov7251.c
1350
ret = ov7251_pll_configure(ov7251);
drivers/media/i2c/ov7251.c
1352
dev_err(ov7251->dev, "error configuring PLLs\n");
drivers/media/i2c/ov7251.c
1356
ret = ov7251_set_register_array(ov7251,
drivers/media/i2c/ov7251.c
1357
ov7251->current_mode->data,
drivers/media/i2c/ov7251.c
1358
ov7251->current_mode->data_size);
drivers/media/i2c/ov7251.c
1360
dev_err(ov7251->dev, "could not set mode %dx%d\n",
drivers/media/i2c/ov7251.c
1361
ov7251->current_mode->width,
drivers/media/i2c/ov7251.c
1362
ov7251->current_mode->height);
drivers/media/i2c/ov7251.c
1365
ret = __v4l2_ctrl_handler_setup(&ov7251->ctrls);
drivers/media/i2c/ov7251.c
1367
dev_err(ov7251->dev, "could not sync v4l2 controls\n");
drivers/media/i2c/ov7251.c
1370
ret = ov7251_write_reg(ov7251, OV7251_SC_MODE_SELECT,
drivers/media/i2c/ov7251.c
1375
ret = ov7251_write_reg(ov7251, OV7251_SC_MODE_SELECT,
drivers/media/i2c/ov7251.c
1377
pm_runtime_put(ov7251->dev);
drivers/media/i2c/ov7251.c
1380
mutex_unlock(&ov7251->lock);
drivers/media/i2c/ov7251.c
1384
pm_runtime_put(ov7251->dev);
drivers/media/i2c/ov7251.c
1385
mutex_unlock(&ov7251->lock);
drivers/media/i2c/ov7251.c
1393
struct ov7251 *ov7251 = to_ov7251(subdev);
drivers/media/i2c/ov7251.c
1402
mutex_lock(&ov7251->lock);
drivers/media/i2c/ov7251.c
1403
fi->interval = ov7251->current_mode->timeperframe;
drivers/media/i2c/ov7251.c
1404
mutex_unlock(&ov7251->lock);
drivers/media/i2c/ov7251.c
1413
struct ov7251 *ov7251 = to_ov7251(subdev);
drivers/media/i2c/ov7251.c
1424
mutex_lock(&ov7251->lock);
drivers/media/i2c/ov7251.c
1425
new_mode = ov7251_find_mode_by_ival(ov7251, &fi->interval);
drivers/media/i2c/ov7251.c
1427
if (new_mode != ov7251->current_mode) {
drivers/media/i2c/ov7251.c
1428
ret = __v4l2_ctrl_modify_range(ov7251->exposure,
drivers/media/i2c/ov7251.c
1434
ret = __v4l2_ctrl_s_ctrl(ov7251->exposure,
drivers/media/i2c/ov7251.c
1439
ret = __v4l2_ctrl_s_ctrl(ov7251->gain, 16);
drivers/media/i2c/ov7251.c
1443
ov7251->current_mode = new_mode;
drivers/media/i2c/ov7251.c
1446
fi->interval = ov7251->current_mode->timeperframe;
drivers/media/i2c/ov7251.c
1449
mutex_unlock(&ov7251->lock);
drivers/media/i2c/ov7251.c
1478
static int ov7251_check_hwcfg(struct ov7251 *ov7251)
drivers/media/i2c/ov7251.c
1480
struct fwnode_handle *fwnode = dev_fwnode(ov7251->dev);
drivers/media/i2c/ov7251.c
1494
return dev_err_probe(ov7251->dev, -EPROBE_DEFER,
drivers/media/i2c/ov7251.c
1500
return dev_err_probe(ov7251->dev, ret,
drivers/media/i2c/ov7251.c
1504
ret = dev_err_probe(ov7251->dev, -EINVAL,
drivers/media/i2c/ov7251.c
1519
ret = dev_err_probe(ov7251->dev, -EINVAL,
drivers/media/i2c/ov7251.c
1524
ov7251->link_freq_idx = i;
drivers/media/i2c/ov7251.c
1532
static int ov7251_detect_chip(struct ov7251 *ov7251)
drivers/media/i2c/ov7251.c
1537
ret = ov7251_read_reg(ov7251, OV7251_CHIP_ID_HIGH, &chip_id_high);
drivers/media/i2c/ov7251.c
1539
return dev_err_probe(ov7251->dev, -ENODEV,
drivers/media/i2c/ov7251.c
1542
ret = ov7251_read_reg(ov7251, OV7251_CHIP_ID_LOW, &chip_id_low);
drivers/media/i2c/ov7251.c
1544
return dev_err_probe(ov7251->dev, -ENODEV,
drivers/media/i2c/ov7251.c
1547
ret = ov7251_read_reg(ov7251, OV7251_SC_GP_IO_IN1, &chip_rev);
drivers/media/i2c/ov7251.c
1549
return dev_err_probe(ov7251->dev, -ENODEV,
drivers/media/i2c/ov7251.c
1553
dev_info(ov7251->dev,
drivers/media/i2c/ov7251.c
1560
ov7251->i2c_client->addr);
drivers/media/i2c/ov7251.c
1565
static int ov7251_init_ctrls(struct ov7251 *ov7251)
drivers/media/i2c/ov7251.c
1571
v4l2_ctrl_handler_init(&ov7251->ctrls, 7);
drivers/media/i2c/ov7251.c
1572
ov7251->ctrls.lock = &ov7251->lock;
drivers/media/i2c/ov7251.c
1574
v4l2_ctrl_new_std(&ov7251->ctrls, &ov7251_ctrl_ops,
drivers/media/i2c/ov7251.c
1576
v4l2_ctrl_new_std(&ov7251->ctrls, &ov7251_ctrl_ops,
drivers/media/i2c/ov7251.c
1578
ov7251->exposure = v4l2_ctrl_new_std(&ov7251->ctrls, &ov7251_ctrl_ops,
drivers/media/i2c/ov7251.c
1580
ov7251->gain = v4l2_ctrl_new_std(&ov7251->ctrls, &ov7251_ctrl_ops,
drivers/media/i2c/ov7251.c
1582
v4l2_ctrl_new_std_menu_items(&ov7251->ctrls, &ov7251_ctrl_ops,
drivers/media/i2c/ov7251.c
1587
pixel_rate = pixel_rates[ov7251->link_freq_idx];
drivers/media/i2c/ov7251.c
1588
ov7251->pixel_clock = v4l2_ctrl_new_std(&ov7251->ctrls,
drivers/media/i2c/ov7251.c
1593
ov7251->link_freq = v4l2_ctrl_new_int_menu(&ov7251->ctrls,
drivers/media/i2c/ov7251.c
1597
ov7251->link_freq_idx,
drivers/media/i2c/ov7251.c
1599
if (ov7251->link_freq)
drivers/media/i2c/ov7251.c
1600
ov7251->link_freq->flags |= V4L2_CTRL_FLAG_READ_ONLY;
drivers/media/i2c/ov7251.c
1601
if (ov7251->pixel_clock)
drivers/media/i2c/ov7251.c
1602
ov7251->pixel_clock->flags |= V4L2_CTRL_FLAG_READ_ONLY;
drivers/media/i2c/ov7251.c
1604
hblank = OV7251_FIXED_PPL - ov7251->current_mode->width;
drivers/media/i2c/ov7251.c
1605
ov7251->hblank = v4l2_ctrl_new_std(&ov7251->ctrls, &ov7251_ctrl_ops,
drivers/media/i2c/ov7251.c
1608
if (ov7251->hblank)
drivers/media/i2c/ov7251.c
1609
ov7251->hblank->flags |= V4L2_CTRL_FLAG_READ_ONLY;
drivers/media/i2c/ov7251.c
1611
vblank_max = OV7251_TIMING_MAX_VTS - ov7251->current_mode->height;
drivers/media/i2c/ov7251.c
1612
vblank_def = ov7251->current_mode->vts - ov7251->current_mode->height;
drivers/media/i2c/ov7251.c
1613
ov7251->vblank = v4l2_ctrl_new_std(&ov7251->ctrls, &ov7251_ctrl_ops,
drivers/media/i2c/ov7251.c
1618
ov7251->sd.ctrl_handler = &ov7251->ctrls;
drivers/media/i2c/ov7251.c
1620
if (ov7251->ctrls.error) {
drivers/media/i2c/ov7251.c
1621
v4l2_ctrl_handler_free(&ov7251->ctrls);
drivers/media/i2c/ov7251.c
1622
return ov7251->ctrls.error;
drivers/media/i2c/ov7251.c
163
static inline struct ov7251 *to_ov7251(struct v4l2_subdev *sd)
drivers/media/i2c/ov7251.c
1631
struct ov7251 *ov7251;
drivers/media/i2c/ov7251.c
1635
ov7251 = devm_kzalloc(dev, sizeof(struct ov7251), GFP_KERNEL);
drivers/media/i2c/ov7251.c
1636
if (!ov7251)
drivers/media/i2c/ov7251.c
1639
ov7251->i2c_client = client;
drivers/media/i2c/ov7251.c
1640
ov7251->dev = dev;
drivers/media/i2c/ov7251.c
1642
ret = ov7251_check_hwcfg(ov7251);
drivers/media/i2c/ov7251.c
1647
ov7251->xclk = devm_v4l2_sensor_clk_get(dev, NULL);
drivers/media/i2c/ov7251.c
1648
if (IS_ERR(ov7251->xclk))
drivers/media/i2c/ov7251.c
1649
return dev_err_probe(dev, PTR_ERR(ov7251->xclk),
drivers/media/i2c/ov7251.c
165
return container_of(sd, struct ov7251, sd);
drivers/media/i2c/ov7251.c
1652
ov7251->xclk_freq = clk_get_rate(ov7251->xclk);
drivers/media/i2c/ov7251.c
1655
if (ov7251->xclk_freq == supported_xclk_rates[i])
drivers/media/i2c/ov7251.c
1661
ov7251->xclk_freq);
drivers/media/i2c/ov7251.c
1663
ov7251->pll_cfgs = ov7251_pll_cfgs[i];
drivers/media/i2c/ov7251.c
1665
ov7251->io_regulator = devm_regulator_get(dev, "vdddo");
drivers/media/i2c/ov7251.c
1666
if (IS_ERR(ov7251->io_regulator)) {
drivers/media/i2c/ov7251.c
1668
return PTR_ERR(ov7251->io_regulator);
drivers/media/i2c/ov7251.c
1671
ov7251->core_regulator = devm_regulator_get(dev, "vddd");
drivers/media/i2c/ov7251.c
1672
if (IS_ERR(ov7251->core_regulator)) {
drivers/media/i2c/ov7251.c
1674
return PTR_ERR(ov7251->core_regulator);
drivers/media/i2c/ov7251.c
1677
ov7251->analog_regulator = devm_regulator_get(dev, "vdda");
drivers/media/i2c/ov7251.c
1678
if (IS_ERR(ov7251->analog_regulator)) {
drivers/media/i2c/ov7251.c
1680
return PTR_ERR(ov7251->analog_regulator);
drivers/media/i2c/ov7251.c
1683
ov7251->enable_gpio = devm_gpiod_get(dev, "enable", GPIOD_OUT_LOW);
drivers/media/i2c/ov7251.c
1684
if (IS_ERR(ov7251->enable_gpio)) {
drivers/media/i2c/ov7251.c
1686
return PTR_ERR(ov7251->enable_gpio);
drivers/media/i2c/ov7251.c
1689
mutex_init(&ov7251->lock);
drivers/media/i2c/ov7251.c
1691
ov7251->current_mode = &ov7251_mode_info_data[0];
drivers/media/i2c/ov7251.c
1692
ret = ov7251_init_ctrls(ov7251);
drivers/media/i2c/ov7251.c
1698
v4l2_i2c_subdev_init(&ov7251->sd, client, &ov7251_subdev_ops);
drivers/media/i2c/ov7251.c
1699
ov7251->sd.internal_ops = &ov7251_internal_ops;
drivers/media/i2c/ov7251.c
1700
ov7251->sd.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
drivers/media/i2c/ov7251.c
1701
ov7251->pad.flags = MEDIA_PAD_FL_SOURCE;
drivers/media/i2c/ov7251.c
1702
ov7251->sd.dev = &client->dev;
drivers/media/i2c/ov7251.c
1703
ov7251->sd.entity.function = MEDIA_ENT_F_CAM_SENSOR;
drivers/media/i2c/ov7251.c
1705
ret = media_entity_pads_init(&ov7251->sd.entity, 1, &ov7251->pad);
drivers/media/i2c/ov7251.c
1711
ret = ov7251_set_power_on(ov7251->dev);
drivers/media/i2c/ov7251.c
1715
ret = ov7251_detect_chip(ov7251);
drivers/media/i2c/ov7251.c
1723
ret = ov7251_read_reg(ov7251, OV7251_PRE_ISP_00,
drivers/media/i2c/ov7251.c
1724
&ov7251->pre_isp_00);
drivers/media/i2c/ov7251.c
1731
ret = ov7251_read_reg(ov7251, OV7251_TIMING_FORMAT1,
drivers/media/i2c/ov7251.c
1732
&ov7251->timing_format1);
drivers/media/i2c/ov7251.c
1739
ret = ov7251_read_reg(ov7251, OV7251_TIMING_FORMAT2,
drivers/media/i2c/ov7251.c
1740
&ov7251->timing_format2);
drivers/media/i2c/ov7251.c
1751
ret = v4l2_async_register_subdev(&ov7251->sd);
drivers/media/i2c/ov7251.c
1757
ov7251_init_state(&ov7251->sd, NULL);
drivers/media/i2c/ov7251.c
1762
pm_runtime_disable(ov7251->dev);
drivers/media/i2c/ov7251.c
1763
pm_runtime_put_noidle(ov7251->dev);
drivers/media/i2c/ov7251.c
1765
ov7251_set_power_off(ov7251->dev);
drivers/media/i2c/ov7251.c
1767
media_entity_cleanup(&ov7251->sd.entity);
drivers/media/i2c/ov7251.c
1769
v4l2_ctrl_handler_free(&ov7251->ctrls);
drivers/media/i2c/ov7251.c
1771
mutex_destroy(&ov7251->lock);
drivers/media/i2c/ov7251.c
1779
struct ov7251 *ov7251 = to_ov7251(sd);
drivers/media/i2c/ov7251.c
1781
v4l2_async_unregister_subdev(&ov7251->sd);
drivers/media/i2c/ov7251.c
1782
media_entity_cleanup(&ov7251->sd.entity);
drivers/media/i2c/ov7251.c
1783
v4l2_ctrl_handler_free(&ov7251->ctrls);
drivers/media/i2c/ov7251.c
1784
mutex_destroy(&ov7251->lock);
drivers/media/i2c/ov7251.c
1786
pm_runtime_disable(ov7251->dev);
drivers/media/i2c/ov7251.c
1787
if (!pm_runtime_status_suspended(ov7251->dev))
drivers/media/i2c/ov7251.c
1788
ov7251_set_power_off(ov7251->dev);
drivers/media/i2c/ov7251.c
1789
pm_runtime_set_suspended(ov7251->dev);
drivers/media/i2c/ov7251.c
683
static int ov7251_regulators_enable(struct ov7251 *ov7251)
drivers/media/i2c/ov7251.c
691
ret = regulator_enable(ov7251->io_regulator);
drivers/media/i2c/ov7251.c
693
dev_err(ov7251->dev, "set io voltage failed\n");
drivers/media/i2c/ov7251.c
697
ret = regulator_enable(ov7251->analog_regulator);
drivers/media/i2c/ov7251.c
699
dev_err(ov7251->dev, "set analog voltage failed\n");
drivers/media/i2c/ov7251.c
703
ret = regulator_enable(ov7251->core_regulator);
drivers/media/i2c/ov7251.c
705
dev_err(ov7251->dev, "set core voltage failed\n");
drivers/media/i2c/ov7251.c
712
regulator_disable(ov7251->analog_regulator);
drivers/media/i2c/ov7251.c
715
regulator_disable(ov7251->io_regulator);
drivers/media/i2c/ov7251.c
720
static void ov7251_regulators_disable(struct ov7251 *ov7251)
drivers/media/i2c/ov7251.c
724
ret = regulator_disable(ov7251->core_regulator);
drivers/media/i2c/ov7251.c
726
dev_err(ov7251->dev, "core regulator disable failed\n");
drivers/media/i2c/ov7251.c
728
ret = regulator_disable(ov7251->analog_regulator);
drivers/media/i2c/ov7251.c
730
dev_err(ov7251->dev, "analog regulator disable failed\n");
drivers/media/i2c/ov7251.c
732
ret = regulator_disable(ov7251->io_regulator);
drivers/media/i2c/ov7251.c
734
dev_err(ov7251->dev, "io regulator disable failed\n");
drivers/media/i2c/ov7251.c
737
static int ov7251_write_reg(struct ov7251 *ov7251, u16 reg, u8 val)
drivers/media/i2c/ov7251.c
746
ret = i2c_master_send(ov7251->i2c_client, regbuf, 3);
drivers/media/i2c/ov7251.c
748
dev_err(ov7251->dev, "%s: write reg error %d: reg=%x, val=%x\n",
drivers/media/i2c/ov7251.c
756
static int ov7251_write_seq_regs(struct ov7251 *ov7251, u16 reg, u8 *val,
drivers/media/i2c/ov7251.c
771
ret = i2c_master_send(ov7251->i2c_client, regbuf, nregbuf);
drivers/media/i2c/ov7251.c
773
dev_err(ov7251->dev,
drivers/media/i2c/ov7251.c
782
static int ov7251_read_reg(struct ov7251 *ov7251, u16 reg, u8 *val)
drivers/media/i2c/ov7251.c
790
ret = i2c_master_send(ov7251->i2c_client, regbuf, 2);
drivers/media/i2c/ov7251.c
792
dev_err(ov7251->dev, "%s: write reg error %d: reg=%x\n",
drivers/media/i2c/ov7251.c
797
ret = i2c_master_recv(ov7251->i2c_client, val, 1);
drivers/media/i2c/ov7251.c
799
dev_err(ov7251->dev, "%s: read reg error %d: reg=%x\n",
drivers/media/i2c/ov7251.c
807
static int ov7251_pll_configure(struct ov7251 *ov7251)
drivers/media/i2c/ov7251.c
812
configs = ov7251->pll_cfgs;
drivers/media/i2c/ov7251.c
814
ret = ov7251_write_reg(ov7251, OV7251_PLL1_PRE_DIV_REG,
drivers/media/i2c/ov7251.c
815
configs->pll1[ov7251->link_freq_idx]->pre_div);
drivers/media/i2c/ov7251.c
819
ret = ov7251_write_reg(ov7251, OV7251_PLL1_MULT_REG,
drivers/media/i2c/ov7251.c
820
configs->pll1[ov7251->link_freq_idx]->mult);
drivers/media/i2c/ov7251.c
823
ret = ov7251_write_reg(ov7251, OV7251_PLL1_DIVIDER_REG,
drivers/media/i2c/ov7251.c
824
configs->pll1[ov7251->link_freq_idx]->div);
drivers/media/i2c/ov7251.c
828
ret = ov7251_write_reg(ov7251, OV7251_PLL1_PIX_DIV_REG,
drivers/media/i2c/ov7251.c
829
configs->pll1[ov7251->link_freq_idx]->pix_div);
drivers/media/i2c/ov7251.c
833
ret = ov7251_write_reg(ov7251, OV7251_PLL1_MIPI_DIV_REG,
drivers/media/i2c/ov7251.c
834
configs->pll1[ov7251->link_freq_idx]->mipi_div);
drivers/media/i2c/ov7251.c
838
ret = ov7251_write_reg(ov7251, OV7251_PLL2_PRE_DIV_REG,
drivers/media/i2c/ov7251.c
843
ret = ov7251_write_reg(ov7251, OV7251_PLL2_MULT_REG,
drivers/media/i2c/ov7251.c
848
ret = ov7251_write_reg(ov7251, OV7251_PLL2_DIVIDER_REG,
drivers/media/i2c/ov7251.c
853
ret = ov7251_write_reg(ov7251, OV7251_PLL2_SYS_DIV_REG,
drivers/media/i2c/ov7251.c
858
ret = ov7251_write_reg(ov7251, OV7251_PLL2_ADC_DIV_REG,
drivers/media/i2c/ov7251.c
864
static int ov7251_set_exposure(struct ov7251 *ov7251, s32 exposure)
drivers/media/i2c/ov7251.c
874
return ov7251_write_seq_regs(ov7251, reg, val, 3);
drivers/media/i2c/ov7251.c
877
static int ov7251_set_gain(struct ov7251 *ov7251, s32 gain)
drivers/media/i2c/ov7251.c
886
return ov7251_write_seq_regs(ov7251, reg, val, 2);
drivers/media/i2c/ov7251.c
889
static int ov7251_set_register_array(struct ov7251 *ov7251,
drivers/media/i2c/ov7251.c
897
ret = ov7251_write_reg(ov7251, settings->reg, settings->val);
drivers/media/i2c/ov7251.c
909
struct ov7251 *ov7251 = to_ov7251(sd);
drivers/media/i2c/ov7251.c
913
ret = ov7251_regulators_enable(ov7251);
drivers/media/i2c/ov7251.c
917
ret = clk_prepare_enable(ov7251->xclk);
drivers/media/i2c/ov7251.c
919
dev_err(ov7251->dev, "clk prepare enable failed\n");
drivers/media/i2c/ov7251.c
920
ov7251_regulators_disable(ov7251);
drivers/media/i2c/ov7251.c
926
gpiod_set_value_cansleep(ov7251->enable_gpio, 1);
drivers/media/i2c/ov7251.c
930
DIV_ROUND_UP(ov7251->xclk_freq, 1000));
drivers/media/i2c/ov7251.c
933
ret = ov7251_set_register_array(ov7251,
drivers/media/i2c/ov7251.c
937
dev_err(ov7251->dev, "error during global init\n");
drivers/media/i2c/ov7251.c
938
gpiod_set_value_cansleep(ov7251->enable_gpio, 0);
drivers/media/i2c/ov7251.c
939
clk_disable_unprepare(ov7251->xclk);
drivers/media/i2c/ov7251.c
940
ov7251_regulators_disable(ov7251);
drivers/media/i2c/ov7251.c
951
struct ov7251 *ov7251 = to_ov7251(sd);
drivers/media/i2c/ov7251.c
953
clk_disable_unprepare(ov7251->xclk);
drivers/media/i2c/ov7251.c
954
gpiod_set_value_cansleep(ov7251->enable_gpio, 0);
drivers/media/i2c/ov7251.c
955
ov7251_regulators_disable(ov7251);
drivers/media/i2c/ov7251.c
960
static int ov7251_set_hflip(struct ov7251 *ov7251, s32 value)
drivers/media/i2c/ov7251.c
962
u8 val = ov7251->timing_format2;
drivers/media/i2c/ov7251.c
970
ret = ov7251_write_reg(ov7251, OV7251_TIMING_FORMAT2, val);
drivers/media/i2c/ov7251.c
972
ov7251->timing_format2 = val;
drivers/media/i2c/ov7251.c
977
static int ov7251_set_vflip(struct ov7251 *ov7251, s32 value)
drivers/media/i2c/ov7251.c
979
u8 val = ov7251->timing_format1;
drivers/media/i2c/ov7251.c
987
ret = ov7251_write_reg(ov7251, OV7251_TIMING_FORMAT1, val);
drivers/media/i2c/ov7251.c
989
ov7251->timing_format1 = val;
drivers/media/i2c/ov7251.c
994
static int ov7251_set_test_pattern(struct ov7251 *ov7251, s32 value)
drivers/media/i2c/ov7251.c
996
u8 val = ov7251->pre_isp_00;