mt9t001           135 drivers/media/i2c/mt9t001.c static inline struct mt9t001 *to_mt9t001(struct v4l2_subdev *sd)
mt9t001           137 drivers/media/i2c/mt9t001.c 	return container_of(sd, struct mt9t001, subdev);
mt9t001           150 drivers/media/i2c/mt9t001.c static int mt9t001_set_output_control(struct mt9t001 *mt9t001, u16 clear,
mt9t001           153 drivers/media/i2c/mt9t001.c 	struct i2c_client *client = v4l2_get_subdevdata(&mt9t001->subdev);
mt9t001           154 drivers/media/i2c/mt9t001.c 	u16 value = (mt9t001->output_control & ~clear) | set;
mt9t001           157 drivers/media/i2c/mt9t001.c 	if (value == mt9t001->output_control)
mt9t001           164 drivers/media/i2c/mt9t001.c 	mt9t001->output_control = value;
mt9t001           168 drivers/media/i2c/mt9t001.c static int mt9t001_reset(struct mt9t001 *mt9t001)
mt9t001           170 drivers/media/i2c/mt9t001.c 	struct i2c_client *client = v4l2_get_subdevdata(&mt9t001->subdev);
mt9t001           182 drivers/media/i2c/mt9t001.c 	mt9t001->output_control = MT9T001_OUTPUT_CONTROL_DEF;
mt9t001           184 drivers/media/i2c/mt9t001.c 	return mt9t001_set_output_control(mt9t001,
mt9t001           189 drivers/media/i2c/mt9t001.c static int mt9t001_power_on(struct mt9t001 *mt9t001)
mt9t001           194 drivers/media/i2c/mt9t001.c 	ret = regulator_bulk_enable(ARRAY_SIZE(mt9t001->regulators),
mt9t001           195 drivers/media/i2c/mt9t001.c 				   mt9t001->regulators);
mt9t001           200 drivers/media/i2c/mt9t001.c 	ret = clk_prepare_enable(mt9t001->clk);
mt9t001           202 drivers/media/i2c/mt9t001.c 		regulator_bulk_disable(ARRAY_SIZE(mt9t001->regulators),
mt9t001           203 drivers/media/i2c/mt9t001.c 				       mt9t001->regulators);
mt9t001           208 drivers/media/i2c/mt9t001.c static void mt9t001_power_off(struct mt9t001 *mt9t001)
mt9t001           210 drivers/media/i2c/mt9t001.c 	regulator_bulk_disable(ARRAY_SIZE(mt9t001->regulators),
mt9t001           211 drivers/media/i2c/mt9t001.c 			       mt9t001->regulators);
mt9t001           213 drivers/media/i2c/mt9t001.c 	clk_disable_unprepare(mt9t001->clk);
mt9t001           216 drivers/media/i2c/mt9t001.c static int __mt9t001_set_power(struct mt9t001 *mt9t001, bool on)
mt9t001           218 drivers/media/i2c/mt9t001.c 	struct i2c_client *client = v4l2_get_subdevdata(&mt9t001->subdev);
mt9t001           222 drivers/media/i2c/mt9t001.c 		mt9t001_power_off(mt9t001);
mt9t001           226 drivers/media/i2c/mt9t001.c 	ret = mt9t001_power_on(mt9t001);
mt9t001           230 drivers/media/i2c/mt9t001.c 	ret = mt9t001_reset(mt9t001);
mt9t001           236 drivers/media/i2c/mt9t001.c 	ret = v4l2_ctrl_handler_setup(&mt9t001->ctrls);
mt9t001           245 drivers/media/i2c/mt9t001.c 	mt9t001_power_off(mt9t001);
mt9t001           255 drivers/media/i2c/mt9t001.c __mt9t001_get_pad_format(struct mt9t001 *mt9t001, struct v4l2_subdev_pad_config *cfg,
mt9t001           260 drivers/media/i2c/mt9t001.c 		return v4l2_subdev_get_try_format(&mt9t001->subdev, cfg, pad);
mt9t001           262 drivers/media/i2c/mt9t001.c 		return &mt9t001->format;
mt9t001           269 drivers/media/i2c/mt9t001.c __mt9t001_get_pad_crop(struct mt9t001 *mt9t001, struct v4l2_subdev_pad_config *cfg,
mt9t001           274 drivers/media/i2c/mt9t001.c 		return v4l2_subdev_get_try_crop(&mt9t001->subdev, cfg, pad);
mt9t001           276 drivers/media/i2c/mt9t001.c 		return &mt9t001->crop;
mt9t001           287 drivers/media/i2c/mt9t001.c 	struct mt9t001 *mt9t001 = to_mt9t001(subdev);
mt9t001           288 drivers/media/i2c/mt9t001.c 	struct v4l2_mbus_framefmt *format = &mt9t001->format;
mt9t001           289 drivers/media/i2c/mt9t001.c 	struct v4l2_rect *crop = &mt9t001->crop;
mt9t001           295 drivers/media/i2c/mt9t001.c 		return mt9t001_set_output_control(mt9t001, mode, 0);
mt9t001           334 drivers/media/i2c/mt9t001.c 	return mt9t001_set_output_control(mt9t001, 0, mode);
mt9t001           367 drivers/media/i2c/mt9t001.c 	struct mt9t001 *mt9t001 = to_mt9t001(subdev);
mt9t001           369 drivers/media/i2c/mt9t001.c 	format->format = *__mt9t001_get_pad_format(mt9t001, cfg, format->pad,
mt9t001           378 drivers/media/i2c/mt9t001.c 	struct mt9t001 *mt9t001 = to_mt9t001(subdev);
mt9t001           386 drivers/media/i2c/mt9t001.c 	__crop = __mt9t001_get_pad_crop(mt9t001, cfg, format->pad,
mt9t001           402 drivers/media/i2c/mt9t001.c 	__format = __mt9t001_get_pad_format(mt9t001, cfg, format->pad,
mt9t001           416 drivers/media/i2c/mt9t001.c 	struct mt9t001 *mt9t001 = to_mt9t001(subdev);
mt9t001           421 drivers/media/i2c/mt9t001.c 	sel->r = *__mt9t001_get_pad_crop(mt9t001, cfg, sel->pad, sel->which);
mt9t001           429 drivers/media/i2c/mt9t001.c 	struct mt9t001 *mt9t001 = to_mt9t001(subdev);
mt9t001           458 drivers/media/i2c/mt9t001.c 	__crop = __mt9t001_get_pad_crop(mt9t001, cfg, sel->pad, sel->which);
mt9t001           464 drivers/media/i2c/mt9t001.c 		__format = __mt9t001_get_pad_format(mt9t001, cfg, sel->pad,
mt9t001           518 drivers/media/i2c/mt9t001.c static int mt9t001_ctrl_freeze(struct mt9t001 *mt9t001, bool freeze)
mt9t001           520 drivers/media/i2c/mt9t001.c 	return mt9t001_set_output_control(mt9t001,
mt9t001           532 drivers/media/i2c/mt9t001.c 	struct mt9t001 *mt9t001 =
mt9t001           533 drivers/media/i2c/mt9t001.c 			container_of(ctrl->handler, struct mt9t001, ctrls);
mt9t001           534 drivers/media/i2c/mt9t001.c 	struct i2c_client *client = v4l2_get_subdevdata(&mt9t001->subdev);
mt9t001           550 drivers/media/i2c/mt9t001.c 			struct v4l2_ctrl *gain = mt9t001->gains[i];
mt9t001           557 drivers/media/i2c/mt9t001.c 			ret = mt9t001_ctrl_freeze(mt9t001, true);
mt9t001           564 drivers/media/i2c/mt9t001.c 			struct v4l2_ctrl *gain = mt9t001->gains[i];
mt9t001           572 drivers/media/i2c/mt9t001.c 				mt9t001_ctrl_freeze(mt9t001, false);
mt9t001           579 drivers/media/i2c/mt9t001.c 			ret = mt9t001_ctrl_freeze(mt9t001, false);
mt9t001           596 drivers/media/i2c/mt9t001.c 		return mt9t001_set_output_control(mt9t001,
mt9t001           610 drivers/media/i2c/mt9t001.c 		mt9t001->black_level = value;
mt9t001           631 drivers/media/i2c/mt9t001.c 				     mt9t001->black_level);
mt9t001           740 drivers/media/i2c/mt9t001.c 	struct mt9t001 *mt9t001 = to_mt9t001(subdev);
mt9t001           743 drivers/media/i2c/mt9t001.c 	mutex_lock(&mt9t001->power_lock);
mt9t001           748 drivers/media/i2c/mt9t001.c 	if (mt9t001->power_count == !on) {
mt9t001           749 drivers/media/i2c/mt9t001.c 		ret = __mt9t001_set_power(mt9t001, !!on);
mt9t001           755 drivers/media/i2c/mt9t001.c 	mt9t001->power_count += on ? 1 : -1;
mt9t001           756 drivers/media/i2c/mt9t001.c 	WARN_ON(mt9t001->power_count < 0);
mt9t001           759 drivers/media/i2c/mt9t001.c 	mutex_unlock(&mt9t001->power_lock);
mt9t001           770 drivers/media/i2c/mt9t001.c 	struct mt9t001 *mt9t001 = to_mt9t001(subdev);
mt9t001           774 drivers/media/i2c/mt9t001.c 	ret = mt9t001_power_on(mt9t001);
mt9t001           782 drivers/media/i2c/mt9t001.c 	mt9t001_power_off(mt9t001);
mt9t001           855 drivers/media/i2c/mt9t001.c 	struct mt9t001 *mt9t001;
mt9t001           871 drivers/media/i2c/mt9t001.c 	mt9t001 = devm_kzalloc(&client->dev, sizeof(*mt9t001), GFP_KERNEL);
mt9t001           872 drivers/media/i2c/mt9t001.c 	if (!mt9t001)
mt9t001           875 drivers/media/i2c/mt9t001.c 	mutex_init(&mt9t001->power_lock);
mt9t001           876 drivers/media/i2c/mt9t001.c 	mt9t001->output_control = MT9T001_OUTPUT_CONTROL_DEF;
mt9t001           878 drivers/media/i2c/mt9t001.c 	mt9t001->regulators[0].supply = "vdd";
mt9t001           879 drivers/media/i2c/mt9t001.c 	mt9t001->regulators[1].supply = "vaa";
mt9t001           881 drivers/media/i2c/mt9t001.c 	ret = devm_regulator_bulk_get(&client->dev, 2, mt9t001->regulators);
mt9t001           887 drivers/media/i2c/mt9t001.c 	mt9t001->clk = devm_clk_get(&client->dev, NULL);
mt9t001           888 drivers/media/i2c/mt9t001.c 	if (IS_ERR(mt9t001->clk)) {
mt9t001           890 drivers/media/i2c/mt9t001.c 		return PTR_ERR(mt9t001->clk);
mt9t001           893 drivers/media/i2c/mt9t001.c 	v4l2_ctrl_handler_init(&mt9t001->ctrls, ARRAY_SIZE(mt9t001_ctrls) +
mt9t001           896 drivers/media/i2c/mt9t001.c 	v4l2_ctrl_new_std(&mt9t001->ctrls, &mt9t001_ctrl_ops,
mt9t001           900 drivers/media/i2c/mt9t001.c 	v4l2_ctrl_new_std(&mt9t001->ctrls, &mt9t001_ctrl_ops,
mt9t001           902 drivers/media/i2c/mt9t001.c 	v4l2_ctrl_new_std(&mt9t001->ctrls, &mt9t001_ctrl_ops,
mt9t001           905 drivers/media/i2c/mt9t001.c 	v4l2_ctrl_new_std_menu_items(&mt9t001->ctrls, &mt9t001_ctrl_ops,
mt9t001           911 drivers/media/i2c/mt9t001.c 		v4l2_ctrl_new_custom(&mt9t001->ctrls, &mt9t001_ctrls[i], NULL);
mt9t001           914 drivers/media/i2c/mt9t001.c 		mt9t001->gains[i] = v4l2_ctrl_new_custom(&mt9t001->ctrls,
mt9t001           917 drivers/media/i2c/mt9t001.c 	v4l2_ctrl_cluster(ARRAY_SIZE(mt9t001_gains), mt9t001->gains);
mt9t001           919 drivers/media/i2c/mt9t001.c 	mt9t001->subdev.ctrl_handler = &mt9t001->ctrls;
mt9t001           921 drivers/media/i2c/mt9t001.c 	if (mt9t001->ctrls.error) {
mt9t001           923 drivers/media/i2c/mt9t001.c 		       __func__, mt9t001->ctrls.error);
mt9t001           928 drivers/media/i2c/mt9t001.c 	mt9t001->crop.left = MT9T001_COLUMN_START_DEF;
mt9t001           929 drivers/media/i2c/mt9t001.c 	mt9t001->crop.top = MT9T001_ROW_START_DEF;
mt9t001           930 drivers/media/i2c/mt9t001.c 	mt9t001->crop.width = MT9T001_WINDOW_WIDTH_DEF + 1;
mt9t001           931 drivers/media/i2c/mt9t001.c 	mt9t001->crop.height = MT9T001_WINDOW_HEIGHT_DEF + 1;
mt9t001           933 drivers/media/i2c/mt9t001.c 	mt9t001->format.code = MEDIA_BUS_FMT_SGRBG10_1X10;
mt9t001           934 drivers/media/i2c/mt9t001.c 	mt9t001->format.width = MT9T001_WINDOW_WIDTH_DEF + 1;
mt9t001           935 drivers/media/i2c/mt9t001.c 	mt9t001->format.height = MT9T001_WINDOW_HEIGHT_DEF + 1;
mt9t001           936 drivers/media/i2c/mt9t001.c 	mt9t001->format.field = V4L2_FIELD_NONE;
mt9t001           937 drivers/media/i2c/mt9t001.c 	mt9t001->format.colorspace = V4L2_COLORSPACE_SRGB;
mt9t001           939 drivers/media/i2c/mt9t001.c 	v4l2_i2c_subdev_init(&mt9t001->subdev, client, &mt9t001_subdev_ops);
mt9t001           940 drivers/media/i2c/mt9t001.c 	mt9t001->subdev.internal_ops = &mt9t001_subdev_internal_ops;
mt9t001           941 drivers/media/i2c/mt9t001.c 	mt9t001->subdev.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
mt9t001           943 drivers/media/i2c/mt9t001.c 	mt9t001->subdev.entity.function = MEDIA_ENT_F_CAM_SENSOR;
mt9t001           944 drivers/media/i2c/mt9t001.c 	mt9t001->pad.flags = MEDIA_PAD_FL_SOURCE;
mt9t001           945 drivers/media/i2c/mt9t001.c 	ret = media_entity_pads_init(&mt9t001->subdev.entity, 1, &mt9t001->pad);
mt9t001           949 drivers/media/i2c/mt9t001.c 		v4l2_ctrl_handler_free(&mt9t001->ctrls);
mt9t001           950 drivers/media/i2c/mt9t001.c 		media_entity_cleanup(&mt9t001->subdev.entity);
mt9t001           959 drivers/media/i2c/mt9t001.c 	struct mt9t001 *mt9t001 = to_mt9t001(subdev);
mt9t001           961 drivers/media/i2c/mt9t001.c 	v4l2_ctrl_handler_free(&mt9t001->ctrls);