Hi Eugeniu,
On Tue, Jun 09, 2020 at 04:29:59PM +0200, Eugeniu Rosca wrote:
Hi Laurent,
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 ?
Thanks j
[*] 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")
-- Best regards, Eugeniu Rosca