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

media: renesas: vsp1: Fix references to pad config



V4L2 subdev operations have moved from operating on a
v4l2_subdev_pad_config to a v4l2_subdev_state a long time ago. Fix
remaining incorrect references to pad config in function and variable
names.

Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: default avatarJacopo Mondi <jacopo.mondi@ideasonboard.com>
Signed-off-by: default avatarSakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
parent 073249b8
Loading
Loading
Loading
Loading
+19 −21
Original line number Diff line number Diff line
@@ -136,29 +136,28 @@ static int brx_set_format(struct v4l2_subdev *subdev,
			  struct v4l2_subdev_format *fmt)
{
	struct vsp1_brx *brx = to_brx(subdev);
	struct v4l2_subdev_state *config;
	struct v4l2_subdev_state *state;
	struct v4l2_mbus_framefmt *format;
	int ret = 0;

	mutex_lock(&brx->entity.lock);

	config = vsp1_entity_get_pad_config(&brx->entity, sd_state,
					    fmt->which);
	if (!config) {
	state = vsp1_entity_get_state(&brx->entity, sd_state, fmt->which);
	if (!state) {
		ret = -EINVAL;
		goto done;
	}

	brx_try_format(brx, config, fmt->pad, &fmt->format);
	brx_try_format(brx, state, fmt->pad, &fmt->format);

	format = vsp1_entity_get_pad_format(&brx->entity, config, fmt->pad);
	format = vsp1_entity_get_pad_format(&brx->entity, state, fmt->pad);
	*format = fmt->format;

	/* Reset the compose rectangle. */
	if (fmt->pad != brx->entity.source_pad) {
		struct v4l2_rect *compose;

		compose = brx_get_compose(brx, config, fmt->pad);
		compose = brx_get_compose(brx, state, fmt->pad);
		compose->left = 0;
		compose->top = 0;
		compose->width = format->width;
@@ -171,7 +170,7 @@ static int brx_set_format(struct v4l2_subdev *subdev,

		for (i = 0; i <= brx->entity.source_pad; ++i) {
			format = vsp1_entity_get_pad_format(&brx->entity,
							    config, i);
							    state, i);
			format->code = fmt->format.code;
		}
	}
@@ -186,7 +185,7 @@ static int brx_get_selection(struct v4l2_subdev *subdev,
			     struct v4l2_subdev_selection *sel)
{
	struct vsp1_brx *brx = to_brx(subdev);
	struct v4l2_subdev_state *config;
	struct v4l2_subdev_state *state;

	if (sel->pad == brx->entity.source_pad)
		return -EINVAL;
@@ -200,13 +199,13 @@ static int brx_get_selection(struct v4l2_subdev *subdev,
		return 0;

	case V4L2_SEL_TGT_COMPOSE:
		config = vsp1_entity_get_pad_config(&brx->entity, sd_state,
		state = vsp1_entity_get_state(&brx->entity, sd_state,
					      sel->which);
		if (!config)
		if (!state)
			return -EINVAL;

		mutex_lock(&brx->entity.lock);
		sel->r = *brx_get_compose(brx, config, sel->pad);
		sel->r = *brx_get_compose(brx, state, sel->pad);
		mutex_unlock(&brx->entity.lock);
		return 0;

@@ -220,7 +219,7 @@ static int brx_set_selection(struct v4l2_subdev *subdev,
			     struct v4l2_subdev_selection *sel)
{
	struct vsp1_brx *brx = to_brx(subdev);
	struct v4l2_subdev_state *config;
	struct v4l2_subdev_state *state;
	struct v4l2_mbus_framefmt *format;
	struct v4l2_rect *compose;
	int ret = 0;
@@ -233,9 +232,8 @@ static int brx_set_selection(struct v4l2_subdev *subdev,

	mutex_lock(&brx->entity.lock);

	config = vsp1_entity_get_pad_config(&brx->entity, sd_state,
					    sel->which);
	if (!config) {
	state = vsp1_entity_get_state(&brx->entity, sd_state, sel->which);
	if (!state) {
		ret = -EINVAL;
		goto done;
	}
@@ -244,7 +242,7 @@ static int brx_set_selection(struct v4l2_subdev *subdev,
	 * The compose rectangle top left corner must be inside the output
	 * frame.
	 */
	format = vsp1_entity_get_pad_format(&brx->entity, config,
	format = vsp1_entity_get_pad_format(&brx->entity, state,
					    brx->entity.source_pad);
	sel->r.left = clamp_t(unsigned int, sel->r.left, 0, format->width - 1);
	sel->r.top = clamp_t(unsigned int, sel->r.top, 0, format->height - 1);
@@ -253,11 +251,11 @@ static int brx_set_selection(struct v4l2_subdev *subdev,
	 * Scaling isn't supported, the compose rectangle size must be identical
	 * to the sink format size.
	 */
	format = vsp1_entity_get_pad_format(&brx->entity, config, sel->pad);
	format = vsp1_entity_get_pad_format(&brx->entity, state, sel->pad);
	sel->r.width = format->width;
	sel->r.height = format->height;

	compose = brx_get_compose(brx, config, sel->pad);
	compose = brx_get_compose(brx, state, sel->pad);
	*compose = sel->r;

done:
@@ -293,7 +291,7 @@ static void brx_configure_stream(struct vsp1_entity *entity,
	unsigned int flags;
	unsigned int i;

	format = vsp1_entity_get_pad_format(&brx->entity, brx->entity.config,
	format = vsp1_entity_get_pad_format(&brx->entity, brx->entity.state,
					    brx->entity.source_pad);

	/*
+1 −2
Original line number Diff line number Diff line
@@ -182,8 +182,7 @@ static void clu_configure_stream(struct vsp1_entity *entity,
	 * The yuv_mode can't be changed during streaming. Cache it internally
	 * for future runtime configuration calls.
	 */
	format = vsp1_entity_get_pad_format(&clu->entity,
					    clu->entity.config,
	format = vsp1_entity_get_pad_format(&clu->entity, clu->entity.state,
					    CLU_PAD_SINK);
	clu->yuv_mode = format->code == MEDIA_BUS_FMT_AYUV8_1X32;
}
+42 −43
Original line number Diff line number Diff line
@@ -101,27 +101,26 @@ void vsp1_entity_configure_partition(struct vsp1_entity *entity,
 */

/**
 * vsp1_entity_get_pad_config - Get the pad configuration for an entity
 * vsp1_entity_get_state - Get the subdev state for an entity
 * @entity: the entity
 * @sd_state: the TRY state
 * @which: configuration selector (ACTIVE or TRY)
 * @which: state selector (ACTIVE or TRY)
 *
 * When called with which set to V4L2_SUBDEV_FORMAT_ACTIVE the caller must hold
 * the entity lock to access the returned configuration.
 *
 * Return the pad configuration requested by the which argument. The TRY
 * configuration is passed explicitly to the function through the cfg argument
 * and simply returned when requested. The ACTIVE configuration comes from the
 * entity structure.
 * Return the subdev state requested by the which argument. The TRY state is
 * passed explicitly to the function through the sd_state argument and simply
 * returned when requested. The ACTIVE state comes from the entity structure.
 */
struct v4l2_subdev_state *
vsp1_entity_get_pad_config(struct vsp1_entity *entity,
vsp1_entity_get_state(struct vsp1_entity *entity,
		      struct v4l2_subdev_state *sd_state,
		      enum v4l2_subdev_format_whence which)
{
	switch (which) {
	case V4L2_SUBDEV_FORMAT_ACTIVE:
		return entity->config;
		return entity->state;
	case V4L2_SUBDEV_FORMAT_TRY:
	default:
		return sd_state;
@@ -174,10 +173,11 @@ vsp1_entity_get_pad_selection(struct vsp1_entity *entity,
/*
 * vsp1_entity_init_cfg - Initialize formats on all pads
 * @subdev: V4L2 subdevice
 * @cfg: V4L2 subdev pad configuration
 * @sd_state: V4L2 subdev state
 *
 * Initialize all pad formats with default values in the given pad config. This
 * function can be used as a handler for the subdev pad::init_cfg operation.
 * Initialize all pad formats with default values in the given subdev state.
 * This function can be used as a handler for the subdev pad::init_cfg
 * operation.
 */
int vsp1_entity_init_cfg(struct v4l2_subdev *subdev,
			 struct v4l2_subdev_state *sd_state)
@@ -200,7 +200,7 @@ int vsp1_entity_init_cfg(struct v4l2_subdev *subdev,
/*
 * vsp1_subdev_get_pad_format - Subdev pad get_fmt handler
 * @subdev: V4L2 subdevice
 * @cfg: V4L2 subdev pad configuration
 * @sd_state: V4L2 subdev state
 * @fmt: V4L2 subdev format
 *
 * This function implements the subdev get_fmt pad operation. It can be used as
@@ -211,14 +211,14 @@ int vsp1_subdev_get_pad_format(struct v4l2_subdev *subdev,
			       struct v4l2_subdev_format *fmt)
{
	struct vsp1_entity *entity = to_vsp1_entity(subdev);
	struct v4l2_subdev_state *config;
	struct v4l2_subdev_state *state;

	config = vsp1_entity_get_pad_config(entity, sd_state, fmt->which);
	if (!config)
	state = vsp1_entity_get_state(entity, sd_state, fmt->which);
	if (!state)
		return -EINVAL;

	mutex_lock(&entity->lock);
	fmt->format = *vsp1_entity_get_pad_format(entity, config, fmt->pad);
	fmt->format = *vsp1_entity_get_pad_format(entity, state, fmt->pad);
	mutex_unlock(&entity->lock);

	return 0;
@@ -227,7 +227,7 @@ int vsp1_subdev_get_pad_format(struct v4l2_subdev *subdev,
/*
 * vsp1_subdev_enum_mbus_code - Subdev pad enum_mbus_code handler
 * @subdev: V4L2 subdevice
 * @cfg: V4L2 subdev pad configuration
 * @sd_state: V4L2 subdev state
 * @code: Media bus code enumeration
 * @codes: Array of supported media bus codes
 * @ncodes: Number of supported media bus codes
@@ -250,7 +250,7 @@ int vsp1_subdev_enum_mbus_code(struct v4l2_subdev *subdev,

		code->code = codes[code->index];
	} else {
		struct v4l2_subdev_state *config;
		struct v4l2_subdev_state *state;
		struct v4l2_mbus_framefmt *format;

		/*
@@ -260,13 +260,12 @@ int vsp1_subdev_enum_mbus_code(struct v4l2_subdev *subdev,
		if (code->index)
			return -EINVAL;

		config = vsp1_entity_get_pad_config(entity, sd_state,
						    code->which);
		if (!config)
		state = vsp1_entity_get_state(entity, sd_state, code->which);
		if (!state)
			return -EINVAL;

		mutex_lock(&entity->lock);
		format = vsp1_entity_get_pad_format(entity, config, 0);
		format = vsp1_entity_get_pad_format(entity, state, 0);
		code->code = format->code;
		mutex_unlock(&entity->lock);
	}
@@ -277,7 +276,7 @@ int vsp1_subdev_enum_mbus_code(struct v4l2_subdev *subdev,
/*
 * vsp1_subdev_enum_frame_size - Subdev pad enum_frame_size handler
 * @subdev: V4L2 subdevice
 * @cfg: V4L2 subdev pad configuration
 * @sd_state: V4L2 subdev state
 * @fse: Frame size enumeration
 * @min_width: Minimum image width
 * @min_height: Minimum image height
@@ -296,15 +295,15 @@ int vsp1_subdev_enum_frame_size(struct v4l2_subdev *subdev,
				unsigned int max_width, unsigned int max_height)
{
	struct vsp1_entity *entity = to_vsp1_entity(subdev);
	struct v4l2_subdev_state *config;
	struct v4l2_subdev_state *state;
	struct v4l2_mbus_framefmt *format;
	int ret = 0;

	config = vsp1_entity_get_pad_config(entity, sd_state, fse->which);
	if (!config)
	state = vsp1_entity_get_state(entity, sd_state, fse->which);
	if (!state)
		return -EINVAL;

	format = vsp1_entity_get_pad_format(entity, config, fse->pad);
	format = vsp1_entity_get_pad_format(entity, state, fse->pad);

	mutex_lock(&entity->lock);

@@ -337,7 +336,7 @@ int vsp1_subdev_enum_frame_size(struct v4l2_subdev *subdev,
/*
 * vsp1_subdev_set_pad_format - Subdev pad set_fmt handler
 * @subdev: V4L2 subdevice
 * @cfg: V4L2 subdev pad configuration
 * @sd_state: V4L2 subdev state
 * @fmt: V4L2 subdev format
 * @codes: Array of supported media bus codes
 * @ncodes: Number of supported media bus codes
@@ -360,7 +359,7 @@ int vsp1_subdev_set_pad_format(struct v4l2_subdev *subdev,
			       unsigned int max_width, unsigned int max_height)
{
	struct vsp1_entity *entity = to_vsp1_entity(subdev);
	struct v4l2_subdev_state *config;
	struct v4l2_subdev_state *state;
	struct v4l2_mbus_framefmt *format;
	struct v4l2_rect *selection;
	unsigned int i;
@@ -368,13 +367,13 @@ int vsp1_subdev_set_pad_format(struct v4l2_subdev *subdev,

	mutex_lock(&entity->lock);

	config = vsp1_entity_get_pad_config(entity, sd_state, fmt->which);
	if (!config) {
	state = vsp1_entity_get_state(entity, sd_state, fmt->which);
	if (!state) {
		ret = -EINVAL;
		goto done;
	}

	format = vsp1_entity_get_pad_format(entity, config, fmt->pad);
	format = vsp1_entity_get_pad_format(entity, state, fmt->pad);

	if (fmt->pad == entity->source_pad) {
		/* The output format can't be modified. */
@@ -402,18 +401,18 @@ int vsp1_subdev_set_pad_format(struct v4l2_subdev *subdev,
	fmt->format = *format;

	/* Propagate the format to the source pad. */
	format = vsp1_entity_get_pad_format(entity, config, entity->source_pad);
	format = vsp1_entity_get_pad_format(entity, state, entity->source_pad);
	*format = fmt->format;

	/* Reset the crop and compose rectangles. */
	selection = vsp1_entity_get_pad_selection(entity, config, fmt->pad,
	selection = vsp1_entity_get_pad_selection(entity, state, fmt->pad,
						  V4L2_SEL_TGT_CROP);
	selection->left = 0;
	selection->top = 0;
	selection->width = format->width;
	selection->height = format->height;

	selection = vsp1_entity_get_pad_selection(entity, config, fmt->pad,
	selection = vsp1_entity_get_pad_selection(entity, state, fmt->pad,
						  V4L2_SEL_TGT_COMPOSE);
	selection->left = 0;
	selection->top = 0;
@@ -670,18 +669,18 @@ int vsp1_entity_init(struct vsp1_device *vsp1, struct vsp1_entity *entity,
	vsp1_entity_init_cfg(subdev, NULL);

	/*
	 * Allocate the pad configuration to store formats and selection
	 * Allocate the subdev state to store formats and selection
	 * rectangles.
	 */
	/*
	 * FIXME: Drop this call, drivers are not supposed to use
	 * __v4l2_subdev_state_alloc().
	 */
	entity->config = __v4l2_subdev_state_alloc(&entity->subdev,
						   "vsp1:config->lock", &key);
	if (IS_ERR(entity->config)) {
	entity->state = __v4l2_subdev_state_alloc(&entity->subdev,
						  "vsp1:state->lock", &key);
	if (IS_ERR(entity->state)) {
		media_entity_cleanup(&entity->subdev.entity);
		return PTR_ERR(entity->config);
		return PTR_ERR(entity->state);
	}

	return 0;
@@ -693,6 +692,6 @@ void vsp1_entity_destroy(struct vsp1_entity *entity)
		entity->ops->destroy(entity);
	if (entity->subdev.ctrl_handler)
		v4l2_ctrl_handler_free(entity->subdev.ctrl_handler);
	__v4l2_subdev_state_free(entity->config);
	__v4l2_subdev_state_free(entity->state);
	media_entity_cleanup(&entity->subdev.entity);
}
+5 −5
Original line number Diff line number Diff line
@@ -115,9 +115,9 @@ struct vsp1_entity {
	unsigned int sink_pad;

	struct v4l2_subdev subdev;
	struct v4l2_subdev_state *config;
	struct v4l2_subdev_state *state;

	struct mutex lock;	/* Protects the pad config */
	struct mutex lock;	/* Protects the state */
};

static inline struct vsp1_entity *to_vsp1_entity(struct v4l2_subdev *subdev)
@@ -135,7 +135,7 @@ int vsp1_entity_link_setup(struct media_entity *entity,
			   const struct media_pad *remote, u32 flags);

struct v4l2_subdev_state *
vsp1_entity_get_pad_config(struct vsp1_entity *entity,
vsp1_entity_get_state(struct vsp1_entity *entity,
		      struct v4l2_subdev_state *sd_state,
		      enum v4l2_subdev_format_whence which);
struct v4l2_mbus_framefmt *
+2 −2
Original line number Diff line number Diff line
@@ -140,9 +140,9 @@ static void hgo_configure_stream(struct vsp1_entity *entity,
	unsigned int hratio;
	unsigned int vratio;

	crop = vsp1_entity_get_pad_selection(entity, entity->config,
	crop = vsp1_entity_get_pad_selection(entity, entity->state,
					     HISTO_PAD_SINK, V4L2_SEL_TGT_CROP);
	compose = vsp1_entity_get_pad_selection(entity, entity->config,
	compose = vsp1_entity_get_pad_selection(entity, entity->state,
						HISTO_PAD_SINK,
						V4L2_SEL_TGT_COMPOSE);

Loading