Lines Matching refs:imx347
171 struct imx347 { struct
206 #define to_imx347(sd) container_of(sd, struct imx347, subdev) argument
854 imx347_find_best_fit(struct imx347 *imx347, struct v4l2_subdev_format *fmt) in imx347_find_best_fit() argument
862 for (i = 0; i < imx347->cfg_num; i++) { in imx347_find_best_fit()
878 struct imx347 *imx347 = to_imx347(sd); in imx347_set_fmt() local
881 struct device *dev = &imx347->client->dev; in imx347_set_fmt()
884 mutex_lock(&imx347->mutex); in imx347_set_fmt()
886 mode = imx347_find_best_fit(imx347, fmt); in imx347_set_fmt()
895 mutex_unlock(&imx347->mutex); in imx347_set_fmt()
899 imx347->cur_mode = mode; in imx347_set_fmt()
901 __v4l2_ctrl_modify_range(imx347->hblank, h_blank, in imx347_set_fmt()
904 __v4l2_ctrl_modify_range(imx347->vblank, vblank_def, in imx347_set_fmt()
907 imx347->cur_vts = imx347->cur_mode->vts_def; in imx347_set_fmt()
910 imx347->cur_pixel_rate = IMX347_10BIT_LINEAR_PIXEL_RATE; in imx347_set_fmt()
912 imx347->cur_pixel_rate = IMX347_10BIT_HDR2_PIXEL_RATE; in imx347_set_fmt()
913 imx347->cur_link_freq = 1; in imx347_set_fmt()
914 clk_disable_unprepare(imx347->xvclk); in imx347_set_fmt()
915 ret = clk_set_rate(imx347->xvclk, IMX347_XVCLK_FREQ_37M); in imx347_set_fmt()
918 if (clk_get_rate(imx347->xvclk) != IMX347_XVCLK_FREQ_37M) in imx347_set_fmt()
920 ret = clk_prepare_enable(imx347->xvclk); in imx347_set_fmt()
924 imx347->cur_pixel_rate = IMX347_12BIT_PIXEL_RATE; in imx347_set_fmt()
925 imx347->cur_link_freq = 0; in imx347_set_fmt()
926 clk_disable_unprepare(imx347->xvclk); in imx347_set_fmt()
927 ret = clk_set_rate(imx347->xvclk, IMX347_XVCLK_FREQ_24M); in imx347_set_fmt()
930 if (clk_get_rate(imx347->xvclk) != IMX347_XVCLK_FREQ_24M) in imx347_set_fmt()
932 ret = clk_prepare_enable(imx347->xvclk); in imx347_set_fmt()
936 __v4l2_ctrl_s_ctrl_int64(imx347->pixel_rate, in imx347_set_fmt()
937 imx347->cur_pixel_rate); in imx347_set_fmt()
938 __v4l2_ctrl_s_ctrl(imx347->link_freq, in imx347_set_fmt()
939 imx347->cur_link_freq); in imx347_set_fmt()
942 mutex_unlock(&imx347->mutex); in imx347_set_fmt()
951 struct imx347 *imx347 = to_imx347(sd); in imx347_get_fmt() local
952 const struct imx347_mode *mode = imx347->cur_mode; in imx347_get_fmt()
954 mutex_lock(&imx347->mutex); in imx347_get_fmt()
959 mutex_unlock(&imx347->mutex); in imx347_get_fmt()
972 mutex_unlock(&imx347->mutex); in imx347_get_fmt()
981 struct imx347 *imx347 = to_imx347(sd); in imx347_enum_mbus_code() local
985 code->code = imx347->cur_mode->bus_fmt; in imx347_enum_mbus_code()
994 struct imx347 *imx347 = to_imx347(sd); in imx347_enum_frame_sizes() local
996 if (fse->index >= imx347->cfg_num) in imx347_enum_frame_sizes()
1013 struct imx347 *imx347 = to_imx347(sd); in imx347_g_frame_interval() local
1014 const struct imx347_mode *mode = imx347->cur_mode; in imx347_g_frame_interval()
1024 struct imx347 *imx347 = to_imx347(sd); in imx347_g_mbus_config() local
1025 const struct imx347_mode *mode = imx347->cur_mode; in imx347_g_mbus_config()
1050 static void imx347_get_module_inf(struct imx347 *imx347, in imx347_get_module_inf() argument
1055 strscpy(inf->base.module, imx347->module_name, in imx347_get_module_inf()
1057 strscpy(inf->base.lens, imx347->len_name, sizeof(inf->base.lens)); in imx347_get_module_inf()
1060 static int imx347_set_hdrae(struct imx347 *imx347, in imx347_set_hdrae() argument
1063 struct i2c_client *client = imx347->client; in imx347_set_hdrae()
1074 u32 fsc = imx347->cur_vts; in imx347_set_hdrae()
1077 if (!imx347->has_init_exp && !imx347->streaming) { in imx347_set_hdrae()
1078 imx347->init_hdrae_exp = *ae; in imx347_set_hdrae()
1079 imx347->has_init_exp = true; in imx347_set_hdrae()
1080 dev_dbg(&imx347->client->dev, "imx347 don't stream, record exp for hdr!\n"); in imx347_set_hdrae()
1094 if (imx347->cur_mode->hdr_mode == HDR_X2) { in imx347_set_hdrae()
1227 static int imx347_set_conversion_gain(struct imx347 *imx347, u32 *cg) in imx347_set_conversion_gain() argument
1230 struct i2c_client *client = imx347->client; in imx347_set_conversion_gain()
1266 struct imx347 *imx347 = to_imx347(sd); in set_conversion_gain_status() local
1272 imx347_set_conversion_gain(imx347, &status); in set_conversion_gain_status()
1300 struct imx347 *imx347 = to_imx347(sd); in imx347_ioctl() local
1307 ret = imx347_set_hdrae(imx347, arg); in imx347_ioctl()
1310 imx347_get_module_inf(imx347, (struct rkmodule_inf *)arg); in imx347_ioctl()
1315 hdr->hdr_mode = imx347->cur_mode->hdr_mode; in imx347_ioctl()
1319 w = imx347->cur_mode->width; in imx347_ioctl()
1320 h = imx347->cur_mode->height; in imx347_ioctl()
1321 for (i = 0; i < imx347->cfg_num; i++) { in imx347_ioctl()
1325 imx347->cur_mode = &supported_modes[i]; in imx347_ioctl()
1329 if (i == imx347->cfg_num) { in imx347_ioctl()
1330 dev_err(&imx347->client->dev, in imx347_ioctl()
1335 w = imx347->cur_mode->hts_def - imx347->cur_mode->width; in imx347_ioctl()
1336 h = imx347->cur_mode->vts_def - imx347->cur_mode->height; in imx347_ioctl()
1337 __v4l2_ctrl_modify_range(imx347->hblank, w, w, 1, w); in imx347_ioctl()
1338 __v4l2_ctrl_modify_range(imx347->vblank, h, in imx347_ioctl()
1339 IMX347_VTS_MAX - imx347->cur_mode->height, in imx347_ioctl()
1341 imx347->cur_vts = imx347->cur_mode->vts_def; in imx347_ioctl()
1342 if (imx347->cur_mode->bus_fmt == MEDIA_BUS_FMT_SRGGB10_1X10) { in imx347_ioctl()
1343 if (imx347->cur_mode->hdr_mode == NO_HDR) in imx347_ioctl()
1344 imx347->cur_pixel_rate = IMX347_10BIT_LINEAR_PIXEL_RATE; in imx347_ioctl()
1345 else if (imx347->cur_mode->hdr_mode == HDR_X2) in imx347_ioctl()
1346 imx347->cur_pixel_rate = IMX347_10BIT_HDR2_PIXEL_RATE; in imx347_ioctl()
1347 __v4l2_ctrl_s_ctrl_int64(imx347->pixel_rate, in imx347_ioctl()
1348 imx347->cur_pixel_rate); in imx347_ioctl()
1353 ret = imx347_set_conversion_gain(imx347, (u32 *)arg); in imx347_ioctl()
1360 ret = imx347_write_reg(imx347->client, IMX347_REG_CTRL_MODE, in imx347_ioctl()
1363 ret = imx347_write_reg(imx347->client, IMX347_REG_CTRL_MODE, in imx347_ioctl()
1468 static int imx347_init_conversion_gain(struct imx347 *imx347) in imx347_init_conversion_gain() argument
1471 struct i2c_client *client = imx347->client; in imx347_init_conversion_gain()
1480 static int __imx347_start_stream(struct imx347 *imx347) in __imx347_start_stream() argument
1484 ret = imx347_write_array(imx347->client, imx347->cur_mode->reg_list); in __imx347_start_stream()
1487 ret = imx347_init_conversion_gain(imx347); in __imx347_start_stream()
1491 ret = __v4l2_ctrl_handler_setup(&imx347->ctrl_handler); in __imx347_start_stream()
1494 if (imx347->has_init_exp && imx347->cur_mode->hdr_mode != NO_HDR) { in __imx347_start_stream()
1495 ret = imx347_ioctl(&imx347->subdev, PREISP_CMD_SET_HDRAE_EXP, in __imx347_start_stream()
1496 &imx347->init_hdrae_exp); in __imx347_start_stream()
1498 dev_err(&imx347->client->dev, in __imx347_start_stream()
1504 ret = imx347_write_reg(imx347->client, IMX347_REG_CTRL_MODE, in __imx347_start_stream()
1506 ret |= imx347_write_reg(imx347->client, IMX347_REG_MASTER_MODE, in __imx347_start_stream()
1511 static int __imx347_stop_stream(struct imx347 *imx347) in __imx347_stop_stream() argument
1516 imx347->has_init_exp = false; in __imx347_stop_stream()
1517 ret = imx347_write_reg(imx347->client, IMX347_REG_CTRL_MODE, in __imx347_stop_stream()
1519 ret |= imx347_write_reg(imx347->client, IMX347_REG_MASTER_MODE, in __imx347_stop_stream()
1522 ret |= imx347_read_reg(imx347->client, IMX347_REG_RESTART_MODE, in __imx347_stop_stream()
1524 dev_dbg(&imx347->client->dev, "reg 0x3004 = 0x%x\n", value); in __imx347_stop_stream()
1526 ret |= imx347_write_reg(imx347->client, IMX347_REG_RESTART_MODE, in __imx347_stop_stream()
1528 ret |= imx347_write_reg(imx347->client, IMX347_REG_RESTART_MODE, in __imx347_stop_stream()
1537 struct imx347 *imx347 = to_imx347(sd); in imx347_s_stream() local
1538 struct i2c_client *client = imx347->client; in imx347_s_stream()
1541 dev_dbg(&imx347->client->dev, "s_stream: %d. %dx%d, hdr: %d, bpp: %d\n", in imx347_s_stream()
1542 on, imx347->cur_mode->width, imx347->cur_mode->height, in imx347_s_stream()
1543 imx347->cur_mode->hdr_mode, imx347->cur_mode->bpp); in imx347_s_stream()
1545 mutex_lock(&imx347->mutex); in imx347_s_stream()
1547 if (on == imx347->streaming) in imx347_s_stream()
1557 ret = __imx347_start_stream(imx347); in imx347_s_stream()
1564 __imx347_stop_stream(imx347); in imx347_s_stream()
1568 imx347->streaming = on; in imx347_s_stream()
1571 mutex_unlock(&imx347->mutex); in imx347_s_stream()
1578 struct imx347 *imx347 = to_imx347(sd); in imx347_s_power() local
1579 struct i2c_client *client = imx347->client; in imx347_s_power()
1582 mutex_lock(&imx347->mutex); in imx347_s_power()
1585 if (imx347->power_on == !!on) in imx347_s_power()
1595 ret = imx347_write_array(imx347->client, imx347_global_regs); in imx347_s_power()
1602 imx347->power_on = true; in imx347_s_power()
1605 imx347->power_on = false; in imx347_s_power()
1609 mutex_unlock(&imx347->mutex); in imx347_s_power()
1620 static int __imx347_power_on(struct imx347 *imx347) in __imx347_power_on() argument
1624 struct device *dev = &imx347->client->dev; in __imx347_power_on()
1627 if (!IS_ERR_OR_NULL(imx347->pins_default)) { in __imx347_power_on()
1628 ret = pinctrl_select_state(imx347->pinctrl, in __imx347_power_on()
1629 imx347->pins_default); in __imx347_power_on()
1633 if (imx347->cur_mode->bus_fmt == MEDIA_BUS_FMT_SRGGB10_1X10) in __imx347_power_on()
1637 ret = clk_set_rate(imx347->xvclk, mclk); in __imx347_power_on()
1640 if (clk_get_rate(imx347->xvclk) != mclk) in __imx347_power_on()
1642 ret = clk_prepare_enable(imx347->xvclk); in __imx347_power_on()
1647 if (!IS_ERR(imx347->reset_gpio)) in __imx347_power_on()
1648 gpiod_set_value_cansleep(imx347->reset_gpio, 0); in __imx347_power_on()
1650 ret = regulator_bulk_enable(IMX347_NUM_SUPPLIES, imx347->supplies); in __imx347_power_on()
1656 if (!IS_ERR(imx347->reset_gpio)) in __imx347_power_on()
1657 gpiod_set_value_cansleep(imx347->reset_gpio, 1); in __imx347_power_on()
1660 if (!IS_ERR(imx347->pwdn_gpio)) in __imx347_power_on()
1661 gpiod_set_value_cansleep(imx347->pwdn_gpio, 1); in __imx347_power_on()
1670 clk_disable_unprepare(imx347->xvclk); in __imx347_power_on()
1675 static void __imx347_power_off(struct imx347 *imx347) in __imx347_power_off() argument
1678 struct device *dev = &imx347->client->dev; in __imx347_power_off()
1680 if (!IS_ERR(imx347->pwdn_gpio)) in __imx347_power_off()
1681 gpiod_set_value_cansleep(imx347->pwdn_gpio, 0); in __imx347_power_off()
1682 clk_disable_unprepare(imx347->xvclk); in __imx347_power_off()
1683 if (!IS_ERR(imx347->reset_gpio)) in __imx347_power_off()
1684 gpiod_set_value_cansleep(imx347->reset_gpio, 0); in __imx347_power_off()
1685 if (!IS_ERR_OR_NULL(imx347->pins_sleep)) { in __imx347_power_off()
1686 ret = pinctrl_select_state(imx347->pinctrl, in __imx347_power_off()
1687 imx347->pins_sleep); in __imx347_power_off()
1691 regulator_bulk_disable(IMX347_NUM_SUPPLIES, imx347->supplies); in __imx347_power_off()
1698 struct imx347 *imx347 = to_imx347(sd); in imx347_runtime_resume() local
1700 return __imx347_power_on(imx347); in imx347_runtime_resume()
1707 struct imx347 *imx347 = to_imx347(sd); in imx347_runtime_suspend() local
1709 __imx347_power_off(imx347); in imx347_runtime_suspend()
1717 struct imx347 *imx347 = to_imx347(sd); in imx347_open() local
1722 mutex_lock(&imx347->mutex); in imx347_open()
1729 mutex_unlock(&imx347->mutex); in imx347_open()
1740 struct imx347 *imx347 = to_imx347(sd); in imx347_enum_frame_interval() local
1742 if (fie->index >= imx347->cfg_num) in imx347_enum_frame_interval()
1770 struct imx347 *imx347 = to_imx347(sd); in imx347_get_selection() local
1773 sel->r.left = CROP_START(imx347->cur_mode->width, DST_WIDTH); in imx347_get_selection()
1775 sel->r.top = CROP_START(imx347->cur_mode->height, DST_HEIGHT); in imx347_get_selection()
1824 struct imx347 *imx347 = container_of(ctrl->handler, in imx347_set_ctrl() local
1825 struct imx347, ctrl_handler); in imx347_set_ctrl()
1826 struct i2c_client *client = imx347->client; in imx347_set_ctrl()
1827 const struct imx347_mode *mode = imx347->cur_mode; in imx347_set_ctrl()
1839 max = imx347->cur_mode->height + ctrl->val - 3; in imx347_set_ctrl()
1840 __v4l2_ctrl_modify_range(imx347->exposure, in imx347_set_ctrl()
1841 imx347->exposure->minimum, max, in imx347_set_ctrl()
1842 imx347->exposure->step, in imx347_set_ctrl()
1843 imx347->exposure->default_value); in imx347_set_ctrl()
1854 shr0 = imx347->cur_vts - ctrl->val; in imx347_set_ctrl()
1855 ret = imx347_write_reg(imx347->client, IMX347_LF_EXPO_REG_L, in imx347_set_ctrl()
1858 ret |= imx347_write_reg(imx347->client, IMX347_LF_EXPO_REG_M, in imx347_set_ctrl()
1861 ret |= imx347_write_reg(imx347->client, IMX347_LF_EXPO_REG_H, in imx347_set_ctrl()
1870 ret = imx347_write_reg(imx347->client, IMX347_LF_GAIN_REG_H, in imx347_set_ctrl()
1873 ret |= imx347_write_reg(imx347->client, IMX347_LF_GAIN_REG_L, in imx347_set_ctrl()
1881 vts = ctrl->val + imx347->cur_mode->height; in imx347_set_ctrl()
1882 imx347->cur_vts = vts; in imx347_set_ctrl()
1883 if (imx347->cur_mode->hdr_mode == HDR_X2) in imx347_set_ctrl()
1885 ret = imx347_write_reg(imx347->client, IMX347_VTS_REG_L, in imx347_set_ctrl()
1888 ret |= imx347_write_reg(imx347->client, IMX347_VTS_REG_M, in imx347_set_ctrl()
1891 ret |= imx347_write_reg(imx347->client, IMX347_VTS_REG_H, in imx347_set_ctrl()
1899 ret = imx347_write_reg(imx347->client, IMX347_HREVERSE_REG, in imx347_set_ctrl()
1904 ret = imx347_write_reg(imx347->client, IMX347_VREVERSE_REG, in imx347_set_ctrl()
1907 ret |= imx347_write_reg(imx347->client, 0x3074, in imx347_set_ctrl()
1909 ret |= imx347_write_reg(imx347->client, 0x3075, in imx347_set_ctrl()
1911 ret |= imx347_write_reg(imx347->client, 0x3080, in imx347_set_ctrl()
1913 ret |= imx347_write_reg(imx347->client, 0x30ad, in imx347_set_ctrl()
1915 ret |= imx347_write_reg(imx347->client, 0x30b6, in imx347_set_ctrl()
1917 ret |= imx347_write_reg(imx347->client, 0x30b7, in imx347_set_ctrl()
1919 ret |= imx347_write_reg(imx347->client, 0x30d8, in imx347_set_ctrl()
1921 ret |= imx347_write_reg(imx347->client, 0x3114, in imx347_set_ctrl()
1924 ret |= imx347_write_reg(imx347->client, 0x3074, in imx347_set_ctrl()
1926 ret |= imx347_write_reg(imx347->client, 0x3075, in imx347_set_ctrl()
1928 ret |= imx347_write_reg(imx347->client, 0x3080, in imx347_set_ctrl()
1930 ret |= imx347_write_reg(imx347->client, 0x30ad, in imx347_set_ctrl()
1932 ret |= imx347_write_reg(imx347->client, 0x30b6, in imx347_set_ctrl()
1934 ret |= imx347_write_reg(imx347->client, 0x30b7, in imx347_set_ctrl()
1936 ret |= imx347_write_reg(imx347->client, 0x30d8, in imx347_set_ctrl()
1938 ret |= imx347_write_reg(imx347->client, 0x3114, in imx347_set_ctrl()
1957 static int imx347_initialize_controls(struct imx347 *imx347) in imx347_initialize_controls() argument
1965 handler = &imx347->ctrl_handler; in imx347_initialize_controls()
1966 mode = imx347->cur_mode; in imx347_initialize_controls()
1970 handler->lock = &imx347->mutex; in imx347_initialize_controls()
1972 imx347->link_freq = v4l2_ctrl_new_int_menu(handler, in imx347_initialize_controls()
1975 if (imx347->cur_mode->bus_fmt == MEDIA_BUS_FMT_SRGGB10_1X10) { in imx347_initialize_controls()
1976 imx347->cur_link_freq = 1; in imx347_initialize_controls()
1977 if (imx347->cur_mode->hdr_mode == NO_HDR) in imx347_initialize_controls()
1978 imx347->cur_pixel_rate = in imx347_initialize_controls()
1980 else if (imx347->cur_mode->hdr_mode == HDR_X2) in imx347_initialize_controls()
1981 imx347->cur_pixel_rate = in imx347_initialize_controls()
1984 imx347->cur_link_freq = 0; in imx347_initialize_controls()
1985 imx347->cur_pixel_rate = in imx347_initialize_controls()
1988 __v4l2_ctrl_s_ctrl(imx347->link_freq, in imx347_initialize_controls()
1989 imx347->cur_link_freq); in imx347_initialize_controls()
1990 imx347->pixel_rate = v4l2_ctrl_new_std(handler, NULL, in imx347_initialize_controls()
1992 1, imx347->cur_pixel_rate); in imx347_initialize_controls()
1995 imx347->hblank = v4l2_ctrl_new_std(handler, NULL, V4L2_CID_HBLANK, in imx347_initialize_controls()
1997 if (imx347->hblank) in imx347_initialize_controls()
1998 imx347->hblank->flags |= V4L2_CTRL_FLAG_READ_ONLY; in imx347_initialize_controls()
2001 imx347->vblank = v4l2_ctrl_new_std(handler, &imx347_ctrl_ops, in imx347_initialize_controls()
2005 imx347->cur_vts = mode->vts_def; in imx347_initialize_controls()
2008 imx347->exposure = v4l2_ctrl_new_std(handler, &imx347_ctrl_ops, in imx347_initialize_controls()
2013 imx347->anal_a_gain = v4l2_ctrl_new_std(handler, &imx347_ctrl_ops, in imx347_initialize_controls()
2022 dev_err(&imx347->client->dev, in imx347_initialize_controls()
2027 imx347->subdev.ctrl_handler = handler; in imx347_initialize_controls()
2028 imx347->has_init_exp = false; in imx347_initialize_controls()
2038 static int imx347_check_sensor_id(struct imx347 *imx347, in imx347_check_sensor_id() argument
2041 struct device *dev = &imx347->client->dev; in imx347_check_sensor_id()
2057 static int imx347_configure_regulators(struct imx347 *imx347) in imx347_configure_regulators() argument
2062 imx347->supplies[i].supply = imx347_supply_names[i]; in imx347_configure_regulators()
2064 return devm_regulator_bulk_get(&imx347->client->dev, in imx347_configure_regulators()
2066 imx347->supplies); in imx347_configure_regulators()
2074 struct imx347 *imx347; in imx347_probe() local
2085 imx347 = devm_kzalloc(dev, sizeof(*imx347), GFP_KERNEL); in imx347_probe()
2086 if (!imx347) in imx347_probe()
2090 &imx347->module_index); in imx347_probe()
2092 &imx347->module_facing); in imx347_probe()
2094 &imx347->module_name); in imx347_probe()
2096 &imx347->len_name); in imx347_probe()
2108 imx347->client = client; in imx347_probe()
2109 imx347->cfg_num = ARRAY_SIZE(supported_modes); in imx347_probe()
2110 for (i = 0; i < imx347->cfg_num; i++) { in imx347_probe()
2112 imx347->cur_mode = &supported_modes[i]; in imx347_probe()
2117 imx347->xvclk = devm_clk_get(dev, "xvclk"); in imx347_probe()
2118 if (IS_ERR(imx347->xvclk)) { in imx347_probe()
2123 imx347->reset_gpio = devm_gpiod_get(dev, "reset", GPIOD_OUT_LOW); in imx347_probe()
2124 if (IS_ERR(imx347->reset_gpio)) in imx347_probe()
2127 imx347->pwdn_gpio = devm_gpiod_get(dev, "pwdn", GPIOD_OUT_LOW); in imx347_probe()
2128 if (IS_ERR(imx347->pwdn_gpio)) in imx347_probe()
2131 imx347->pinctrl = devm_pinctrl_get(dev); in imx347_probe()
2132 if (!IS_ERR(imx347->pinctrl)) { in imx347_probe()
2133 imx347->pins_default = in imx347_probe()
2134 pinctrl_lookup_state(imx347->pinctrl, in imx347_probe()
2136 if (IS_ERR(imx347->pins_default)) in imx347_probe()
2139 imx347->pins_sleep = in imx347_probe()
2140 pinctrl_lookup_state(imx347->pinctrl, in imx347_probe()
2142 if (IS_ERR(imx347->pins_sleep)) in imx347_probe()
2148 ret = imx347_configure_regulators(imx347); in imx347_probe()
2154 mutex_init(&imx347->mutex); in imx347_probe()
2156 sd = &imx347->subdev; in imx347_probe()
2158 ret = imx347_initialize_controls(imx347); in imx347_probe()
2162 ret = __imx347_power_on(imx347); in imx347_probe()
2166 ret = imx347_check_sensor_id(imx347, client); in imx347_probe()
2176 imx347->pad.flags = MEDIA_PAD_FL_SOURCE; in imx347_probe()
2178 ret = media_entity_pads_init(&sd->entity, 1, &imx347->pad); in imx347_probe()
2184 if (strcmp(imx347->module_facing, "back") == 0) in imx347_probe()
2190 imx347->module_index, facing, in imx347_probe()
2213 __imx347_power_off(imx347); in imx347_probe()
2215 v4l2_ctrl_handler_free(&imx347->ctrl_handler); in imx347_probe()
2217 mutex_destroy(&imx347->mutex); in imx347_probe()
2225 struct imx347 *imx347 = to_imx347(sd); in imx347_remove() local
2231 v4l2_ctrl_handler_free(&imx347->ctrl_handler); in imx347_remove()
2232 mutex_destroy(&imx347->mutex); in imx347_remove()
2236 __imx347_power_off(imx347); in imx347_remove()