Re: [PATCH v2 14/18] media: i2c: imx219: Drop system suspend/resume operations

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Aug 23, 2023 at 09:36:10AM +0000, Sakari Ailus wrote:
> On Wed, Aug 23, 2023 at 12:14:46PM +0300, Laurent Pinchart wrote:
> > On Wed, Aug 23, 2023 at 09:01:56AM +0000, Sakari Ailus wrote:
> > > On Tue, Aug 22, 2023 at 06:58:47PM +0100, Dave Stevenson wrote:
> > > > On Mon, 21 Aug 2023 at 23:30, Laurent Pinchart wrote:
> > > > >
> > > > > There is no need to stop streaming at system suspend time, or restart it
> > > > > when the system is resumed, as the host-side driver is responsible for
> > > > > stopping and restarting the pipeline in a controlled way by calling the
> > > > > .s_stream() operation. Drop the system suspend and resume handlers, and
> > > > > simplify the .s_stream() handler as a result.
> > > > 
> > > > I'll believe you, but the docs for power management in camera sensor
> > > > drivers [1] state
> > > > "Please see examples in e.g. drivers/media/i2c/ov8856.c and
> > > > drivers/media/i2c/ccs/ccs-core.c. The two drivers work in both ACPI
> > > > and DT based systems."
> > > > 
> > > > Looking at CCS we find the suspend hook stopping streaming [2], and
> > > > resume hook starting it [3]. Same in ov8856 [4].
> > > > 
> > > > Could you reference the documentation that states that the host-side
> > > > driver is responsible for starting and stopping? Is this an ACPI vs DT
> > > > difference?
> > > 
> > > There's no difference between DT and ACPI, no.
> > 
> > The comment about drivers working with both ACPI- and DT-based systems
> > was related, as far as I understand, to usage of runtime PM, I don't
> > think it was related to system PM at all.
> > 
> > > Starting streaming on resume from system suspend is haphazard as there's no
> > > guarantee on the timing of resuming devices (if the suspend and resume
> > > independently), or similarly if the receiver driver explicitly starts
> > > streaming, there's no guarantee the sub-device driver has resumed.
> > > 
> > > So I think we'd need more than what currently exists on the framework side
> > > to do this reliably --- at least when it comes to CSI-2.
> > 
> > Device links help here. See for instance mxc_isi_async_notifier_bound()
> > in drivers/media/platform/nxp/imx8-isi/imx8-isi-core.c. Ideally this
> > shouldn't be handled by drivers but by the V4L2 core though. In any
> > case, the sensors don't need to deal with it, enforcing correct ordering
> > is an issue for the connected receiver.
> 
> Nice idea. Perhaps this could be integrated somehow to the V4L2 async
> framework? And it depends on streaming control --- if you don't have
> streaming ongoing, then you don't need that dependency. Also errors in
> resuming should only be related to the devices that failed to resume. It's
> going to get complicated.

I think the dependency should always be there, regardless of whether
there's an active stream or not. It doesn't hurt to ensure the CSI-2 RX
will always get suspended before the sensor.

> > Sakari, you didn't explicitly answer whether you think that system
> > suspend/resume handlers are needed or not for camera sensor drivers.
> > What is your opinion on this ?
> 
> Streaming needs to be explicitly started and stopped by the downstream
> pipeline, so camera sensors shouldn't need suspend or resume handlers (at
> least for this reason).

\o/ That's the answer I was hoping for :-)

-- 
Regards,

Laurent Pinchart



[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux