Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
drivers
staging
ccg
gadget_chips.h
Go to the documentation of this file.
1
/*
2
* USB device controllers have lots of quirks. Use these macros in
3
* gadget drivers or other code that needs to deal with them, and which
4
* autoconfigures instead of using early binding to the hardware.
5
*
6
* This SHOULD eventually work like the ARM mach_is_*() stuff, driven by
7
* some config file that gets updated as new hardware is supported.
8
* (And avoiding all runtime comparisons in typical one-choice configs!)
9
*
10
* NOTE: some of these controller drivers may not be available yet.
11
* Some are available on 2.4 kernels; several are available, but not
12
* yet pushed in the 2.6 mainline tree.
13
*/
14
15
#ifndef __GADGET_CHIPS_H
16
#define __GADGET_CHIPS_H
17
18
/*
19
* NOTICE: the entries below are alphabetical and should be kept
20
* that way.
21
*
22
* Always be sure to add new entries to the correct position or
23
* accept the bashing later.
24
*
25
* If you have forgotten the alphabetical order let VIM/EMACS
26
* do that for you.
27
*/
28
#define gadget_is_amd5536udc(g) (!strcmp("amd5536udc", (g)->name))
29
#define gadget_is_at91(g) (!strcmp("at91_udc", (g)->name))
30
#define gadget_is_atmel_usba(g) (!strcmp("atmel_usba_udc", (g)->name))
31
#define gadget_is_bcm63xx(g) (!strcmp("bcm63xx_udc", (g)->name))
32
#define gadget_is_ci13xxx_msm(g) (!strcmp("ci13xxx_msm", (g)->name))
33
#define gadget_is_ci13xxx_pci(g) (!strcmp("ci13xxx_pci", (g)->name))
34
#define gadget_is_dummy(g) (!strcmp("dummy_udc", (g)->name))
35
#define gadget_is_dwc3(g) (!strcmp("dwc3-gadget", (g)->name))
36
#define gadget_is_fsl_qe(g) (!strcmp("fsl_qe_udc", (g)->name))
37
#define gadget_is_fsl_usb2(g) (!strcmp("fsl-usb2-udc", (g)->name))
38
#define gadget_is_goku(g) (!strcmp("goku_udc", (g)->name))
39
#define gadget_is_imx(g) (!strcmp("imx_udc", (g)->name))
40
#define gadget_is_langwell(g) (!strcmp("langwell_udc", (g)->name))
41
#define gadget_is_lpc32xx(g) (!strcmp("lpc32xx_udc", (g)->name))
42
#define gadget_is_m66592(g) (!strcmp("m66592_udc", (g)->name))
43
#define gadget_is_musbhdrc(g) (!strcmp("musb-hdrc", (g)->name))
44
#define gadget_is_net2272(g) (!strcmp("net2272", (g)->name))
45
#define gadget_is_net2280(g) (!strcmp("net2280", (g)->name))
46
#define gadget_is_omap(g) (!strcmp("omap_udc", (g)->name))
47
#define gadget_is_pch(g) (!strcmp("pch_udc", (g)->name))
48
#define gadget_is_pxa(g) (!strcmp("pxa25x_udc", (g)->name))
49
#define gadget_is_pxa27x(g) (!strcmp("pxa27x_udc", (g)->name))
50
#define gadget_is_r8a66597(g) (!strcmp("r8a66597_udc", (g)->name))
51
#define gadget_is_renesas_usbhs(g) (!strcmp("renesas_usbhs_udc", (g)->name))
52
#define gadget_is_s3c2410(g) (!strcmp("s3c2410_udc", (g)->name))
53
#define gadget_is_s3c_hsotg(g) (!strcmp("s3c-hsotg", (g)->name))
54
#define gadget_is_s3c_hsudc(g) (!strcmp("s3c-hsudc", (g)->name))
55
71
static
inline
int
usb_gadget_controller_number(
struct
usb_gadget
*gadget)
72
{
73
if
(
gadget_is_net2280
(gadget))
74
return
0x01;
75
else
if
(
gadget_is_dummy
(gadget))
76
return
0x02;
77
else
if
(
gadget_is_pxa
(gadget))
78
return
0x03;
79
else
if
(
gadget_is_goku
(gadget))
80
return
0x06;
81
else
if
(
gadget_is_omap
(gadget))
82
return
0x08;
83
else
if
(
gadget_is_pxa27x
(gadget))
84
return
0x11;
85
else
if
(
gadget_is_s3c2410
(gadget))
86
return
0x12;
87
else
if
(
gadget_is_at91
(gadget))
88
return
0x13;
89
else
if
(
gadget_is_imx
(gadget))
90
return
0x14;
91
else
if
(
gadget_is_musbhdrc
(gadget))
92
return
0x16;
93
else
if
(
gadget_is_atmel_usba
(gadget))
94
return
0x18;
95
else
if
(
gadget_is_fsl_usb2
(gadget))
96
return
0x19;
97
else
if
(
gadget_is_amd5536udc
(gadget))
98
return
0x20;
99
else
if
(
gadget_is_m66592
(gadget))
100
return
0x21;
101
else
if
(
gadget_is_fsl_qe
(gadget))
102
return
0x22;
103
else
if
(
gadget_is_ci13xxx_pci
(gadget))
104
return
0x23;
105
else
if
(
gadget_is_langwell
(gadget))
106
return
0x24;
107
else
if
(
gadget_is_r8a66597
(gadget))
108
return
0x25;
109
else
if
(
gadget_is_s3c_hsotg
(gadget))
110
return
0x26;
111
else
if
(
gadget_is_pch
(gadget))
112
return
0x27;
113
else
if
(
gadget_is_ci13xxx_msm
(gadget))
114
return
0x28;
115
else
if
(
gadget_is_renesas_usbhs
(gadget))
116
return
0x29;
117
else
if
(
gadget_is_s3c_hsudc
(gadget))
118
return
0x30;
119
else
if
(
gadget_is_net2272
(gadget))
120
return
0x31;
121
else
if
(
gadget_is_dwc3
(gadget))
122
return
0x32;
123
else
if
(
gadget_is_lpc32xx
(gadget))
124
return
0x33;
125
else
if
(
gadget_is_bcm63xx
(gadget))
126
return
0x34;
127
128
return
-
ENOENT
;
129
}
130
131
136
static
inline
bool
gadget_supports_altsettings(
struct
usb_gadget
*gadget)
137
{
138
/* PXA 21x/25x/26x has no altsettings at all */
139
if
(
gadget_is_pxa
(gadget))
140
return
false
;
141
142
/* PXA 27x and 3xx have *broken* altsetting support */
143
if
(
gadget_is_pxa27x
(gadget))
144
return
false
;
145
146
/* Everything else is *presumably* fine ... */
147
return
true
;
148
}
149
150
#endif
/* __GADGET_CHIPS_H */
Generated on Thu Jan 10 2013 14:26:13 for Linux Kernel by
1.8.2