mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Beleswar Padhi <b-padhi@ti.com>
To: <gregkh@linuxfoundation.org>, <rafael@kernel.org>,
	<dakr@kernel.org>, <johan@kernel.org>, <pavel@kernel.org>,
	<lenb@kernel.org>, <ulfh@kernel.org>
Cc: <sid9.karanam@gmail.com>, <afd@ti.com>, <nm@ti.com>,
	<vigneshr@ti.com>, <u-kumar1@ti.com>, <b-padhi@ti.com>,
	<driver-core@lists.linux.dev>, <linux-kernel@vger.kernel.org>,
	<linux-pm@vger.kernel.org>
Subject: [RFC PATCH 2/2] driver core: platform: Allow drivers to skip PM domain power-on at probe
Date: Tue, 27 Oct 2026 19:37:51 +0530	[thread overview]
Message-ID: <20261027140751.2465743-3-b-padhi@ti.com> (raw)
In-Reply-To: <20261027140751.2465743-1-b-padhi@ti.com>

Currently, platform_probe() attaches the PM domain to the device and
powers the domain on before calling the driver's probe. This works for
most cases, but would be erroneous for devices that must be configured
before they can be powered on.

One example is the C66x/C7x remote processors on TI K3 SoCs like AM62A.
Such a remote core's local reset must be asserted before the device is
powered on, otherwise the core can start running bogus instructions
whatever happens to be in its memories at that point.

dev_pm_domain_attach() lets its caller skip the power-on by not passing
PD_FLAG_ATTACH_POWER_ON. So, add a pm_domain_no_power_on flag to struct
platform_driver by which platform drivers can opt out of the power-on
at attach. Drivers that set it must power on the PM domain themselves.

Signed-off-by: Beleswar Padhi <b-padhi@ti.com>
---
 drivers/base/platform.c         | 7 +++++--
 include/linux/platform_device.h | 8 ++++++++
 2 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/drivers/base/platform.c b/drivers/base/platform.c
index 3593d45f4a7ae..774f7214877d9 100644
--- a/drivers/base/platform.c
+++ b/drivers/base/platform.c
@@ -1483,6 +1483,7 @@ static int platform_probe(struct device *_dev)
 {
 	struct platform_driver *drv = to_platform_driver(_dev->driver);
 	struct platform_device *dev = to_platform_device(_dev);
+	u32 pd_flags = PD_FLAG_DETACH_POWER_OFF;
 	int ret;
 
 	/*
@@ -1499,8 +1500,10 @@ static int platform_probe(struct device *_dev)
 	if (ret < 0)
 		return ret;
 
-	ret = dev_pm_domain_attach(_dev, PD_FLAG_ATTACH_POWER_ON |
-					 PD_FLAG_DETACH_POWER_OFF);
+	if (!drv->pm_domain_no_power_on)
+		pd_flags |= PD_FLAG_ATTACH_POWER_ON;
+
+	ret = dev_pm_domain_attach(_dev, pd_flags);
 	if (ret)
 		goto out;
 
diff --git a/include/linux/platform_device.h b/include/linux/platform_device.h
index 3bd0f1f0d8704..4d1679c4ea78e 100644
--- a/include/linux/platform_device.h
+++ b/include/linux/platform_device.h
@@ -292,6 +292,14 @@ struct platform_driver {
 	 * to setup and manage their own I/O address space.
 	 */
 	bool driver_managed_dma;
+	/*
+	 * By default the PM domain of a platform device is powered on before
+	 * the driver's probe is invoked. Drivers that need to configure the
+	 * device (e.g. hold it in reset) before its PM domain can be powered
+	 * on must set this flag, and are then responsible for powering on the
+	 * PM domain themselves.
+	 */
+	bool pm_domain_no_power_on;
 };
 
 #define to_platform_driver(drv)	(container_of((drv), struct platform_driver, \
-- 
2.34.1


      parent reply	other threads:[~2026-10-27 14:09 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-27 14:07 [RFC PATCH 0/2] Allow platform " Beleswar Padhi
2026-10-27 14:07 ` [RFC PATCH 1/2] PM: domains: Honour PD_FLAG_ATTACH_POWER_ON for genpd Beleswar Padhi
2026-10-27 14:07 ` Beleswar Padhi [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20261027140751.2465743-3-b-padhi@ti.com \
    --to=b-padhi@ti.com \
    --cc=afd@ti.com \
    --cc=dakr@kernel.org \
    --cc=driver-core@lists.linux.dev \
    --cc=gregkh@linuxfoundation.org \
    --cc=johan@kernel.org \
    --cc=lenb@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=nm@ti.com \
    --cc=pavel@kernel.org \
    --cc=rafael@kernel.org \
    --cc=sid9.karanam@gmail.com \
    --cc=u-kumar1@ti.com \
    --cc=ulfh@kernel.org \
    --cc=vigneshr@ti.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®