[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20250626181537.1872159-2-christian.bruel@foss.st.com>
Date: Thu, 26 Jun 2025 20:15:36 +0200
From: Christian Bruel <christian.bruel@...s.st.com>
To: <christian.bruel@...s.st.com>, <lpieralisi@...nel.org>,
<kwilczynski@...nel.org>, <mani@...nel.org>, <robh@...nel.org>,
<bhelgaas@...gle.com>, <mcoquelin.stm32@...il.com>,
<alexandre.torgue@...s.st.com>, <linus.walleij@...aro.org>
CC: <linux-pci@...r.kernel.org>, <linux-stm32@...md-mailman.stormreply.com>,
<linux-arm-kernel@...ts.infradead.org>, <linux-kernel@...r.kernel.org>,
<linux-gpio@...r.kernel.org>
Subject: [PATCH 1/2] pinctrl: Add pinctrl_pm_select_init_state helper function
If a platform requires an initial state during probing, this helper function
provides the client with access to the same initial state used to balance
from a pinctrl_pm_select_sleep_state .
eg:
xxx_suspend_noirq
pinctrl_pm_select_sleep_state
xxx resume_noirq
pinctrl_pm_select_init_state
...
pinctrl_pm_select_default_state
Signed-off-by: Christian Bruel <christian.bruel@...s.st.com>
---
drivers/pinctrl/core.c | 13 +++++++++++++
include/linux/pinctrl/consumer.h | 10 ++++++++++
2 files changed, 23 insertions(+)
diff --git a/drivers/pinctrl/core.c b/drivers/pinctrl/core.c
index 9046292d1360..80cf9f20f626 100644
--- a/drivers/pinctrl/core.c
+++ b/drivers/pinctrl/core.c
@@ -1655,6 +1655,19 @@ int pinctrl_pm_select_default_state(struct device *dev)
}
EXPORT_SYMBOL_GPL(pinctrl_pm_select_default_state);
+/**
+ * pinctrl_pm_select_init_state() - select init pinctrl state for PM
+ * @dev: device to select init state for
+ */
+int pinctrl_pm_select_init_state(struct device *dev)
+{
+ if (!dev->pins)
+ return 0;
+
+ return pinctrl_select_bound_state(dev, dev->pins->init_state);
+}
+EXPORT_SYMBOL_GPL(pinctrl_pm_select_init_state);
+
/**
* pinctrl_pm_select_sleep_state() - select sleep pinctrl state for PM
* @dev: device to select sleep state for
diff --git a/include/linux/pinctrl/consumer.h b/include/linux/pinctrl/consumer.h
index 73de70362b98..63ce16191eb9 100644
--- a/include/linux/pinctrl/consumer.h
+++ b/include/linux/pinctrl/consumer.h
@@ -48,6 +48,7 @@ int pinctrl_select_default_state(struct device *dev);
#ifdef CONFIG_PM
int pinctrl_pm_select_default_state(struct device *dev);
+int pinctrl_pm_select_init_state(struct device *dev);
int pinctrl_pm_select_sleep_state(struct device *dev);
int pinctrl_pm_select_idle_state(struct device *dev);
#else
@@ -55,6 +56,10 @@ static inline int pinctrl_pm_select_default_state(struct device *dev)
{
return 0;
}
+static inline int pinctrl_pm_select_init_state(struct device *dev)
+{
+ return 0;
+}
static inline int pinctrl_pm_select_sleep_state(struct device *dev)
{
return 0;
@@ -143,6 +148,11 @@ static inline int pinctrl_pm_select_default_state(struct device *dev)
return 0;
}
+static inline int pinctrl_pm_select_init_state(struct device *dev)
+{
+ return 0;
+}
+
static inline int pinctrl_pm_select_sleep_state(struct device *dev)
{
return 0;
--
2.34.1
Powered by blists - more mailing lists