Commit | Line | Data |
---|---|---|
ede5bab8 ML |
1 | // SPDX-License-Identifier: GPL-2.0 |
2 | /* | |
3 | * Copyright(C) 2020 Linaro Limited. All rights reserved. | |
4 | * Author: Mike Leach <mike.leach@linaro.org> | |
5 | */ | |
6 | ||
7 | #include "coresight-config.h" | |
8 | #include "coresight-syscfg.h" | |
9 | ||
10 | /* create an alternate autofdo configuration */ | |
11 | ||
12 | /* we will provide 4 sets of preset parameter values */ | |
13 | #define AFDO2_NR_PRESETS 4 | |
14 | /* the total number of parameters in used features - strobing has 2 */ | |
15 | #define AFDO2_NR_PARAM_SUM 2 | |
16 | ||
17 | static const char *afdo2_ref_names[] = { | |
18 | "strobing", | |
19 | }; | |
20 | ||
21 | /* | |
22 | * set of presets leaves strobing window constant while varying period to allow | |
23 | * experimentation with mark / space ratios for various workloads | |
24 | */ | |
25 | static u64 afdo2_presets[AFDO2_NR_PRESETS][AFDO2_NR_PARAM_SUM] = { | |
26 | { 1000, 100 }, | |
27 | { 1000, 1000 }, | |
28 | { 1000, 5000 }, | |
29 | { 1000, 10000 }, | |
30 | }; | |
31 | ||
32 | struct cscfg_config_desc afdo2 = { | |
33 | .name = "autofdo2", | |
34 | .description = "Setup ETMs with strobing for autofdo\n" | |
35 | "Supplied presets allow experimentation with mark-space ratio for various loads\n", | |
36 | .nr_feat_refs = ARRAY_SIZE(afdo2_ref_names), | |
37 | .feat_ref_names = afdo2_ref_names, | |
38 | .nr_presets = AFDO2_NR_PRESETS, | |
39 | .nr_total_params = AFDO2_NR_PARAM_SUM, | |
40 | .presets = &afdo2_presets[0][0], | |
41 | }; | |
42 | ||
43 | static struct cscfg_feature_desc *sample_feats[] = { | |
44 | NULL | |
45 | }; | |
46 | ||
47 | static struct cscfg_config_desc *sample_cfgs[] = { | |
48 | &afdo2, | |
49 | NULL | |
50 | }; | |
51 | ||
52 | static struct cscfg_load_owner_info mod_owner = { | |
53 | .type = CSCFG_OWNER_MODULE, | |
54 | .owner_handle = THIS_MODULE, | |
55 | }; | |
56 | ||
57 | /* module init and exit - just load and unload configs */ | |
58 | static int __init cscfg_sample_init(void) | |
59 | { | |
60 | return cscfg_load_config_sets(sample_cfgs, sample_feats, &mod_owner); | |
61 | } | |
62 | ||
63 | static void __exit cscfg_sample_exit(void) | |
64 | { | |
65 | cscfg_unload_config_sets(&mod_owner); | |
66 | } | |
67 | ||
68 | module_init(cscfg_sample_init); | |
69 | module_exit(cscfg_sample_exit); | |
70 | ||
71 | MODULE_LICENSE("GPL v2"); | |
72 | MODULE_AUTHOR("Mike Leach <mike.leach@linaro.org>"); | |
73 | MODULE_DESCRIPTION("CoreSight Syscfg Example"); |