[PATCH v2 04/10] pinctrl: intel: Switch to use DEFINE_NOIRQ_DEV_PM_OPS() helper
Paul Cercueil
paul at crapouillou.net
Mon Jul 17 12:02:31 PDT 2023
Hi Andy,
Le lundi 17 juillet 2023 à 20:28 +0300, Andy Shevchenko a écrit :
> Since pm.h provides a helper for system no-IRQ PM callbacks,
> switch the driver to use it instead of open coded variant.
>
> Signed-off-by: Andy Shevchenko <andriy.shevchenko at linux.intel.com>
> ---
> drivers/pinctrl/intel/pinctrl-intel.c | 5 +----
> drivers/pinctrl/intel/pinctrl-intel.h | 9 ++-------
> 2 files changed, 3 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/pinctrl/intel/pinctrl-intel.c
> b/drivers/pinctrl/intel/pinctrl-intel.c
> index 64c3e62b4348..40e45c4889ee 100644
> --- a/drivers/pinctrl/intel/pinctrl-intel.c
> +++ b/drivers/pinctrl/intel/pinctrl-intel.c
> @@ -929,7 +929,7 @@ static int intel_gpio_to_pin(struct intel_pinctrl
> *pctrl, unsigned int offset,
> *
> * Return: a GPIO offset, or negative error code if translation
> can't be done.
> */
> -static __maybe_unused int intel_pin_to_gpio(struct intel_pinctrl
> *pctrl, int pin)
> +static int intel_pin_to_gpio(struct intel_pinctrl *pctrl, int pin)
> {
> const struct intel_community *community;
> const struct intel_padgroup *padgrp;
> @@ -1488,7 +1488,6 @@ static int intel_pinctrl_pm_init(struct
> intel_pinctrl *pctrl)
> if (!communities)
> return -ENOMEM;
>
> -
Unrelated change.
> for (i = 0; i < pctrl->ncommunities; i++) {
> struct intel_community *community = &pctrl-
> >communities[i];
> u32 *intmask, *hostown;
> @@ -1712,7 +1711,6 @@ const struct intel_pinctrl_soc_data
> *intel_pinctrl_get_soc_data(struct platform_
> }
> EXPORT_SYMBOL_GPL(intel_pinctrl_get_soc_data);
>
> -#ifdef CONFIG_PM_SLEEP
> static bool __intel_gpio_is_direct_irq(u32 value)
> {
> return (value & PADCFG0_GPIROUTIOXAPIC) && (value &
> PADCFG0_GPIOTXDIS) &&
> @@ -1913,7 +1911,6 @@ int intel_pinctrl_resume_noirq(struct device
> *dev)
> return 0;
> }
> EXPORT_SYMBOL_GPL(intel_pinctrl_resume_noirq);
> -#endif
So the correct way to update this driver would be to have a
conditionally-exported dev_pm_ops structure:
EXPORT_GPL_DEV_PM_OPS(intel_pinctrl_pm_ops) = {
NOIRQ_SYSTEM_SLEEP_PM_OPS(intel_pinctrl_suspend_noirq,
intel_pinctrl_resume_noirq),
};
Then your two callbacks can be "static" and without #ifdef guards.
The resulting "intel_pinctrl_pm_ops" can be marked as "extern" in the
pinctrl-intel.h without any guards, as long as it is only referenced
with the pm_ptr() macro.
Cheers,
-Paul
>
> MODULE_AUTHOR("Mathias Nyman <mathias.nyman at linux.intel.com>");
> MODULE_AUTHOR("Mika Westerberg <mika.westerberg at linux.intel.com>");
> diff --git a/drivers/pinctrl/intel/pinctrl-intel.h
> b/drivers/pinctrl/intel/pinctrl-intel.h
> index 1faf2ada480a..65b1699a2ed5 100644
> --- a/drivers/pinctrl/intel/pinctrl-intel.h
> +++ b/drivers/pinctrl/intel/pinctrl-intel.h
> @@ -255,15 +255,10 @@ struct intel_pinctrl {
> int intel_pinctrl_probe_by_hid(struct platform_device *pdev);
> int intel_pinctrl_probe_by_uid(struct platform_device *pdev);
>
> -#ifdef CONFIG_PM_SLEEP
> int intel_pinctrl_suspend_noirq(struct device *dev);
> int intel_pinctrl_resume_noirq(struct device *dev);
> -#endif
>
> -#define
> INTEL_PINCTRL_PM_OPS(_name) \
> -const struct dev_pm_ops _name =
> { \
> -
> SET_NOIRQ_SYSTEM_SLEEP_PM_OPS(intel_pinctrl_suspend_noirq,
> \
> -
> intel_pinctrl_resume_noirq) \
> -}
> +#define
> INTEL_PINCTRL_PM_OPS(_name)
> \
> + DEFINE_NOIRQ_DEV_PM_OPS(_name, intel_pinctrl_suspend_noirq,
> intel_pinctrl_resume_noirq)
>
> #endif /* PINCTRL_INTEL_H */
More information about the linux-arm-kernel
mailing list