backlight.c 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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. static struct kobject *backlight_kobj = NULL;
  21. /* ==================== mode ==================== */
  22. static ssize_t brightness_show(struct kobject *kobj, struct kobj_attribute *attr,
  23. char *buf)
  24. {
  25. static int count = 0;
  26. count++;
  27. return sprintf(buf, "mode_show count=%d\n", count);
  28. }
  29. static ssize_t brightness_store(struct kobject *kobj, struct kobj_attribute *attr,
  30. const char *buf, size_t count)
  31. {
  32. printk("mode_store kernel rev:%s\n", buf);
  33. return count;
  34. }
  35. static struct kobj_attribute brightness =
  36. __ATTR(brightness, 0644, brightness_show, brightness_store);
  37. /* ==================== 属性组 ==================== */
  38. static struct attribute *backlight_attrs[] = {
  39. &brightness.attr,
  40. NULL,
  41. };
  42. static struct attribute_group backlight_attr_group = {
  43. .attrs = backlight_attrs,
  44. };
  45. int backlight_init(void)
  46. {
  47. int ret;
  48. /* 创建 /sys/kernel/vfiec/lightring */
  49. backlight_kobj = kobject_create_and_add("backlight", vfiec_kobj);
  50. if (!backlight_kobj)
  51. {
  52. ret = -ENOMEM;
  53. }
  54. /* 创建属性文件 */
  55. ret = sysfs_create_group(backlight_kobj, &backlight_attr_group);
  56. if (ret)
  57. {
  58. pr_err("Faibacklight to create sysfs group: %d\n", ret);
  59. }
  60. return ret;
  61. }
  62. void backlight_exit(void)
  63. {
  64. sysfs_remove_group(backlight_kobj, &backlight_attr_group);
  65. kobject_put(backlight_kobj);
  66. }