1a32dd67dSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */ 286166b7bSJiri Kosina /* 386166b7bSJiri Kosina * Copyright (c) 2007 Jiri Kosina 486166b7bSJiri Kosina */ 5607ca46eSDavid Howells #ifndef _HIDRAW_H 6607ca46eSDavid Howells #define _HIDRAW_H 786166b7bSJiri Kosina 8607ca46eSDavid Howells #include <uapi/linux/hidraw.h> 957d292bdSJiri Kosina 1086166b7bSJiri Kosina 1186166b7bSJiri Kosina struct hidraw { 1286166b7bSJiri Kosina unsigned int minor; 1386166b7bSJiri Kosina int exist; 1486166b7bSJiri Kosina int open; 1586166b7bSJiri Kosina wait_queue_head_t wait; 1686166b7bSJiri Kosina struct hid_device *hid; 1786166b7bSJiri Kosina struct device *dev; 18277fe44dSYonghua Zheng spinlock_t list_lock; 1986166b7bSJiri Kosina struct list_head list; 2086166b7bSJiri Kosina }; 2186166b7bSJiri Kosina 2286166b7bSJiri Kosina struct hidraw_report { 2386166b7bSJiri Kosina __u8 *value; 2486166b7bSJiri Kosina int len; 2586166b7bSJiri Kosina }; 2686166b7bSJiri Kosina 2786166b7bSJiri Kosina struct hidraw_list { 2886166b7bSJiri Kosina struct hidraw_report buffer[HIDRAW_BUFFER_SIZE]; 2986166b7bSJiri Kosina int head; 3086166b7bSJiri Kosina int tail; 3186166b7bSJiri Kosina struct fasync_struct *fasync; 3286166b7bSJiri Kosina struct hidraw *hidraw; 3386166b7bSJiri Kosina struct list_head node; 3486166b7bSJiri Kosina struct mutex read_mutex; 3586166b7bSJiri Kosina }; 3686166b7bSJiri Kosina 3786166b7bSJiri Kosina #ifdef CONFIG_HIDRAW 3886166b7bSJiri Kosina int hidraw_init(void); 3986166b7bSJiri Kosina void hidraw_exit(void); 40b6787242SJiri Kosina int hidraw_report_event(struct hid_device *, u8 *, int); 4186166b7bSJiri Kosina int hidraw_connect(struct hid_device *); 4286166b7bSJiri Kosina void hidraw_disconnect(struct hid_device *); 4386166b7bSJiri Kosina #else hidraw_init(void)4486166b7bSJiri Kosinastatic inline int hidraw_init(void) { return 0; } hidraw_exit(void)4586166b7bSJiri Kosinastatic inline void hidraw_exit(void) { } hidraw_report_event(struct hid_device * hid,u8 * data,int len)46d6d7c873SJiri Kosinastatic inline int hidraw_report_event(struct hid_device *hid, u8 *data, int len) { return 0; } hidraw_connect(struct hid_device * hid)4786166b7bSJiri Kosinastatic inline int hidraw_connect(struct hid_device *hid) { return -1; } hidraw_disconnect(struct hid_device * hid)4886166b7bSJiri Kosinastatic inline void hidraw_disconnect(struct hid_device *hid) { } 4986166b7bSJiri Kosina #endif 5086166b7bSJiri Kosina 5186166b7bSJiri Kosina #endif 52