blob: 16f62f4722b4d090ec425275072773c3e3b65d59 [file] [log] [blame]
Dimitris Papastamosd7e2e9e2017-12-11 11:45:35 +00001/*
Dimitris Papastamos1be747f2018-02-14 10:28:36 +00002 * Copyright (c) 2017-2018, ARM Limited and Contributors. All rights reserved.
Dimitris Papastamosd7e2e9e2017-12-11 11:45:35 +00003 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
7#include <cortex_a75.h>
Dimitris Papastamos1be747f2018-02-14 10:28:36 +00008#include <cpuamu.h>
Joel Hutton0dcdd8d2017-12-21 15:21:20 +00009#include <pubsub_events.h>
Dimitris Papastamosd7e2e9e2017-12-11 11:45:35 +000010
Dimitris Papastamosd7e2e9e2017-12-11 11:45:35 +000011static void *cortex_a75_context_save(const void *arg)
12{
Dimitris Papastamos864364a2018-02-27 10:55:39 +000013 if (midr_match(CORTEX_A75_MIDR) != 0)
Dimitris Papastamos1be747f2018-02-14 10:28:36 +000014 cpuamu_context_save(CORTEX_A75_AMU_NR_COUNTERS);
Dimitris Papastamosd7e2e9e2017-12-11 11:45:35 +000015 return 0;
16}
17
18static void *cortex_a75_context_restore(const void *arg)
19{
Dimitris Papastamos864364a2018-02-27 10:55:39 +000020 if (midr_match(CORTEX_A75_MIDR) != 0)
Dimitris Papastamos1be747f2018-02-14 10:28:36 +000021 cpuamu_context_restore(CORTEX_A75_AMU_NR_COUNTERS);
Dimitris Papastamosd7e2e9e2017-12-11 11:45:35 +000022 return 0;
23}
24
25SUBSCRIBE_TO_EVENT(psci_suspend_pwrdown_start, cortex_a75_context_save);
26SUBSCRIBE_TO_EVENT(psci_suspend_pwrdown_finish, cortex_a75_context_restore);