xref: /rk3399_ARM-atf/lib/cpus/aarch64/cortex_a75_pubsub.c (revision 72e8f2456af54b75a0a1d92aadfce0b4bcde6ba1)
153bfb94eSDimitris Papastamos /*
2*4c700c15SGovindraj Raja  * Copyright (c) 2017-2018, Arm Limited and Contributors. All rights reserved.
353bfb94eSDimitris Papastamos  *
453bfb94eSDimitris Papastamos  * SPDX-License-Identifier: BSD-3-Clause
553bfb94eSDimitris Papastamos  */
653bfb94eSDimitris Papastamos 
753bfb94eSDimitris Papastamos #include <cortex_a75.h>
8f06890eaSDimitris Papastamos #include <cpuamu.h>
909d40e0eSAntonio Nino Diaz #include <lib/el3_runtime/pubsub_events.h>
1053bfb94eSDimitris Papastamos 
cortex_a75_context_save(const void * arg)1153bfb94eSDimitris Papastamos static void *cortex_a75_context_save(const void *arg)
1253bfb94eSDimitris Papastamos {
13714b21ffSDimitris Papastamos 	if (midr_match(CORTEX_A75_MIDR) != 0)
14f06890eaSDimitris Papastamos 		cpuamu_context_save(CORTEX_A75_AMU_NR_COUNTERS);
1543534997SAntonio Nino Diaz 
1643534997SAntonio Nino Diaz 	return (void *)0;
1753bfb94eSDimitris Papastamos }
1853bfb94eSDimitris Papastamos 
cortex_a75_context_restore(const void * arg)1953bfb94eSDimitris Papastamos static void *cortex_a75_context_restore(const void *arg)
2053bfb94eSDimitris Papastamos {
21714b21ffSDimitris Papastamos 	if (midr_match(CORTEX_A75_MIDR) != 0)
22f06890eaSDimitris Papastamos 		cpuamu_context_restore(CORTEX_A75_AMU_NR_COUNTERS);
2343534997SAntonio Nino Diaz 
2443534997SAntonio Nino Diaz 	return (void *)0;
2553bfb94eSDimitris Papastamos }
2653bfb94eSDimitris Papastamos 
2753bfb94eSDimitris Papastamos SUBSCRIBE_TO_EVENT(psci_suspend_pwrdown_start, cortex_a75_context_save);
2853bfb94eSDimitris Papastamos SUBSCRIBE_TO_EVENT(psci_suspend_pwrdown_finish, cortex_a75_context_restore);
29