forked from ARM-software/SCP-firmware
-
Notifications
You must be signed in to change notification settings - Fork 0
/
config_juno_debug.c
79 lines (66 loc) · 2.35 KB
/
config_juno_debug.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
/*
* Arm SCP/MCP Software
* Copyright (c) 2020-2021, Arm Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include <config_power_domain.h>
#include <juno_id.h>
#include <system_clock.h>
#include <mod_debug.h>
#include <mod_juno_debug.h>
#include <fwk_element.h>
#include <fwk_mm.h>
#include <fwk_module.h>
#include <fwk_module_idx.h>
/* Debug clock settings for Juno with default values for R0 */
static struct juno_css_debug_dev clock_settings = {
.div_atclk = (SYSINCLK / (533UL * FWK_MHZ)),
.manual_reset_required = true,
.div_pclk = 1,
.div_traceclk = (SYSINCLK / (150UL * FWK_MHZ)),
};
static struct fwk_element juno_debug_element_table[] = {
[0] = {
.name = "JUNO DEBUG",
.data = &((struct mod_juno_debug_dev_config){
.pd_dbgsys_id =
FWK_ID_ELEMENT_INIT(FWK_MODULE_IDX_POWER_DOMAIN,
POWER_DOMAIN_IDX_DBGSYS),
.pd_big_sstop_id =
FWK_ID_ELEMENT_INIT(FWK_MODULE_IDX_POWER_DOMAIN,
POWER_DOMAIN_IDX_BIG_SSTOP),
.pd_little_sstop_id =
FWK_ID_ELEMENT_INIT(FWK_MODULE_IDX_POWER_DOMAIN,
POWER_DOMAIN_IDX_LITTLE_SSTOP),
}),
},
[1] = { 0 }, /* Termination description */
};
static const struct fwk_element *get_juno_debug_elem_table(fwk_id_t module_id)
{
int status;
enum juno_idx_revision revision;
struct mod_juno_debug_dev_config *juno_debug_config;
status = juno_id_get_revision(&revision);
if (status != FWK_SUCCESS) {
return NULL;
}
juno_debug_config = (struct mod_juno_debug_dev_config *)
juno_debug_element_table[0].data;
juno_debug_config->clk_settings = &clock_settings;
/* Adjust Debug clock settings for Juno R1 & Juno R2 */
if (revision != JUNO_IDX_REVISION_R0) {
juno_debug_config->clk_settings->div_atclk =
(SYSINCLK / (400UL * FWK_MHZ)),
juno_debug_config->clk_settings->manual_reset_required = false;
}
return juno_debug_element_table;
}
struct fwk_module_config config_juno_debug = {
.data =
&(struct mod_juno_debug_config){
.timer_id = FWK_ID_ELEMENT_INIT(FWK_MODULE_IDX_TIMER, 0),
},
.elements = FWK_MODULE_DYNAMIC_ELEMENTS(get_juno_debug_elem_table),
};