xref: /openbmc/linux/drivers/usb/gadget/function/u_hid.h (revision 762f99f4f3cb41a775b5157dd761217beba65873)
12e759738SNishad Kamdar /* SPDX-License-Identifier: GPL-2.0 */
2cb382536SAndrzej Pietrasiewicz /*
3cb382536SAndrzej Pietrasiewicz  * u_hid.h
4cb382536SAndrzej Pietrasiewicz  *
5cb382536SAndrzej Pietrasiewicz  * Utility definitions for the hid function
6cb382536SAndrzej Pietrasiewicz  *
7cb382536SAndrzej Pietrasiewicz  * Copyright (c) 2014 Samsung Electronics Co., Ltd.
8cb382536SAndrzej Pietrasiewicz  *		http://www.samsung.com
9cb382536SAndrzej Pietrasiewicz  *
101b4a3b51SAndrzej Pietrasiewicz  * Author: Andrzej Pietrasiewicz <andrzejtp2010@gmail.com>
11cb382536SAndrzej Pietrasiewicz  */
12cb382536SAndrzej Pietrasiewicz 
13cb382536SAndrzej Pietrasiewicz #ifndef U_HID_H
14cb382536SAndrzej Pietrasiewicz #define U_HID_H
15cb382536SAndrzej Pietrasiewicz 
16cb382536SAndrzej Pietrasiewicz #include <linux/usb/composite.h>
17cb382536SAndrzej Pietrasiewicz 
18cb382536SAndrzej Pietrasiewicz struct f_hid_opts {
19cb382536SAndrzej Pietrasiewicz 	struct usb_function_instance	func_inst;
20cb382536SAndrzej Pietrasiewicz 	int				minor;
21cb382536SAndrzej Pietrasiewicz 	unsigned char			subclass;
22cb382536SAndrzej Pietrasiewicz 	unsigned char			protocol;
23*d7428bc2SMaxim Devaev 	unsigned char			no_out_endpoint;
24cb382536SAndrzej Pietrasiewicz 	unsigned short			report_length;
25cb382536SAndrzej Pietrasiewicz 	unsigned short			report_desc_length;
26cb382536SAndrzej Pietrasiewicz 	unsigned char			*report_desc;
27cb382536SAndrzej Pietrasiewicz 	bool				report_desc_alloc;
2821a9476aSAndrzej Pietrasiewicz 
2921a9476aSAndrzej Pietrasiewicz 	/*
3021a9476aSAndrzej Pietrasiewicz 	 * Protect the data form concurrent access by read/write
3121a9476aSAndrzej Pietrasiewicz 	 * and create symlink/remove symlink.
3221a9476aSAndrzej Pietrasiewicz 	 */
3321a9476aSAndrzej Pietrasiewicz 	struct mutex			lock;
3421a9476aSAndrzej Pietrasiewicz 	int				refcnt;
35cb382536SAndrzej Pietrasiewicz };
36cb382536SAndrzej Pietrasiewicz 
37cb382536SAndrzej Pietrasiewicz int ghid_setup(struct usb_gadget *g, int count);
38cb382536SAndrzej Pietrasiewicz void ghid_cleanup(void);
39cb382536SAndrzej Pietrasiewicz 
40cb382536SAndrzej Pietrasiewicz #endif /* U_HID_H */
41