Lines Matching refs:ov02k10
137 struct ov02k10 { struct
179 #define to_ov02k10(sd) container_of(sd, struct ov02k10, subdev) argument
679 ov02k10_find_best_fit(struct ov02k10 *ov02k10, struct v4l2_subdev_format *fmt) in ov02k10_find_best_fit() argument
687 for (i = 0; i < ov02k10->cfg_num; i++) { in ov02k10_find_best_fit()
703 struct ov02k10 *ov02k10 = to_ov02k10(sd); in ov02k10_set_fmt() local
709 mutex_lock(&ov02k10->mutex); in ov02k10_set_fmt()
711 mode = ov02k10_find_best_fit(ov02k10, fmt); in ov02k10_set_fmt()
720 mutex_unlock(&ov02k10->mutex); in ov02k10_set_fmt()
724 ov02k10->cur_mode = mode; in ov02k10_set_fmt()
726 __v4l2_ctrl_modify_range(ov02k10->hblank, h_blank, in ov02k10_set_fmt()
729 __v4l2_ctrl_modify_range(ov02k10->vblank, vblank_def, in ov02k10_set_fmt()
739 __v4l2_ctrl_s_ctrl_int64(ov02k10->pixel_rate, in ov02k10_set_fmt()
741 __v4l2_ctrl_s_ctrl(ov02k10->link_freq, in ov02k10_set_fmt()
745 mutex_unlock(&ov02k10->mutex); in ov02k10_set_fmt()
754 struct ov02k10 *ov02k10 = to_ov02k10(sd); in ov02k10_get_fmt() local
755 const struct ov02k10_mode *mode = ov02k10->cur_mode; in ov02k10_get_fmt()
757 mutex_lock(&ov02k10->mutex); in ov02k10_get_fmt()
762 mutex_unlock(&ov02k10->mutex); in ov02k10_get_fmt()
775 mutex_unlock(&ov02k10->mutex); in ov02k10_get_fmt()
784 struct ov02k10 *ov02k10 = to_ov02k10(sd); in ov02k10_enum_mbus_code() local
788 code->code = ov02k10->cur_mode->bus_fmt; in ov02k10_enum_mbus_code()
797 struct ov02k10 *ov02k10 = to_ov02k10(sd); in ov02k10_enum_frame_sizes() local
799 if (fse->index >= ov02k10->cfg_num) in ov02k10_enum_frame_sizes()
813 static int ov02k10_enable_test_pattern(struct ov02k10 *ov02k10, u32 pattern) in ov02k10_enable_test_pattern() argument
822 return ov02k10_write_reg(ov02k10->client, OV02K10_REG_TEST_PATTERN, in ov02k10_enable_test_pattern()
829 struct ov02k10 *ov02k10 = to_ov02k10(sd); in ov02k10_g_frame_interval() local
830 const struct ov02k10_mode *mode = ov02k10->cur_mode; in ov02k10_g_frame_interval()
840 struct ov02k10 *ov02k10 = to_ov02k10(sd); in ov02k10_g_mbus_config() local
841 const struct ov02k10_mode *mode = ov02k10->cur_mode; in ov02k10_g_mbus_config()
860 static void ov02k10_get_module_inf(struct ov02k10 *ov02k10, in ov02k10_get_module_inf() argument
865 strlcpy(inf->base.module, ov02k10->module_name, in ov02k10_get_module_inf()
867 strlcpy(inf->base.lens, ov02k10->len_name, sizeof(inf->base.lens)); in ov02k10_get_module_inf()
871 static int ov02k10_set_hdrae(struct ov02k10 *ov02k10, in ov02k10_set_hdrae() argument
885 if (!ov02k10->has_init_exp && !ov02k10->streaming) { in ov02k10_set_hdrae()
886 ov02k10->init_hdrae_exp = *ae; in ov02k10_set_hdrae()
887 ov02k10->has_init_exp = true; in ov02k10_set_hdrae()
888 dev_dbg(&ov02k10->client->dev, "ov02k10 don't stream, record exp for hdr!\n"); in ov02k10_set_hdrae()
900 dev_dbg(&ov02k10->client->dev, in ov02k10_set_hdrae()
905 if (ov02k10->cur_mode->hdr_mode == HDR_X2) { in ov02k10_set_hdrae()
914 ret = ov02k10_read_reg(ov02k10->client, OV02K10_REG_HCG_SWITCH, in ov02k10_set_hdrae()
917 if (ov02k10->long_hcg && l_cg_mode == GAIN_MODE_LCG) { in ov02k10_set_hdrae()
919 ov02k10->long_hcg = false; in ov02k10_set_hdrae()
921 } else if (!ov02k10->long_hcg && l_cg_mode == GAIN_MODE_HCG) { in ov02k10_set_hdrae()
923 ov02k10->long_hcg = true; in ov02k10_set_hdrae()
926 if (ov02k10->middle_hcg && m_cg_mode == GAIN_MODE_LCG) { in ov02k10_set_hdrae()
928 ov02k10->middle_hcg = false; in ov02k10_set_hdrae()
930 } else if (!ov02k10->middle_hcg && m_cg_mode == GAIN_MODE_HCG) { in ov02k10_set_hdrae()
932 ov02k10->middle_hcg = true; in ov02k10_set_hdrae()
944 ret |= ov02k10_write_reg(ov02k10->client, in ov02k10_set_hdrae()
948 ret |= ov02k10_write_reg(ov02k10->client, in ov02k10_set_hdrae()
952 ret |= ov02k10_write_reg(ov02k10->client, in ov02k10_set_hdrae()
956 ret |= ov02k10_write_reg(ov02k10->client, in ov02k10_set_hdrae()
960 ret |= ov02k10_write_reg(ov02k10->client, in ov02k10_set_hdrae()
964 ret |= ov02k10_write_reg(ov02k10->client, in ov02k10_set_hdrae()
969 ret |= ov02k10_write_reg(ov02k10->client, in ov02k10_set_hdrae()
973 ret |= ov02k10_write_reg(ov02k10->client, in ov02k10_set_hdrae()
977 ret |= ov02k10_write_reg(ov02k10->client, in ov02k10_set_hdrae()
981 ret |= ov02k10_write_reg(ov02k10->client, in ov02k10_set_hdrae()
989 static int ov02k10_set_conversion_gain(struct ov02k10 *ov02k10, u32 *cg) in ov02k10_set_conversion_gain() argument
992 struct i2c_client *client = ov02k10->client; in ov02k10_set_conversion_gain()
997 dev_dbg(&ov02k10->client->dev, "set conversion gain %d\n", cur_cg); in ov02k10_set_conversion_gain()
998 mutex_lock(&ov02k10->mutex); in ov02k10_set_conversion_gain()
1003 if (ov02k10->long_hcg && cur_cg == GAIN_MODE_LCG) { in ov02k10_set_conversion_gain()
1006 ov02k10->long_hcg = false; in ov02k10_set_conversion_gain()
1007 } else if (!ov02k10->long_hcg && cur_cg == GAIN_MODE_HCG) { in ov02k10_set_conversion_gain()
1010 ov02k10->long_hcg = true; in ov02k10_set_conversion_gain()
1030 mutex_unlock(&ov02k10->mutex); in ov02k10_set_conversion_gain()
1045 struct ov02k10 *ov02k10 = to_ov02k10(sd); in set_conversion_gain_status() local
1051 ov02k10_set_conversion_gain(ov02k10, &status); in set_conversion_gain_status()
1079 struct ov02k10 *ov02k10 = to_ov02k10(sd); in ov02k10_ioctl() local
1089 return ov02k10_set_hdrae(ov02k10, arg); in ov02k10_ioctl()
1092 w = ov02k10->cur_mode->width; in ov02k10_ioctl()
1093 h = ov02k10->cur_mode->height; in ov02k10_ioctl()
1094 for (i = 0; i < ov02k10->cfg_num; i++) { in ov02k10_ioctl()
1098 ov02k10->cur_mode = &supported_modes[i]; in ov02k10_ioctl()
1102 if (i == ov02k10->cfg_num) { in ov02k10_ioctl()
1103 dev_err(&ov02k10->client->dev, in ov02k10_ioctl()
1108 w = ov02k10->cur_mode->hts_def - ov02k10->cur_mode->width; in ov02k10_ioctl()
1109 h = ov02k10->cur_mode->vts_def - ov02k10->cur_mode->height; in ov02k10_ioctl()
1110 __v4l2_ctrl_modify_range(ov02k10->hblank, w, w, 1, w); in ov02k10_ioctl()
1111 __v4l2_ctrl_modify_range(ov02k10->vblank, h, in ov02k10_ioctl()
1112 OV02K10_VTS_MAX - ov02k10->cur_mode->height, in ov02k10_ioctl()
1114 if (ov02k10->cur_mode->hdr_mode == NO_HDR) { in ov02k10_ioctl()
1117 } else if (ov02k10->cur_mode->hdr_mode == HDR_X2) { in ov02k10_ioctl()
1122 __v4l2_ctrl_s_ctrl_int64(ov02k10->pixel_rate, in ov02k10_ioctl()
1124 __v4l2_ctrl_s_ctrl(ov02k10->link_freq, in ov02k10_ioctl()
1127 dev_info(&ov02k10->client->dev, in ov02k10_ioctl()
1129 ov02k10->cur_mode->hdr_mode); in ov02k10_ioctl()
1133 ov02k10_get_module_inf(ov02k10, (struct rkmodule_inf *)arg); in ov02k10_ioctl()
1138 hdr_cfg->hdr_mode = ov02k10->cur_mode->hdr_mode; in ov02k10_ioctl()
1141 ret = ov02k10_set_conversion_gain(ov02k10, (u32 *)arg); in ov02k10_ioctl()
1148 ret = ov02k10_write_reg(ov02k10->client, OV02K10_REG_CTRL_MODE, in ov02k10_ioctl()
1151 ret = ov02k10_write_reg(ov02k10->client, OV02K10_REG_CTRL_MODE, in ov02k10_ioctl()
1255 static int ov02k10_init_conversion_gain(struct ov02k10 *ov02k10) in ov02k10_init_conversion_gain() argument
1258 struct i2c_client *client = ov02k10->client; in ov02k10_init_conversion_gain()
1270 ov02k10->long_hcg = false; in ov02k10_init_conversion_gain()
1271 ov02k10->middle_hcg = false; in ov02k10_init_conversion_gain()
1272 ov02k10->short_hcg = false; in ov02k10_init_conversion_gain()
1276 static int __ov02k10_start_stream(struct ov02k10 *ov02k10) in __ov02k10_start_stream() argument
1280 ret = ov02k10_write_array(ov02k10->client, ov02k10_global_regs); in __ov02k10_start_stream()
1282 dev_err(&ov02k10->client->dev, in __ov02k10_start_stream()
1286 ret = ov02k10_write_array(ov02k10->client, ov02k10->cur_mode->reg_list); in __ov02k10_start_stream()
1289 ret = ov02k10_init_conversion_gain(ov02k10); in __ov02k10_start_stream()
1293 ret = __v4l2_ctrl_handler_setup(&ov02k10->ctrl_handler); in __ov02k10_start_stream()
1296 if (ov02k10->has_init_exp && ov02k10->cur_mode->hdr_mode != NO_HDR) { in __ov02k10_start_stream()
1297 ret = ov02k10_ioctl(&ov02k10->subdev, in __ov02k10_start_stream()
1299 &ov02k10->init_hdrae_exp); in __ov02k10_start_stream()
1301 dev_err(&ov02k10->client->dev, in __ov02k10_start_stream()
1306 return ov02k10_write_reg(ov02k10->client, OV02K10_REG_CTRL_MODE, in __ov02k10_start_stream()
1310 static int __ov02k10_stop_stream(struct ov02k10 *ov02k10) in __ov02k10_stop_stream() argument
1312 ov02k10->has_init_exp = false; in __ov02k10_stop_stream()
1313 return ov02k10_write_reg(ov02k10->client, OV02K10_REG_CTRL_MODE, in __ov02k10_stop_stream()
1319 struct ov02k10 *ov02k10 = to_ov02k10(sd); in ov02k10_s_stream() local
1320 struct i2c_client *client = ov02k10->client; in ov02k10_s_stream()
1323 mutex_lock(&ov02k10->mutex); in ov02k10_s_stream()
1325 if (on == ov02k10->streaming) in ov02k10_s_stream()
1335 ret = __ov02k10_start_stream(ov02k10); in ov02k10_s_stream()
1342 __ov02k10_stop_stream(ov02k10); in ov02k10_s_stream()
1346 ov02k10->streaming = on; in ov02k10_s_stream()
1349 mutex_unlock(&ov02k10->mutex); in ov02k10_s_stream()
1356 struct ov02k10 *ov02k10 = to_ov02k10(sd); in ov02k10_s_power() local
1357 struct i2c_client *client = ov02k10->client; in ov02k10_s_power()
1360 mutex_lock(&ov02k10->mutex); in ov02k10_s_power()
1363 if (ov02k10->power_on == !!on) in ov02k10_s_power()
1373 ret |= ov02k10_write_reg(ov02k10->client, in ov02k10_s_power()
1379 ov02k10->power_on = true; in ov02k10_s_power()
1382 ov02k10->power_on = false; in ov02k10_s_power()
1386 mutex_unlock(&ov02k10->mutex); in ov02k10_s_power()
1397 static int __ov02k10_power_on(struct ov02k10 *ov02k10) in __ov02k10_power_on() argument
1401 struct device *dev = &ov02k10->client->dev; in __ov02k10_power_on()
1403 if (!IS_ERR_OR_NULL(ov02k10->pins_default)) { in __ov02k10_power_on()
1404 ret = pinctrl_select_state(ov02k10->pinctrl, in __ov02k10_power_on()
1405 ov02k10->pins_default); in __ov02k10_power_on()
1409 ret = clk_set_rate(ov02k10->xvclk, OV02K10_XVCLK_FREQ); in __ov02k10_power_on()
1412 if (clk_get_rate(ov02k10->xvclk) != OV02K10_XVCLK_FREQ) in __ov02k10_power_on()
1414 ret = clk_prepare_enable(ov02k10->xvclk); in __ov02k10_power_on()
1419 if (!IS_ERR(ov02k10->reset_gpio)) in __ov02k10_power_on()
1420 gpiod_set_value_cansleep(ov02k10->reset_gpio, 0); in __ov02k10_power_on()
1422 if (!IS_ERR(ov02k10->power_gpio)) { in __ov02k10_power_on()
1423 gpiod_set_value_cansleep(ov02k10->power_gpio, 1); in __ov02k10_power_on()
1427 ret = regulator_bulk_enable(OV02K10_NUM_SUPPLIES, ov02k10->supplies); in __ov02k10_power_on()
1433 if (!IS_ERR(ov02k10->reset_gpio)) in __ov02k10_power_on()
1434 gpiod_set_value_cansleep(ov02k10->reset_gpio, 1); in __ov02k10_power_on()
1437 if (!IS_ERR(ov02k10->pwdn_gpio)) in __ov02k10_power_on()
1438 gpiod_set_value_cansleep(ov02k10->pwdn_gpio, 1); in __ov02k10_power_on()
1447 clk_disable_unprepare(ov02k10->xvclk); in __ov02k10_power_on()
1452 static void __ov02k10_power_off(struct ov02k10 *ov02k10) in __ov02k10_power_off() argument
1455 struct device *dev = &ov02k10->client->dev; in __ov02k10_power_off()
1457 if (!IS_ERR(ov02k10->pwdn_gpio)) in __ov02k10_power_off()
1458 gpiod_set_value_cansleep(ov02k10->pwdn_gpio, 0); in __ov02k10_power_off()
1459 clk_disable_unprepare(ov02k10->xvclk); in __ov02k10_power_off()
1460 if (!IS_ERR(ov02k10->reset_gpio)) in __ov02k10_power_off()
1461 gpiod_set_value_cansleep(ov02k10->reset_gpio, 0); in __ov02k10_power_off()
1462 if (!IS_ERR_OR_NULL(ov02k10->pins_sleep)) { in __ov02k10_power_off()
1463 ret = pinctrl_select_state(ov02k10->pinctrl, in __ov02k10_power_off()
1464 ov02k10->pins_sleep); in __ov02k10_power_off()
1468 regulator_bulk_disable(OV02K10_NUM_SUPPLIES, ov02k10->supplies); in __ov02k10_power_off()
1475 struct ov02k10 *ov02k10 = to_ov02k10(sd); in ov02k10_runtime_resume() local
1477 return __ov02k10_power_on(ov02k10); in ov02k10_runtime_resume()
1484 struct ov02k10 *ov02k10 = to_ov02k10(sd); in ov02k10_runtime_suspend() local
1486 __ov02k10_power_off(ov02k10); in ov02k10_runtime_suspend()
1494 struct ov02k10 *ov02k10 = to_ov02k10(sd); in ov02k10_open() local
1499 mutex_lock(&ov02k10->mutex); in ov02k10_open()
1506 mutex_unlock(&ov02k10->mutex); in ov02k10_open()
1517 struct ov02k10 *ov02k10 = to_ov02k10(sd); in ov02k10_enum_frame_interval() local
1519 if (fie->index >= ov02k10->cfg_num) in ov02k10_enum_frame_interval()
1586 struct ov02k10 *ov02k10 = container_of(ctrl->handler, in ov02k10_set_ctrl() local
1587 struct ov02k10, ctrl_handler); in ov02k10_set_ctrl()
1588 struct i2c_client *client = ov02k10->client; in ov02k10_set_ctrl()
1598 max = ov02k10->cur_mode->height + ctrl->val - 8; in ov02k10_set_ctrl()
1599 __v4l2_ctrl_modify_range(ov02k10->exposure, in ov02k10_set_ctrl()
1600 ov02k10->exposure->minimum, max, in ov02k10_set_ctrl()
1601 ov02k10->exposure->step, in ov02k10_set_ctrl()
1602 ov02k10->exposure->default_value); in ov02k10_set_ctrl()
1611 ret = ov02k10_write_reg(ov02k10->client, in ov02k10_set_ctrl()
1626 ret = ov02k10_write_reg(ov02k10->client, in ov02k10_set_ctrl()
1630 ret |= ov02k10_write_reg(ov02k10->client, in ov02k10_set_ctrl()
1638 ret = ov02k10_write_reg(ov02k10->client, OV02K10_REG_VTS, in ov02k10_set_ctrl()
1640 ctrl->val + ov02k10->cur_mode->height); in ov02k10_set_ctrl()
1645 ret = ov02k10_enable_test_pattern(ov02k10, ctrl->val); in ov02k10_set_ctrl()
1650 ret = ov02k10_read_reg(ov02k10->client, OV02K10_FLIP_REG, in ov02k10_set_ctrl()
1657 ret = ov02k10_write_reg(ov02k10->client, OV02K10_FLIP_REG, in ov02k10_set_ctrl()
1661 ov02k10->flip = val; in ov02k10_set_ctrl()
1666 ret = ov02k10_read_reg(ov02k10->client, OV02K10_FLIP_REG, in ov02k10_set_ctrl()
1673 ret = ov02k10_write_reg(ov02k10->client, OV02K10_FLIP_REG, in ov02k10_set_ctrl()
1677 ov02k10->flip = val; in ov02k10_set_ctrl()
1696 static int ov02k10_initialize_controls(struct ov02k10 *ov02k10) in ov02k10_initialize_controls() argument
1706 handler = &ov02k10->ctrl_handler; in ov02k10_initialize_controls()
1707 mode = ov02k10->cur_mode; in ov02k10_initialize_controls()
1711 handler->lock = &ov02k10->mutex; in ov02k10_initialize_controls()
1713 ov02k10->link_freq = v4l2_ctrl_new_int_menu(handler, NULL, in ov02k10_initialize_controls()
1717 if (ov02k10->cur_mode->hdr_mode == NO_HDR) { in ov02k10_initialize_controls()
1725 ov02k10->pixel_rate = v4l2_ctrl_new_std(handler, NULL, in ov02k10_initialize_controls()
1730 __v4l2_ctrl_s_ctrl(ov02k10->link_freq, in ov02k10_initialize_controls()
1734 ov02k10->hblank = v4l2_ctrl_new_std(handler, NULL, V4L2_CID_HBLANK, in ov02k10_initialize_controls()
1736 if (ov02k10->hblank) in ov02k10_initialize_controls()
1737 ov02k10->hblank->flags |= V4L2_CTRL_FLAG_READ_ONLY; in ov02k10_initialize_controls()
1740 ov02k10->vblank = v4l2_ctrl_new_std(handler, &ov02k10_ctrl_ops, in ov02k10_initialize_controls()
1746 ov02k10->exposure = v4l2_ctrl_new_std(handler, &ov02k10_ctrl_ops, in ov02k10_initialize_controls()
1751 ov02k10->anal_gain = v4l2_ctrl_new_std(handler, &ov02k10_ctrl_ops, in ov02k10_initialize_controls()
1756 ov02k10->test_pattern = v4l2_ctrl_new_std_menu_items(handler, in ov02k10_initialize_controls()
1760 ov02k10->h_flip = v4l2_ctrl_new_std(handler, &ov02k10_ctrl_ops, in ov02k10_initialize_controls()
1763 ov02k10->v_flip = v4l2_ctrl_new_std(handler, &ov02k10_ctrl_ops, in ov02k10_initialize_controls()
1765 ov02k10->flip = 0; in ov02k10_initialize_controls()
1768 dev_err(&ov02k10->client->dev, in ov02k10_initialize_controls()
1773 ov02k10->subdev.ctrl_handler = handler; in ov02k10_initialize_controls()
1774 ov02k10->has_init_exp = false; in ov02k10_initialize_controls()
1775 ov02k10->long_hcg = false; in ov02k10_initialize_controls()
1776 ov02k10->middle_hcg = false; in ov02k10_initialize_controls()
1777 ov02k10->short_hcg = false; in ov02k10_initialize_controls()
1787 static int ov02k10_check_sensor_id(struct ov02k10 *ov02k10, in ov02k10_check_sensor_id() argument
1790 struct device *dev = &ov02k10->client->dev; in ov02k10_check_sensor_id()
1807 static int ov02k10_configure_regulators(struct ov02k10 *ov02k10) in ov02k10_configure_regulators() argument
1812 ov02k10->supplies[i].supply = ov02k10_supply_names[i]; in ov02k10_configure_regulators()
1814 return devm_regulator_bulk_get(&ov02k10->client->dev, in ov02k10_configure_regulators()
1816 ov02k10->supplies); in ov02k10_configure_regulators()
1824 struct ov02k10 *ov02k10; in ov02k10_probe() local
1835 ov02k10 = devm_kzalloc(dev, sizeof(*ov02k10), GFP_KERNEL); in ov02k10_probe()
1836 if (!ov02k10) in ov02k10_probe()
1840 &ov02k10->module_index); in ov02k10_probe()
1842 &ov02k10->module_facing); in ov02k10_probe()
1844 &ov02k10->module_name); in ov02k10_probe()
1846 &ov02k10->len_name); in ov02k10_probe()
1859 ov02k10->cfg_num = ARRAY_SIZE(supported_modes); in ov02k10_probe()
1860 for (i = 0; i < ov02k10->cfg_num; i++) { in ov02k10_probe()
1862 ov02k10->cur_mode = &supported_modes[i]; in ov02k10_probe()
1866 ov02k10->client = client; in ov02k10_probe()
1868 ov02k10->xvclk = devm_clk_get(dev, "xvclk"); in ov02k10_probe()
1869 if (IS_ERR(ov02k10->xvclk)) { in ov02k10_probe()
1874 ov02k10->power_gpio = devm_gpiod_get(dev, "power", GPIOD_OUT_LOW); in ov02k10_probe()
1875 if (IS_ERR(ov02k10->power_gpio)) in ov02k10_probe()
1878 ov02k10->reset_gpio = devm_gpiod_get(dev, "reset", GPIOD_OUT_LOW); in ov02k10_probe()
1879 if (IS_ERR(ov02k10->reset_gpio)) in ov02k10_probe()
1882 ov02k10->pwdn_gpio = devm_gpiod_get(dev, "pwdn", GPIOD_OUT_LOW); in ov02k10_probe()
1883 if (IS_ERR(ov02k10->pwdn_gpio)) in ov02k10_probe()
1886 ov02k10->pinctrl = devm_pinctrl_get(dev); in ov02k10_probe()
1887 if (!IS_ERR(ov02k10->pinctrl)) { in ov02k10_probe()
1888 ov02k10->pins_default = in ov02k10_probe()
1889 pinctrl_lookup_state(ov02k10->pinctrl, in ov02k10_probe()
1891 if (IS_ERR(ov02k10->pins_default)) in ov02k10_probe()
1894 ov02k10->pins_sleep = in ov02k10_probe()
1895 pinctrl_lookup_state(ov02k10->pinctrl, in ov02k10_probe()
1897 if (IS_ERR(ov02k10->pins_sleep)) in ov02k10_probe()
1903 ret = ov02k10_configure_regulators(ov02k10); in ov02k10_probe()
1909 mutex_init(&ov02k10->mutex); in ov02k10_probe()
1911 sd = &ov02k10->subdev; in ov02k10_probe()
1913 ret = ov02k10_initialize_controls(ov02k10); in ov02k10_probe()
1917 ret = __ov02k10_power_on(ov02k10); in ov02k10_probe()
1921 ret = ov02k10_check_sensor_id(ov02k10, client); in ov02k10_probe()
1930 ov02k10->pad.flags = MEDIA_PAD_FL_SOURCE; in ov02k10_probe()
1932 ret = media_entity_pads_init(&sd->entity, 1, &ov02k10->pad); in ov02k10_probe()
1938 if (strcmp(ov02k10->module_facing, "back") == 0) in ov02k10_probe()
1944 ov02k10->module_index, facing, in ov02k10_probe()
1965 __ov02k10_power_off(ov02k10); in ov02k10_probe()
1967 v4l2_ctrl_handler_free(&ov02k10->ctrl_handler); in ov02k10_probe()
1969 mutex_destroy(&ov02k10->mutex); in ov02k10_probe()
1977 struct ov02k10 *ov02k10 = to_ov02k10(sd); in ov02k10_remove() local
1983 v4l2_ctrl_handler_free(&ov02k10->ctrl_handler); in ov02k10_remove()
1984 mutex_destroy(&ov02k10->mutex); in ov02k10_remove()
1988 __ov02k10_power_off(ov02k10); in ov02k10_remove()