blob: 11190c8f8b2aeee943a74220fefe343d068d8da9 [file] [log] [blame]
Dimitris Papastamosd7e2e9e2017-12-11 11:45:35 +00001/*
Govindraj Rajaeee28e72023-08-01 15:52:40 -05002 * 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>
Antonio Nino Diaze0f90632018-12-14 00:18:21 +00009#include <lib/el3_runtime/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);
Antonio Nino Diaz9fe40fd2018-10-25 17:11:02 +010015
16 return (void *)0;
Dimitris Papastamosd7e2e9e2017-12-11 11:45:35 +000017}
18
19static void *cortex_a75_context_restore(const void *arg)
20{
Dimitris Papastamos864364a2018-02-27 10:55:39 +000021 if (midr_match(CORTEX_A75_MIDR) != 0)
Dimitris Papastamos1be747f2018-02-14 10:28:36 +000022 cpuamu_context_restore(CORTEX_A75_AMU_NR_COUNTERS);
Antonio Nino Diaz9fe40fd2018-10-25 17:11:02 +010023
24 return (void *)0;
Dimitris Papastamosd7e2e9e2017-12-11 11:45:35 +000025}
26
27SUBSCRIBE_TO_EVENT(psci_suspend_pwrdown_start, cortex_a75_context_save);
28SUBSCRIBE_TO_EVENT(psci_suspend_pwrdown_finish, cortex_a75_context_restore);