Re: [PATCH 17/17] i3c: mipi-i3c-hci-pci: Add Runtime PM support

Adrian Hunter
2025-12-20T15:10:56Z

On 19/12/2025 19:21, Frank Li wrote:
> On Fri, Dec 19, 2025 at 04:45:34PM +0200, Adrian Hunter wrote:
>> Enable Runtime PM for the mipi_i3c_hci_pci driver. Introduce helpers to
>> allow and forbid Runtime PM during probe and remove, using pm_runtime APIs.
>>
>> Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
>> ---
>> .../i3c/master/mipi-i3c-hci/mipi-i3c-hci-pci.c | 17 +++++++++++++++++
>> 1 file changed, 17 insertions(+)
>>
>> diff --git a/drivers/i3c/master/mipi-i3c-hci/mipi-i3c-hci-pci.c b/drivers/i3c/master/mipi-i3c-hci/mipi-i3c-hci-pci.c
>> index 458f871a2e61..1b38771667e5 100644
>> --- a/drivers/i3c/master/mipi-i3c-hci/mipi-i3c-hci-pci.c
>> +++ b/drivers/i3c/master/mipi-i3c-hci/mipi-i3c-hci-pci.c
>> @@ -18,6 +18,7 @@
>> #include <linux/platform_data/mipi-i3c-hci.h>
>> #include <linux/platform_device.h>
>> #include <linux/pm_qos.h>
>> +#include <linux/pm_runtime.h>
>>
>> /*
>> * There can up to 15 instances, but implementations have at most 2 at this
>> @@ -208,6 +209,18 @@ static const struct mipi_i3c_hci_pci_info intel_si_2_info = {
>> .instance_count = 1,
>> };
>>
>> +static void mipi_i3c_hci_pci_rpm_allow(struct device *dev)
>> +{
>> + pm_runtime_put(dev);
>> + pm_runtime_allow(dev);
>
> why not pm_runtime_enable() but you use pm_runtime_allow()?

That is how the PCI bus does things.

There is pm_runtime_forbid() and pm_runtime_enable() in pci_pm_init(),
and then pm_runtime_get_sync() in local_pci_probe().

Refer to:

commit 967577b062417b4e4b8e27b711220f4124f5153a
Author: Ying Huang <huang.ying.caritas@gmail.com>
Date: Tue Nov 20 16:08:22 2012 +0800

PCI/PM: Keep runtime PM enabled for unbound PCI devices

commit bb910a7040e90a0ca3d3e8245d6d5c128a5d1287
Author: Rafael J. Wysocki <rjw@rjwysocki.net>
Date: Sat Feb 27 21:37:37 2010 +0100

PCI/PM Runtime: Make runtime PM of PCI devices inactive by default