From ace9429bb58fd418f0c81d4c2835699bddf6bde6 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Thu, 11 Apr 2024 10:27:49 +0200 Subject: Adding upstream version 6.6.15. Signed-off-by: Daniel Baumann --- arch/arm/mach-highbank/pm.c | 51 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 arch/arm/mach-highbank/pm.c (limited to 'arch/arm/mach-highbank/pm.c') diff --git a/arch/arm/mach-highbank/pm.c b/arch/arm/mach-highbank/pm.c new file mode 100644 index 0000000000..3fdbdb8311 --- /dev/null +++ b/arch/arm/mach-highbank/pm.c @@ -0,0 +1,51 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Copyright 2011 Calxeda, Inc. + */ + +#include +#include +#include +#include + +#include + +#include + +#include "core.h" + +#define HIGHBANK_SUSPEND_PARAM \ + ((0 << PSCI_0_2_POWER_STATE_ID_SHIFT) | \ + (1 << PSCI_0_2_POWER_STATE_AFFL_SHIFT) | \ + (PSCI_POWER_STATE_TYPE_POWER_DOWN << PSCI_0_2_POWER_STATE_TYPE_SHIFT)) + +static int highbank_suspend_finish(unsigned long val) +{ + return psci_ops.cpu_suspend(HIGHBANK_SUSPEND_PARAM, __pa(cpu_resume)); +} + +static int highbank_pm_enter(suspend_state_t state) +{ + cpu_pm_enter(); + cpu_cluster_pm_enter(); + + cpu_suspend(0, highbank_suspend_finish); + + cpu_cluster_pm_exit(); + cpu_pm_exit(); + + return 0; +} + +static const struct platform_suspend_ops highbank_pm_ops = { + .enter = highbank_pm_enter, + .valid = suspend_valid_only_mem, +}; + +void __init highbank_pm_init(void) +{ + if (!psci_ops.cpu_suspend) + return; + + suspend_set_ops(&highbank_pm_ops); +} -- cgit v1.2.3