1 /*
2  * Arm SCP/MCP Software
3  * Copyright (c) 2022, Arm Limited and Contributors. All rights reserved.
4  *
5  * SPDX-License-Identifier: BSD-3-Clause
6  *
7  * Description: TC2 BL1 module.
8  */
9 
10 #ifndef MOD_TC2_BL1_H
11 #define MOD_TC2_BL1_H
12 
13 #include <fwk_id.h>
14 #include <fwk_module_idx.h>
15 
16 #include <stddef.h>
17 #include <stdint.h>
18 
19 /*!
20  * \ingroup GroupTC2BL1
21  * \defgroup GroupTC2BL1 BL1 Support
22  * \{
23  */
24 
25 /*!
26  * \brief Module configuration data.
27  */
28 struct mod_tc2_bl1_config {
29     /*! Base address of the Application Processor (AP) context area */
30     const uintptr_t ap_context_base;
31 
32     /*! Size of the AP context area */
33     const size_t ap_context_size;
34 
35     /*! Element ID of the primary cluster PPU */
36     const fwk_id_t id_primary_cluster;
37 
38     /*! Element ID of the primary core PPU */
39     const fwk_id_t id_primary_core;
40 };
41 
42 /*!
43  * \brief Type of the interfaces exposed by the module.
44  */
45 enum mod_tc2_bl1_api_idx {
46     /*! Interface for transport module */
47     MOD_TC2_BL1_API_TRANSPORT_FIRMWARE_SIGNAL_INPUT,
48     /*! Number of defined interfaces */
49     MOD_TC2_BL1_API_IDX_COUNT,
50 };
51 
52 /*!
53  * \brief Notification indices.
54  */
55 enum mod_tc2_bl1_notification_idx {
56     /*! <tt>SYSTOP powered on</tt> notification */
57     MOD_TC2_BL1_NOTIFICATION_IDX_POWER_SYSTOP,
58 
59     /*! Number of notifications defined by the module */
60     MOD_TC2_BL1_NOTIFICATION_COUNT,
61 };
62 
63 /*! <tt>SYSTOP powered on</tt> notification identifier */
64 static const fwk_id_t mod_tc2_bl1_notification_id_systop =
65     FWK_ID_NOTIFICATION_INIT(
66         FWK_MODULE_IDX_TC2_BL1,
67         MOD_TC2_BL1_NOTIFICATION_IDX_POWER_SYSTOP);
68 
69 /*!
70  * \}
71  */
72 
73 #endif /* MOD_TC2_BL1_H */
74