1a13d5a24SMike Leach /* SPDX-License-Identifier: GPL-2.0-only */
2a13d5a24SMike Leach /*
3a13d5a24SMike Leach  * Coresight system configuration driver - support for configfs.
4a13d5a24SMike Leach  */
5a13d5a24SMike Leach 
6a13d5a24SMike Leach #ifndef CORESIGHT_SYSCFG_CONFIGFS_H
7a13d5a24SMike Leach #define CORESIGHT_SYSCFG_CONFIGFS_H
8a13d5a24SMike Leach 
9a13d5a24SMike Leach #include <linux/configfs.h>
10a13d5a24SMike Leach #include "coresight-syscfg.h"
11a13d5a24SMike Leach 
12a13d5a24SMike Leach #define CSCFG_FS_SUBSYS_NAME "cs-syscfg"
13a13d5a24SMike Leach 
14a13d5a24SMike Leach /* container for configuration view */
15a13d5a24SMike Leach struct cscfg_fs_config {
16a13d5a24SMike Leach 	struct cscfg_config_desc *config_desc;
17a13d5a24SMike Leach 	struct config_group group;
18*7ebd0ec6SMike Leach 	bool active;
19*7ebd0ec6SMike Leach 	int preset;
20a13d5a24SMike Leach };
21a13d5a24SMike Leach 
22a13d5a24SMike Leach /* container for feature view */
23a13d5a24SMike Leach struct cscfg_fs_feature {
24a13d5a24SMike Leach 	struct cscfg_feature_desc *feat_desc;
25a13d5a24SMike Leach 	struct config_group group;
26a13d5a24SMike Leach };
27a13d5a24SMike Leach 
28a13d5a24SMike Leach /* container for parameter view */
29a13d5a24SMike Leach struct cscfg_fs_param {
30a13d5a24SMike Leach 	int param_idx;
31a13d5a24SMike Leach 	struct cscfg_feature_desc *feat_desc;
32a13d5a24SMike Leach 	struct config_group group;
33a13d5a24SMike Leach };
34a13d5a24SMike Leach 
35a13d5a24SMike Leach /* container for preset view */
36a13d5a24SMike Leach struct cscfg_fs_preset {
37a13d5a24SMike Leach 	int preset_num;
38a13d5a24SMike Leach 	struct cscfg_config_desc *config_desc;
39a13d5a24SMike Leach 	struct config_group group;
40a13d5a24SMike Leach };
41a13d5a24SMike Leach 
42a13d5a24SMike Leach int cscfg_configfs_init(struct cscfg_manager *cscfg_mgr);
43a13d5a24SMike Leach void cscfg_configfs_release(struct cscfg_manager *cscfg_mgr);
44a13d5a24SMike Leach int cscfg_configfs_add_config(struct cscfg_config_desc *config_desc);
45a13d5a24SMike Leach int cscfg_configfs_add_feature(struct cscfg_feature_desc *feat_desc);
4602bd588eSMike Leach void cscfg_configfs_del_config(struct cscfg_config_desc *config_desc);
4702bd588eSMike Leach void cscfg_configfs_del_feature(struct cscfg_feature_desc *feat_desc);
48a13d5a24SMike Leach 
49a13d5a24SMike Leach #endif /* CORESIGHT_SYSCFG_CONFIGFS_H */
50