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

Frank Li Frank.li at nxp.com
Fri Dec 19 09:21:37 PST 2025


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 at 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()?

Frank

> +}
> +
> +static void mipi_i3c_hci_pci_rpm_forbid(struct device *dev)
> +{
> +	pm_runtime_forbid(dev);
> +	pm_runtime_get_sync(dev);
> +}
> +
>  struct mipi_i3c_hci_pci_cell_data {
>  	struct mipi_i3c_hci_platform_data pdata;
>  	struct resource res;
> @@ -285,6 +298,8 @@ static int mipi_i3c_hci_pci_probe(struct pci_dev *pci,
>
>  	pci_set_drvdata(pci, hci);
>
> +	mipi_i3c_hci_pci_rpm_allow(&pci->dev);
> +
>  	return 0;
>
>  err_exit:
> @@ -300,6 +315,8 @@ static void mipi_i3c_hci_pci_remove(struct pci_dev *pci)
>  	if (hci->info->exit)
>  		hci->info->exit(hci);
>
> +	mipi_i3c_hci_pci_rpm_forbid(&pci->dev);
> +
>  	mfd_remove_devices(&pci->dev);
>  }
>
> --
> 2.51.0
>
>
> --
> linux-i3c mailing list
> linux-i3c at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-i3c



More information about the linux-i3c mailing list