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

media: renesas: vsp1: Expose color space through the DRM API



Now that the VSP1 driver supports color spaces, expose them through the
API used by the DU driver. This allows configuring the YCbCr encoding
and quantization used by each plane, ensuring correct color rendering.

Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Reviewed-by: default avatarTomi Valkeinen <tomi.valkeinen+renesas@ideasonboard.com>
Link: https://lore.kernel.org/r/20250429232904.26413-9-laurent.pinchart+renesas@ideasonboard.com


Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: default avatarHans Verkuil <hverkuil@xs4all.nl>
parent 67cbb2be
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -136,6 +136,8 @@ static int vsp1_du_pipeline_setup_rpf(struct vsp1_device *vsp1,
	format.format.height = input->crop.height + input->crop.top;
	format.format.code = rpf->fmtinfo->mbus;
	format.format.field = V4L2_FIELD_NONE;
	format.format.ycbcr_enc = input->ycbcr_enc;
	format.format.quantization = input->quantization;

	ret = v4l2_subdev_call(&rpf->entity.subdev, pad, set_fmt, NULL,
			       &format);
@@ -876,6 +878,8 @@ int vsp1_du_atomic_update(struct device *dev, unsigned int pipe_index,
	input->crop = cfg->src;
	input->compose = cfg->dst;
	input->zpos = cfg->zpos;
	input->ycbcr_enc = cfg->color_encoding;
	input->quantization = cfg->color_range;

	drm_pipe->pipe.inputs[rpf_index] = rpf;

+4 −2
Original line number Diff line number Diff line
@@ -52,8 +52,8 @@ struct vsp1_drm_pipeline {
 * struct vsp1_drm - State for the API exposed to the DRM driver
 * @pipe: the VSP1 DRM pipeline used for display
 * @lock: protects the BRU and BRS allocation
 * @inputs: source crop rectangle, destination compose rectangle and z-order
 *	position for every input (indexed by RPF index)
 * @inputs: source crop rectangle, destination compose rectangle, z-order
 *	position and colorspace for every input (indexed by RPF index)
 */
struct vsp1_drm {
	struct vsp1_drm_pipeline pipe[VSP1_MAX_LIF];
@@ -63,6 +63,8 @@ struct vsp1_drm {
		struct v4l2_rect crop;
		struct v4l2_rect compose;
		unsigned int zpos;
		enum v4l2_ycbcr_encoding ycbcr_enc;
		enum v4l2_quantization quantization;
	} inputs[VSP1_MAX_RPF];
};

+4 −0
Original line number Diff line number Diff line
@@ -52,6 +52,8 @@ int vsp1_du_setup_lif(struct device *dev, unsigned int pipe_index,
 * @alpha: alpha value (0: fully transparent, 255: fully opaque)
 * @zpos: Z position of the plane (from 0 to number of planes minus 1)
 * @premult: true for premultiplied alpha
 * @color_encoding: color encoding (valid for YUV formats only)
 * @color_range: color range (valid for YUV formats only)
 */
struct vsp1_du_atomic_config {
	u32 pixelformat;
@@ -62,6 +64,8 @@ struct vsp1_du_atomic_config {
	unsigned int alpha;
	unsigned int zpos;
	bool premult;
	enum v4l2_ycbcr_encoding color_encoding;
	enum v4l2_quantization color_range;
};

/**