lkml.org 
[lkml]   [2021]   [Mar]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.11 213/775] media: imx7: csi: Fix pad link validation
    Date
    From: Rui Miguel Silva <rmfrfs@gmail.com>

    [ Upstream commit f5ffb81f51376eb5a12e8c4cb4871426c65bb2af ]

    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: 86e02d07871c ("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>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/staging/media/imx/imx7-media-csi.c | 15 +++++++++++++--
    1 file changed, 13 insertions(+), 2 deletions(-)

    diff --git a/drivers/staging/media/imx/imx7-media-csi.c b/drivers/staging/media/imx/imx7-media-csi.c
    index 31e36168f9d0f..ac52b1daf9914 100644
    --- a/drivers/staging/media/imx/imx7-media-csi.c
    +++ b/drivers/staging/media/imx/imx7-media-csi.c
    @@ -499,6 +499,7 @@ static int imx7_csi_pad_link_validate(struct v4l2_subdev *sd,
    struct v4l2_subdev_format *sink_fmt)
    {
    struct imx7_csi *csi = v4l2_get_subdevdata(sd);
    + struct media_entity *src;
    struct media_pad *pad;
    int ret;

    @@ -509,11 +510,21 @@ static int imx7_csi_pad_link_validate(struct v4l2_subdev *sd,
    if (!csi->src_sd)
    return -EPIPE;

    + src = &csi->src_sd->entity;
    +
    + /*
    + * 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 CSI mux. This is needed
    + * find the entity that is selected by the source. This is needed
    * 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)
    return -ENODEV;

    --
    2.27.0


    \
     
     \ /
      Last update: 2021-03-02 02:16    [W:2.523 / U:0.024 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site