/* * We use PSCI 0.2+ when ACPI is deployed on ARM64 and it's * explicitly clarified in SBBR */ int __init psci_acpi_init(void) { if (!acpi_psci_present()) { pr_info("is not implemented in ACPI.\n"); return -EOPNOTSUPP; } pr_info("probing for conduit method from ACPI.\n"); if (acpi_psci_use_hvc()) invoke_psci_fn = __invoke_psci_fn_hvc; else invoke_psci_fn = __invoke_psci_fn_smc; return psci_probe(); }
static int __init tc2_pm_psci_init(void) { int ret; ret = psci_probe(); if (ret) { pr_debug("psci not found. Aborting psci init\n"); return -ENODEV; } tc2_pm_usage_count_init(); ret = mcpm_platform_register(&tc2_pm_power_ops); if (!ret) ret = mcpm_sync_init(NULL); if (!ret) pr_info("TC2 power management initialized\n"); return ret; }
/* * PSCI init function for PSCI versions >=0.2 * * Probe based on PSCI PSCI_VERSION function */ static int __init psci_0_2_init(struct device_node *np) { int err; err = get_set_conduit_method(np); if (err) goto out_put_node; /* * Starting with v0.2, the PSCI specification introduced a call * (PSCI_VERSION) that allows probing the firmware version, so * that PSCI function IDs and version specific initialization * can be carried out according to the specific version reported * by firmware */ err = psci_probe(); out_put_node: of_node_put(np); return err; }