Lines Matching refs:ov13855

117 struct ov13855 {  struct
150 #define to_ov13855(sd) container_of(sd, struct ov13855, subdev) argument
1094 struct ov13855 *ov13855 = to_ov13855(sd); in ov13855_set_fmt() local
1100 mutex_lock(&ov13855->mutex); in ov13855_set_fmt()
1111 mutex_unlock(&ov13855->mutex); in ov13855_set_fmt()
1115 ov13855->cur_mode = mode; in ov13855_set_fmt()
1117 __v4l2_ctrl_modify_range(ov13855->hblank, h_blank, in ov13855_set_fmt()
1120 __v4l2_ctrl_modify_range(ov13855->vblank, vblank_def, in ov13855_set_fmt()
1123 __v4l2_ctrl_s_ctrl(ov13855->vblank, vblank_def); in ov13855_set_fmt()
1126 __v4l2_ctrl_s_ctrl_int64(ov13855->pixel_rate, in ov13855_set_fmt()
1128 __v4l2_ctrl_s_ctrl(ov13855->link_freq, in ov13855_set_fmt()
1131 dev_info(&ov13855->client->dev, "%s: mode->link_freq_idx(%d)", in ov13855_set_fmt()
1134 mutex_unlock(&ov13855->mutex); in ov13855_set_fmt()
1143 struct ov13855 *ov13855 = to_ov13855(sd); in ov13855_get_fmt() local
1144 const struct ov13855_mode *mode = ov13855->cur_mode; in ov13855_get_fmt()
1146 mutex_lock(&ov13855->mutex); in ov13855_get_fmt()
1151 mutex_unlock(&ov13855->mutex); in ov13855_get_fmt()
1160 mutex_unlock(&ov13855->mutex); in ov13855_get_fmt()
1194 static int ov13855_enable_test_pattern(struct ov13855 *ov13855, u32 pattern) in ov13855_enable_test_pattern() argument
1203 return ov13855_write_reg(ov13855->client, in ov13855_enable_test_pattern()
1212 struct ov13855 *ov13855 = to_ov13855(sd); in ov13855_g_frame_interval() local
1213 const struct ov13855_mode *mode = ov13855->cur_mode; in ov13855_g_frame_interval()
1220 static void ov13855_get_module_inf(struct ov13855 *ov13855, in ov13855_get_module_inf() argument
1225 strscpy(inf->base.module, ov13855->module_name, in ov13855_get_module_inf()
1227 strscpy(inf->base.lens, ov13855->len_name, sizeof(inf->base.lens)); in ov13855_get_module_inf()
1232 struct ov13855 *ov13855 = to_ov13855(sd); in ov13855_ioctl() local
1238 ov13855_get_module_inf(ov13855, (struct rkmodule_inf *)arg); in ov13855_ioctl()
1245 ret = ov13855_write_reg(ov13855->client, in ov13855_ioctl()
1250 ret = ov13855_write_reg(ov13855->client, in ov13855_ioctl()
1319 static int __ov13855_start_stream(struct ov13855 *ov13855) in __ov13855_start_stream() argument
1323 ret = ov13855_write_array(ov13855->client, ov13855->cur_mode->reg_list); in __ov13855_start_stream()
1328 mutex_unlock(&ov13855->mutex); in __ov13855_start_stream()
1329 ret = v4l2_ctrl_handler_setup(&ov13855->ctrl_handler); in __ov13855_start_stream()
1330 mutex_lock(&ov13855->mutex); in __ov13855_start_stream()
1334 return ov13855_write_reg(ov13855->client, in __ov13855_start_stream()
1340 static int __ov13855_stop_stream(struct ov13855 *ov13855) in __ov13855_stop_stream() argument
1342 return ov13855_write_reg(ov13855->client, in __ov13855_stop_stream()
1350 struct ov13855 *ov13855 = to_ov13855(sd); in ov13855_s_stream() local
1351 struct i2c_client *client = ov13855->client; in ov13855_s_stream()
1355 ov13855->cur_mode->width, in ov13855_s_stream()
1356 ov13855->cur_mode->height, in ov13855_s_stream()
1357 DIV_ROUND_CLOSEST(ov13855->cur_mode->max_fps.denominator, in ov13855_s_stream()
1358 ov13855->cur_mode->max_fps.numerator)); in ov13855_s_stream()
1360 mutex_lock(&ov13855->mutex); in ov13855_s_stream()
1362 if (on == ov13855->streaming) in ov13855_s_stream()
1372 ret = __ov13855_start_stream(ov13855); in ov13855_s_stream()
1379 __ov13855_stop_stream(ov13855); in ov13855_s_stream()
1383 ov13855->streaming = on; in ov13855_s_stream()
1386 mutex_unlock(&ov13855->mutex); in ov13855_s_stream()
1393 struct ov13855 *ov13855 = to_ov13855(sd); in ov13855_s_power() local
1394 struct i2c_client *client = ov13855->client; in ov13855_s_power()
1397 mutex_lock(&ov13855->mutex); in ov13855_s_power()
1400 if (ov13855->power_on == !!on) in ov13855_s_power()
1410 ret = ov13855_write_array(ov13855->client, ov13855_global_regs); in ov13855_s_power()
1417 ov13855->power_on = true; in ov13855_s_power()
1420 ov13855->power_on = false; in ov13855_s_power()
1424 mutex_unlock(&ov13855->mutex); in ov13855_s_power()
1435 static int __ov13855_power_on(struct ov13855 *ov13855) in __ov13855_power_on() argument
1439 struct device *dev = &ov13855->client->dev; in __ov13855_power_on()
1441 if (!IS_ERR(ov13855->power_gpio)) in __ov13855_power_on()
1442 gpiod_set_value_cansleep(ov13855->power_gpio, 1); in __ov13855_power_on()
1446 if (!IS_ERR_OR_NULL(ov13855->pins_default)) { in __ov13855_power_on()
1447 ret = pinctrl_select_state(ov13855->pinctrl, in __ov13855_power_on()
1448 ov13855->pins_default); in __ov13855_power_on()
1452 ret = clk_set_rate(ov13855->xvclk, OV13855_XVCLK_FREQ); in __ov13855_power_on()
1455 if (clk_get_rate(ov13855->xvclk) != OV13855_XVCLK_FREQ) in __ov13855_power_on()
1457 ret = clk_prepare_enable(ov13855->xvclk); in __ov13855_power_on()
1462 if (!IS_ERR(ov13855->reset_gpio)) in __ov13855_power_on()
1463 gpiod_set_value_cansleep(ov13855->reset_gpio, 0); in __ov13855_power_on()
1465 ret = regulator_bulk_enable(OV13855_NUM_SUPPLIES, ov13855->supplies); in __ov13855_power_on()
1471 if (!IS_ERR(ov13855->reset_gpio)) in __ov13855_power_on()
1472 gpiod_set_value_cansleep(ov13855->reset_gpio, 1); in __ov13855_power_on()
1475 if (!IS_ERR(ov13855->pwdn_gpio)) in __ov13855_power_on()
1476 gpiod_set_value_cansleep(ov13855->pwdn_gpio, 1); in __ov13855_power_on()
1485 clk_disable_unprepare(ov13855->xvclk); in __ov13855_power_on()
1490 static void __ov13855_power_off(struct ov13855 *ov13855) in __ov13855_power_off() argument
1493 struct device *dev = &ov13855->client->dev; in __ov13855_power_off()
1495 if (!IS_ERR(ov13855->pwdn_gpio)) in __ov13855_power_off()
1496 gpiod_set_value_cansleep(ov13855->pwdn_gpio, 0); in __ov13855_power_off()
1497 clk_disable_unprepare(ov13855->xvclk); in __ov13855_power_off()
1498 if (!IS_ERR(ov13855->reset_gpio)) in __ov13855_power_off()
1499 gpiod_set_value_cansleep(ov13855->reset_gpio, 0); in __ov13855_power_off()
1501 if (!IS_ERR_OR_NULL(ov13855->pins_sleep)) { in __ov13855_power_off()
1502 ret = pinctrl_select_state(ov13855->pinctrl, in __ov13855_power_off()
1503 ov13855->pins_sleep); in __ov13855_power_off()
1507 if (!IS_ERR(ov13855->power_gpio)) in __ov13855_power_off()
1508 gpiod_set_value_cansleep(ov13855->power_gpio, 0); in __ov13855_power_off()
1510 regulator_bulk_disable(OV13855_NUM_SUPPLIES, ov13855->supplies); in __ov13855_power_off()
1517 struct ov13855 *ov13855 = to_ov13855(sd); in ov13855_runtime_resume() local
1519 return __ov13855_power_on(ov13855); in ov13855_runtime_resume()
1526 struct ov13855 *ov13855 = to_ov13855(sd); in ov13855_runtime_suspend() local
1528 __ov13855_power_off(ov13855); in ov13855_runtime_suspend()
1536 struct ov13855 *ov13855 = to_ov13855(sd); in ov13855_open() local
1541 mutex_lock(&ov13855->mutex); in ov13855_open()
1548 mutex_unlock(&ov13855->mutex); in ov13855_open()
1592 struct ov13855 *ov13855 = to_ov13855(sd); in ov13855_get_selection() local
1596 sel->r.width = ov13855->cur_mode->width; in ov13855_get_selection()
1598 sel->r.height = ov13855->cur_mode->height; in ov13855_get_selection()
1647 struct ov13855 *ov13855 = container_of(ctrl->handler, in ov13855_set_ctrl() local
1648 struct ov13855, ctrl_handler); in ov13855_set_ctrl()
1649 struct i2c_client *client = ov13855->client; in ov13855_set_ctrl()
1657 max = ov13855->cur_mode->height + ctrl->val - 4; in ov13855_set_ctrl()
1658 __v4l2_ctrl_modify_range(ov13855->exposure, in ov13855_set_ctrl()
1659 ov13855->exposure->minimum, max, in ov13855_set_ctrl()
1660 ov13855->exposure->step, in ov13855_set_ctrl()
1661 ov13855->exposure->default_value); in ov13855_set_ctrl()
1671 ret = ov13855_write_reg(ov13855->client, in ov13855_set_ctrl()
1677 ret = ov13855_write_reg(ov13855->client, in ov13855_set_ctrl()
1682 ret |= ov13855_write_reg(ov13855->client, in ov13855_set_ctrl()
1688 ret = ov13855_write_reg(ov13855->client, in ov13855_set_ctrl()
1691 ctrl->val + ov13855->cur_mode->height); in ov13855_set_ctrl()
1694 ret = ov13855_enable_test_pattern(ov13855, ctrl->val); in ov13855_set_ctrl()
1711 static int ov13855_initialize_controls(struct ov13855 *ov13855) in ov13855_initialize_controls() argument
1721 handler = &ov13855->ctrl_handler; in ov13855_initialize_controls()
1722 mode = ov13855->cur_mode; in ov13855_initialize_controls()
1726 handler->lock = &ov13855->mutex; in ov13855_initialize_controls()
1728 ov13855->link_freq = v4l2_ctrl_new_int_menu(handler, NULL, in ov13855_initialize_controls()
1734 ov13855->pixel_rate = v4l2_ctrl_new_std(handler, NULL, in ov13855_initialize_controls()
1739 __v4l2_ctrl_s_ctrl(ov13855->link_freq, in ov13855_initialize_controls()
1743 ov13855->hblank = v4l2_ctrl_new_std(handler, NULL, V4L2_CID_HBLANK, in ov13855_initialize_controls()
1745 if (ov13855->hblank) in ov13855_initialize_controls()
1746 ov13855->hblank->flags |= V4L2_CTRL_FLAG_READ_ONLY; in ov13855_initialize_controls()
1749 ov13855->vblank = v4l2_ctrl_new_std(handler, &ov13855_ctrl_ops, in ov13855_initialize_controls()
1755 ov13855->exposure = v4l2_ctrl_new_std(handler, &ov13855_ctrl_ops, in ov13855_initialize_controls()
1760 ov13855->anal_gain = v4l2_ctrl_new_std(handler, &ov13855_ctrl_ops, in ov13855_initialize_controls()
1765 ov13855->test_pattern = v4l2_ctrl_new_std_menu_items(handler, in ov13855_initialize_controls()
1772 dev_err(&ov13855->client->dev, in ov13855_initialize_controls()
1777 ov13855->subdev.ctrl_handler = handler; in ov13855_initialize_controls()
1787 static int ov13855_check_sensor_id(struct ov13855 *ov13855, in ov13855_check_sensor_id() argument
1790 struct device *dev = &ov13855->client->dev; in ov13855_check_sensor_id()
1813 static int ov13855_configure_regulators(struct ov13855 *ov13855) in ov13855_configure_regulators() argument
1818 ov13855->supplies[i].supply = ov13855_supply_names[i]; in ov13855_configure_regulators()
1820 return devm_regulator_bulk_get(&ov13855->client->dev, in ov13855_configure_regulators()
1822 ov13855->supplies); in ov13855_configure_regulators()
1830 struct ov13855 *ov13855; in ov13855_probe() local
1840 ov13855 = devm_kzalloc(dev, sizeof(*ov13855), GFP_KERNEL); in ov13855_probe()
1841 if (!ov13855) in ov13855_probe()
1845 &ov13855->module_index); in ov13855_probe()
1847 &ov13855->module_facing); in ov13855_probe()
1849 &ov13855->module_name); in ov13855_probe()
1851 &ov13855->len_name); in ov13855_probe()
1857 ov13855->client = client; in ov13855_probe()
1858 ov13855->cur_mode = &supported_modes[0]; in ov13855_probe()
1860 ov13855->xvclk = devm_clk_get(dev, "xvclk"); in ov13855_probe()
1861 if (IS_ERR(ov13855->xvclk)) { in ov13855_probe()
1866 ov13855->power_gpio = devm_gpiod_get(dev, "power", GPIOD_OUT_LOW); in ov13855_probe()
1867 if (IS_ERR(ov13855->power_gpio)) in ov13855_probe()
1870 ov13855->reset_gpio = devm_gpiod_get(dev, "reset", GPIOD_OUT_LOW); in ov13855_probe()
1871 if (IS_ERR(ov13855->reset_gpio)) in ov13855_probe()
1874 ov13855->pwdn_gpio = devm_gpiod_get(dev, "pwdn", GPIOD_OUT_LOW); in ov13855_probe()
1875 if (IS_ERR(ov13855->pwdn_gpio)) in ov13855_probe()
1878 ret = ov13855_configure_regulators(ov13855); in ov13855_probe()
1884 ov13855->pinctrl = devm_pinctrl_get(dev); in ov13855_probe()
1885 if (!IS_ERR(ov13855->pinctrl)) { in ov13855_probe()
1886 ov13855->pins_default = in ov13855_probe()
1887 pinctrl_lookup_state(ov13855->pinctrl, in ov13855_probe()
1889 if (IS_ERR(ov13855->pins_default)) in ov13855_probe()
1892 ov13855->pins_sleep = in ov13855_probe()
1893 pinctrl_lookup_state(ov13855->pinctrl, in ov13855_probe()
1895 if (IS_ERR(ov13855->pins_sleep)) in ov13855_probe()
1899 mutex_init(&ov13855->mutex); in ov13855_probe()
1901 sd = &ov13855->subdev; in ov13855_probe()
1903 ret = ov13855_initialize_controls(ov13855); in ov13855_probe()
1907 ret = __ov13855_power_on(ov13855); in ov13855_probe()
1911 ret = ov13855_check_sensor_id(ov13855, client); in ov13855_probe()
1920 ov13855->pad.flags = MEDIA_PAD_FL_SOURCE; in ov13855_probe()
1922 ret = media_entity_pads_init(&sd->entity, 1, &ov13855->pad); in ov13855_probe()
1928 if (strcmp(ov13855->module_facing, "back") == 0) in ov13855_probe()
1934 ov13855->module_index, facing, in ov13855_probe()
1953 __ov13855_power_off(ov13855); in ov13855_probe()
1955 v4l2_ctrl_handler_free(&ov13855->ctrl_handler); in ov13855_probe()
1957 mutex_destroy(&ov13855->mutex); in ov13855_probe()
1965 struct ov13855 *ov13855 = to_ov13855(sd); in ov13855_remove() local
1971 v4l2_ctrl_handler_free(&ov13855->ctrl_handler); in ov13855_remove()
1972 mutex_destroy(&ov13855->mutex); in ov13855_remove()
1976 __ov13855_power_off(ov13855); in ov13855_remove()