On Wed, 11 Oct 2017 10:03:01 +0200 Geert Uytterhoeven wrote: > PSCI support may be disabled at build time (by configuration) or at > run-time (PSCI firmware not present). While CONFIG_ARM_PSCI_FW can be > used to check for build time enablement, there is currently no simple > way to check if PSCI is actually available and used. > > Hence add a helper function to check if PSCI is available. > > This is useful for e.g. drivers that are used on platforms with and > without PSCI. Such drivers may need to take provisions for proper > operation when PSCI is used, and/or to implement functionality that is > usually provided by PSCI. the psci_ops is a global var, why not check psci_ops.mmnn members individually in each drivers? check IS_ENABLED(CONFIG_ARM_PSCI_FW) for building time ennoblement. > > Signed-off-by: Geert Uytterhoeven <geert+renesas@xxxxxxxxx> > --- > drivers/firmware/psci.c | 5 +++++ > include/linux/psci.h | 2 ++ > 2 files changed, 7 insertions(+) > > diff --git a/drivers/firmware/psci.c b/drivers/firmware/psci.c > index da469c972b503f83..a3a11e2d8ffffaaa 100644 > --- a/drivers/firmware/psci.c > +++ b/drivers/firmware/psci.c > @@ -670,6 +670,11 @@ int __init psci_dt_init(void) > return init_fn(np); > } > > +bool psci_is_available(void) > +{ > + return psci_ops.cpu_off && psci_ops.cpu_on && psci_ops.cpu_suspend; IIRC, for PSCI 0.1, cpu_suspend is optional, we can't say the PSCI isn't available if cpu_suspend is missing. Thanks