Commit e813eae3bfeba9c0bda9d1bf9fc3d081f790972f

Authored by Anatolij Gustschin
Committed by Wolfgang Denk
1 parent d8c82db482

Fix compilation error in cmd_usb.c

This patch fixes compilation error
cmd_usb.c: In function 'do_usb':
cmd_usb.c:552: error: void value not ignored as it ought to be

Signed-off-by: Anatolij Gustschin <agust@denx.de>

Showing 1 changed file with 1 additions and 1 deletions Inline Diff

1 /* 1 /*
2 * (C) Copyright 2001 2 * (C) Copyright 2001
3 * Denis Peter, MPL AG Switzerland 3 * Denis Peter, MPL AG Switzerland
4 * 4 *
5 * See file CREDITS for list of people who contributed to this 5 * See file CREDITS for list of people who contributed to this
6 * project. 6 * project.
7 * 7 *
8 * This program is free software; you can redistribute it and/or 8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License as 9 * modify it under the terms of the GNU General Public License as
10 * published by the Free Software Foundation; either version 2 of 10 * published by the Free Software Foundation; either version 2 of
11 * the License, or (at your option) any later version. 11 * the License, or (at your option) any later version.
12 * 12 *
13 * This program is distributed in the hope that it will be useful, 13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details. 16 * GNU General Public License for more details.
17 * 17 *
18 * You should have received a copy of the GNU General Public License 18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software 19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, 20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
21 * MA 02111-1307 USA 21 * MA 02111-1307 USA
22 * 22 *
23 * Note: Part of this code has been derived from linux 23 * Note: Part of this code has been derived from linux
24 * 24 *
25 */ 25 */
26 #ifndef _USB_H_ 26 #ifndef _USB_H_
27 #define _USB_H_ 27 #define _USB_H_
28 28
29 #include <usb_defs.h> 29 #include <usb_defs.h>
30 30
31 /* Everything is aribtrary */ 31 /* Everything is aribtrary */
32 #define USB_ALTSETTINGALLOC 4 32 #define USB_ALTSETTINGALLOC 4
33 #define USB_MAXALTSETTING 128 /* Hard limit */ 33 #define USB_MAXALTSETTING 128 /* Hard limit */
34 34
35 #define USB_MAX_DEVICE 32 35 #define USB_MAX_DEVICE 32
36 #define USB_MAXCONFIG 8 36 #define USB_MAXCONFIG 8
37 #define USB_MAXINTERFACES 8 37 #define USB_MAXINTERFACES 8
38 #define USB_MAXENDPOINTS 16 38 #define USB_MAXENDPOINTS 16
39 #define USB_MAXCHILDREN 8 /* This is arbitrary */ 39 #define USB_MAXCHILDREN 8 /* This is arbitrary */
40 #define USB_MAX_HUB 16 40 #define USB_MAX_HUB 16
41 41
42 #define USB_CNTL_TIMEOUT 100 /* 100ms timeout */ 42 #define USB_CNTL_TIMEOUT 100 /* 100ms timeout */
43 43
44 /* String descriptor */ 44 /* String descriptor */
45 struct usb_string_descriptor { 45 struct usb_string_descriptor {
46 unsigned char bLength; 46 unsigned char bLength;
47 unsigned char bDescriptorType; 47 unsigned char bDescriptorType;
48 unsigned short wData[1]; 48 unsigned short wData[1];
49 } __attribute__ ((packed)); 49 } __attribute__ ((packed));
50 50
51 /* device request (setup) */ 51 /* device request (setup) */
52 struct devrequest { 52 struct devrequest {
53 unsigned char requesttype; 53 unsigned char requesttype;
54 unsigned char request; 54 unsigned char request;
55 unsigned short value; 55 unsigned short value;
56 unsigned short index; 56 unsigned short index;
57 unsigned short length; 57 unsigned short length;
58 } __attribute__ ((packed)); 58 } __attribute__ ((packed));
59 59
60 60
61 /* All standard descriptors have these 2 fields in common */ 61 /* All standard descriptors have these 2 fields in common */
62 struct usb_descriptor_header { 62 struct usb_descriptor_header {
63 unsigned char bLength; 63 unsigned char bLength;
64 unsigned char bDescriptorType; 64 unsigned char bDescriptorType;
65 } __attribute__ ((packed)); 65 } __attribute__ ((packed));
66 66
67 /* Device descriptor */ 67 /* Device descriptor */
68 struct usb_device_descriptor { 68 struct usb_device_descriptor {
69 unsigned char bLength; 69 unsigned char bLength;
70 unsigned char bDescriptorType; 70 unsigned char bDescriptorType;
71 unsigned short bcdUSB; 71 unsigned short bcdUSB;
72 unsigned char bDeviceClass; 72 unsigned char bDeviceClass;
73 unsigned char bDeviceSubClass; 73 unsigned char bDeviceSubClass;
74 unsigned char bDeviceProtocol; 74 unsigned char bDeviceProtocol;
75 unsigned char bMaxPacketSize0; 75 unsigned char bMaxPacketSize0;
76 unsigned short idVendor; 76 unsigned short idVendor;
77 unsigned short idProduct; 77 unsigned short idProduct;
78 unsigned short bcdDevice; 78 unsigned short bcdDevice;
79 unsigned char iManufacturer; 79 unsigned char iManufacturer;
80 unsigned char iProduct; 80 unsigned char iProduct;
81 unsigned char iSerialNumber; 81 unsigned char iSerialNumber;
82 unsigned char bNumConfigurations; 82 unsigned char bNumConfigurations;
83 } __attribute__ ((packed)); 83 } __attribute__ ((packed));
84 84
85 85
86 /* Endpoint descriptor */ 86 /* Endpoint descriptor */
87 struct usb_endpoint_descriptor { 87 struct usb_endpoint_descriptor {
88 unsigned char bLength; 88 unsigned char bLength;
89 unsigned char bDescriptorType; 89 unsigned char bDescriptorType;
90 unsigned char bEndpointAddress; 90 unsigned char bEndpointAddress;
91 unsigned char bmAttributes; 91 unsigned char bmAttributes;
92 unsigned short wMaxPacketSize; 92 unsigned short wMaxPacketSize;
93 unsigned char bInterval; 93 unsigned char bInterval;
94 unsigned char bRefresh; 94 unsigned char bRefresh;
95 unsigned char bSynchAddress; 95 unsigned char bSynchAddress;
96 96
97 } __attribute__ ((packed)); 97 } __attribute__ ((packed));
98 /* Interface descriptor */ 98 /* Interface descriptor */
99 struct usb_interface_descriptor { 99 struct usb_interface_descriptor {
100 unsigned char bLength; 100 unsigned char bLength;
101 unsigned char bDescriptorType; 101 unsigned char bDescriptorType;
102 unsigned char bInterfaceNumber; 102 unsigned char bInterfaceNumber;
103 unsigned char bAlternateSetting; 103 unsigned char bAlternateSetting;
104 unsigned char bNumEndpoints; 104 unsigned char bNumEndpoints;
105 unsigned char bInterfaceClass; 105 unsigned char bInterfaceClass;
106 unsigned char bInterfaceSubClass; 106 unsigned char bInterfaceSubClass;
107 unsigned char bInterfaceProtocol; 107 unsigned char bInterfaceProtocol;
108 unsigned char iInterface; 108 unsigned char iInterface;
109 109
110 unsigned char no_of_ep; 110 unsigned char no_of_ep;
111 unsigned char num_altsetting; 111 unsigned char num_altsetting;
112 unsigned char act_altsetting; 112 unsigned char act_altsetting;
113 struct usb_endpoint_descriptor ep_desc[USB_MAXENDPOINTS]; 113 struct usb_endpoint_descriptor ep_desc[USB_MAXENDPOINTS];
114 } __attribute__ ((packed)); 114 } __attribute__ ((packed));
115 115
116 116
117 /* Configuration descriptor information.. */ 117 /* Configuration descriptor information.. */
118 struct usb_config_descriptor { 118 struct usb_config_descriptor {
119 unsigned char bLength; 119 unsigned char bLength;
120 unsigned char bDescriptorType; 120 unsigned char bDescriptorType;
121 unsigned short wTotalLength; 121 unsigned short wTotalLength;
122 unsigned char bNumInterfaces; 122 unsigned char bNumInterfaces;
123 unsigned char bConfigurationValue; 123 unsigned char bConfigurationValue;
124 unsigned char iConfiguration; 124 unsigned char iConfiguration;
125 unsigned char bmAttributes; 125 unsigned char bmAttributes;
126 unsigned char MaxPower; 126 unsigned char MaxPower;
127 127
128 unsigned char no_of_if; /* number of interfaces */ 128 unsigned char no_of_if; /* number of interfaces */
129 struct usb_interface_descriptor if_desc[USB_MAXINTERFACES]; 129 struct usb_interface_descriptor if_desc[USB_MAXINTERFACES];
130 } __attribute__ ((packed)); 130 } __attribute__ ((packed));
131 131
132 132
133 struct usb_device { 133 struct usb_device {
134 int devnum; /* Device number on USB bus */ 134 int devnum; /* Device number on USB bus */
135 int slow; /* Slow device? */ 135 int slow; /* Slow device? */
136 char mf[32]; /* manufacturer */ 136 char mf[32]; /* manufacturer */
137 char prod[32]; /* product */ 137 char prod[32]; /* product */
138 char serial[32]; /* serial number */ 138 char serial[32]; /* serial number */
139 139
140 int maxpacketsize; /* Maximum packet size; encoded as 0,1,2,3 = 8,16,32,64 */ 140 int maxpacketsize; /* Maximum packet size; encoded as 0,1,2,3 = 8,16,32,64 */
141 unsigned int toggle[2]; /* one bit for each endpoint ([0] = IN, [1] = OUT) */ 141 unsigned int toggle[2]; /* one bit for each endpoint ([0] = IN, [1] = OUT) */
142 unsigned int halted[2]; /* endpoint halts; one bit per endpoint # & direction; */ 142 unsigned int halted[2]; /* endpoint halts; one bit per endpoint # & direction; */
143 /* [0] = IN, [1] = OUT */ 143 /* [0] = IN, [1] = OUT */
144 int epmaxpacketin[16]; /* INput endpoint specific maximums */ 144 int epmaxpacketin[16]; /* INput endpoint specific maximums */
145 int epmaxpacketout[16]; /* OUTput endpoint specific maximums */ 145 int epmaxpacketout[16]; /* OUTput endpoint specific maximums */
146 146
147 int configno; /* selected config number */ 147 int configno; /* selected config number */
148 struct usb_device_descriptor descriptor; /* Device Descriptor */ 148 struct usb_device_descriptor descriptor; /* Device Descriptor */
149 struct usb_config_descriptor config; /* config descriptor */ 149 struct usb_config_descriptor config; /* config descriptor */
150 150
151 int have_langid; /* whether string_langid is valid yet */ 151 int have_langid; /* whether string_langid is valid yet */
152 int string_langid; /* language ID for strings */ 152 int string_langid; /* language ID for strings */
153 int (*irq_handle)(struct usb_device *dev); 153 int (*irq_handle)(struct usb_device *dev);
154 unsigned long irq_status; 154 unsigned long irq_status;
155 int irq_act_len; /* transfered bytes */ 155 int irq_act_len; /* transfered bytes */
156 void *privptr; 156 void *privptr;
157 /* 157 /*
158 * Child devices - if this is a hub device 158 * Child devices - if this is a hub device
159 * Each instance needs its own set of data structures. 159 * Each instance needs its own set of data structures.
160 */ 160 */
161 unsigned long status; 161 unsigned long status;
162 int act_len; /* transfered bytes */ 162 int act_len; /* transfered bytes */
163 int maxchild; /* Number of ports if hub */ 163 int maxchild; /* Number of ports if hub */
164 struct usb_device *parent; 164 struct usb_device *parent;
165 struct usb_device *children[USB_MAXCHILDREN]; 165 struct usb_device *children[USB_MAXCHILDREN];
166 }; 166 };
167 167
168 /********************************************************************** 168 /**********************************************************************
169 * this is how the lowlevel part communicate with the outer world 169 * this is how the lowlevel part communicate with the outer world
170 */ 170 */
171 171
172 #if defined(CONFIG_USB_UHCI) || defined(CONFIG_USB_OHCI) || \ 172 #if defined(CONFIG_USB_UHCI) || defined(CONFIG_USB_OHCI) || \
173 defined(CONFIG_USB_OHCI_NEW) || defined (CONFIG_USB_SL811HS) || \ 173 defined(CONFIG_USB_OHCI_NEW) || defined (CONFIG_USB_SL811HS) || \
174 defined(CONFIG_USB_ISP116X_HCD) 174 defined(CONFIG_USB_ISP116X_HCD)
175 175
176 int usb_lowlevel_init(void); 176 int usb_lowlevel_init(void);
177 int usb_lowlevel_stop(void); 177 int usb_lowlevel_stop(void);
178 int submit_bulk_msg(struct usb_device *dev, unsigned long pipe, void *buffer,int transfer_len); 178 int submit_bulk_msg(struct usb_device *dev, unsigned long pipe, void *buffer,int transfer_len);
179 int submit_control_msg(struct usb_device *dev, unsigned long pipe, void *buffer, 179 int submit_control_msg(struct usb_device *dev, unsigned long pipe, void *buffer,
180 int transfer_len,struct devrequest *setup); 180 int transfer_len,struct devrequest *setup);
181 int submit_int_msg(struct usb_device *dev, unsigned long pipe, void *buffer, 181 int submit_int_msg(struct usb_device *dev, unsigned long pipe, void *buffer,
182 int transfer_len, int interval); 182 int transfer_len, int interval);
183 void usb_event_poll(void); 183 void usb_event_poll(void);
184 184
185 /* Defines */ 185 /* Defines */
186 #define USB_UHCI_VEND_ID 0x8086 186 #define USB_UHCI_VEND_ID 0x8086
187 #define USB_UHCI_DEV_ID 0x7112 187 #define USB_UHCI_DEV_ID 0x7112
188 188
189 #else 189 #else
190 #error USB Lowlevel not defined 190 #error USB Lowlevel not defined
191 #endif 191 #endif
192 192
193 #ifdef CONFIG_USB_STORAGE 193 #ifdef CONFIG_USB_STORAGE
194 194
195 #define USB_MAX_STOR_DEV 5 195 #define USB_MAX_STOR_DEV 5
196 block_dev_desc_t *usb_stor_get_dev(int index); 196 block_dev_desc_t *usb_stor_get_dev(int index);
197 int usb_stor_scan(int mode); 197 int usb_stor_scan(int mode);
198 void usb_stor_info(void); 198 int usb_stor_info(void);
199 199
200 #endif 200 #endif
201 201
202 #ifdef CONFIG_USB_KEYBOARD 202 #ifdef CONFIG_USB_KEYBOARD
203 203
204 int drv_usb_kbd_init(void); 204 int drv_usb_kbd_init(void);
205 int usb_kbd_deregister(void); 205 int usb_kbd_deregister(void);
206 206
207 #endif 207 #endif
208 /* routines */ 208 /* routines */
209 int usb_init(void); /* initialize the USB Controller */ 209 int usb_init(void); /* initialize the USB Controller */
210 int usb_stop(void); /* stop the USB Controller */ 210 int usb_stop(void); /* stop the USB Controller */
211 211
212 212
213 int usb_set_protocol(struct usb_device *dev, int ifnum, int protocol); 213 int usb_set_protocol(struct usb_device *dev, int ifnum, int protocol);
214 int usb_set_idle(struct usb_device *dev, int ifnum, int duration, int report_id); 214 int usb_set_idle(struct usb_device *dev, int ifnum, int duration, int report_id);
215 struct usb_device * usb_get_dev_index(int index); 215 struct usb_device * usb_get_dev_index(int index);
216 int usb_control_msg(struct usb_device *dev, unsigned int pipe, 216 int usb_control_msg(struct usb_device *dev, unsigned int pipe,
217 unsigned char request, unsigned char requesttype, 217 unsigned char request, unsigned char requesttype,
218 unsigned short value, unsigned short index, 218 unsigned short value, unsigned short index,
219 void *data, unsigned short size, int timeout); 219 void *data, unsigned short size, int timeout);
220 int usb_bulk_msg(struct usb_device *dev, unsigned int pipe, 220 int usb_bulk_msg(struct usb_device *dev, unsigned int pipe,
221 void *data, int len, int *actual_length, int timeout); 221 void *data, int len, int *actual_length, int timeout);
222 int usb_submit_int_msg(struct usb_device *dev, unsigned long pipe, 222 int usb_submit_int_msg(struct usb_device *dev, unsigned long pipe,
223 void *buffer,int transfer_len, int interval); 223 void *buffer,int transfer_len, int interval);
224 void usb_disable_asynch(int disable); 224 void usb_disable_asynch(int disable);
225 int usb_maxpacket(struct usb_device *dev,unsigned long pipe); 225 int usb_maxpacket(struct usb_device *dev,unsigned long pipe);
226 void __inline__ wait_ms(unsigned long ms); 226 void __inline__ wait_ms(unsigned long ms);
227 int usb_get_configuration_no(struct usb_device *dev,unsigned char *buffer,int cfgno); 227 int usb_get_configuration_no(struct usb_device *dev,unsigned char *buffer,int cfgno);
228 int usb_get_report(struct usb_device *dev, int ifnum, unsigned char type, unsigned char id, void *buf, int size); 228 int usb_get_report(struct usb_device *dev, int ifnum, unsigned char type, unsigned char id, void *buf, int size);
229 int usb_get_class_descriptor(struct usb_device *dev, int ifnum, 229 int usb_get_class_descriptor(struct usb_device *dev, int ifnum,
230 unsigned char type, unsigned char id, void *buf, int size); 230 unsigned char type, unsigned char id, void *buf, int size);
231 int usb_clear_halt(struct usb_device *dev, int pipe); 231 int usb_clear_halt(struct usb_device *dev, int pipe);
232 int usb_string(struct usb_device *dev, int index, char *buf, size_t size); 232 int usb_string(struct usb_device *dev, int index, char *buf, size_t size);
233 int usb_set_interface(struct usb_device *dev, int interface, int alternate); 233 int usb_set_interface(struct usb_device *dev, int interface, int alternate);
234 234
235 /* big endian -> little endian conversion */ 235 /* big endian -> little endian conversion */
236 /* some CPUs are already little endian e.g. the ARM920T */ 236 /* some CPUs are already little endian e.g. the ARM920T */
237 #define __swap_16(x) \ 237 #define __swap_16(x) \
238 ({ unsigned short x_ = (unsigned short)x; \ 238 ({ unsigned short x_ = (unsigned short)x; \
239 (unsigned short)( \ 239 (unsigned short)( \
240 ((x_ & 0x00FFU) << 8) | ((x_ & 0xFF00U) >> 8) ); \ 240 ((x_ & 0x00FFU) << 8) | ((x_ & 0xFF00U) >> 8) ); \
241 }) 241 })
242 #define __swap_32(x) \ 242 #define __swap_32(x) \
243 ({ unsigned long x_ = (unsigned long)x; \ 243 ({ unsigned long x_ = (unsigned long)x; \
244 (unsigned long)( \ 244 (unsigned long)( \
245 ((x_ & 0x000000FFUL) << 24) | \ 245 ((x_ & 0x000000FFUL) << 24) | \
246 ((x_ & 0x0000FF00UL) << 8) | \ 246 ((x_ & 0x0000FF00UL) << 8) | \
247 ((x_ & 0x00FF0000UL) >> 8) | \ 247 ((x_ & 0x00FF0000UL) >> 8) | \
248 ((x_ & 0xFF000000UL) >> 24) ); \ 248 ((x_ & 0xFF000000UL) >> 24) ); \
249 }) 249 })
250 250
251 #ifdef LITTLEENDIAN 251 #ifdef LITTLEENDIAN
252 # define swap_16(x) (x) 252 # define swap_16(x) (x)
253 # define swap_32(x) (x) 253 # define swap_32(x) (x)
254 #else 254 #else
255 # define swap_16(x) __swap_16(x) 255 # define swap_16(x) __swap_16(x)
256 # define swap_32(x) __swap_32(x) 256 # define swap_32(x) __swap_32(x)
257 #endif /* LITTLEENDIAN */ 257 #endif /* LITTLEENDIAN */
258 258
259 /* 259 /*
260 * Calling this entity a "pipe" is glorifying it. A USB pipe 260 * Calling this entity a "pipe" is glorifying it. A USB pipe
261 * is something embarrassingly simple: it basically consists 261 * is something embarrassingly simple: it basically consists
262 * of the following information: 262 * of the following information:
263 * - device number (7 bits) 263 * - device number (7 bits)
264 * - endpoint number (4 bits) 264 * - endpoint number (4 bits)
265 * - current Data0/1 state (1 bit) 265 * - current Data0/1 state (1 bit)
266 * - direction (1 bit) 266 * - direction (1 bit)
267 * - speed (1 bit) 267 * - speed (1 bit)
268 * - max packet size (2 bits: 8, 16, 32 or 64) 268 * - max packet size (2 bits: 8, 16, 32 or 64)
269 * - pipe type (2 bits: control, interrupt, bulk, isochronous) 269 * - pipe type (2 bits: control, interrupt, bulk, isochronous)
270 * 270 *
271 * That's 18 bits. Really. Nothing more. And the USB people have 271 * That's 18 bits. Really. Nothing more. And the USB people have
272 * documented these eighteen bits as some kind of glorious 272 * documented these eighteen bits as some kind of glorious
273 * virtual data structure. 273 * virtual data structure.
274 * 274 *
275 * Let's not fall in that trap. We'll just encode it as a simple 275 * Let's not fall in that trap. We'll just encode it as a simple
276 * unsigned int. The encoding is: 276 * unsigned int. The encoding is:
277 * 277 *
278 * - max size: bits 0-1 (00 = 8, 01 = 16, 10 = 32, 11 = 64) 278 * - max size: bits 0-1 (00 = 8, 01 = 16, 10 = 32, 11 = 64)
279 * - direction: bit 7 (0 = Host-to-Device [Out], 1 = Device-to-Host [In]) 279 * - direction: bit 7 (0 = Host-to-Device [Out], 1 = Device-to-Host [In])
280 * - device: bits 8-14 280 * - device: bits 8-14
281 * - endpoint: bits 15-18 281 * - endpoint: bits 15-18
282 * - Data0/1: bit 19 282 * - Data0/1: bit 19
283 * - speed: bit 26 (0 = Full, 1 = Low Speed) 283 * - speed: bit 26 (0 = Full, 1 = Low Speed)
284 * - pipe type: bits 30-31 (00 = isochronous, 01 = interrupt, 10 = control, 11 = bulk) 284 * - pipe type: bits 30-31 (00 = isochronous, 01 = interrupt, 10 = control, 11 = bulk)
285 * 285 *
286 * Why? Because it's arbitrary, and whatever encoding we select is really 286 * Why? Because it's arbitrary, and whatever encoding we select is really
287 * up to us. This one happens to share a lot of bit positions with the UHCI 287 * up to us. This one happens to share a lot of bit positions with the UHCI
288 * specification, so that much of the uhci driver can just mask the bits 288 * specification, so that much of the uhci driver can just mask the bits
289 * appropriately. 289 * appropriately.
290 */ 290 */
291 /* Create various pipes... */ 291 /* Create various pipes... */
292 #define create_pipe(dev,endpoint) \ 292 #define create_pipe(dev,endpoint) \
293 (((dev)->devnum << 8) | (endpoint << 15) | ((dev)->slow << 26) | (dev)->maxpacketsize) 293 (((dev)->devnum << 8) | (endpoint << 15) | ((dev)->slow << 26) | (dev)->maxpacketsize)
294 #define default_pipe(dev) ((dev)->slow <<26) 294 #define default_pipe(dev) ((dev)->slow <<26)
295 295
296 #define usb_sndctrlpipe(dev,endpoint) ((PIPE_CONTROL << 30) | create_pipe(dev,endpoint)) 296 #define usb_sndctrlpipe(dev,endpoint) ((PIPE_CONTROL << 30) | create_pipe(dev,endpoint))
297 #define usb_rcvctrlpipe(dev,endpoint) ((PIPE_CONTROL << 30) | create_pipe(dev,endpoint) | USB_DIR_IN) 297 #define usb_rcvctrlpipe(dev,endpoint) ((PIPE_CONTROL << 30) | create_pipe(dev,endpoint) | USB_DIR_IN)
298 #define usb_sndisocpipe(dev,endpoint) ((PIPE_ISOCHRONOUS << 30) | create_pipe(dev,endpoint)) 298 #define usb_sndisocpipe(dev,endpoint) ((PIPE_ISOCHRONOUS << 30) | create_pipe(dev,endpoint))
299 #define usb_rcvisocpipe(dev,endpoint) ((PIPE_ISOCHRONOUS << 30) | create_pipe(dev,endpoint) | USB_DIR_IN) 299 #define usb_rcvisocpipe(dev,endpoint) ((PIPE_ISOCHRONOUS << 30) | create_pipe(dev,endpoint) | USB_DIR_IN)
300 #define usb_sndbulkpipe(dev,endpoint) ((PIPE_BULK << 30) | create_pipe(dev,endpoint)) 300 #define usb_sndbulkpipe(dev,endpoint) ((PIPE_BULK << 30) | create_pipe(dev,endpoint))
301 #define usb_rcvbulkpipe(dev,endpoint) ((PIPE_BULK << 30) | create_pipe(dev,endpoint) | USB_DIR_IN) 301 #define usb_rcvbulkpipe(dev,endpoint) ((PIPE_BULK << 30) | create_pipe(dev,endpoint) | USB_DIR_IN)
302 #define usb_sndintpipe(dev,endpoint) ((PIPE_INTERRUPT << 30) | create_pipe(dev,endpoint)) 302 #define usb_sndintpipe(dev,endpoint) ((PIPE_INTERRUPT << 30) | create_pipe(dev,endpoint))
303 #define usb_rcvintpipe(dev,endpoint) ((PIPE_INTERRUPT << 30) | create_pipe(dev,endpoint) | USB_DIR_IN) 303 #define usb_rcvintpipe(dev,endpoint) ((PIPE_INTERRUPT << 30) | create_pipe(dev,endpoint) | USB_DIR_IN)
304 #define usb_snddefctrl(dev) ((PIPE_CONTROL << 30) | default_pipe(dev)) 304 #define usb_snddefctrl(dev) ((PIPE_CONTROL << 30) | default_pipe(dev))
305 #define usb_rcvdefctrl(dev) ((PIPE_CONTROL << 30) | default_pipe(dev) | USB_DIR_IN) 305 #define usb_rcvdefctrl(dev) ((PIPE_CONTROL << 30) | default_pipe(dev) | USB_DIR_IN)
306 306
307 /* The D0/D1 toggle bits */ 307 /* The D0/D1 toggle bits */
308 #define usb_gettoggle(dev, ep, out) (((dev)->toggle[out] >> ep) & 1) 308 #define usb_gettoggle(dev, ep, out) (((dev)->toggle[out] >> ep) & 1)
309 #define usb_dotoggle(dev, ep, out) ((dev)->toggle[out] ^= (1 << ep)) 309 #define usb_dotoggle(dev, ep, out) ((dev)->toggle[out] ^= (1 << ep))
310 #define usb_settoggle(dev, ep, out, bit) ((dev)->toggle[out] = ((dev)->toggle[out] & ~(1 << ep)) | ((bit) << ep)) 310 #define usb_settoggle(dev, ep, out, bit) ((dev)->toggle[out] = ((dev)->toggle[out] & ~(1 << ep)) | ((bit) << ep))
311 311
312 /* Endpoint halt control/status */ 312 /* Endpoint halt control/status */
313 #define usb_endpoint_out(ep_dir) (((ep_dir >> 7) & 1) ^ 1) 313 #define usb_endpoint_out(ep_dir) (((ep_dir >> 7) & 1) ^ 1)
314 #define usb_endpoint_halt(dev, ep, out) ((dev)->halted[out] |= (1 << (ep))) 314 #define usb_endpoint_halt(dev, ep, out) ((dev)->halted[out] |= (1 << (ep)))
315 #define usb_endpoint_running(dev, ep, out) ((dev)->halted[out] &= ~(1 << (ep))) 315 #define usb_endpoint_running(dev, ep, out) ((dev)->halted[out] &= ~(1 << (ep)))
316 #define usb_endpoint_halted(dev, ep, out) ((dev)->halted[out] & (1 << (ep))) 316 #define usb_endpoint_halted(dev, ep, out) ((dev)->halted[out] & (1 << (ep)))
317 317
318 #define usb_packetid(pipe) (((pipe) & USB_DIR_IN) ? USB_PID_IN : USB_PID_OUT) 318 #define usb_packetid(pipe) (((pipe) & USB_DIR_IN) ? USB_PID_IN : USB_PID_OUT)
319 319
320 #define usb_pipeout(pipe) ((((pipe) >> 7) & 1) ^ 1) 320 #define usb_pipeout(pipe) ((((pipe) >> 7) & 1) ^ 1)
321 #define usb_pipein(pipe) (((pipe) >> 7) & 1) 321 #define usb_pipein(pipe) (((pipe) >> 7) & 1)
322 #define usb_pipedevice(pipe) (((pipe) >> 8) & 0x7f) 322 #define usb_pipedevice(pipe) (((pipe) >> 8) & 0x7f)
323 #define usb_pipe_endpdev(pipe) (((pipe) >> 8) & 0x7ff) 323 #define usb_pipe_endpdev(pipe) (((pipe) >> 8) & 0x7ff)
324 #define usb_pipeendpoint(pipe) (((pipe) >> 15) & 0xf) 324 #define usb_pipeendpoint(pipe) (((pipe) >> 15) & 0xf)
325 #define usb_pipedata(pipe) (((pipe) >> 19) & 1) 325 #define usb_pipedata(pipe) (((pipe) >> 19) & 1)
326 #define usb_pipeslow(pipe) (((pipe) >> 26) & 1) 326 #define usb_pipeslow(pipe) (((pipe) >> 26) & 1)
327 #define usb_pipetype(pipe) (((pipe) >> 30) & 3) 327 #define usb_pipetype(pipe) (((pipe) >> 30) & 3)
328 #define usb_pipeisoc(pipe) (usb_pipetype((pipe)) == PIPE_ISOCHRONOUS) 328 #define usb_pipeisoc(pipe) (usb_pipetype((pipe)) == PIPE_ISOCHRONOUS)
329 #define usb_pipeint(pipe) (usb_pipetype((pipe)) == PIPE_INTERRUPT) 329 #define usb_pipeint(pipe) (usb_pipetype((pipe)) == PIPE_INTERRUPT)
330 #define usb_pipecontrol(pipe) (usb_pipetype((pipe)) == PIPE_CONTROL) 330 #define usb_pipecontrol(pipe) (usb_pipetype((pipe)) == PIPE_CONTROL)
331 #define usb_pipebulk(pipe) (usb_pipetype((pipe)) == PIPE_BULK) 331 #define usb_pipebulk(pipe) (usb_pipetype((pipe)) == PIPE_BULK)
332 332
333 333
334 /************************************************************************* 334 /*************************************************************************
335 * Hub Stuff 335 * Hub Stuff
336 */ 336 */
337 struct usb_port_status { 337 struct usb_port_status {
338 unsigned short wPortStatus; 338 unsigned short wPortStatus;
339 unsigned short wPortChange; 339 unsigned short wPortChange;
340 } __attribute__ ((packed)); 340 } __attribute__ ((packed));
341 341
342 struct usb_hub_status { 342 struct usb_hub_status {
343 unsigned short wHubStatus; 343 unsigned short wHubStatus;
344 unsigned short wHubChange; 344 unsigned short wHubChange;
345 } __attribute__ ((packed)); 345 } __attribute__ ((packed));
346 346
347 347
348 /* Hub descriptor */ 348 /* Hub descriptor */
349 struct usb_hub_descriptor { 349 struct usb_hub_descriptor {
350 unsigned char bLength; 350 unsigned char bLength;
351 unsigned char bDescriptorType; 351 unsigned char bDescriptorType;
352 unsigned char bNbrPorts; 352 unsigned char bNbrPorts;
353 unsigned short wHubCharacteristics; 353 unsigned short wHubCharacteristics;
354 unsigned char bPwrOn2PwrGood; 354 unsigned char bPwrOn2PwrGood;
355 unsigned char bHubContrCurrent; 355 unsigned char bHubContrCurrent;
356 unsigned char DeviceRemovable[(USB_MAXCHILDREN+1+7)/8]; 356 unsigned char DeviceRemovable[(USB_MAXCHILDREN+1+7)/8];
357 unsigned char PortPowerCtrlMask[(USB_MAXCHILDREN+1+7)/8]; 357 unsigned char PortPowerCtrlMask[(USB_MAXCHILDREN+1+7)/8];
358 /* DeviceRemovable and PortPwrCtrlMask want to be variable-length 358 /* DeviceRemovable and PortPwrCtrlMask want to be variable-length
359 bitmaps that hold max 255 entries. (bit0 is ignored) */ 359 bitmaps that hold max 255 entries. (bit0 is ignored) */
360 } __attribute__ ((packed)); 360 } __attribute__ ((packed));
361 361
362 362
363 struct usb_hub_device { 363 struct usb_hub_device {
364 struct usb_device *pusb_dev; 364 struct usb_device *pusb_dev;
365 struct usb_hub_descriptor desc; 365 struct usb_hub_descriptor desc;
366 }; 366 };
367 367
368 #endif /*_USB_H_ */ 368 #endif /*_USB_H_ */
369 369