Hardware limitations on VINs that can be used at the same time cover only CSI data source. For parallel source, any single VIN can work. This patch moves check for master VIN availability in rvin_csi2_link_notify() below processing the parallel case. This fixes media-ctl usage on KF board when both CSI and parallel cameras are in use on the same system. In such a setup, VINs 0-3 are used for CSI cameras and VIN5 is used for parallel camera. Signed-off-by: Nikita Yushchenko <nikita.yoush@xxxxxxxxxxxxxxxxxx> --- drivers/media/platform/rcar-vin/rcar-core.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/media/platform/rcar-vin/rcar-core.c b/drivers/media/platform/rcar-vin/rcar-core.c index 0186ae235113..038ee187f95a 100644 --- a/drivers/media/platform/rcar-vin/rcar-core.c +++ b/drivers/media/platform/rcar-vin/rcar-core.c @@ -826,11 +826,6 @@ static int rvin_csi2_link_notify(struct media_link *link, u32 flags, vin = container_of(vdev, struct rvin_dev, vdev); master_id = rvin_group_id_to_master(vin->id); - if (WARN_ON(!group->vin[master_id])) { - ret = -ENODEV; - goto out; - } - /* Build a mask for already enabled links. */ for (i = master_id; i < master_id + 4; i++) { if (!group->vin[i]) @@ -878,6 +873,11 @@ static int rvin_csi2_link_notify(struct media_link *link, u32 flags, goto out; } + if (WARN_ON(!group->vin[master_id])) { + ret = -ENODEV; + goto out; + } + channel = rvin_group_csi_pad_to_channel(link->source->index); mask_new = mask & rvin_csi2_get_mask(vin, csi_id, channel); vin_dbg(vin, "Try link change mask: 0x%x new: 0x%x\n", mask, mask_new); -- 2.30.2