Hi Jacopo,
On Fri, Jun 12, 2020 at 05:00:32PM +0200, Jacopo Mondi wrote:
On Tue, Jun 09, 2020 at 04:29:59PM +0200, Eugeniu Rosca wrote:
On Sun, Jun 07, 2020 at 05:41:58AM +0300, Laurent Pinchart wrote:
Note that the CMM driver is controlled by the DU driver. As the DU driver will reenable the display during resume, it will call rcar_du_cmm_setup() at resume time, which will reprogram the CMM. There should thus be no need for manual suspend/resume handling in the CMM as far as I can tell, but we need to ensure that the CMM is suspended before and resumed after the DU. I believe this could be implemented using device links.
Based on below quote [*] from Jacopo's commit [**], isn't the device link relationship already in place?
Yes, it's in place already.
I added pm_ops to cmm just to be able to printout when suspend/resume happens and the sequence is what comment [*] reports
[ 222.909002] rcar_du_pm_suspend:505 [ 223.145497] rcar_cmm_pm_suspend:193
[ 223.208053] rcar_cmm_pm_resume:200 [ 223.460094] rcar_du_pm_resume:513
However, Laurent mentioned that in his comment here that he expects the opposite sequence to happen (CMM to suspend before and resume after DU).
I still think what is implemented is correct:
- CMM is suspended after DU: when CMM is suspended, DU is not feeding it with data
- CMM is resumed before: once DU restart operations CMM is ready to receive data.
Laurent, what do you think ?
I think I shouldn't have written the previous e-mail in the middle of the night :-) Suspending CMM after DU is obviously correct.
[*] Quote from commit [**] Enforce the probe and suspend/resume ordering of DU and CMM by creating a stateless device link between the two.
[**] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?i... ("drm: rcar-du: kms: Initialize CMM instances")