xref: /rk3399_rockchip-uboot/include/g_dnl.h (revision fe4ba689a0cb2bb2ceafb88556a57bd80814b648)
11d4a0b6cSLukasz Majewski /*
21d4a0b6cSLukasz Majewski  *  Copyright (C) 2012 Samsung Electronics
31d4a0b6cSLukasz Majewski  *  Lukasz Majewski <l.majewski@samsung.com>
41d4a0b6cSLukasz Majewski  *
51a459660SWolfgang Denk  * SPDX-License-Identifier:	GPL-2.0+
61d4a0b6cSLukasz Majewski  */
71d4a0b6cSLukasz Majewski 
81d4a0b6cSLukasz Majewski #ifndef __G_DOWNLOAD_H_
91d4a0b6cSLukasz Majewski #define __G_DOWNLOAD_H_
101d4a0b6cSLukasz Majewski 
111d4a0b6cSLukasz Majewski #include <linux/usb/ch9.h>
121d4a0b6cSLukasz Majewski #include <linux/usb/gadget.h>
13c4d0e856SMateusz Zalega #include <linux/usb/composite.h>
14c4d0e856SMateusz Zalega #include <linker_lists.h>
15c4d0e856SMateusz Zalega 
16c4d0e856SMateusz Zalega /*
17c4d0e856SMateusz Zalega  * @usb_fname: unescaped USB function name
18c4d0e856SMateusz Zalega  * @callback_ptr: bind callback, one per function name
19c4d0e856SMateusz Zalega  */
20c4d0e856SMateusz Zalega #define DECLARE_GADGET_BIND_CALLBACK(usb_fname, callback_ptr) \
21c4d0e856SMateusz Zalega 	ll_entry_declare(struct g_dnl_bind_callback, \
22c4d0e856SMateusz Zalega 			__usb_function_name_##usb_fname, \
23c4d0e856SMateusz Zalega 			g_dnl_bind_callbacks) = { \
24c4d0e856SMateusz Zalega 				.usb_function_name = #usb_fname, \
25c4d0e856SMateusz Zalega 				.fptr = callback_ptr \
26c4d0e856SMateusz Zalega 			}
27c4d0e856SMateusz Zalega 
28c4d0e856SMateusz Zalega typedef int (*g_dnl_bind_callback_f)(struct usb_configuration *);
29c4d0e856SMateusz Zalega 
30c4d0e856SMateusz Zalega /* used in Gadget downloader callback linker list */
31c4d0e856SMateusz Zalega struct g_dnl_bind_callback {
32c4d0e856SMateusz Zalega 	const char *usb_function_name;
33c4d0e856SMateusz Zalega 	g_dnl_bind_callback_f fptr;
34c4d0e856SMateusz Zalega };
35c4d0e856SMateusz Zalega 
36d6eae7b0SLukasz Majewski int g_dnl_bind_fixup(struct usb_device_descriptor *, const char *);
3705a950cfSSteve Rae int g_dnl_get_board_bcd_device_number(int gcnum);
3875504e95SMateusz Zalega int g_dnl_board_usb_cable_connected(void);
391d4a0b6cSLukasz Majewski int g_dnl_register(const char *s);
401d4a0b6cSLukasz Majewski void g_dnl_unregister(void);
41ec9002e4SHeiko Schocher void g_dnl_set_serialnumber(char *);
421d4a0b6cSLukasz Majewski 
43fe1b28c9SRob Herring bool g_dnl_detach(void);
44fe1b28c9SRob Herring void g_dnl_trigger_detach(void);
45fe1b28c9SRob Herring void g_dnl_clear_detach(void);
46*05341a87SB, Ravi int run_usb_dnl_gadget(int usbctrl_index, char *usb_dnl_gadget);
47fe1b28c9SRob Herring 
481d4a0b6cSLukasz Majewski #endif /* __G_DOWNLOAD_H_ */
49