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 8 #include <uapi/linux/hidraw.h> 9 10 11 struct hidraw { 12 unsigned int minor; 13 int exist; 14 int open; 15 wait_queue_head_t wait; 16 struct hid_device *hid; 17 struct device *dev; 18 spinlock_t list_lock; 19 struct list_head list; 20 }; 21 22 struct hidraw_report { 23 __u8 *value; 24 int len; 25 }; 26 27 struct hidraw_list { 28 struct hidraw_report buffer[HIDRAW_BUFFER_SIZE]; 29 int head; 30 int tail; 31 struct fasync_struct *fasync; 32 struct hidraw *hidraw; 33 struct list_head node; 34 struct mutex read_mutex; 35 bool revoked; 36 }; 37 38 #ifdef CONFIG_HIDRAW 39 int hidraw_init(void); 40 void hidraw_exit(void); 41 int hidraw_report_event(struct hid_device *, u8 *, int); 42 int hidraw_connect(struct hid_device *); 43 void hidraw_disconnect(struct hid_device *); 44 #else hidraw_init(void)45static inline int hidraw_init(void) { return 0; } hidraw_exit(void)46static inline void hidraw_exit(void) { } hidraw_report_event(struct hid_device * hid,u8 * data,int len)47static inline int hidraw_report_event(struct hid_device *hid, u8 *data, int len) { return 0; } hidraw_connect(struct hid_device * hid)48static inline int hidraw_connect(struct hid_device *hid) { return -1; } hidraw_disconnect(struct hid_device * hid)49static inline void hidraw_disconnect(struct hid_device *hid) { } 50 #endif 51 52 #endif 53