Skip to content

Commit 08383cd

Browse files
Christian BruelMani-Sadhasivam
authored andcommitted
pinctrl: Add pinctrl_pm_select_init_state helper function
If a platform requires an initial pinctrl state during probing, this helper function provides the client with access to the same initial 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@foss.st.com> Signed-off-by: Manivannan Sadhasivam <mani@kernel.org> Reviewed-by: Linus Walleij <linus.walleij@linaro.org> Link: https://patch.msgid.link/20250820075411.1178729-3-christian.bruel@foss.st.com
1 parent 272dad3 commit 08383cd

File tree

2 files changed

+23
-0
lines changed

2 files changed

+23
-0
lines changed

drivers/pinctrl/core.c

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1655,6 +1655,19 @@ int pinctrl_pm_select_default_state(struct device *dev)
16551655
}
16561656
EXPORT_SYMBOL_GPL(pinctrl_pm_select_default_state);
16571657

1658+
/**
1659+
* pinctrl_pm_select_init_state() - select init pinctrl state for PM
1660+
* @dev: device to select init state for
1661+
*/
1662+
int pinctrl_pm_select_init_state(struct device *dev)
1663+
{
1664+
if (!dev->pins)
1665+
return 0;
1666+
1667+
return pinctrl_select_bound_state(dev, dev->pins->init_state);
1668+
}
1669+
EXPORT_SYMBOL_GPL(pinctrl_pm_select_init_state);
1670+
16581671
/**
16591672
* pinctrl_pm_select_sleep_state() - select sleep pinctrl state for PM
16601673
* @dev: device to select sleep state for

include/linux/pinctrl/consumer.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,13 +48,18 @@ int pinctrl_select_default_state(struct device *dev);
4848

4949
#ifdef CONFIG_PM
5050
int pinctrl_pm_select_default_state(struct device *dev);
51+
int pinctrl_pm_select_init_state(struct device *dev);
5152
int pinctrl_pm_select_sleep_state(struct device *dev);
5253
int pinctrl_pm_select_idle_state(struct device *dev);
5354
#else
5455
static inline int pinctrl_pm_select_default_state(struct device *dev)
5556
{
5657
return 0;
5758
}
59+
static inline int pinctrl_pm_select_init_state(struct device *dev)
60+
{
61+
return 0;
62+
}
5863
static inline int pinctrl_pm_select_sleep_state(struct device *dev)
5964
{
6065
return 0;
@@ -143,6 +148,11 @@ static inline int pinctrl_pm_select_default_state(struct device *dev)
143148
return 0;
144149
}
145150

151+
static inline int pinctrl_pm_select_init_state(struct device *dev)
152+
{
153+
return 0;
154+
}
155+
146156
static inline int pinctrl_pm_select_sleep_state(struct device *dev)
147157
{
148158
return 0;

0 commit comments

Comments
 (0)