From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Hans Verkuil <hverkuil@xs4all.nl>
Cc: Maxime Ripard <maxime.ripard@free-electrons.com>,
Yong <yong.deng@magewell.com>,
Mauro Carvalho Chehab <mchehab@kernel.org>,
Rob Herring <robh+dt@kernel.org>,
Mark Rutland <mark.rutland@arm.com>, Chen-Yu Tsai <wens@csie.org>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
"David S. Miller" <davem@davemloft.net>,
Arnd Bergmann <arnd@arndb.de>,
Hugues Fruchet <hugues.fruchet@st.com>,
Yannick Fertre <yannick.fertre@st.com>,
Philipp Zabel <p.zabel@pengutronix.de>,
Benoit Parrot <bparrot@ti.com>,
Benjamin Gaignard <benjamin.gaignard@linaro.org>,
Jean-Christophe Trotin <jean-christophe.trotin@st.com>,
Ramesh Shanmugasundaram <ramesh.shanmugasundaram@bp.renesas.com>,
Minghsiu Tsai <minghsiu.tsai@mediatek.com>,
Krzysztof Kozlowski <krzk@kernel.org>,
Robert Jarzmik <robert.jarzmik@free.fr>,
linux-media@vger.kernel.org, devicetree@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, linux-sunxi@googlegroups.com
Subject: Re: [PATCH v2 1/3] media: V3s: Add support for Allwinner CSI.
Date: Wed, 23 Aug 2017 10:43:12 +0300 [thread overview]
Message-ID: <3036789.1NOcar0Ykn@avalon> (raw)
In-Reply-To: <3392c717-10ea-4d6e-4c25-9be0bbec004e@xs4all.nl>
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
next prev parent reply other threads:[~2017-08-23 7:42 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-07-27 5:01 [PATCH v2 0/3] Initial Allwinner V3s CSI Support Yong Deng
2017-07-27 5:01 ` [PATCH v2 1/3] media: V3s: Add support for Allwinner CSI Yong Deng
2017-07-27 12:16 ` Baruch Siach
2017-07-27 12:25 ` Maxime Ripard
2017-07-31 0:47 ` Yong
2017-07-28 16:02 ` Maxime Ripard
2017-07-30 6:08 ` Baruch Siach
2017-07-31 1:48 ` Yong
2017-07-31 5:13 ` Baruch Siach
2017-08-21 20:21 ` Maxime Ripard
2017-08-23 2:41 ` Yong
2017-08-23 19:24 ` Maxime Ripard
2017-08-24 1:43 ` Yong
2017-07-31 3:16 ` Yong
2017-08-22 17:43 ` Maxime Ripard
2017-08-23 2:32 ` Yong
2017-08-25 13:41 ` Maxime Ripard
2017-08-28 7:00 ` Yong
2017-08-21 14:37 ` Hans Verkuil
2017-08-22 3:01 ` Yong
2017-08-22 6:43 ` Hans Verkuil
2017-08-22 7:51 ` Yong
2017-08-22 20:17 ` Maxime Ripard
2017-08-22 20:52 ` Laurent Pinchart
2017-08-23 6:52 ` Hans Verkuil
2017-08-23 7:43 ` Laurent Pinchart [this message]
2017-08-23 11:13 ` icenowy
2017-09-21 13:45 ` [linux-sunxi] " Ondřej Jirman
2017-09-22 8:44 ` Mylene JOSSERAND
2017-09-22 9:08 ` Yong
2017-11-21 15:48 ` Maxime Ripard
2017-11-22 1:33 ` Yong
2017-11-22 9:45 ` Maxime Ripard
2017-11-23 1:14 ` Yong
2017-11-25 16:02 ` Maxime Ripard
2017-12-04 9:45 ` Yong
2017-12-15 10:50 ` Maxime Ripard
2017-12-15 11:01 ` Yong
2017-12-15 22:14 ` Maxime Ripard
2017-07-27 5:01 ` [PATCH v2 2/3] dt-bindings: media: Add Allwinner V3s Camera Sensor Interface (CSI) Yong Deng
2017-07-28 16:03 ` Maxime Ripard
2017-07-31 0:50 ` Yong
2017-08-03 19:14 ` Rob Herring
2017-08-07 1:00 ` Yong
2017-12-19 11:53 ` Sakari Ailus
2017-12-21 2:49 ` Yong
2017-12-27 21:47 ` Sakari Ailus
2017-12-28 1:04 ` Yong
2017-07-27 5:01 ` [PATCH v2 3/3] media: MAINTAINERS: add entries for Allwinner V3s CSI Yong Deng
2017-12-19 11:48 ` Sakari Ailus
2017-12-21 2:40 ` Yong
-- strict thread matches above, loose matches on Subject: below --
2017-07-27 3:51 [PATCH v2 0/3] Initial Allwinner V3s CSI Support Yong Deng
2017-07-27 3:51 ` [PATCH v2 1/3] media: V3s: Add support for Allwinner CSI Yong Deng
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3036789.1NOcar0Ykn@avalon \
--to=laurent.pinchart@ideasonboard.com \
--cc=arnd@arndb.de \
--cc=benjamin.gaignard@linaro.org \
--cc=bparrot@ti.com \
--cc=davem@davemloft.net \
--cc=devicetree@vger.kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=hugues.fruchet@st.com \
--cc=hverkuil@xs4all.nl \
--cc=jean-christophe.trotin@st.com \
--cc=krzk@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=linux-sunxi@googlegroups.com \
--cc=mark.rutland@arm.com \
--cc=maxime.ripard@free-electrons.com \
--cc=mchehab@kernel.org \
--cc=minghsiu.tsai@mediatek.com \
--cc=p.zabel@pengutronix.de \
--cc=ramesh.shanmugasundaram@bp.renesas.com \
--cc=robert.jarzmik@free.fr \
--cc=robh+dt@kernel.org \
--cc=wens@csie.org \
--cc=yannick.fertre@st.com \
--cc=yong.deng@magewell.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).