19e032181SManish V Badarkhe /* 29e032181SManish V Badarkhe * Copyright (c) 2025, Arm Limited. All rights reserved. 39e032181SManish V Badarkhe * 49e032181SManish V Badarkhe * SPDX-License-Identifier: BSD-3-Clause 59e032181SManish V Badarkhe */ 69e032181SManish V Badarkhe 79e032181SManish V Badarkhe #ifndef LFA_COMPONENT_DESC_H 89e032181SManish V Badarkhe #define LFA_COMPONENT_DESC_H 99e032181SManish V Badarkhe 10*06a6f296SManish V Badarkhe #include <stdbool.h> 119e032181SManish V Badarkhe #include <stdint.h> 129e032181SManish V Badarkhe 139e032181SManish V Badarkhe typedef enum { 149e032181SManish V Badarkhe PRIME_NONE = 0, 159e032181SManish V Badarkhe } lfa_prime_status_t; 169e032181SManish V Badarkhe 179e032181SManish V Badarkhe struct lfa_component_status { 189e032181SManish V Badarkhe uint32_t component_id; 199e032181SManish V Badarkhe lfa_prime_status_t prime_status; 209e032181SManish V Badarkhe }; 219e032181SManish V Badarkhe 229e032181SManish V Badarkhe typedef int32_t (*component_prime_fn)(struct lfa_component_status *activation); 239e032181SManish V Badarkhe typedef int32_t (*component_activate_fn)(struct lfa_component_status *activation, 249e032181SManish V Badarkhe uint64_t ep_address, 259e032181SManish V Badarkhe uint64_t context_id); 269e032181SManish V Badarkhe 279e032181SManish V Badarkhe struct lfa_component_ops { 289e032181SManish V Badarkhe component_prime_fn prime; 299e032181SManish V Badarkhe component_activate_fn activate; 30*06a6f296SManish V Badarkhe bool may_reset_cpu; 31*06a6f296SManish V Badarkhe bool cpu_rendezvous_required; 329e032181SManish V Badarkhe }; 339e032181SManish V Badarkhe 349e032181SManish V Badarkhe #endif /* LFA_COMPONENT_DESC_H */ 35