xref: /linux/drivers/thunderbolt/configfs.c (revision 3d5e48944e824bddc20d7b874e784f7b279636fe)
1 // SPDX-License-Identifier: GPL-2.0
2 /*
3  * ConfigFS support
4  *
5  * Copyright (C) 2026, Intel Corporation
6  * Author: Mika Westerberg <mika.westerberg@linux.intel.com>
7  */
8 
9 #include <linux/configfs.h>
10 #include <linux/export.h>
11 
12 #include "tb.h"
13 
14 static const struct config_item_type tb_root_group_type = {
15 	.ct_owner = THIS_MODULE,
16 };
17 
18 static struct configfs_subsystem tb_configfs = {
19 	.su_group = {
20 		.cg_item = {
21 			.ci_namebuf = "thunderbolt",
22 			.ci_type = &tb_root_group_type,
23 		},
24 	},
25 };
26 
27 /**
28  * tb_configfs_register_group() - Register Thunderbolt ConfigFS group
29  * @group: Group to register.
30  *
31  * Registers the new @group under Thunderbolt subsystem ConfigFS.
32  *
33  * Return: 0% in case of success, negative errno otherwise.
34  */
35 int tb_configfs_register_group(struct config_group *group)
36 {
37 	return configfs_register_group(&tb_configfs.su_group, group);
38 }
39 EXPORT_SYMBOL_GPL(tb_configfs_register_group);
40 
41 /**
42  * tb_configfs_unregister_group() - Unregister previously registered group
43  * @group: Group to unregister.
44  */
45 void tb_configfs_unregister_group(struct config_group *group)
46 {
47 	configfs_unregister_group(group);
48 }
49 EXPORT_SYMBOL_GPL(tb_configfs_unregister_group);
50 
51 int tb_configfs_init(void)
52 {
53 	config_group_init(&tb_configfs.su_group);
54 	mutex_init(&tb_configfs.su_mutex);
55 	return configfs_register_subsystem(&tb_configfs);
56 }
57 
58 void tb_configfs_exit(void)
59 {
60 	configfs_unregister_subsystem(&tb_configfs);
61 }
62