mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-04-29 16:25:42 -04:00
media: imx7: csi: Fix pad link validation
We can not make the assumption that the bound subdev is always a CSI
mux, in i.MX6UL/i.MX6ULL that is not the case. So, just get the entity
selected by source directly upstream from the CSI.
Fixes: 86e02d0787 ("media: imx5/6/7: csi: Mark a bound video mux as a CSI mux")
Reported-by: Fabio Estevam <festevam@gmail.com>
Signed-off-by: Rui Miguel Silva <rmfrfs@gmail.com>
Tested-by: Fabio Estevam <festevam@gmail.com>
Tested-by: Sébastien Szymanski <sebastien.szymanski@armadeus.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
This commit is contained in:
committed by
Mauro Carvalho Chehab
parent
9bac67214f
commit
f5ffb81f51
@@ -499,6 +499,7 @@ static int imx7_csi_pad_link_validate(struct v4l2_subdev *sd,
|
|||||||
struct v4l2_subdev_format *sink_fmt)
|
struct v4l2_subdev_format *sink_fmt)
|
||||||
{
|
{
|
||||||
struct imx7_csi *csi = v4l2_get_subdevdata(sd);
|
struct imx7_csi *csi = v4l2_get_subdevdata(sd);
|
||||||
|
struct media_entity *src;
|
||||||
struct media_pad *pad;
|
struct media_pad *pad;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
@@ -509,11 +510,21 @@ static int imx7_csi_pad_link_validate(struct v4l2_subdev *sd,
|
|||||||
if (!csi->src_sd)
|
if (!csi->src_sd)
|
||||||
return -EPIPE;
|
return -EPIPE;
|
||||||
|
|
||||||
|
src = &csi->src_sd->entity;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* find the entity that is selected by the CSI mux. This is needed
|
* if the source is neither a CSI MUX or CSI-2 get the one directly
|
||||||
|
* upstream from this CSI
|
||||||
|
*/
|
||||||
|
if (src->function != MEDIA_ENT_F_VID_IF_BRIDGE &&
|
||||||
|
src->function != MEDIA_ENT_F_VID_MUX)
|
||||||
|
src = &csi->sd.entity;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* find the entity that is selected by the source. This is needed
|
||||||
* to distinguish between a parallel or CSI-2 pipeline.
|
* to distinguish between a parallel or CSI-2 pipeline.
|
||||||
*/
|
*/
|
||||||
pad = imx_media_pipeline_pad(&csi->src_sd->entity, 0, 0, true);
|
pad = imx_media_pipeline_pad(src, 0, 0, true);
|
||||||
if (!pad)
|
if (!pad)
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user