1 /*
2  * Arm SCP/MCP Software
3  * Copyright (c) 2018-2021, Arm Limited and Contributors. All rights reserved.
4  *
5  * SPDX-License-Identifier: BSD-3-Clause
6  */
7 
8 #ifndef MOD_CCN512_H
9 #define MOD_CCN512_H
10 
11 #include <internal/ccn512.h>
12 
13 #include <fwk_id.h>
14 #include <fwk_macros.h>
15 
16 #include <stdint.h>
17 
18 /*!
19  * \addtogroup GroupSYNQUACERModule SYNQUACER Product Modules
20  * \{
21  */
22 
23 /*!
24  * \defgroup GroupCCN512 CCN512 Driver
25  *
26  * \brief CCN512 device driver.
27  *
28  * \details This module implements a device driver for the CCN512
29  *
30  * \{
31  */
32 
33 /*
34  * \brief CCN512 memory map
35  */
36 typedef struct {
37     /*!
38      * \cond
39      */
40     ccn5xx_mn_reg_t MN_ID_34;
41     ccn5xx_dbg_reg_t DEBUG_ID_34;
42     ccn5xx_region_t RESERVED0[6];
43     ccn5xx_hni_reg_t HNI_ID_13;
44     ccn5xx_hni_reg_t HNI_ID_34;
45     ccn5xx_region_t RESERVED1[6];
46     ccn5xx_sbsx_reg_t SBSX_ID_3;
47     ccn5xx_sbsx_reg_t SBSX_ID_8;
48     ccn5xx_sbsx_reg_t SBSX_ID_21;
49     ccn5xx_sbsx_reg_t SBSX_ID_26;
50     ccn5xx_region_t RESERVED2[12];
51     ccn5xx_hnf_reg_t HNF_ID_2;
52     ccn5xx_hnf_reg_t HNF_ID_5;
53     ccn5xx_hnf_reg_t HNF_ID_6;
54     ccn5xx_hnf_reg_t HNF_ID_9;
55     ccn5xx_hnf_reg_t HNF_ID_20;
56     ccn5xx_hnf_reg_t HNF_ID_23;
57     ccn5xx_hnf_reg_t HNF_ID_24;
58     ccn5xx_hnf_reg_t HNF_ID_27;
59     ccn5xx_region_t RESERVED3[24];
60     ccn5xx_xp_reg_t XP_ID_0;
61     ccn5xx_xp_reg_t XP_ID_1;
62     ccn5xx_xp_reg_t XP_ID_2;
63     ccn5xx_xp_reg_t XP_ID_3;
64     ccn5xx_xp_reg_t XP_ID_4;
65     ccn5xx_xp_reg_t XP_ID_5;
66     ccn5xx_xp_reg_t XP_ID_6;
67     ccn5xx_xp_reg_t XP_ID_7;
68     ccn5xx_xp_reg_t XP_ID_8;
69     ccn5xx_xp_reg_t XP_ID_9;
70     ccn5xx_xp_reg_t XP_ID_10;
71     ccn5xx_xp_reg_t XP_ID_11;
72     ccn5xx_xp_reg_t XP_ID_12;
73     ccn5xx_xp_reg_t XP_ID_13;
74     ccn5xx_xp_reg_t XP_ID_14;
75     ccn5xx_xp_reg_t XP_ID_15;
76     ccn5xx_xp_reg_t XP_ID_16;
77     ccn5xx_xp_reg_t XP_ID_17;
78     ccn5xx_region_t RESERVED4[47];
79     ccn5xx_rni_reg_t RNI_ID_1;
80     ccn5xx_region_t RESERVED5[2];
81     ccn5xx_rni_reg_t RNI_ID_4;
82     ccn5xx_region_t RESERVED6[2];
83     ccn5xx_rni_reg_t RNI_ID_7;
84     ccn5xx_region_t RESERVED7[2];
85     ccn5xx_rni_reg_t RNI_ID_10;
86     ccn5xx_region_t RESERVED8[8];
87     ccn5xx_rni_reg_t RNI_ID_19;
88     ccn5xx_region_t RESERVED9[2];
89     ccn5xx_rni_reg_t RNI_ID_22;
90     ccn5xx_region_t RESERVED10[2];
91     ccn5xx_rni_reg_t RNI_ID_25;
92     ccn5xx_region_t RESERVED11[2];
93     ccn5xx_rni_reg_t RNI_ID_28;
94     /*!
95      * \endcond
96      */
97 } ccn512_reg_t;
98 
99 /*!
100  * \brief APIs to configure ccn512.
101  */
102 struct mod_ccn512_api {
103     /*!
104      * \brief APIs to configure ccn512
105      *
106      * \param none
107      *
108      */
109     void (*ccn512_exit)(void);
110 };
111 
112 /*!
113  * \brief CCN512 device configuration data.
114  */
115 struct mod_ccn512_module_config {
116     /*! Base address of the device registers */
117     ccn512_reg_t *reg_base;
118 };
119 
120 /*!
121  * \}
122  */
123 
124 /*!
125  * \}
126  */
127 
128 #endif /* MOD_CCN512_H */
129