On 6/2/21 6:23 AM, Anup Patel wrote: > The generic power domain related code in PSCI domain driver is largely > independent of PSCI and can be shared with RISC-V SBI domain driver > hence we factor-out this code into dt_idle_genpd.c and dt_idle_genpd.h. > > Signed-off-by: Anup Patel <anup.patel@xxxxxxx> > Reviewed-by: Ulf Hansson <ulf.hansson@xxxxxxxxxx> > --- > MAINTAINERS | 7 + > drivers/cpuidle/Kconfig | 4 + > drivers/cpuidle/Kconfig.arm | 1 + > drivers/cpuidle/Makefile | 1 + > drivers/cpuidle/cpuidle-psci-domain.c | 138 +------------------ > drivers/cpuidle/cpuidle-psci.h | 15 ++- > drivers/cpuidle/dt_idle_genpd.c | 182 ++++++++++++++++++++++++++ > drivers/cpuidle/dt_idle_genpd.h | 50 +++++++ > 8 files changed, 263 insertions(+), 135 deletions(-) > create mode 100644 drivers/cpuidle/dt_idle_genpd.c > create mode 100644 drivers/cpuidle/dt_idle_genpd.h > ... > diff --git a/drivers/cpuidle/dt_idle_genpd.h b/drivers/cpuidle/dt_idle_genpd.h > new file mode 100644 > index 000000000000..a8a3bad3cb7f > --- /dev/null > +++ b/drivers/cpuidle/dt_idle_genpd.h > @@ -0,0 +1,50 @@ > +/* SPDX-License-Identifier: GPL-2.0 */ > +#ifndef __DT_IDLE_GENPD > +#define __DT_IDLE_GENPD > + > +struct device_node; > +struct generic_pm_domain; > + > +#ifdef CONFIG_DT_IDLE_GENPD > + > +void dt_idle_pd_free(struct generic_pm_domain *pd); > + > +struct generic_pm_domain *dt_idle_pd_alloc(struct device_node *np, > + int (*parse_state)(struct device_node *, u32 *)); > + > +int dt_idle_pd_init_topology(struct device_node *np); > + > +struct device *dt_idle_attach_cpu(int cpu, const char *name); > + > +void dt_idle_detach_cpu(struct device *dev); > + > +#else > + > +static inline void dt_idle_pd_free(struct generic_pm_domain *pd) > +{ > +} > + > +static inline struct generic_pm_domain *dt_idle_pd_alloc( > + struct device_node *np, > + int (*parse_state)(struct device_node *, u32 *)); In file included from drivers/cpuidle/cpuidle-sbi.c:27: drivers/cpuidle/dt_idle_genpd.h:29:1: error: expected identifier or '(' before '{' token 29 | { | ^ Looks like you have a stray semicolon here. > +{ > + return NULL; > +} > + > +static inline int dt_idle_pd_init_topology(struct device_node *np) > +{ > + return 0; > +} > + > +static inline struct device *dt_idle_attach_cpu(int cpu, const char *name) > +{ > + return NULL; > +} > + > +static inline void dt_idle_detach_cpu(struct device *dev) > +{ > +} > + > +#endif > + > +#endif >