ov7740            273 drivers/media/i2c/ov7740.c 	struct ov7740 *ov7740 = container_of(sd, struct ov7740, subdev);
ov7740            274 drivers/media/i2c/ov7740.c 	struct regmap *regmap = ov7740->regmap;
ov7740            288 drivers/media/i2c/ov7740.c 	struct ov7740 *ov7740 = container_of(sd, struct ov7740, subdev);
ov7740            289 drivers/media/i2c/ov7740.c 	struct regmap *regmap = ov7740->regmap;
ov7740            297 drivers/media/i2c/ov7740.c static int ov7740_set_power(struct ov7740 *ov7740, int on)
ov7740            302 drivers/media/i2c/ov7740.c 		ret = clk_prepare_enable(ov7740->xvclk);
ov7740            306 drivers/media/i2c/ov7740.c 		if (ov7740->pwdn_gpio)
ov7740            307 drivers/media/i2c/ov7740.c 			gpiod_direction_output(ov7740->pwdn_gpio, 0);
ov7740            309 drivers/media/i2c/ov7740.c 		if (ov7740->resetb_gpio) {
ov7740            310 drivers/media/i2c/ov7740.c 			gpiod_set_value(ov7740->resetb_gpio, 1);
ov7740            312 drivers/media/i2c/ov7740.c 			gpiod_set_value(ov7740->resetb_gpio, 0);
ov7740            316 drivers/media/i2c/ov7740.c 		clk_disable_unprepare(ov7740->xvclk);
ov7740            318 drivers/media/i2c/ov7740.c 		if (ov7740->pwdn_gpio)
ov7740            319 drivers/media/i2c/ov7740.c 			gpiod_direction_output(ov7740->pwdn_gpio, 0);
ov7740            335 drivers/media/i2c/ov7740.c static int ov7740_set_white_balance(struct ov7740 *ov7740, int awb)
ov7740            337 drivers/media/i2c/ov7740.c 	struct regmap *regmap = ov7740->regmap;
ov7740            354 drivers/media/i2c/ov7740.c 				   ov7740->blue_balance->val);
ov7740            358 drivers/media/i2c/ov7740.c 		ret = regmap_write(regmap, REG_RGAIN, ov7740->red_balance->val);
ov7740            430 drivers/media/i2c/ov7740.c static int ov7740_get_gain(struct ov7740 *ov7740, struct v4l2_ctrl *ctrl)
ov7740            432 drivers/media/i2c/ov7740.c 	struct regmap *regmap = ov7740->regmap;
ov7740            446 drivers/media/i2c/ov7740.c 	ov7740->gain->val = (value1 << 8) | (value0 & 0xff);
ov7740            451 drivers/media/i2c/ov7740.c static int ov7740_get_exp(struct ov7740 *ov7740, struct v4l2_ctrl *ctrl)
ov7740            453 drivers/media/i2c/ov7740.c 	struct regmap *regmap = ov7740->regmap;
ov7740            467 drivers/media/i2c/ov7740.c 	ov7740->exposure->val = (value1 << 8) | (value0 & 0xff);
ov7740            510 drivers/media/i2c/ov7740.c 	struct ov7740 *ov7740 = container_of(ctrl->handler,
ov7740            511 drivers/media/i2c/ov7740.c 					     struct ov7740, ctrl_handler);
ov7740            516 drivers/media/i2c/ov7740.c 		ret = ov7740_get_gain(ov7740, ctrl);
ov7740            519 drivers/media/i2c/ov7740.c 		ret = ov7740_get_exp(ov7740, ctrl);
ov7740            530 drivers/media/i2c/ov7740.c 	struct ov7740 *ov7740 = container_of(ctrl->handler,
ov7740            531 drivers/media/i2c/ov7740.c 					     struct ov7740, ctrl_handler);
ov7740            532 drivers/media/i2c/ov7740.c 	struct i2c_client *client = v4l2_get_subdevdata(&ov7740->subdev);
ov7740            533 drivers/media/i2c/ov7740.c 	struct regmap *regmap = ov7740->regmap;
ov7740            542 drivers/media/i2c/ov7740.c 		ret = ov7740_set_white_balance(ov7740, ctrl->val);
ov7740            565 drivers/media/i2c/ov7740.c 			ret = ov7740_set_gain(regmap, ov7740->gain->val);
ov7740            572 drivers/media/i2c/ov7740.c 			ret = ov7740_set_exp(regmap, ov7740->exposure->val);
ov7740            591 drivers/media/i2c/ov7740.c static int ov7740_start_streaming(struct ov7740 *ov7740)
ov7740            595 drivers/media/i2c/ov7740.c 	if (ov7740->fmt) {
ov7740            596 drivers/media/i2c/ov7740.c 		ret = regmap_multi_reg_write(ov7740->regmap,
ov7740            597 drivers/media/i2c/ov7740.c 					     ov7740->fmt->regs,
ov7740            598 drivers/media/i2c/ov7740.c 					     ov7740->fmt->reg_num);
ov7740            603 drivers/media/i2c/ov7740.c 	if (ov7740->frmsize) {
ov7740            604 drivers/media/i2c/ov7740.c 		ret = regmap_multi_reg_write(ov7740->regmap,
ov7740            605 drivers/media/i2c/ov7740.c 					     ov7740->frmsize->regs,
ov7740            606 drivers/media/i2c/ov7740.c 					     ov7740->frmsize->reg_num);
ov7740            611 drivers/media/i2c/ov7740.c 	return __v4l2_ctrl_handler_setup(ov7740->subdev.ctrl_handler);
ov7740            616 drivers/media/i2c/ov7740.c 	struct ov7740 *ov7740 = container_of(sd, struct ov7740, subdev);
ov7740            620 drivers/media/i2c/ov7740.c 	mutex_lock(&ov7740->mutex);
ov7740            621 drivers/media/i2c/ov7740.c 	if (ov7740->streaming == enable) {
ov7740            622 drivers/media/i2c/ov7740.c 		mutex_unlock(&ov7740->mutex);
ov7740            633 drivers/media/i2c/ov7740.c 		ret = ov7740_start_streaming(ov7740);
ov7740            640 drivers/media/i2c/ov7740.c 	ov7740->streaming = enable;
ov7740            642 drivers/media/i2c/ov7740.c 	mutex_unlock(&ov7740->mutex);
ov7740            648 drivers/media/i2c/ov7740.c 	mutex_unlock(&ov7740->mutex);
ov7740            763 drivers/media/i2c/ov7740.c 	struct ov7740 *ov7740 = container_of(sd, struct ov7740, subdev);
ov7740            800 drivers/media/i2c/ov7740.c 	ov7740->format = *fmt;
ov7740            809 drivers/media/i2c/ov7740.c 	struct ov7740 *ov7740 = container_of(sd, struct ov7740, subdev);
ov7740            817 drivers/media/i2c/ov7740.c 	mutex_lock(&ov7740->mutex);
ov7740            831 drivers/media/i2c/ov7740.c 		mutex_unlock(&ov7740->mutex);
ov7740            839 drivers/media/i2c/ov7740.c 	ov7740->fmt = ovfmt;
ov7740            840 drivers/media/i2c/ov7740.c 	ov7740->frmsize = fsize;
ov7740            842 drivers/media/i2c/ov7740.c 	mutex_unlock(&ov7740->mutex);
ov7740            846 drivers/media/i2c/ov7740.c 	mutex_unlock(&ov7740->mutex);
ov7740            854 drivers/media/i2c/ov7740.c 	struct ov7740 *ov7740 = container_of(sd, struct ov7740, subdev);
ov7740            860 drivers/media/i2c/ov7740.c 	mutex_lock(&ov7740->mutex);
ov7740            870 drivers/media/i2c/ov7740.c 		format->format = ov7740->format;
ov7740            872 drivers/media/i2c/ov7740.c 	mutex_unlock(&ov7740->mutex);
ov7740            894 drivers/media/i2c/ov7740.c 	struct ov7740 *ov7740 = container_of(sd, struct ov7740, subdev);
ov7740            896 drivers/media/i2c/ov7740.c 	format->width = ov7740->frmsize->width;
ov7740            897 drivers/media/i2c/ov7740.c 	format->height = ov7740->frmsize->height;
ov7740            898 drivers/media/i2c/ov7740.c 	format->colorspace = ov7740->fmt->colorspace;
ov7740            899 drivers/media/i2c/ov7740.c 	format->code = ov7740->fmt->mbus_code;
ov7740            906 drivers/media/i2c/ov7740.c 	struct ov7740 *ov7740 = container_of(sd, struct ov7740, subdev);
ov7740            910 drivers/media/i2c/ov7740.c 	mutex_lock(&ov7740->mutex);
ov7740            912 drivers/media/i2c/ov7740.c 	mutex_unlock(&ov7740->mutex);
ov7740            923 drivers/media/i2c/ov7740.c 			   struct ov7740 *ov7740)
ov7740            925 drivers/media/i2c/ov7740.c 	ov7740->resetb_gpio = devm_gpiod_get_optional(&client->dev, "reset",
ov7740            927 drivers/media/i2c/ov7740.c 	if (IS_ERR(ov7740->resetb_gpio)) {
ov7740            929 drivers/media/i2c/ov7740.c 		return PTR_ERR(ov7740->resetb_gpio);
ov7740            932 drivers/media/i2c/ov7740.c 	ov7740->pwdn_gpio = devm_gpiod_get_optional(&client->dev, "powerdown",
ov7740            934 drivers/media/i2c/ov7740.c 	if (IS_ERR(ov7740->pwdn_gpio)) {
ov7740            936 drivers/media/i2c/ov7740.c 		return PTR_ERR(ov7740->pwdn_gpio);
ov7740            942 drivers/media/i2c/ov7740.c static int ov7740_detect(struct ov7740 *ov7740)
ov7740            944 drivers/media/i2c/ov7740.c 	struct regmap *regmap = ov7740->regmap;
ov7740            975 drivers/media/i2c/ov7740.c static int ov7740_init_controls(struct ov7740 *ov7740)
ov7740            977 drivers/media/i2c/ov7740.c 	struct i2c_client *client = v4l2_get_subdevdata(&ov7740->subdev);
ov7740            978 drivers/media/i2c/ov7740.c 	struct v4l2_ctrl_handler *ctrl_hdlr = &ov7740->ctrl_handler;
ov7740            985 drivers/media/i2c/ov7740.c 	ctrl_hdlr->lock = &ov7740->mutex;
ov7740            986 drivers/media/i2c/ov7740.c 	ov7740->auto_wb = v4l2_ctrl_new_std(ctrl_hdlr, &ov7740_ctrl_ops,
ov7740            989 drivers/media/i2c/ov7740.c 	ov7740->blue_balance = v4l2_ctrl_new_std(ctrl_hdlr, &ov7740_ctrl_ops,
ov7740            992 drivers/media/i2c/ov7740.c 	ov7740->red_balance = v4l2_ctrl_new_std(ctrl_hdlr, &ov7740_ctrl_ops,
ov7740            996 drivers/media/i2c/ov7740.c 	ov7740->brightness = v4l2_ctrl_new_std(ctrl_hdlr, &ov7740_ctrl_ops,
ov7740            999 drivers/media/i2c/ov7740.c 	ov7740->contrast = v4l2_ctrl_new_std(ctrl_hdlr, &ov7740_ctrl_ops,
ov7740           1002 drivers/media/i2c/ov7740.c 	ov7740->saturation = v4l2_ctrl_new_std(ctrl_hdlr, &ov7740_ctrl_ops,
ov7740           1004 drivers/media/i2c/ov7740.c 	ov7740->hflip = v4l2_ctrl_new_std(ctrl_hdlr, &ov7740_ctrl_ops,
ov7740           1006 drivers/media/i2c/ov7740.c 	ov7740->vflip = v4l2_ctrl_new_std(ctrl_hdlr, &ov7740_ctrl_ops,
ov7740           1009 drivers/media/i2c/ov7740.c 	ov7740->gain = v4l2_ctrl_new_std(ctrl_hdlr, &ov7740_ctrl_ops,
ov7740           1012 drivers/media/i2c/ov7740.c 	ov7740->auto_gain = v4l2_ctrl_new_std(ctrl_hdlr, &ov7740_ctrl_ops,
ov7740           1015 drivers/media/i2c/ov7740.c 	ov7740->exposure = v4l2_ctrl_new_std(ctrl_hdlr, &ov7740_ctrl_ops,
ov7740           1018 drivers/media/i2c/ov7740.c 	ov7740->auto_exposure = v4l2_ctrl_new_std_menu(ctrl_hdlr,
ov7740           1024 drivers/media/i2c/ov7740.c 	v4l2_ctrl_auto_cluster(3, &ov7740->auto_wb, 0, false);
ov7740           1025 drivers/media/i2c/ov7740.c 	v4l2_ctrl_auto_cluster(2, &ov7740->auto_gain, 0, true);
ov7740           1026 drivers/media/i2c/ov7740.c 	v4l2_ctrl_auto_cluster(2, &ov7740->auto_exposure,
ov7740           1043 drivers/media/i2c/ov7740.c 	ov7740->subdev.ctrl_handler = ctrl_hdlr;
ov7740           1048 drivers/media/i2c/ov7740.c 	mutex_destroy(&ov7740->mutex);
ov7740           1052 drivers/media/i2c/ov7740.c static void ov7740_free_controls(struct ov7740 *ov7740)
ov7740           1054 drivers/media/i2c/ov7740.c 	v4l2_ctrl_handler_free(ov7740->subdev.ctrl_handler);
ov7740           1055 drivers/media/i2c/ov7740.c 	mutex_destroy(&ov7740->mutex);
ov7740           1067 drivers/media/i2c/ov7740.c 	struct ov7740 *ov7740;
ov7740           1078 drivers/media/i2c/ov7740.c 	ov7740 = devm_kzalloc(&client->dev, sizeof(*ov7740), GFP_KERNEL);
ov7740           1079 drivers/media/i2c/ov7740.c 	if (!ov7740)
ov7740           1082 drivers/media/i2c/ov7740.c 	ov7740->xvclk = devm_clk_get(&client->dev, "xvclk");
ov7740           1083 drivers/media/i2c/ov7740.c 	if (IS_ERR(ov7740->xvclk)) {
ov7740           1084 drivers/media/i2c/ov7740.c 		ret = PTR_ERR(ov7740->xvclk);
ov7740           1090 drivers/media/i2c/ov7740.c 	ret = ov7740_probe_dt(client, ov7740);
ov7740           1094 drivers/media/i2c/ov7740.c 	ov7740->regmap = devm_regmap_init_i2c(client, &ov7740_regmap_config);
ov7740           1095 drivers/media/i2c/ov7740.c 	if (IS_ERR(ov7740->regmap)) {
ov7740           1096 drivers/media/i2c/ov7740.c 		ret = PTR_ERR(ov7740->regmap);
ov7740           1102 drivers/media/i2c/ov7740.c 	sd = &ov7740->subdev;
ov7740           1112 drivers/media/i2c/ov7740.c 	ov7740->pad.flags = MEDIA_PAD_FL_SOURCE;
ov7740           1114 drivers/media/i2c/ov7740.c 	ret = media_entity_pads_init(&sd->entity, 1, &ov7740->pad);
ov7740           1119 drivers/media/i2c/ov7740.c 	ret = ov7740_set_power(ov7740, 1);
ov7740           1126 drivers/media/i2c/ov7740.c 	ret = ov7740_detect(ov7740);
ov7740           1130 drivers/media/i2c/ov7740.c 	mutex_init(&ov7740->mutex);
ov7740           1132 drivers/media/i2c/ov7740.c 	ret = ov7740_init_controls(ov7740);
ov7740           1139 drivers/media/i2c/ov7740.c 	ov7740->fmt = &ov7740_formats[0];
ov7740           1140 drivers/media/i2c/ov7740.c 	ov7740->frmsize = &ov7740_framesizes[0];
ov7740           1142 drivers/media/i2c/ov7740.c 	ov7740_get_default_format(sd, &ov7740->format);
ov7740           1153 drivers/media/i2c/ov7740.c 	v4l2_ctrl_handler_free(ov7740->subdev.ctrl_handler);
ov7740           1155 drivers/media/i2c/ov7740.c 	ov7740_free_controls(ov7740);
ov7740           1159 drivers/media/i2c/ov7740.c 	ov7740_set_power(ov7740, 0);
ov7740           1160 drivers/media/i2c/ov7740.c 	media_entity_cleanup(&ov7740->subdev.entity);
ov7740           1168 drivers/media/i2c/ov7740.c 	struct ov7740 *ov7740 = container_of(sd, struct ov7740, subdev);
ov7740           1170 drivers/media/i2c/ov7740.c 	mutex_destroy(&ov7740->mutex);
ov7740           1171 drivers/media/i2c/ov7740.c 	v4l2_ctrl_handler_free(ov7740->subdev.ctrl_handler);
ov7740           1172 drivers/media/i2c/ov7740.c 	media_entity_cleanup(&ov7740->subdev.entity);
ov7740           1174 drivers/media/i2c/ov7740.c 	ov7740_free_controls(ov7740);
ov7740           1181 drivers/media/i2c/ov7740.c 	ov7740_set_power(ov7740, 0);
ov7740           1189 drivers/media/i2c/ov7740.c 	struct ov7740 *ov7740 = container_of(sd, struct ov7740, subdev);
ov7740           1191 drivers/media/i2c/ov7740.c 	ov7740_set_power(ov7740, 0);
ov7740           1200 drivers/media/i2c/ov7740.c 	struct ov7740 *ov7740 = container_of(sd, struct ov7740, subdev);
ov7740           1202 drivers/media/i2c/ov7740.c 	return ov7740_set_power(ov7740, 1);