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);