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" ); |
74 | |