i3c: master: Enable runtime PM for master controller
authorMukesh Kumar Savaliya <quic_msavaliy@quicinc.com>
Wed, 28 Feb 2024 09:34:07 +0000 (15:04 +0530)
committerAlexandre Belloni <alexandre.belloni@bootlin.com>
Wed, 22 May 2024 22:29:19 +0000 (00:29 +0200)
commit29391d9142f95508236145d5d2333c9721d979ca
treee84b6b54daaac9008a2f041065bce0dc1083e1c7
parent38baed9b8600008e5d7bc8cb9ceccc1af3dd54b7
i3c: master: Enable runtime PM for master controller

Enable runtime PM for i3c master node during master registration time.

Sometimes i3c client device driver may want to control the PM of the
parent (master) to perform the transactions and save the power in an
efficient way by controlling the session. Hence device can call PM
APIs by passing the parent node.

Here, I3C target device when calls pm_runtime_get_sync(dev->parent)
couldn't invoke master drivers runtime PM callback registered by
the master driver because parent's PM status was disabled in the
Master node.

Also call pm_runtime_no_callbacks() and pm_suspend_ignore_children()
for the master node to not have any callback addition and ignore the
children to have runtime PM work just locally in the driver. This
should be generic and common change for all i3c devices and should
not have any other impact.

With these changes, I3C client device works and able to invoke
master driver registered runtime PM callbacks.

Signed-off-by: Mukesh Kumar Savaliya <quic_msavaliy@quicinc.com>
Link: https://lore.kernel.org/r/20240228093407.4038399-1-quic_msavaliy@quicinc.com
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
drivers/i3c/master.c