[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <3036789.1NOcar0Ykn@avalon>
Date: Wed, 23 Aug 2017 10:43:12 +0300
From: Laurent Pinchart <laurent.pinchart@...asonboard.com>
To: Hans Verkuil <hverkuil@...all.nl>
Cc: Maxime Ripard <maxime.ripard@...e-electrons.com>,
Yong <yong.deng@...ewell.com>,
Mauro Carvalho Chehab <mchehab@...nel.org>,
Rob Herring <robh+dt@...nel.org>,
Mark Rutland <mark.rutland@....com>,
Chen-Yu Tsai <wens@...e.org>,
Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
"David S. Miller" <davem@...emloft.net>,
Arnd Bergmann <arnd@...db.de>,
Hugues Fruchet <hugues.fruchet@...com>,
Yannick Fertre <yannick.fertre@...com>,
Philipp Zabel <p.zabel@...gutronix.de>,
Benoit Parrot <bparrot@...com>,
Benjamin Gaignard <benjamin.gaignard@...aro.org>,
Jean-Christophe Trotin <jean-christophe.trotin@...com>,
Ramesh Shanmugasundaram <ramesh.shanmugasundaram@...renesas.com>,
Minghsiu Tsai <minghsiu.tsai@...iatek.com>,
Krzysztof Kozlowski <krzk@...nel.org>,
Robert Jarzmik <robert.jarzmik@...e.fr>,
linux-media@...r.kernel.org, devicetree@...r.kernel.org,
linux-arm-kernel@...ts.infradead.org, linux-kernel@...r.kernel.org,
linux-sunxi@...glegroups.com
Subject: Re: [PATCH v2 1/3] media: V3s: Add support for Allwinner CSI.
Hi Hans,
On Wednesday, 23 August 2017 09:52:00 EEST Hans Verkuil wrote:
> On 08/22/2017 10:17 PM, Maxime Ripard wrote:
> > On Tue, Aug 22, 2017 at 08:43:35AM +0200, Hans Verkuil wrote:
> >>>>> +static int sun6i_video_link_setup(struct media_entity *entity,
> >>>>> + const struct media_pad *local,
> >>>>> + const struct media_pad *remote, u32 flags)
> >>>>> +{
> >>>>> + struct video_device *vdev = media_entity_to_video_device(entity);
> >>>>> + struct sun6i_video *video = video_get_drvdata(vdev);
> >>>>> +
> >>>>> + if (WARN_ON(video == NULL))
> >>>>> + return 0;
> >>>>> +
> >>>>> + return sun6i_video_formats_init(video);
> >>>>
> >>>> Why is this called here? Why not in video_init()?
> >>>
> >>> sun6i_video_init is in the driver probe context.
> >>> sun6i_video_formats_init use media_entity_remote_pad and
> >>> media_entity_to_v4l2_subdev to find the subdevs.
> >>> The media_entity_remote_pad can't work before all the media pad linked.
> >>
> >> A video_init is typically called from the notify_complete callback.
> >> Actually, that's where the video_register_device should be created as
> >> well. When you create it in probe() there is possibly no sensor yet, so
> >> it would be a dead video node (or worse, crash when used).
> >>
> >> There are still a lot of platform drivers that create the video node in
> >> the probe, but it's not the right place if you rely on the async loading
> >> of subdevs.
> >
> > That's not really related, but I'm not really sure it's a good way to
> > operate. This essentially means that you might wait forever for a
> > component in your pipeline to be probed, without any chance of it
> > happening (not compiled, compiled as a module and not loaded, hardware
> > defect preventing the driver from probing properly, etc), even though
> > that component might not be essential.
>
> We're talking straightforward video pipelines here. I.e. a source, some
> processing units and a DMA engine at the end.
As a first step possibly, but many SoCs have ISPs that are not supported by
the initial camera driver version.
> There is no point in creating a video node if the pipeline is not complete
> since you need the full pipeline.
>
> I've had bad experiences in the past where video nodes were created too
> soon and part of the internal state was still incomplete, causing at best
> weird behavior and at worst crashes.
Drivers obviously need to be fixed if they are buggy in that regard. Such race
conditions are definitely something I keep an eye on when reviewing code.
> More complex devices are a whole different ballgame.
>
> > This is how DRM operates, and you sometimes end up in some very dumb
> > situations where you wait for say, the DSI controller to probe, while
> > you only care about HDMI in your system.
> >
> > But this seems to be on of the hot topic these days, so we might
> > discuss it further in some other thread :)
--
Regards,
Laurent Pinchart
Powered by blists - more mailing lists