imx274            781 drivers/media/i2c/imx274.c 	struct stimx274 *imx274 = to_imx274(sd);
imx274            784 drivers/media/i2c/imx274.c 	dev_dbg(&imx274->client->dev,
imx274            790 drivers/media/i2c/imx274.c 		dev_dbg(&imx274->client->dev,
imx274            792 drivers/media/i2c/imx274.c 		ret = imx274_set_exposure(imx274, ctrl->val);
imx274            796 drivers/media/i2c/imx274.c 		dev_dbg(&imx274->client->dev,
imx274            798 drivers/media/i2c/imx274.c 		ret = imx274_set_gain(imx274, ctrl);
imx274            802 drivers/media/i2c/imx274.c 		dev_dbg(&imx274->client->dev,
imx274            804 drivers/media/i2c/imx274.c 		ret = imx274_set_vflip(imx274, ctrl->val);
imx274            808 drivers/media/i2c/imx274.c 		dev_dbg(&imx274->client->dev,
imx274            810 drivers/media/i2c/imx274.c 		ret = imx274_set_test_pattern(imx274, ctrl->val);
imx274            817 drivers/media/i2c/imx274.c static int imx274_binning_goodness(struct stimx274 *imx274,
imx274            821 drivers/media/i2c/imx274.c 	struct device *dev = &imx274->client->dev;
imx274            872 drivers/media/i2c/imx274.c static int __imx274_change_compose(struct stimx274 *imx274,
imx274            879 drivers/media/i2c/imx274.c 	struct device *dev = &imx274->client->dev;
imx274            890 drivers/media/i2c/imx274.c 		cur_crop = &imx274->crop;
imx274            891 drivers/media/i2c/imx274.c 		tgt_fmt = &imx274->format;
imx274            898 drivers/media/i2c/imx274.c 			imx274,
imx274            913 drivers/media/i2c/imx274.c 		imx274->mode = best_mode;
imx274            939 drivers/media/i2c/imx274.c 	struct stimx274 *imx274 = to_imx274(sd);
imx274            941 drivers/media/i2c/imx274.c 	mutex_lock(&imx274->lock);
imx274            942 drivers/media/i2c/imx274.c 	fmt->format = imx274->format;
imx274            943 drivers/media/i2c/imx274.c 	mutex_unlock(&imx274->lock);
imx274            962 drivers/media/i2c/imx274.c 	struct stimx274 *imx274 = to_imx274(sd);
imx274            965 drivers/media/i2c/imx274.c 	mutex_lock(&imx274->lock);
imx274            967 drivers/media/i2c/imx274.c 	err = __imx274_change_compose(imx274, cfg, format->which,
imx274            982 drivers/media/i2c/imx274.c 		imx274->format = *fmt;
imx274            985 drivers/media/i2c/imx274.c 	mutex_unlock(&imx274->lock);
imx274            994 drivers/media/i2c/imx274.c 	struct stimx274 *imx274 = to_imx274(sd);
imx274           1014 drivers/media/i2c/imx274.c 		src_crop = &imx274->crop;
imx274           1015 drivers/media/i2c/imx274.c 		src_fmt = &imx274->format;
imx274           1018 drivers/media/i2c/imx274.c 	mutex_lock(&imx274->lock);
imx274           1040 drivers/media/i2c/imx274.c 	mutex_unlock(&imx274->lock);
imx274           1045 drivers/media/i2c/imx274.c static int imx274_set_selection_crop(struct stimx274 *imx274,
imx274           1085 drivers/media/i2c/imx274.c 		tgt_crop = &imx274->crop;
imx274           1087 drivers/media/i2c/imx274.c 	mutex_lock(&imx274->lock);
imx274           1097 drivers/media/i2c/imx274.c 		__imx274_change_compose(imx274, cfg, sel->which,
imx274           1101 drivers/media/i2c/imx274.c 	mutex_unlock(&imx274->lock);
imx274           1110 drivers/media/i2c/imx274.c 	struct stimx274 *imx274 = to_imx274(sd);
imx274           1116 drivers/media/i2c/imx274.c 		return imx274_set_selection_crop(imx274, cfg, sel);
imx274           1121 drivers/media/i2c/imx274.c 		mutex_lock(&imx274->lock);
imx274           1122 drivers/media/i2c/imx274.c 		err =  __imx274_change_compose(imx274, cfg, sel->which,
imx274           1125 drivers/media/i2c/imx274.c 		mutex_unlock(&imx274->lock);
imx274           1142 drivers/media/i2c/imx274.c static int imx274_apply_trimming(struct stimx274 *imx274)
imx274           1153 drivers/media/i2c/imx274.c 	h_start = imx274->crop.left + 12;
imx274           1154 drivers/media/i2c/imx274.c 	h_end = h_start + imx274->crop.width;
imx274           1159 drivers/media/i2c/imx274.c 	hmax = max_t(u32, 260, (imx274->crop.width) / 16 + 23);
imx274           1162 drivers/media/i2c/imx274.c 	v_pos = imx274->ctrls.vflip->cur.val ?
imx274           1163 drivers/media/i2c/imx274.c 		(-imx274->crop.top / 2) : (imx274->crop.top / 2);
imx274           1164 drivers/media/i2c/imx274.c 	v_cut = (IMX274_MAX_HEIGHT - imx274->crop.height) / 2;
imx274           1165 drivers/media/i2c/imx274.c 	write_v_size = imx274->crop.height + 22;
imx274           1166 drivers/media/i2c/imx274.c 	y_out_size   = imx274->crop.height + 14;
imx274           1168 drivers/media/i2c/imx274.c 	err = imx274_write_mbreg(imx274, IMX274_HMAX_REG_LSB, hmax, 2);
imx274           1170 drivers/media/i2c/imx274.c 		err = imx274_write_mbreg(imx274, IMX274_HTRIM_EN_REG, 1, 1);
imx274           1172 drivers/media/i2c/imx274.c 		err = imx274_write_mbreg(imx274, IMX274_HTRIM_START_REG_LSB,
imx274           1175 drivers/media/i2c/imx274.c 		err = imx274_write_mbreg(imx274, IMX274_HTRIM_END_REG_LSB,
imx274           1178 drivers/media/i2c/imx274.c 		err = imx274_write_mbreg(imx274, IMX274_VWIDCUTEN_REG, 1, 1);
imx274           1180 drivers/media/i2c/imx274.c 		err = imx274_write_mbreg(imx274, IMX274_VWIDCUT_REG_LSB,
imx274           1183 drivers/media/i2c/imx274.c 		err = imx274_write_mbreg(imx274, IMX274_VWINPOS_REG_LSB,
imx274           1186 drivers/media/i2c/imx274.c 		err = imx274_write_mbreg(imx274, IMX274_WRITE_VSIZE_REG_LSB,
imx274           1189 drivers/media/i2c/imx274.c 		err = imx274_write_mbreg(imx274, IMX274_Y_OUT_SIZE_REG_LSB,
imx274           1207 drivers/media/i2c/imx274.c 	struct stimx274 *imx274 = to_imx274(sd);
imx274           1209 drivers/media/i2c/imx274.c 	fi->interval = imx274->frame_interval;
imx274           1210 drivers/media/i2c/imx274.c 	dev_dbg(&imx274->client->dev, "%s frame rate = %d / %d\n",
imx274           1211 drivers/media/i2c/imx274.c 		__func__, imx274->frame_interval.numerator,
imx274           1212 drivers/media/i2c/imx274.c 		imx274->frame_interval.denominator);
imx274           1229 drivers/media/i2c/imx274.c 	struct stimx274 *imx274 = to_imx274(sd);
imx274           1230 drivers/media/i2c/imx274.c 	struct v4l2_ctrl *ctrl = imx274->ctrls.exposure;
imx274           1234 drivers/media/i2c/imx274.c 	mutex_lock(&imx274->lock);
imx274           1235 drivers/media/i2c/imx274.c 	ret = imx274_set_frame_interval(imx274, fi->interval);
imx274           1247 drivers/media/i2c/imx274.c 			dev_err(&imx274->client->dev,
imx274           1253 drivers/media/i2c/imx274.c 		imx274_set_exposure(imx274, ctrl->val);
imx274           1255 drivers/media/i2c/imx274.c 		dev_dbg(&imx274->client->dev, "set frame interval to %uus\n",
imx274           1261 drivers/media/i2c/imx274.c 	mutex_unlock(&imx274->lock);
imx274           1320 drivers/media/i2c/imx274.c 	struct stimx274 *imx274 = to_imx274(sd);
imx274           1323 drivers/media/i2c/imx274.c 	dev_dbg(&imx274->client->dev, "%s : %s, mode index = %td\n", __func__,
imx274           1325 drivers/media/i2c/imx274.c 		imx274->mode - &imx274_modes[0]);
imx274           1327 drivers/media/i2c/imx274.c 	mutex_lock(&imx274->lock);
imx274           1331 drivers/media/i2c/imx274.c 		ret = imx274_mode_regs(imx274);
imx274           1335 drivers/media/i2c/imx274.c 		ret = imx274_apply_trimming(imx274);
imx274           1345 drivers/media/i2c/imx274.c 		ret = imx274_set_frame_interval(imx274,
imx274           1346 drivers/media/i2c/imx274.c 						imx274->frame_interval);
imx274           1351 drivers/media/i2c/imx274.c 		ret = __v4l2_ctrl_s_ctrl(imx274->ctrls.exposure,
imx274           1352 drivers/media/i2c/imx274.c 					 imx274->ctrls.exposure->val);
imx274           1357 drivers/media/i2c/imx274.c 		ret = imx274_start_stream(imx274);
imx274           1362 drivers/media/i2c/imx274.c 		ret = imx274_write_table(imx274, imx274_stop);
imx274           1367 drivers/media/i2c/imx274.c 	mutex_unlock(&imx274->lock);
imx274           1368 drivers/media/i2c/imx274.c 	dev_dbg(&imx274->client->dev, "%s : Done\n", __func__);
imx274           1372 drivers/media/i2c/imx274.c 	mutex_unlock(&imx274->lock);
imx274           1373 drivers/media/i2c/imx274.c 	dev_err(&imx274->client->dev, "s_stream failed\n");
imx274           1827 drivers/media/i2c/imx274.c 	struct stimx274 *imx274;
imx274           1831 drivers/media/i2c/imx274.c 	imx274 = devm_kzalloc(&client->dev, sizeof(*imx274), GFP_KERNEL);
imx274           1832 drivers/media/i2c/imx274.c 	if (!imx274)
imx274           1835 drivers/media/i2c/imx274.c 	mutex_init(&imx274->lock);
imx274           1838 drivers/media/i2c/imx274.c 	imx274->mode = &imx274_modes[IMX274_DEFAULT_BINNING];
imx274           1839 drivers/media/i2c/imx274.c 	imx274->crop.width = IMX274_MAX_WIDTH;
imx274           1840 drivers/media/i2c/imx274.c 	imx274->crop.height = IMX274_MAX_HEIGHT;
imx274           1841 drivers/media/i2c/imx274.c 	imx274->format.width = imx274->crop.width / imx274->mode->bin_ratio;
imx274           1842 drivers/media/i2c/imx274.c 	imx274->format.height = imx274->crop.height / imx274->mode->bin_ratio;
imx274           1843 drivers/media/i2c/imx274.c 	imx274->format.field = V4L2_FIELD_NONE;
imx274           1844 drivers/media/i2c/imx274.c 	imx274->format.code = MEDIA_BUS_FMT_SRGGB10_1X10;
imx274           1845 drivers/media/i2c/imx274.c 	imx274->format.colorspace = V4L2_COLORSPACE_SRGB;
imx274           1846 drivers/media/i2c/imx274.c 	imx274->frame_interval.numerator = 1;
imx274           1847 drivers/media/i2c/imx274.c 	imx274->frame_interval.denominator = IMX274_DEF_FRAME_RATE;
imx274           1850 drivers/media/i2c/imx274.c 	imx274->regmap = devm_regmap_init_i2c(client, &imx274_regmap_config);
imx274           1851 drivers/media/i2c/imx274.c 	if (IS_ERR(imx274->regmap)) {
imx274           1853 drivers/media/i2c/imx274.c 			"regmap init failed: %ld\n", PTR_ERR(imx274->regmap));
imx274           1859 drivers/media/i2c/imx274.c 	imx274->client = client;
imx274           1860 drivers/media/i2c/imx274.c 	sd = &imx274->sd;
imx274           1865 drivers/media/i2c/imx274.c 	imx274->pad.flags = MEDIA_PAD_FL_SOURCE;
imx274           1867 drivers/media/i2c/imx274.c 	ret = media_entity_pads_init(&sd->entity, 1, &imx274->pad);
imx274           1875 drivers/media/i2c/imx274.c 	imx274->reset_gpio = devm_gpiod_get_optional(&client->dev, "reset",
imx274           1877 drivers/media/i2c/imx274.c 	if (IS_ERR(imx274->reset_gpio)) {
imx274           1878 drivers/media/i2c/imx274.c 		if (PTR_ERR(imx274->reset_gpio) != -EPROBE_DEFER)
imx274           1880 drivers/media/i2c/imx274.c 		ret = PTR_ERR(imx274->reset_gpio);
imx274           1885 drivers/media/i2c/imx274.c 	imx274_reset(imx274, 1);
imx274           1888 drivers/media/i2c/imx274.c 	ret = v4l2_ctrl_handler_init(&imx274->ctrls.handler, 4);
imx274           1895 drivers/media/i2c/imx274.c 	imx274->ctrls.handler.lock = &imx274->lock;
imx274           1898 drivers/media/i2c/imx274.c 	imx274->ctrls.test_pattern = v4l2_ctrl_new_std_menu_items(
imx274           1899 drivers/media/i2c/imx274.c 		&imx274->ctrls.handler, &imx274_ctrl_ops,
imx274           1903 drivers/media/i2c/imx274.c 	imx274->ctrls.gain = v4l2_ctrl_new_std(
imx274           1904 drivers/media/i2c/imx274.c 		&imx274->ctrls.handler,
imx274           1910 drivers/media/i2c/imx274.c 	imx274->ctrls.exposure = v4l2_ctrl_new_std(
imx274           1911 drivers/media/i2c/imx274.c 		&imx274->ctrls.handler,
imx274           1917 drivers/media/i2c/imx274.c 	imx274->ctrls.vflip = v4l2_ctrl_new_std(
imx274           1918 drivers/media/i2c/imx274.c 		&imx274->ctrls.handler,
imx274           1922 drivers/media/i2c/imx274.c 	imx274->sd.ctrl_handler = &imx274->ctrls.handler;
imx274           1923 drivers/media/i2c/imx274.c 	if (imx274->ctrls.handler.error) {
imx274           1924 drivers/media/i2c/imx274.c 		ret = imx274->ctrls.handler.error;
imx274           1929 drivers/media/i2c/imx274.c 	ret = v4l2_ctrl_handler_setup(&imx274->ctrls.handler);
imx274           1937 drivers/media/i2c/imx274.c 	ret = imx274_load_default(imx274);
imx274           1958 drivers/media/i2c/imx274.c 	v4l2_ctrl_handler_free(&imx274->ctrls.handler);
imx274           1962 drivers/media/i2c/imx274.c 	mutex_destroy(&imx274->lock);
imx274           1969 drivers/media/i2c/imx274.c 	struct stimx274 *imx274 = to_imx274(sd);
imx274           1972 drivers/media/i2c/imx274.c 	imx274_write_table(imx274, imx274_stop);
imx274           1975 drivers/media/i2c/imx274.c 	v4l2_ctrl_handler_free(&imx274->ctrls.handler);
imx274           1977 drivers/media/i2c/imx274.c 	mutex_destroy(&imx274->lock);