1b04ea14bSJohn Tsichritzis /* 2*4c700c15SGovindraj Raja * Copyright (c) 2018-2019, Arm Limited and Contributors. All rights reserved. 3b04ea14bSJohn Tsichritzis * 4b04ea14bSJohn Tsichritzis * SPDX-License-Identifier: BSD-3-Clause 5b04ea14bSJohn Tsichritzis */ 6b04ea14bSJohn Tsichritzis 7da6d75a0SJohn Tsichritzis #include <neoverse_n1.h> 8b04ea14bSJohn Tsichritzis #include <cpuamu.h> 9b04ea14bSJohn Tsichritzis #include <lib/el3_runtime/pubsub_events.h> 10b04ea14bSJohn Tsichritzis 11da6d75a0SJohn Tsichritzis static void *neoverse_n1_context_save(const void *arg) 12b04ea14bSJohn Tsichritzis { 13da6d75a0SJohn Tsichritzis if (midr_match(NEOVERSE_N1_MIDR) != 0) 14da6d75a0SJohn Tsichritzis cpuamu_context_save(NEOVERSE_N1_AMU_NR_COUNTERS); 15b04ea14bSJohn Tsichritzis 16b04ea14bSJohn Tsichritzis return (void *)0; 17b04ea14bSJohn Tsichritzis } 18b04ea14bSJohn Tsichritzis 19da6d75a0SJohn Tsichritzis static void *neoverse_n1_context_restore(const void *arg) 20b04ea14bSJohn Tsichritzis { 21da6d75a0SJohn Tsichritzis if (midr_match(NEOVERSE_N1_MIDR) != 0) 22da6d75a0SJohn Tsichritzis cpuamu_context_restore(NEOVERSE_N1_AMU_NR_COUNTERS); 23b04ea14bSJohn Tsichritzis 24b04ea14bSJohn Tsichritzis return (void *)0; 25b04ea14bSJohn Tsichritzis } 26b04ea14bSJohn Tsichritzis 27da6d75a0SJohn Tsichritzis SUBSCRIBE_TO_EVENT(psci_suspend_pwrdown_start, neoverse_n1_context_save); 28da6d75a0SJohn Tsichritzis SUBSCRIBE_TO_EVENT(psci_suspend_pwrdown_finish, neoverse_n1_context_restore); 29