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]

 



Hi Laurent,

On Wed, Aug 23, 2023 at 12:57:00PM +0300, Laurent Pinchart wrote:
> 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.

If you have multiple sensor sub-devices and only a single receiver device
(with multiple receivers), what do you do if one of the sensors fails to
resume? I'd think this should be handled similarly to probe case --- but we
know we have things to fix there.

> 
> > > 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 :-)

I don't think it could work otherwise. :-) This should be easy, too:
receiver drivers do this already when starting and stopping streaming.

-- 
Regards,

Sakari Ailus



[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