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