Blame view

include/g_dnl.h 1.29 KB
d41ce506b   Eric Lee   Initial Release, ...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
  /*
   *  Copyright (C) 2012 Samsung Electronics
   *  Lukasz Majewski <l.majewski@samsung.com>
   *
   * SPDX-License-Identifier:	GPL-2.0+
   */
  
  #ifndef __G_DOWNLOAD_H_
  #define __G_DOWNLOAD_H_
  
  #include <linux/usb/ch9.h>
  #include <linux/usb/gadget.h>
  #include <linux/usb/composite.h>
  #include <linker_lists.h>
  
  /*
   * @usb_fname: unescaped USB function name
   * @callback_ptr: bind callback, one per function name
   */
  #define DECLARE_GADGET_BIND_CALLBACK(usb_fname, callback_ptr) \
  	ll_entry_declare(struct g_dnl_bind_callback, \
  			__usb_function_name_##usb_fname, \
  			g_dnl_bind_callbacks) = { \
  				.usb_function_name = #usb_fname, \
  				.fptr = callback_ptr \
  			}
  
  typedef int (*g_dnl_bind_callback_f)(struct usb_configuration *);
  
  /* used in Gadget downloader callback linker list */
  struct g_dnl_bind_callback {
  	const char *usb_function_name;
  	g_dnl_bind_callback_f fptr;
  };
  
  int g_dnl_bind_fixup(struct usb_device_descriptor *, const char *);
  int g_dnl_get_board_bcd_device_number(int gcnum);
  int g_dnl_board_usb_cable_connected(void);
  int g_dnl_register(const char *s);
  void g_dnl_unregister(void);
  void g_dnl_set_serialnumber(char *);
  
  bool g_dnl_detach(void);
  void g_dnl_trigger_detach(void);
  void g_dnl_clear_detach(void);
  int run_usb_dnl_gadget(int usbctrl_index, char *usb_dnl_gadget);
  
  #endif /* __G_DOWNLOAD_H_ */