Commit eef9c161 authored by Laurent Pinchart's avatar Laurent Pinchart Committed by Hans Verkuil
Browse files

media: i2c: imx219: Implement .init_cfg() using .set_fmt()



Instead of duplicating the logical implemented in the .set_fmt()
operation in .init_cfg(), call .set_fmt() directly. This centralizes the
format and crop rectangle calculations in a single place.

Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: default avatarDave Stevenson <dave.stevenson@raspberrypi.com>
Signed-off-by: default avatarSakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
parent d83b40ef
Loading
Loading
Loading
Loading
+18 −22
Original line number Diff line number Diff line
@@ -784,28 +784,6 @@ static void imx219_update_pad_format(struct imx219 *imx219,
	fmt->xfer_func = V4L2_XFER_FUNC_NONE;
}

static int imx219_init_cfg(struct v4l2_subdev *sd,
			   struct v4l2_subdev_state *state)
{
	struct imx219 *imx219 = to_imx219(sd);
	struct v4l2_mbus_framefmt *format;
	struct v4l2_rect *crop;

	/* Initialize the format. */
	format = v4l2_subdev_get_pad_format(sd, state, 0);
	imx219_update_pad_format(imx219, &supported_modes[0], format,
				 MEDIA_BUS_FMT_SRGGB10_1X10);

	/* Initialize the crop rectangle. */
	crop = v4l2_subdev_get_pad_crop(sd, state, 0);
	crop->top = IMX219_PIXEL_ARRAY_TOP;
	crop->left = IMX219_PIXEL_ARRAY_LEFT;
	crop->width = IMX219_PIXEL_ARRAY_WIDTH;
	crop->height = IMX219_PIXEL_ARRAY_HEIGHT;

	return 0;
}

static int imx219_enum_mbus_code(struct v4l2_subdev *sd,
				 struct v4l2_subdev_state *sd_state,
				 struct v4l2_subdev_mbus_code_enum *code)
@@ -924,6 +902,24 @@ static int imx219_get_selection(struct v4l2_subdev *sd,
	return -EINVAL;
}

static int imx219_init_cfg(struct v4l2_subdev *sd,
			   struct v4l2_subdev_state *state)
{
	struct v4l2_subdev_format fmt = {
		.which = V4L2_SUBDEV_FORMAT_TRY,
		.pad = 0,
		.format = {
			.code = MEDIA_BUS_FMT_SRGGB10_1X10,
			.width = supported_modes[0].width,
			.height = supported_modes[0].height,
		},
	};

	imx219_set_pad_format(sd, state, &fmt);

	return 0;
}

static const struct v4l2_subdev_core_ops imx219_core_ops = {
	.subscribe_event = v4l2_ctrl_subdev_subscribe_event,
	.unsubscribe_event = v4l2_event_subdev_unsubscribe,