| // SPDX-License-Identifier: GPL-2.0 |
| /* |
| * ConfigFS support |
| * |
| * Copyright (C) 2026, Intel Corporation |
| * Author: Mika Westerberg <mika.westerberg@linux.intel.com> |
| */ |
| |
| #include <linux/configfs.h> |
| #include <linux/export.h> |
| |
| #include "tb.h" |
| |
| static const struct config_item_type tb_root_group_type = { |
| .ct_owner = THIS_MODULE, |
| }; |
| |
| static struct configfs_subsystem tb_configfs = { |
| .su_group = { |
| .cg_item = { |
| .ci_namebuf = "thunderbolt", |
| .ci_type = &tb_root_group_type, |
| }, |
| }, |
| }; |
| |
| /** |
| * tb_configfs_register_group() - Register Thunderbolt ConfigFS group |
| * @group: Group to register. |
| * |
| * Registers the new @group under Thunderbolt subsystem ConfigFS. |
| * |
| * Return: 0% in case of success, negative errno otherwise. |
| */ |
| int tb_configfs_register_group(struct config_group *group) |
| { |
| return configfs_register_group(&tb_configfs.su_group, group); |
| } |
| EXPORT_SYMBOL_GPL(tb_configfs_register_group); |
| |
| /** |
| * tb_configfs_unregister_group() - Unregister previously registered group |
| * @group: Group to unregister. |
| */ |
| void tb_configfs_unregister_group(struct config_group *group) |
| { |
| configfs_unregister_group(group); |
| } |
| EXPORT_SYMBOL_GPL(tb_configfs_unregister_group); |
| |
| int tb_configfs_init(void) |
| { |
| config_group_init(&tb_configfs.su_group); |
| mutex_init(&tb_configfs.su_mutex); |
| return configfs_register_subsystem(&tb_configfs); |
| } |
| |
| void tb_configfs_exit(void) |
| { |
| configfs_unregister_subsystem(&tb_configfs); |
| } |