ec_version.c 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #include <linux/module.h>
  2. #include <linux/kernel.h>
  3. #include <linux/init.h>
  4. #include <linux/fs.h>
  5. #include <linux/cdev.h>
  6. #include <linux/device.h>
  7. #include <linux/uaccess.h>
  8. #include <linux/slab.h>
  9. #include <linux/pci.h>
  10. #include <linux/i2c.h>
  11. #include <linux/acpi.h>
  12. #include <linux/interrupt.h>
  13. #include <linux/wait.h>
  14. #include <linux/sched.h>
  15. #include <linux/poll.h>
  16. #include <linux/mutex.h>
  17. #include <linux/delay.h>
  18. #include "light_ring.h"
  19. extern struct kobject *vfiec_kobj;
  20. /* ==================== mode ==================== */
  21. static ssize_t fw_version_show(struct kobject *kobj, struct kobj_attribute *attr,
  22. char *buf)
  23. {
  24. // 这里待完善,获取真实的,版本号
  25. memcpy(buf, "VF3965U.0x21", strlen("VF3965U.0x21"));
  26. return strlen("VF3965U.0x21");
  27. }
  28. static ssize_t mode_store(struct kobject *kobj, struct kobj_attribute *attr,
  29. const char *buf, size_t count)
  30. {
  31. printk("mode_store kernel rev:%s\n", buf);
  32. return count;
  33. }
  34. static struct kobj_attribute ec_version_attr =
  35. __ATTR(fw_version, 0444, fw_version_show, mode_store);
  36. /* ==================== 属性组 ==================== */
  37. static struct attribute *ec_version_attrs[] = {
  38. &ec_version_attr.attr,
  39. NULL,
  40. };
  41. static struct attribute_group ec_version_attr_group = {
  42. .attrs = ec_version_attrs,
  43. };
  44. int ec_version_init(void)
  45. {
  46. int ret;
  47. /* 创建属性文件 */
  48. ret = sysfs_create_group(vfiec_kobj, &ec_version_attr_group);
  49. if (ret)
  50. {
  51. pr_err("Faiec_version to create sysfs group: %d\n", ret);
  52. }
  53. return ret;
  54. }
  55. void ec_version_exit(void)
  56. {
  57. sysfs_remove_group(vfiec_kobj, &ec_version_attr_group);
  58. }