#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "light_ring.h" extern struct kobject *vfiec_kobj; /* ==================== mode ==================== */ static ssize_t fw_version_show(struct kobject *kobj, struct kobj_attribute *attr, char *buf) { // 这里待完善,获取真实的,版本号 memcpy(buf, "VF3965U.0x21", strlen("VF3965U.0x21")); return strlen("VF3965U.0x21"); } static ssize_t mode_store(struct kobject *kobj, struct kobj_attribute *attr, const char *buf, size_t count) { printk("mode_store kernel rev:%s\n", buf); return count; } static struct kobj_attribute ec_version_attr = __ATTR(fw_version, 0444, fw_version_show, mode_store); /* ==================== 属性组 ==================== */ static struct attribute *ec_version_attrs[] = { &ec_version_attr.attr, NULL, }; static struct attribute_group ec_version_attr_group = { .attrs = ec_version_attrs, }; int ec_version_init(void) { int ret; /* 创建属性文件 */ ret = sysfs_create_group(vfiec_kobj, &ec_version_attr_group); if (ret) { pr_err("Faiec_version to create sysfs group: %d\n", ret); } return ret; } void ec_version_exit(void) { sysfs_remove_group(vfiec_kobj, &ec_version_attr_group); }