Commit 145437cc authored by Tomi Valkeinen's avatar Tomi Valkeinen Committed by Hans Verkuil
Browse files

media: rcar-csi2: Use the pad version of v4l2_get_link_freq()



The pad-aware version of v4l2_get_link_freq() tries to retrieve the link
frequency from the media bus configuration using the get_mbus_config
operation, and only if the subdevice does not implement this operation
falls back to the old method of getting it using the V4L2_CID_LINK_FREQ
or V4L2_CID_PIXEL_RATE control.

Update the VIN driver to use the pad-aware version to be able to support
subdevices that only provides the link frequency in the media bus
configuration. As the implementation falls back to the old method if the
subdevice doesn't support get_mbus_config, or doesn't provide a link
frequency in the v4l2_mbus_config struct, this is fully backward
compatible.

Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen+renesas@ideasonboard.com>
Reviewed-by: default avatarNiklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Reviewed-by: default avatarLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Link: https://lore.kernel.org/r/20250530-rcar-streams-v3-1-026655df7138@ideasonboard.com


Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: default avatarHans Verkuil <hverkuil@xs4all.nl>
parent 95703a09
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -962,6 +962,7 @@ static int rcsi2_set_phypll(struct rcar_csi2 *priv, unsigned int mbps)
static int rcsi2_calc_mbps(struct rcar_csi2 *priv, unsigned int bpp,
			   unsigned int lanes)
{
	struct media_pad *remote_pad;
	struct v4l2_subdev *source;
	s64 freq;
	u64 mbps;
@@ -970,8 +971,9 @@ static int rcsi2_calc_mbps(struct rcar_csi2 *priv, unsigned int bpp,
		return -ENODEV;

	source = priv->remote;
	remote_pad = &source->entity.pads[priv->remote_pad];

	freq = v4l2_get_link_freq(source->ctrl_handler, bpp, 2 * lanes);
	freq = v4l2_get_link_freq(remote_pad, bpp, 2 * lanes);
	if (freq < 0) {
		int ret = (int)freq;