[PATCH v2 01/17] media: rkisp1: capture: Initialize entity before video device
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Mon Mar 7 11:25:27 PST 2022
Hi Nicolas,
On Mon, Mar 07, 2022 at 02:15:32PM -0500, Nicolas Dufresne wrote:
> Hi Laurent,
>
> Le vendredi 04 mars 2022 à 19:19 +0200, Laurent Pinchart a écrit :
> > The media_entity embedded in the video_device needs to be initialized
> > before registering the video_device. Do so.
>
> We've seen the same bug in MTK vcodec topology. Any idea if that could be catch
> this at lower level to prevent invalid path being populated in the media
> controller over and over ?
I think the pad should be moved to the video_device structure and
initialized unconditionally internally. It makes little sense to force
drivers to do this manually.
> > Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> > Reviewed-by: Dafna Hirschfeld <dafna at fastmail.com>
> > ---
> > .../platform/rockchip/rkisp1/rkisp1-capture.c | 17 ++++++++++-------
> > 1 file changed, 10 insertions(+), 7 deletions(-)
> >
> > diff --git a/drivers/media/platform/rockchip/rkisp1/rkisp1-capture.c b/drivers/media/platform/rockchip/rkisp1/rkisp1-capture.c
> > index c95c00a91180..9c11f2b8e5f5 100644
> > --- a/drivers/media/platform/rockchip/rkisp1/rkisp1-capture.c
> > +++ b/drivers/media/platform/rockchip/rkisp1/rkisp1-capture.c
> > @@ -1372,22 +1372,25 @@ static int rkisp1_register_capture(struct rkisp1_capture *cap)
> >
> > vdev->queue = q;
> >
> > + ret = media_entity_pads_init(&vdev->entity, 1, &node->pad);
> > + if (ret)
> > + return ret;
> > +
> > ret = video_register_device(vdev, VFL_TYPE_VIDEO, -1);
> > if (ret) {
> > dev_err(cap->rkisp1->dev,
> > "failed to register %s, ret=%d\n", vdev->name, ret);
> > - return ret;
> > + goto error;
> > }
> > +
> > v4l2_info(v4l2_dev, "registered %s as /dev/video%d\n", vdev->name,
> > vdev->num);
> >
> > - ret = media_entity_pads_init(&vdev->entity, 1, &node->pad);
> > - if (ret) {
> > - video_unregister_device(vdev);
> > - return ret;
> > - }
> > -
> > return 0;
> > +
> > +error:
> > + media_entity_cleanup(&vdev->entity);
> > + return ret;
> > }
> >
> > static void
--
Regards,
Laurent Pinchart
More information about the Linux-rockchip
mailing list