1 /*
2  * Arm SCP/MCP Software
3  * Copyright (c) 2019-2021, Arm Limited and Contributors. All rights reserved.
4  *
5  * SPDX-License-Identifier: BSD-3-Clause
6  */
7 
8 #ifndef JUNO_DMC400_H
9 #define JUNO_DMC400_H
10 
11 #include "system_clock.h"
12 
13 #include <fwk_id.h>
14 #include <fwk_macros.h>
15 #include <fwk_module_idx.h>
16 
17 /* DDR frequency in MHz */
18 #define DDR_FREQUENCY_MHZ   UINT32_C(800)
19 
20 /* Clock divider */
21 #define CLKDIV              ((SYSINCLK / (DDR_FREQUENCY_MHZ * FWK_MHZ)) - 1)
22 
23 /* Time-out for DMC400 */
24 #define DMC400_CLOCK_DIV_SET_WAIT_TIMEOUT_US    1000
25 #define DMC400_CLOCK_SEL_SET_WAIT_TIMEOUT_US    1000
26 #define DMC400_CLOCK_ENABLE_WAIT_TIMEOUT_US     1000
27 #define DMC400_PHY_INIT_WAIT_TIMEOUT_US         (100 * 1000)
28 #define DMC400_CONFIG_WAIT_TIMEOUT_US           (100 * 1000)
29 #define DMC400_TRAINING_TIMEOUT_US              (1000 * 1000)
30 
31 /*
32  * Event indices
33  */
34 enum juno_dmc400_event_idx {
35     /* Training event */
36     JUNO_DMC400_EVENT_IDX_TRAINING,
37 
38     /* Number of defined events */
39     JUNO_DMC400_EVENT_IDX_COUNT
40 };
41 
42 /*
43  * Training event identifier
44  */
45 static const fwk_id_t juno_dmc400_event_id_training =
46     FWK_ID_EVENT_INIT(FWK_MODULE_IDX_JUNO_DMC400,
47                       JUNO_DMC400_EVENT_IDX_TRAINING);
48 
49 #endif  /* JUNO_DMC400_H */
50