hidraw.h 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. /*
  3. * Copyright (c) 2007 Jiri Kosina
  4. */
  5. #ifndef _HIDRAW_H
  6. #define _HIDRAW_H
  7. #include <uapi/linux/hidraw.h>
  8. struct hidraw {
  9. unsigned int minor;
  10. int exist;
  11. int open;
  12. wait_queue_head_t wait;
  13. struct hid_device *hid;
  14. struct device *dev;
  15. spinlock_t list_lock;
  16. struct list_head list;
  17. };
  18. struct hidraw_report {
  19. __u8 *value;
  20. int len;
  21. };
  22. struct hidraw_list {
  23. struct hidraw_report buffer[HIDRAW_BUFFER_SIZE];
  24. int head;
  25. int tail;
  26. struct fasync_struct *fasync;
  27. struct hidraw *hidraw;
  28. struct list_head node;
  29. struct mutex read_mutex;
  30. };
  31. #ifdef CONFIG_HIDRAW
  32. int hidraw_init(void);
  33. void hidraw_exit(void);
  34. int hidraw_report_event(struct hid_device *, u8 *, int);
  35. int hidraw_connect(struct hid_device *);
  36. void hidraw_disconnect(struct hid_device *);
  37. #else
  38. static inline int hidraw_init(void) { return 0; }
  39. static inline void hidraw_exit(void) { }
  40. static inline int hidraw_report_event(struct hid_device *hid, u8 *data, int len) { return 0; }
  41. static inline int hidraw_connect(struct hid_device *hid) { return -1; }
  42. static inline void hidraw_disconnect(struct hid_device *hid) { }
  43. #endif
  44. #endif