1 //<MStar Software>
2 //******************************************************************************
3 // MStar Software
4 // Copyright (c) 2010 - 2012 MStar Semiconductor, Inc. All rights reserved.
5 // All software, firmware and related documentation herein ("MStar Software") are
6 // intellectual property of MStar Semiconductor, Inc. ("MStar") and protected by
7 // law, including, but not limited to, copyright law and international treaties.
8 // Any use, modification, reproduction, retransmission, or republication of all
9 // or part of MStar Software is expressly prohibited, unless prior written
10 // permission has been granted by MStar.
11 //
12 // By accessing, browsing and/or using MStar Software, you acknowledge that you
13 // have read, understood, and agree, to be bound by below terms ("Terms") and to
14 // comply with all applicable laws and regulations:
15 //
16 // 1. MStar shall retain any and all right, ownership and interest to MStar
17 // Software and any modification/derivatives thereof.
18 // No right, ownership, or interest to MStar Software and any
19 // modification/derivatives thereof is transferred to you under Terms.
20 //
21 // 2. You understand that MStar Software might include, incorporate or be
22 // supplied together with third party`s software and the use of MStar
23 // Software may require additional licenses from third parties.
24 // Therefore, you hereby agree it is your sole responsibility to separately
25 // obtain any and all third party right and license necessary for your use of
26 // such third party`s software.
27 //
28 // 3. MStar Software and any modification/derivatives thereof shall be deemed as
29 // MStar`s confidential information and you agree to keep MStar`s
30 // confidential information in strictest confidence and not disclose to any
31 // third party.
32 //
33 // 4. MStar Software is provided on an "AS IS" basis without warranties of any
34 // kind. Any warranties are hereby expressly disclaimed by MStar, including
35 // without limitation, any warranties of merchantability, non-infringement of
36 // intellectual property rights, fitness for a particular purpose, error free
37 // and in conformity with any international standard. You agree to waive any
38 // claim against MStar for any loss, damage, cost or expense that you may
39 // incur related to your use of MStar Software.
40 // In no event shall MStar be liable for any direct, indirect, incidental or
41 // consequential damages, including without limitation, lost of profit or
42 // revenues, lost or damage of data, and unauthorized system use.
43 // You agree that this Section 4 shall still apply without being affected
44 // even if MStar Software has been modified by MStar in accordance with your
45 // request or instruction for your use, except otherwise agreed by both
46 // parties in writing.
47 //
48 // 5. If requested, MStar may from time to time provide technical supports or
49 // services in relation with MStar Software to you for your use of
50 // MStar Software in conjunction with your or your customer`s product
51 // ("Services").
52 // You understand and agree that, except otherwise agreed by both parties in
53 // writing, Services are provided on an "AS IS" basis and the warranty
54 // disclaimer set forth in Section 4 above shall apply.
55 //
56 // 6. Nothing contained herein shall be construed as by implication, estoppels
57 // or otherwise:
58 // (a) conferring any license or right to use MStar name, trademark, service
59 // mark, symbol or any other identification;
60 // (b) obligating MStar or any of its affiliates to furnish any person,
61 // including without limitation, you and your customers, any assistance
62 // of any kind whatsoever, or any information; or
63 // (c) conferring any license or right under any intellectual property right.
64 //
65 // 7. These terms shall be governed by and construed in accordance with the laws
66 // of Taiwan, R.O.C., excluding its conflict of law rules.
67 // Any and all dispute arising out hereof or related hereto shall be finally
68 // settled by arbitration referred to the Chinese Arbitration Association,
69 // Taipei in accordance with the ROC Arbitration Law and the Arbitration
70 // Rules of the Association by three (3) arbitrators appointed in accordance
71 // with the said Rules.
72 // The place of arbitration shall be in Taipei, Taiwan and the language shall
73 // be English.
74 // The arbitration award shall be final and binding to both parties.
75 //
76 //******************************************************************************
77 //<MStar Software>
78
79
80 #include <MsCommon.h>
81
82 #ifdef CONFIG_USB_DEBUG
83 #define DEBUG
84 #else
85 #undef DEBUG
86 #endif
87
88 #include "include/drvConfig.h"
89 #include "include/drvCompiler.h"
90 #include "include/drvTypes.h"
91 #include "include/drvIO.h"
92 #include "include/drvErrno.h"
93 #include "include/drvPorts.h"
94 #include "include/drvPCIMEM.h"
95 #include "include/drvTimer.h"
96 #include "include/drvList.h"
97 #include "include/drvKernel.h"
98 #include "include/drvBitops.h"
99 #include "include/drvCPE_AMBA.h"
100
101
102
103 // USB related header files
104 #include "include/drvUSB.h"
105 #include "drvHCD.h"
106 #include "drvHUB.h"
107 #include "drvEHCI.h"
108
109 #if 1
110 extern void USBCriticalSectionIn(MS_U8 Port);
111 extern void USBCriticalSectionOut(MS_U8 Port);
112 extern void hub_add_event_Port2(struct list_head *newent);
113 extern MS_BOOL Usb_host_Init_EX(struct usb_hcd *hcd);
114 extern struct cpe_dev cpe_ehci_dev;
115 extern struct cpe_dev cpe_ehci_dev_Port2;
116
117 //static spinlock_t hub_event_lock = SPIN_LOCK_UNLOCKED;
118 //static DECLARE_MUTEX(usb_address0_sem);
119 U8 g_CurntPort; // used by CDC, HID
120
121 /*static*/
122 LIST_HEAD(hub_event_list);
123 static LIST_HEAD(hub_list);
124
125 //static DECLARE_WAIT_QUEUE_HEAD(khubd_wait);
126 //static pid_t khubd_pid = 0; /* PID of khubd */
127 //static DECLARE_COMPLETION(khubd_exited);
128 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
129 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
130 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
131 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
132 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
133 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
134 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
135 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
136 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
137 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
138 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
139 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
140 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
141 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
142 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
143 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
144 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
145 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
146 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
147 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
148 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
149 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
150 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
151 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
152 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
153 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
154 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
155 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
156 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
157 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
158 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
159 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
160 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
161 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
162 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
163 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
164 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
165 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
166 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
167 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
168 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
169 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
170 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
171 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
172 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
173 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
174 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
175 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
176 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
177 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
178 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
179 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
180 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
181 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
182 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
183 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
184 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
185 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
186 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
187 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
188 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
189 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
190 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
191 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
192 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
193 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
194 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
195 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
196 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
197 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
198 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
199 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
200 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
201 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
202 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
203 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
204 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
205 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
206 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
207 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
208 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
209 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
210 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
211 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
212 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
213 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
214 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
215 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
216 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
217 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
218 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
219 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
220 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
221 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
222 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
223 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
224
portspeed(int portstatus)225 static __inline__ char *portspeed (int portstatus)
226 {
227 if (portstatus & (1 << USB_PORT_FEAT_HIGHSPEED))
228 return "480 Mb/s";
229 else if (portstatus & (1 << USB_PORT_FEAT_LOWSPEED))
230 return "1.5 Mb/s";
231 else
232 return "12 Mb/s";
233 }
234 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
235 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
236 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
237 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
238 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
239 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
240 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
241 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
242 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
243 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
244 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
245 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
246 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
247 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
248 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
249 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
250 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
251 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
252 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
253 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
254 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
255 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
256 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
257 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
258 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
259 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
260 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
261 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
262 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
263 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
264 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
265 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
266 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
267 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
268 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
269 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
270 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
271 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
272 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
273 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
274 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
275 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
276 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
277 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
278 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
279 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
280 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
281 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
282 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
283 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
284 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
285 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
286 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
287 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
288 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
289 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
290 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
291 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
292 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
293 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
294 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
295 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
296 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
297 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
298 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
299 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
300 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
301 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
302 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
303 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
304 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
305 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
306 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
307 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
308 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
309 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
310 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
311 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
312 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
313 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
314 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
315 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
316 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
317 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
318 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
319 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
320 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
321 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
322 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
323 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
324 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
325 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
326 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
327 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
328 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
329 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
330
hubdev(struct usb_device * dev)331 static __inline__ struct device_s *hubdev (struct usb_device *dev)
332 {
333 return &dev->actconfig->interface[0]->dev;
334 }
335 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
336 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
337 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
338 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
339 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
340 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
341 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
342 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
343 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
344 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
345 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
346 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
347 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
348 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
349 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
350 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
351 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
352 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
353 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
354 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
355 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
356 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
357 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
358 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
359 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
360 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
361 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
362 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
363 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
364 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
365 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
366 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
367 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
368 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
369 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
370 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
371 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
372 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
373 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
374 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
375 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
376 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
377 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
378 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
379 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
380 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
381 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
382 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
383 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
384 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
385 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
386 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
387 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
388 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
389 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
390 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
391 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
392 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
393 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
394 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
395 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
396 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
397 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
398 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
399 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
400 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
401 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
402 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
403 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
404 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
405 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
406 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
407 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
408 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
409 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
410 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
411 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
412 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
413 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
414 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
415 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
416 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
417 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
418 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
419 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
420 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
421 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
422 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
423 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
424 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
425 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
426 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
427 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
428 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
429 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
430 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
431
get_hub_descriptor(struct usb_device * dev,void * data,int size)432 static int get_hub_descriptor(struct usb_device *dev, void *data, int size)
433 {
434 return usb_control_msg(dev, usb_rcvctrlpipe(dev, 0),
435 USB_REQ_GET_DESCRIPTOR, USB_DIR_IN | USB_RT_HUB,
436 USB_DT_HUB << 8, 0, data, size, HZ * USB_CTRL_GET_TIMEOUT);
437 }
438 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
439 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
440 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
441 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
442 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
443 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
444 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
445 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
446 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
447 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
448 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
449 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
450 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
451 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
452 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
453 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
454 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
455 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
456 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
457 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
458 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
459 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
460 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
461 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
462 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
463 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
464 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
465 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
466 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
467 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
468 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
469 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
470 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
471 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
472 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
473 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
474 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
475 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
476 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
477 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
478 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
479 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
480 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
481 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
482 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
483 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
484 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
485 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
486 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
487 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
488 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
489 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
490 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
491 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
492 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
493 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
494 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
495 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
496 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
497 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
498 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
499 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
500 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
501
clear_hub_feature(struct usb_device * dev,int feature)502 int clear_hub_feature(struct usb_device *dev, int feature)
503 {
504 return usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
505 USB_REQ_CLEAR_FEATURE, USB_RT_HUB, feature, 0, NULL, 0, HZ);
506 }
507 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
508 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
509 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
510 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
511 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
512 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
513 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
514 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
515 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
516 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
517 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
518 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
519 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
520 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
521 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
522 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
523 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
524 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
525 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
526 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
527 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
528 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
529 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
530 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
531 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
532 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
533 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
534 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
535 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
536 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
537 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
538 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
539 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
540 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
541 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
542 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
543 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
544 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
545 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
546 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
547 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
548 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
549 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
550 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
551 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
552 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
553 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
554
clear_port_feature(struct usb_device * dev,int port,int feature)555 int clear_port_feature(struct usb_device *dev, int port, int feature)
556 {
557 return usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
558 USB_REQ_CLEAR_FEATURE, USB_RT_PORT, feature, port, NULL, 0, HZ);
559 }
560 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
561 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
562 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
563 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
564 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
565 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
566 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
567 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
568 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
569 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
570 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
571 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
572 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
573 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
574 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
575 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
576 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
577 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
578 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
579 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
580 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
581 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
582 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
583 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
584 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
585 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
586 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
587 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
588 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
589 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
590 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
591 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
592 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
593 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
594 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
595 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
596 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
597 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
598 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
599 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
600 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
601 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
602 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
603 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
604 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
605 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
606 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
607
set_port_feature(struct usb_device * dev,int port,int feature)608 static int set_port_feature(struct usb_device *dev, int port, int feature)
609 {
610 return usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
611 USB_REQ_SET_FEATURE, USB_RT_PORT, feature, port, NULL, 0, HZ);
612 }
613 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
614 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
615 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
616 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
617 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
618 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
619 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
620 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
621 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
622 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
623 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
624 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
625 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
626 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
627 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
628 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
629 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
630 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
631 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
632 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
633 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
634 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
635 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
636 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
637 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
638 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
639 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
640 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
641 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
642 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
643 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
644 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
645 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
646 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
647 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
648 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
649 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
650 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
651 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
652 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
653 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
654 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
655 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
656 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
657 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
658 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
659 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
660 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
661 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
662
663 /*
664 * USB 2.0 spec Section 11.24.2.6
665 */
get_hub_status(struct usb_device * dev,struct usb_hub_status * data)666 static int get_hub_status(struct usb_device *dev,
667 struct usb_hub_status *data)
668 {
669 return usb_control_msg(dev, usb_rcvctrlpipe(dev, 0),
670 USB_REQ_GET_STATUS, USB_DIR_IN | USB_RT_HUB, 0, 0,
671 data, sizeof(*data), HZ * USB_CTRL_GET_TIMEOUT);
672 }
673 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
674 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
675 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
676 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
677 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
678 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
679 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
680 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
681 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
682 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
683 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
684 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
685 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
686 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
687 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
688 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
689 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
690 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
691 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
692 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
693 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
694 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
695 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
696 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
697 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
698 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
699 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
700 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
701 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
702 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
703 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
704 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
705 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
706 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
707 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
708 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
709 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
710 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
711 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
712 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
713 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
714 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
715 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
716 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
717 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
718 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
719 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
720 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
721 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
722 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
723 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
724 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
725 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
726 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
727 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
728 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
729 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
730 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
731 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
732 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
733
get_port_status(struct usb_device * dev,int port,struct usb_port_status * data)734 static int get_port_status(struct usb_device *dev, int port,
735 struct usb_port_status *data)
736 {
737 return usb_control_msg(dev, usb_rcvctrlpipe(dev, 0),
738 USB_REQ_GET_STATUS, USB_DIR_IN | USB_RT_PORT, 0, port,
739 data, sizeof(*data), HZ * USB_CTRL_GET_TIMEOUT);
740 }
741 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
742 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
743 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
744 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
745 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
746 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
747 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
748 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
749 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
750 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
751 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
752 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
753 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
754 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
755 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
756 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
757 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
758 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
759 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
760 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
761 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
762 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
763 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
764 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
765 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
766 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
767 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
768 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
769 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
770 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
771 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
772 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
773 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
774 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
775 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
776 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
777 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
778 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
779 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
780 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
781 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
782 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
783 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
784 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
785 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
786 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
787 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
788 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
789 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
790 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
791 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
792 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
793 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
794 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
795 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
796 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
797 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
798 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
799 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
800 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
801 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
802 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
803 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
804 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
805 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
806 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
807 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
808 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
809 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
810 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
811 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
812 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
813 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
814 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
815 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
816 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
817 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
818 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
819 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
820 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
821 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
822 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
823 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
824 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
825 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
826 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
827 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
828 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
829 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
830 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
831 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
832 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
833 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
834 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
835 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
836 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
837
hub_irq(struct urb * urb,struct pt_regs * regs)838 static void hub_irq(struct urb *urb, struct pt_regs *regs)
839 {
840 struct usb_hub *hub = (struct usb_hub *)urb->context;
841 U32 flags;
842 int status;
843 int tmp = ENOENT;
844 struct usb_hcd *hcd = (struct usb_hcd*) urb->dev->bus->hcpriv;
845 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
846 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
847 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
848 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
849 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
850 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
851 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
852 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
853 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
854 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
855 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
856 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
857 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
858 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
859 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
860 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
861 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
862 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
863 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
864 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
865 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
866 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
867 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
868 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
869 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
870 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
871 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
872 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
873 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
874 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
875 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
876 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
877 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
878 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
879 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
880 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
881 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
882 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
883 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
884 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
885 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
886 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
887 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
888 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
889
890 switch (urb->status) {
891 case -ENOENT:
892 case -ECONNRESET:
893 case -ESHUTDOWN:
894 diag_printf("<hub_irq> urb->status : %d \n", urb->status);
895 return;
896
897 default:
898 dev_dbg (&hub->intf->dev, "transfer --> %d\n", urb->status);
899 tmp = urb->status;
900 if ((++hub->nerrors < 10) || hub->error)
901 goto resubmit;
902 hub->error = urb->status;
903
904 case 0:
905 break;
906 }
907
908 hub->nerrors = 0;
909 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
910 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
911 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
912 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
913 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
914 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
915 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
916 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
917 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
918 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
919 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
920 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
921 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
922 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
923 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
924 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
925 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
926 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
927 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
928 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
929 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
930 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
931 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
932 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
933 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
934 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
935 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
936 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
937 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
938 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
939 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
940 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
941 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
942 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
943 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
944 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
945 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
946
947 spin_lock_irqsave(&hub_event_lock, flags);
948 if (list_empty(&hub->event_list)) {
949 //OS_DisableDispatch();
950 MS_U32 u32OldIntr;
951 u32OldIntr = MsOS_DisableAllInterrupts();
952 //list_add(&hub->event_list, &hub_event_list);
953 list_add(&hub->event_list, hcd->phub_event); // new
954
955 //MsOS_EnableInterrupt(E_IRQ_FIQ_ALL);
956 MsOS_RestoreAllInterrupts(u32OldIntr);
957 //diag_printf("%s>>> Add HUB EVENT!\n", hcd->product_desc);
958
959 //wake_up(&khubd_wait);
960 }
961 spin_unlock_irqrestore(&hub_event_lock, flags);
962 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
963 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
964 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
965 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
966 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
967 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
968 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
969 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
970 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
971 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
972 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
973 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
974 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
975 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
976 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
977 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
978 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
979 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
980 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
981 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
982 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
983 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
984 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
985 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
986 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
987 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
988 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
989 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
990 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
991 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
992 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
993 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
994 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
995 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
996 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
997 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
998 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
999 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1000 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1001 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1002 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1003 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1004 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1005 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1006 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1007 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1008 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1009 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1010 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1011 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1012 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1013 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1014 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1015 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1016 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1017 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1018 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1019 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1020 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1021 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1022 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1023 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1024 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1025 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1026 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1027 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1028 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1029 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1030 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1031 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1032 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1033 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1034
1035 resubmit:
1036 //diag_printf("<hub_irq> resubmit!!!by %s\n", hcd->product_desc);
1037 if ((status = usb_submit_urb (hub->urb, GFP_ATOMIC)) != 0
1038 /* ENODEV means we raced disconnect() */
1039 && status != -ENODEV) {
1040 dev_err (&hub->intf->dev, "previous urb status is %d, resubmit --> %d\n", tmp,status);
1041 usb_err("hcd->state=%d\n",hcd->state);
1042 }
1043 }
1044 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1045 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1046 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1047 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1048 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1049 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1050 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1051 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1052 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1053 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1054 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1055 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1056 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1057 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1058 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1059 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1060 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1061 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1062 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1063 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1064 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1065 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1066 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1067 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1068 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1069 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1070 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1071 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1072 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1073 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1074 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1075 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1076 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1077 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1078 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1079 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1080 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1081 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1082 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1083 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1084 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1085 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1086 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1087 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1088 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1089 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1090 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1091 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1092 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1093 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1094 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1095 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1096 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1097 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1098 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1099 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1100 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1101 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1102 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1103 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1104 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1105 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1106 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1107
1108 #ifdef USB_EHCI_TT
1109 static __inline__ int
hub_clear_tt_buffer(struct usb_device * hub,U16 devinfo,U16 tt)1110 hub_clear_tt_buffer (struct usb_device *hub, U16 devinfo, U16 tt)
1111 {
1112 return usb_control_msg (hub, usb_rcvctrlpipe (hub, 0),
1113 HUB_CLEAR_TT_BUFFER, USB_DIR_IN | USB_RECIP_OTHER,
1114 devinfo, tt, 0, 0, HZ);
1115 }
1116
1117
1118 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1119 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1120 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1121 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1122 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1123 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1124 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1125 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1126 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1127 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1128 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1129 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1130 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1131 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1132 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1133 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1134 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1135 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1136 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1137 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1138 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1139 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1140 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1141 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1142 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1143 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1144 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1145 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1146 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1147 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1148 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1149 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1150 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1151 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1152 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1153 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1154 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1155 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1156 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1157 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1158 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1159 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1160 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1161 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1162 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1163 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1164 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1165 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1166 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1167 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1168 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1169 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1170 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1171 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1172 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1173 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1174 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1175 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1176 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1177 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1178 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1179 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1180 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1181 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1182 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
hub_tt_kevent(void * arg)1183 static void hub_tt_kevent (void *arg)
1184 {
1185 struct usb_hub *hub = arg;
1186 U32 flags;
1187
1188 spin_lock_irqsave (&hub->tt.lock, flags);
1189 while (!list_empty (&hub->tt.clear_list)) {
1190 struct list_head *temp;
1191 struct usb_tt_clear *clear;
1192 struct usb_device *dev;
1193 int status;
1194
1195 temp = hub->tt.clear_list.next;
1196 list_entry (temp, struct usb_tt_clear, clear_list, struct list_head,clear );
1197 list_del (&clear->clear_list);
1198 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1199 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1200 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1201 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1202 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1203 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1204 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1205 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1206 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1207 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1208 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1209 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1210 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1211 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1212 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1213 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1214 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1215 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1216 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1217 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1218 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1219 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1220 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1221 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1222 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1223 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1224 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1225 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1226 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1227 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1228 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1229 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1230 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1231 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1232 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1233 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1234 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1235 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1236 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1237 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1238 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1239 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1240 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1241 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1242 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1243 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1244 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1245 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1246 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1247 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1248 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1249 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1250 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1251 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1252 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1253 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1254 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1255
1256 spin_unlock_irqrestore (&hub->tt.lock, flags);
1257 dev = interface_to_usbdev (hub->intf);
1258 status = hub_clear_tt_buffer (dev, clear->devinfo, clear->tt);
1259 spin_lock_irqsave (&hub->tt.lock, flags);
1260
1261 if (status)
1262 err ("usb-%s-%s clear tt %d (%04x) error %d",
1263 dev->bus->bus_name, dev->devpath,
1264 clear->tt, clear->devinfo, status);
1265 kfree (clear);
1266 }
1267 spin_unlock_irqrestore (&hub->tt.lock, flags);
1268 }
usb_hub_tt_clear_buffer(struct usb_device * dev,int pipe)1269 void usb_hub_tt_clear_buffer (struct usb_device *dev, int pipe)
1270 {
1271 struct usb_tt *utt = dev->tt;
1272 U32 flags;
1273 struct usb_tt_clear *clear;
1274 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1275 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1276 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1277 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1278 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1279 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1280 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1281 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1282 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1283 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1284 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1285 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1286 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1287 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1288 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1289 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1290 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1291 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1292 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1293 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1294 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1295 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1296 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1297 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1298 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1299 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1300 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1301 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1302 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1303 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1304 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1305 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1306 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1307 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1308 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1309 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1310 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1311
1312 if ((clear = kmalloc (sizeof *clear, SLAB_ATOMIC)) == 0) {
1313 err ("can't allocate CLEAR_TT_BUFFER state for hub at usb-%s-%s",
1314 dev->bus->bus_name, utt->hub->devpath);
1315 return;
1316 }
1317
1318
1319 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1320 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1321 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1322 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1323 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1324 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1325 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1326 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1327 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1328 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1329 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1330 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1331 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1332 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1333 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1334 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1335 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1336 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1337 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1338 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1339 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1340 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1341 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1342 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1343 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1344 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1345 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1346 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1347 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1348 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1349 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1350 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1351 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1352 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1353 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1354 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1355 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1356 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1357 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1358 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1359 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1360 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1361 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1362 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1363 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1364 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1365 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1366 clear->tt = utt->multi ? dev->ttport : 1;
1367 clear->devinfo = usb_pipeendpoint (pipe);
1368 clear->devinfo |= dev->devnum << 4;
1369 clear->devinfo |= usb_pipecontrol (pipe)
1370 ? (USB_ENDPOINT_XFER_CONTROL << 11)
1371 : (USB_ENDPOINT_XFER_BULK << 11);
1372 if (usb_pipein (pipe))
1373 clear->devinfo |= 1 << 15;
1374 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1375 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1376 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1377 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1378 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1379 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1380 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1381 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1382 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1383 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1384 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1385 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1386 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1387 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1388 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1389 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1390 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1391 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1392 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1393 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1394 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1395 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1396 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1397 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1398 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1399 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1400 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1401 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1402 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1403 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1404 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1405 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1406 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1407 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1408 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1409 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1410 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1411 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1412 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1413 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1414 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1415 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1416 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1417 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1418 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1419 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1420 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1421 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1422 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1423 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1424 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1425 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1426 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1427 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1428 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1429 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1430 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1431 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1432 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1433 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1434 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1435 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1436 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1437 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1438 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1439 spin_lock_irqsave (&utt->lock, flags);
1440 list_add_tail (&clear->clear_list, &utt->clear_list);
1441 //schedule_work (&tt->kevent);
1442 spin_unlock_irqrestore (&utt->lock, flags);
1443 }
1444
1445 #endif
1446 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1447 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1448 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1449 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1450 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1451 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1452 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1453 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1454 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1455 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1456 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1457 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1458 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1459 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1460 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1461 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1462 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1463 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1464 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1465 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1466 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1467 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1468 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1469 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1470 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1471 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1472 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1473 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1474 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1475 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1476 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1477 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1478 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1479 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1480 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1481 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1482 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1483 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1484 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1485 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1486 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1487 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1488 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1489 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1490 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1491 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1492 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1493
hub_power_on(struct usb_hub * hub)1494 void hub_power_on(struct usb_hub *hub)
1495 {
1496 struct usb_device *dev;
1497 int i;
1498
1499 dev_dbg(hubdev(interface_to_usbdev(hub->intf)),
1500 "enabling power on all ports%s","\n");
1501 dev = interface_to_usbdev(hub->intf);
1502 for (i = 0; i < hub->descriptor.bNbrPorts; i++)
1503 set_port_feature(dev, i + 1, USB_PORT_FEAT_POWER);
1504
1505 wait_ms(hub->descriptor.bPwrOn2PwrGood * 2);
1506 }
1507 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1508 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1509 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1510 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1511 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1512 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1513 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1514 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1515 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1516 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1517 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1518 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1519 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1520 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1521 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1522 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1523 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1524 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1525 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1526 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1527 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1528 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1529 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1530 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1531 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1532 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1533 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1534 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1535 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1536 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1537 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1538 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1539 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1540 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1541 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1542 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1543
hub_hub_status(struct usb_hub * hub,U16 * status,U16 * change)1544 int hub_hub_status(struct usb_hub *hub,
1545 U16 *status, U16 *change)
1546 {
1547 struct usb_device *dev = interface_to_usbdev (hub->intf);
1548 int ret;
1549
1550 ret = get_hub_status(dev, &hub->status.hub);
1551 if (ret < 0) {
1552 dev_err (hubdev (dev),
1553 "%s failed (err = %d)\n", __FUNCTION__, ret);
1554
1555 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1556 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1557 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1558 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1559 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1560 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1561 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1562 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1563 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1564 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1565 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1566 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1567 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1568 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1569 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1570 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1571 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1572 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1573 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1574 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1575 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1576 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1577 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1578 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1579 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1580 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1581 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1582 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1583 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1584 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1585 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1586 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1587 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1588 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1589 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1590 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1591 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1592 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1593 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1594 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1595 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1596 }
1597 else {
1598 *status = LE16ToCPU(hub->status.hub.wHubStatus);
1599 *change = LE16ToCPU(hub->status.hub.wHubChange);
1600 ret = 0;
1601 }
1602 return ret;
1603 }
1604 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1605 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1606 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1607 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1608 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1609 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1610 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1611 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1612 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1613 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1614 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1615 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1616 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1617 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1618 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1619 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1620 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1621 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1622 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1623 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1624 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1625 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1626 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1627 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1628 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1629 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1630 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1631 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1632 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1633 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1634 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1635 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1636 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1637 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1638 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1639 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1640 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1641 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1642 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1643 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1644 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1645 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1646 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1647 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1648 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1649 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1650 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1651 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1652 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1653 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1654 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1655 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1656 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1657 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1658 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1659 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1660 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1661 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1662 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1663 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1664 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1665 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1666 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1667 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1668 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1669 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1670 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1671 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1672 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1673 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1674 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1675 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1676 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1677 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1678 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1679 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1680 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1681
hub_configure(struct usb_hub * hub,struct usb_endpoint_descriptor * endpoint)1682 static int hub_configure(struct usb_hub *hub,
1683 struct usb_endpoint_descriptor *endpoint)
1684 {
1685 struct usb_device *dev = interface_to_usbdev (hub->intf);
1686 struct device_s *hub_dev;
1687 U16 hubstatus, hubchange;
1688 U32 pipe;
1689 int maxp, ret;
1690 char *message;
1691
1692 hub->buffer = (char (*)[3]) usb_buffer_alloc(dev, sizeof(*hub->buffer), GFP_KERNEL,
1693 &hub->buffer_dma);
1694 if (!hub->buffer) {
1695 message = "can't allocate hub irq buffer";
1696 ret = -ENOMEM;
1697 goto fail;
1698 }
1699
1700 #if 0
1701 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1702 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1703 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1704 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1705 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1706 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1707 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1708 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1709 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1710 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1711 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1712 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1713 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1714 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1715 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1716 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1717 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1718 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1719 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1720 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1721 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1722 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1723 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1724 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1725 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1726 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1727 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1728 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1729 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1730 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1731 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1732 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1733 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1734 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1735 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1736 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1737 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1738 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1739 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1740 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1741 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1742 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1743 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1744 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1745 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1746 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1747 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1748 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1749 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1750 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1751 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1752 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1753 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1754 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1755 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1756 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1757 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1758 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1759 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1760 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1761 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1762 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1763 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1764
1765 hub->status = kmalloc(sizeof(*hub->status), GFP_KERNEL);
1766 if (!hub->status) {
1767 message = "can't kmalloc hub status buffer";
1768 ret = -ENOMEM;
1769 goto fail;
1770 }
1771
1772 hub->descriptor = kmalloc(sizeof(*hub->descriptor), GFP_KERNEL);
1773 if (!hub->descriptor) {
1774 message = "can't kmalloc hub descriptor";
1775 ret = -ENOMEM;
1776 goto fail;
1777 }
1778 #endif
1779
1780 ret = get_hub_descriptor(dev, &hub->descriptor,
1781 sizeof(hub->descriptor));
1782 if (ret < 0) {
1783 message = "can't read hub descriptor";
1784 goto fail;
1785
1786 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1787 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1788 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1789 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1790 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1791 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1792 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1793 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1794 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1795 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1796 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1797 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1798 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1799 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1800 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1801 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1802 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1803 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1804 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1805 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1806 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1807 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1808 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1809 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1810 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1811 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1812 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1813 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1814 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1815 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1816 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1817 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1818 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1819 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1820 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1821 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1822 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1823 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1824 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1825 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1826 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1827 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1828 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1829 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1830 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1831 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1832 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1833 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1834 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1835 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1836 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1837 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1838 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1839 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1840 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1841 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1842 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1843 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1844 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1845 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1846 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1847 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1848 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1849 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1850 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1851 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1852 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1853 } else if (hub->descriptor.bNbrPorts > USB_MAXCHILDREN) {
1854 message = "hub has too many ports!";
1855 ret = -ENODEV;
1856 goto fail;
1857 }
1858
1859 hub_dev = hubdev(dev);
1860 dev->maxchild = hub->descriptor.bNbrPorts;
1861 dev_info (hub_dev, "%d port%s detected\n", dev->maxchild,
1862 (dev->maxchild == 1) ? "" : "s");
1863 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1864 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1865 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1866 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1867 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1868 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1869 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1870 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1871 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1872 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1873 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1874 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1875 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1876 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1877 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1878 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1879 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1880 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1881 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1882 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1883 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1884 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1885 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1886 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1887 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1888 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1889 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1890 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1891 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1892 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1893 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1894 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1895 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1896 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1897 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1898 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1899 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1900 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1901 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1902 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1903 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1904 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1905 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1906 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1907 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1908 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1909 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1910 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1911 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1912 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1913 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1914 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1915 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1916 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1917 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1918 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1919 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1920 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1921 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1922 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1923 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1924 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1925 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1926 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1927 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1928 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1929 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1930 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1931 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1932 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1933
1934 hub->descriptor.wHubCharacteristics = LE16ToCPU(hub->descriptor.wHubCharacteristics);
1935
1936 if (hub->descriptor.wHubCharacteristics & HUB_CHAR_COMPOUND) {
1937 int i;
1938 char portstr [USB_MAXCHILDREN + 1];
1939
1940 for (i = 0; i < dev->maxchild; i++)
1941 portstr[i] = hub->descriptor.DeviceRemovable
1942 [((i + 1) / 8)] & (1 << ((i + 1) % 8))
1943 ? 'F' : 'R';
1944 portstr[dev->maxchild] = 0;
1945 dev_dbg(hub_dev, "compound device; port removable status: %s\n", portstr);
1946 } else
1947 dev_dbg(hub_dev, "standalone hub%s","\n");
1948 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1949 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1950 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1951 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1952 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1953 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1954 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1955 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1956 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1957 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1958 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1959 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1960 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1961 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1962 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1963 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1964 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1965 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1966 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1967 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1968 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1969 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1970 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1971 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1972 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1973 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1974 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1975 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1976 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1977 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1978 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1979 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1980 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1981 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1982 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1983 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1984 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1985 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1986 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1987 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1988 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1989
1990 switch (hub->descriptor.wHubCharacteristics & HUB_CHAR_LPSM) {
1991 case 0x00:
1992 dev_dbg(hub_dev, "ganged power switching%s","\n");
1993 break;
1994 case 0x01:
1995 dev_dbg(hub_dev, "individual port power switching%s","\n");
1996 break;
1997 case 0x02:
1998 case 0x03:
1999 dev_dbg(hub_dev, "unknown reserved power switching mode%s","\n");
2000 break;
2001 }
2002 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2003 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2004 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2005 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2006 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2007 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2008 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2009 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2010 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2011 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2012 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2013 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2014 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2015 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2016 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2017 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2018 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2019 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2020 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2021 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2022 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2023 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2024 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2025 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2026 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2027 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2028 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2029 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2030 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2031 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2032 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2033 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2034 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2035 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2036 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2037 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2038 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2039 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2040 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2041 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2042 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2043 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2044 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2045 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2046 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2047 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2048 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2049 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2050 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2051 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2052 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2053 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2054 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2055 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2056 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2057 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2058 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2059 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2060 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2061 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2062 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2063 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2064 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2065 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2066 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2067 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2068
2069 switch (hub->descriptor.wHubCharacteristics & HUB_CHAR_OCPM) {
2070 case 0x00:
2071 dev_dbg(hub_dev, "global over-current protection%s","\n");
2072 break;
2073 case 0x08:
2074 dev_dbg(hub_dev, "individual port over-current protection%s","\n");
2075 break;
2076 case 0x10:
2077 case 0x18:
2078 dev_dbg(hub_dev, "no over-current protection%s","\n");
2079 break;
2080 }
2081 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2082 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2083 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2084 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2085 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2086 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2087 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2088 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2089 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2090 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2091 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2092 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2093 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2094 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2095 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2096 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2097 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2098 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2099 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2100 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2101 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2102 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2103 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2104 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2105 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2106 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2107 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2108 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2109 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2110 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2111 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2112 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2113 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2114 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2115 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2116 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2117 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2118 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2119 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2120 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2121 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2122 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2123 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2124 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2125 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2126 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2127 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2128 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2129 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2130 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2131 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2132 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2133 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2134 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2135 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2136 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2137 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2138 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2139 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2140 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2141 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2142 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2143 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2144 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2145 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2146 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2147 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2148 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2149 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2150 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2151 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2152 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2153 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2154 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2155
2156 spin_lock_init (&hub->tt.lock);
2157 INIT_LIST_HEAD (&hub->tt.clear_list);
2158 //INIT_WORK (&hub->tt.kevent, hub_tt_kevent, hub);
2159 switch (dev->descriptor.bDeviceProtocol) {
2160 case 0:
2161 break;
2162 case 1:
2163 dev_dbg(hub_dev, "Single TT%s","\n");
2164 hub->tt.hub = dev;
2165 break;
2166 case 2:
2167 dev_dbg(hub_dev, "TT per port%s","\n");
2168 hub->tt.hub = dev;
2169 hub->tt.multi = 1;
2170 break;
2171 default:
2172 dev_dbg(hub_dev, "Unrecognized hub protocol %d\n",
2173 dev->descriptor.bDeviceProtocol);
2174 break;
2175 }
2176 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2177 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2178 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2179 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2180 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2181 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2182 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2183 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2184 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2185 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2186 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2187 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2188 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2189 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2190 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2191 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2192 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2193 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2194 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2195 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2196 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2197 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2198 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2199 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2200 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2201 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2202 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2203 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2204 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2205 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2206 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2207 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2208 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2209 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2210 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2211 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2212 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2213 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2214 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2215 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2216 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2217 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2218 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2219 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2220 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2221 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2222 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2223 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2224 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2225 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2226 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2227 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2228 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2229 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2230 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2231 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2232 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2233 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2234 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2235 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2236 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2237 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2238 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2239 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2240 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2241 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2242 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2243 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2244 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2245
2246 switch (hub->descriptor.wHubCharacteristics & HUB_CHAR_TTTT) {
2247 case 0x00:
2248 if (dev->descriptor.bDeviceProtocol != 0)
2249 dev_dbg(hub_dev, "TT requires at most 8 FS bit times%s","\n");
2250 break;
2251 case 0x20:
2252 dev_dbg(hub_dev, "TT requires at most 16 FS bit times%s","\n");
2253 break;
2254 case 0x40:
2255 dev_dbg(hub_dev, "TT requires at most 24 FS bit times%s","\n");
2256 break;
2257 case 0x60:
2258 dev_dbg(hub_dev, "TT requires at most 32 FS bit times%s","\n");
2259 break;
2260 }
2261
2262 dev_dbg(hub_dev, "Port indicators are %s supported\n",
2263 (hub->descriptor.wHubCharacteristics & HUB_CHAR_PORTIND)
2264 ? "" : "not");
2265 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2266 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2267 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2268 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2269 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2270 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2271 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2272 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2273 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2274 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2275 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2276 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2277 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2278 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2279 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2280 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2281 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2282 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2283 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2284 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2285 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2286 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2287 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2288 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2289 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2290 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2291 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2292 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2293 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2294 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2295 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2296 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2297 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2298 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2299 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2300 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2301 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2302 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2303 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2304 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2305 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2306 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2307 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2308 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2309 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2310 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2311 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2312 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2313 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2314 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2315 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2316 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2317 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2318 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2319 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2320 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2321 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2322 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2323 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2324 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2325 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2326 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2327 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2328 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2329 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2330 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2331 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2332 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2333 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2334 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2335 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2336 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2337 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2338 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2339 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2340 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2341
2342 dev_dbg(hub_dev, "power on to power good time: %dms\n",
2343 hub->descriptor.bPwrOn2PwrGood * 2);
2344 dev_dbg(hub_dev, "hub controller current requirement: %dmA\n",
2345 hub->descriptor.bHubContrCurrent);
2346 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2347 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2348 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2349 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2350 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2351 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2352 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2353 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2354 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2355 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2356 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2357 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2358 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2359 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2360 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2361 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2362 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2363 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2364 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2365 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2366 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2367 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2368 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2369 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2370 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2371 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2372 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2373 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2374 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2375 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2376 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2377 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2378 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2379 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2380 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2381 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2382 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2383 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2384 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2385 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2386 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2387 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2388 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2389 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2390 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2391 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2392 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2393 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2394 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2395 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2396 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2397 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2398 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2399 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2400 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2401 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2402 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2403 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2404 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2405 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2406 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2407 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2408 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2409 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2410 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2411 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2412 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2413 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2414 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2415 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2416 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2417 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2418 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2419 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2420 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2421 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2422
2423 ret = hub_hub_status(hub, &hubstatus, &hubchange);
2424 if (ret < 0) {
2425 message = "can't get hub status";
2426 goto fail;
2427 }
2428 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2429 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2430 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2431 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2432 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2433 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2434 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2435 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2436 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2437 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2438 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2439 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2440 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2441 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2442 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2443 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2444 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2445 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2446 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2447 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2448 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2449 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2450 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2451 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2452 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2453 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2454 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2455 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2456 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2457 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2458 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2459 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2460 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2461 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2462 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2463 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2464 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2465 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2466 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2467 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2468 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2469 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2470 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2471 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2472 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2473 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2474 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2475 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2476 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2477 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2478 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2479 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2480 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2481 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2482 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2483 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2484 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2485 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2486 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2487 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2488 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2489 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2490 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2491 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2492 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2493 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2494 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2495 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2496 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2497 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2498 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2499 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2500 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2501
2502 dev_dbg(hub_dev, "local power source is %s\n",
2503 (hubstatus & HUB_STATUS_LOCAL_POWER)
2504 ? "lost (inactive)" : "good");
2505
2506 dev_dbg(hub_dev, "%sover-current condition exists\n",
2507 (hubstatus & HUB_STATUS_OVERCURRENT) ? "" : "no ");
2508
2509 pipe = usb_rcvintpipe(dev, endpoint->bEndpointAddress);
2510 maxp = usb_maxpacket(dev, pipe, usb_pipeout(pipe));
2511 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2512 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2513 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2514 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2515 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2516 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2517 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2518 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2519 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2520 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2521 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2522 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2523 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2524 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2525 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2526 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2527 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2528 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2529 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2530 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2531 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2532 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2533 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2534 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2535 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2536 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2537 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2538 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2539 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2540 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2541 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2542 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2543 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2544 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2545 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2546 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2547 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2548 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2549 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2550 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2551 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2552 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2553 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2554 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2555 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2556 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2557 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2558 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2559 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2560 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2561 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2562 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2563 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2564 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2565 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2566 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2567 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2568 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2569 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2570 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2571 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2572 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2573 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2574 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2575 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2576 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2577 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2578 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2579 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2580 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2581 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2582 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2583 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2584 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2585 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2586 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2587
2588 if ((U32) maxp > sizeof(*hub->buffer))
2589 maxp = sizeof(*hub->buffer);
2590
2591 hub->urb = usb_alloc_urb(0, GFP_KERNEL);
2592 if (!hub->urb) {
2593 message = "couldn't allocate interrupt urb";
2594 ret = -ENOMEM;
2595 goto fail;
2596 }
2597 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2598 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2599 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2600 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2601 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2602 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2603 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2604 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2605 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2606 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2607 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2608 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2609 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2610 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2611 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2612 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2613 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2614 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2615 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2616 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2617 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2618 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2619 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2620 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2621 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2622 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2623 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2624 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2625 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2626 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2627 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2628 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2629 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2630 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2631 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2632 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2633 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2634 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2635 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2636 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2637 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2638 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2639 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2640 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2641 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2642 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2643 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2644 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2645 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2646 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2647 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2648 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2649 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2650 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2651 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2652 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2653 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2654 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2655 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2656 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2657 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2658 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2659 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2660 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2661 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2662 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2663 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2664 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2665 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2666 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2667 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2668 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2669
2670 usb_fill_int_urb(hub->urb, dev, pipe, *hub->buffer, maxp, hub_irq,
2671 hub, endpoint->bInterval);
2672 hub->urb->transfer_dma = hub->buffer_dma;
2673 hub->urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
2674 ret = usb_submit_urb(hub->urb, GFP_KERNEL);
2675 if (ret) {
2676 message = "couldn't submit status urb";
2677 goto fail;
2678 }
2679
2680 //wake_up(&khubd_wait);
2681
2682 hub_power_on(hub);
2683
2684 return 0;
2685 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2686 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2687 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2688 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2689 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2690 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2691 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2692 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2693 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2694 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2695 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2696 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2697 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2698 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2699 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2700 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2701 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2702 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2703 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2704 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2705 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2706 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2707 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2708 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2709 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2710 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2711 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2712 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2713 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2714 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2715 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2716 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2717 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2718 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2719 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2720 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2721 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2722 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2723 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2724 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2725 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2726 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2727 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2728 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2729 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2730 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2731 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2732 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2733 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2734 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2735 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2736 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2737 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2738 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2739 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2740 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2741 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2742 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2743 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2744 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2745 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2746 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2747 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2748 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2749 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2750 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2751
2752 fail:
2753 dev_err (&hub->intf->dev, "config failed, %s (err %d)\n",
2754 message, ret);
2755 return ret;
2756 }
2757
hub_disconnect(struct usb_interface * intf)2758 static void hub_disconnect(struct usb_interface *intf)
2759 {
2760 struct usb_hub *hub = (struct usb_hub*) usb_get_intfdata (intf);
2761 U32 flags;
2762
2763 if (!hub)
2764 return;
2765 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2766 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2767 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2768 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2769 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2770 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2771 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2772 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2773 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2774 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2775 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2776 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2777 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2778 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2779 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2780 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2781 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2782 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2783 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2784 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2785 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2786 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2787 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2788 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2789 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2790 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2791 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2792 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2793 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2794 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2795 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2796 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2797 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2798 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2799 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2800 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2801 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2802 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2803 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2804 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2805 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2806 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2807 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2808 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2809 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2810 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2811 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2812 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2813 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2814 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2815 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2816 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2817 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2818 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2819 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2820 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2821 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2822 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2823 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2824 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2825 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2826 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2827 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2828 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2829 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2830 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2831 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2832
2833 usb_set_intfdata (intf, NULL);
2834 spin_lock_irqsave(&hub_event_lock, flags);
2835
2836 /* Delete it and then reset it */
2837 list_del(&hub->event_list);
2838 INIT_LIST_HEAD(&hub->event_list);
2839 list_del(&hub->hub_list);
2840 INIT_LIST_HEAD(&hub->hub_list);
2841
2842 spin_unlock_irqrestore(&hub_event_lock, flags);
2843 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2844 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2845 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2846 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2847 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2848 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2849 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2850 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2851 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2852 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2853 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2854 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2855 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2856 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2857 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2858 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2859 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2860 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2861 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2862 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2863 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2864 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2865 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2866 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2867 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2868 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2869 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2870 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2871 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2872 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2873 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2874 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2875 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2876 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2877 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2878 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2879 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2880 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2881 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2882 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2883 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2884 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2885 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2886 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2887 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2888 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2889 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2890 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2891 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2892 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2893 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2894 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2895 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2896 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2897 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2898 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2899 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2900 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2901 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2902 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2903 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2904 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2905 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2906 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2907 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2908 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2909 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2910 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2911 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2912 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2913
2914 down(&hub->khubd_sem);
2915 up(&hub->khubd_sem);
2916
2917 //if (hub->tt.hub)
2918 // flush_scheduled_work ();
2919
2920 if (hub->urb) {
2921 dbg("hub_disconnect: unlink urb%s","");
2922 usb_unlink_urb(hub->urb);
2923 usb_free_urb(hub->urb);
2924 hub->urb = NULL;
2925 }
2926
2927 #if 0
2928 if (hub.descriptor) {
2929 kfree(hub->descriptor);
2930 hub->descriptor = NULL;
2931 }
2932
2933 if (hub->status) {
2934 kfree(hub->status);
2935 hub->status = NULL;
2936 }
2937 #endif
2938 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2939 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2940 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2941 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2942 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2943 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2944 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2945 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2946 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2947 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2948 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2949 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2950 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2951 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2952 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2953 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2954 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2955 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2956 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2957 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2958 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2959 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2960 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2961 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2962 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2963 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2964 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2965 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2966 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2967 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2968 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2969 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2970 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2971 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2972 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2973 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2974 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2975 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2976 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2977 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2978 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2979 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2980 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2981 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2982 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2983 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2984 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2985 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2986 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2987 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2988 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2989 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2990 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2991 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2992 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2993 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2994 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2995 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2996 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2997 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2998 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2999 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3000 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3001 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3002 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3003 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3004 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3005 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3006 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3007 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3008 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3009 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3010 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3011 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3012
3013 if (hub->buffer) {
3014 usb_buffer_free(interface_to_usbdev(intf),
3015 sizeof(*hub->buffer), hub->buffer,
3016 hub->buffer_dma);
3017 hub->buffer = NULL;
3018 }
3019
3020 kfree(hub);
3021 }
3022
hub_probe(struct usb_interface * intf,const struct usb_device_id * id)3023 static int hub_probe(struct usb_interface *intf, const struct usb_device_id *id)
3024 {
3025 struct usb_host_interface *desc;
3026 struct usb_endpoint_descriptor *endpoint;
3027 struct usb_device *dev;
3028 struct usb_hub *hub;
3029 U32 flags;
3030 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3031 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3032 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3033 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3034 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3035 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3036 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3037 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3038 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3039 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3040 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3041 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3042 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3043 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3044 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3045 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3046 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3047 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3048 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3049 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3050 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3051 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3052 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3053 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3054 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3055 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3056 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3057 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3058 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3059 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3060 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3061 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3062 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3063 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3064 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3065 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3066 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3067 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3068 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3069 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3070 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3071 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3072 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3073 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3074 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3075 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3076 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3077 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3078 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3079 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3080 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3081 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3082 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3083 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3084 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3085 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3086 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3087 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3088 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3089 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3090 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3091 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3092 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3093 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3094 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3095 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3096 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3097 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3098 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3099
3100 desc = intf->altsetting + intf->act_altsetting;
3101 dev = interface_to_usbdev(intf);
3102
3103 if ((desc->desc.bInterfaceSubClass != 0) &&
3104 (desc->desc.bInterfaceSubClass != 1)) {
3105 descriptor_error:
3106 dev_err (&intf->dev, "bad descriptor, ignoring hub%s","\n");
3107 return -EIO;
3108 }
3109
3110 if (desc->desc.bNumEndpoints != 1) {
3111 goto descriptor_error;
3112 }
3113 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3114 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3115 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3116 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3117 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3118 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3119 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3120 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3121 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3122 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3123 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3124 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3125 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3126 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3127 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3128 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3129 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3130 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3131 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3132 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3133 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3134 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3135 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3136 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3137 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3138 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3139 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3140 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3141 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3142 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3143 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3144 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3145 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3146 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3147 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3148 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3149 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3150 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3151 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3152 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3153 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3154 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3155 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3156 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3157 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3158 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3159 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3160 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3161 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3162 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3163 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3164 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3165 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3166 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3167 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3168 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3169 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3170 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3171 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3172 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3173 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3174 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3175
3176 endpoint = &desc->endpoint[0].desc;
3177
3178 if (!(endpoint->bEndpointAddress & USB_DIR_IN)) {
3179 goto descriptor_error;
3180 }
3181
3182 if ((endpoint->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK)
3183 != USB_ENDPOINT_XFER_INT) {
3184 goto descriptor_error;
3185 return -EIO;
3186 }
3187
3188 dev_info (hubdev (dev), "USB hub found%s","\n");
3189 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3190 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3191 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3192 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3193 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3194 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3195 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3196 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3197 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3198 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3199 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3200 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3201 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3202 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3203 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3204 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3205 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3206 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3207 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3208 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3209 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3210 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3211 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3212 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3213 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3214 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3215 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3216 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3217 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3218 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3219 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3220 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3221 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3222 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3223 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3224 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3225 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3226 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3227 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3228 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3229 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3230 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3231 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3232 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3233 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3234 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3235 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3236 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3237 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3238 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3239 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3240 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3241 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3242 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3243 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3244 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3245 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3246 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3247 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3248 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3249 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3250
3251 hub = (struct usb_hub*) kmalloc(sizeof(*hub), GFP_KERNEL);
3252 if (!hub) {
3253 usb_err("couldn't kmalloc hub struct%s","");
3254 return -ENOMEM;
3255 }
3256
3257 memset(hub, 0, sizeof(*hub));
3258
3259 INIT_LIST_HEAD(&hub->event_list);
3260 hub->intf = intf;
3261 //init_MUTEX(&hub->khubd_sem);
3262
3263 spin_lock_irqsave(&hub_event_lock, flags);
3264 INIT_LIST_HEAD(&hub->hub_list);
3265 list_add(&hub->hub_list, &hub_list);
3266 spin_unlock_irqrestore(&hub_event_lock, flags);
3267
3268 usb_set_intfdata (intf, hub);
3269
3270 if (hub_configure(hub, endpoint) >= 0)
3271 return 0;
3272
3273 hub_disconnect (intf);
3274 return -ENODEV;
3275 }
3276 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3277 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3278 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3279 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3280 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3281 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3282 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3283 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3284 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3285 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3286 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3287 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3288 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3289 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3290 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3291 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3292 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3293 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3294 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3295 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3296 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3297 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3298 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3299 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3300 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3301 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3302 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3303 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3304 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3305 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3306 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3307 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3308 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3309 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3310 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3311 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3312 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3313 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3314 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3315 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3316 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3317 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3318 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3319 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3320 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3321 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3322 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3323 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3324 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3325 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3326 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3327 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3328 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3329 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3330 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3331 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3332 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3333 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3334 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3335 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3336 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3337 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3338 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3339 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3340 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3341 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3342 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3343 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3344 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3345 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3346 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3347
3348 static int
hub_ioctl(struct usb_interface * intf,U32 ucode,void * user_data)3349 hub_ioctl(struct usb_interface *intf, U32 ucode, void *user_data)
3350 {
3351 //struct usb_device *hub = (struct usb_device*) interface_to_usbdev (intf);
3352
3353 switch (ucode) {
3354 // Unsupport ioctl function
3355 #if 0
3356 case USBDEVFS_HUB_PORTINFO: {
3357 struct usbdevfs_hub_portinfo *info = user_data;
3358 U32 flags;
3359 int i;
3360
3361 spin_lock_irqsave(&hub_event_lock, flags);
3362 if (hub->devnum <= 0)
3363 info->nports = 0;
3364
3365 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3366 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3367 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3368 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3369 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3370 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3371 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3372 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3373 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3374 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3375 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3376 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3377 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3378 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3379 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3380 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3381 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3382 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3383 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3384 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3385 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3386 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3387 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3388 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3389 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3390 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3391 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3392 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3393 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3394 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3395 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3396 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3397 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3398 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3399 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3400 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3401 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3402 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3403 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3404 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3405 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3406 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3407 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3408 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3409 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3410 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3411 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3412 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3413 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3414 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3415 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3416 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3417 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3418 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3419 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3420 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3421 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3422 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3423 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3424 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3425 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3426 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3427 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3428 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3429 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3430 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3431 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3432 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3433 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3434 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3435 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3436 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3437 else {
3438 info->nports = hub->maxchild;
3439 for (i = 0; i < info->nports; i++) {
3440 if (hub->children[i] == NULL)
3441 info->port[i] = 0;
3442 else
3443 info->port[i] =
3444 hub->children[i]->devnum;
3445 }
3446 }
3447 spin_unlock_irqrestore(&hub_event_lock, flags);
3448
3449 return info->nports + 1;
3450 }
3451 #endif
3452 default:
3453 return -ENOSYS;
3454 }
3455 }
3456 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3457 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3458 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3459 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3460 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3461 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3462 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3463 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3464 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3465 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3466 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3467 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3468 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3469 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3470 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3471 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3472 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3473 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3474 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3475 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3476 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3477 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3478 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3479 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3480 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3481 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3482 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3483 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3484 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3485 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3486 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3487 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3488 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3489 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3490 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3491 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3492 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3493 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3494 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3495 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3496 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3497 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3498 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3499 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3500 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3501 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3502 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3503 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3504 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3505 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3506 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3507 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3508 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3509 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3510 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3511 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3512 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3513 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3514 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3515 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3516 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3517 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3518 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3519 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3520 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3521 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3522 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3523 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3524 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3525 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3526 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3527 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3528 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3529 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3530 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3531 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3532
hub_reset(struct usb_hub * hub)3533 int hub_reset(struct usb_hub *hub)
3534 {
3535 struct usb_device *dev = interface_to_usbdev(hub->intf);
3536 int i;
3537 printk("\nhub reset\n");
3538 for (i = 0; i < hub->descriptor.bNbrPorts; i++) {
3539 if (dev->children[i])
3540 usb_disconnect(&dev->children[i]);
3541 }
3542 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3543 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3544 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3545 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3546 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3547 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3548 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3549 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3550 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3551 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3552 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3553 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3554 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3555 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3556 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3557 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3558 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3559 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3560 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3561 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3562 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3563 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3564 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3565 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3566 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3567 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3568 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3569 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3570 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3571 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3572 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3573 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3574 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3575 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3576 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3577 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3578 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3579 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3580 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3581 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3582 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3583 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3584 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3585 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3586 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3587 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3588 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3589 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3590 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3591 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3592 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3593 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3594 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3595 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3596 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3597 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3598 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3599 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3600 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3601
3602 if (hub->urb)
3603 {
3604 usb_unlink_urb(hub->urb);
3605 usb_msg("hub_reset: unlink urb%s","");
3606 }
3607 else
3608 return -1;
3609
3610 if (usb_reset_device(dev))
3611 return -1;
3612
3613 hub->urb->dev = dev;
3614 if (usb_submit_urb(hub->urb, GFP_KERNEL))
3615 return -1;
3616
3617 hub_power_on(hub);
3618
3619 return 0;
3620 }
3621 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3622 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3623 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3624 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3625 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3626 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3627 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3628 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3629 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3630 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3631 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3632 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3633 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3634 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3635 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3636 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3637 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3638 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3639 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3640 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3641 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3642 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3643 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3644 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3645 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3646 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3647 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3648 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3649 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3650 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3651 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3652 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3653 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3654 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3655 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3656 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3657 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3658 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3659 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3660 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3661 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3662 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3663 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3664 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3665 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3666 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3667 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3668 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3669 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3670 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3671 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3672 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3673 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3674 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3675 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3676 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3677 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3678 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3679 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3680 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3681 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3682 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3683 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3684 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3685 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3686 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3687 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3688 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3689 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3690 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3691 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3692 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3693 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3694
hub_start_disconnect(struct usb_device * dev)3695 void hub_start_disconnect(struct usb_device *dev)
3696 {
3697 struct usb_device *parent = dev->parent;
3698 int i;
3699
3700 if (parent) {
3701 for (i = 0; i < parent->maxchild; i++) {
3702 if (parent->children[i] == dev) {
3703 usb_disconnect(&parent->children[i]);
3704 return;
3705 }
3706 }
3707 }
3708
3709 usb_err("cannot disconnect hub %s", dev->devpath);
3710 }
3711 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3712 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3713 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3714 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3715 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3716 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3717 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3718 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3719 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3720 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3721 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3722 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3723 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3724 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3725 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3726 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3727 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3728 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3729 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3730 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3731 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3732 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3733 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3734 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3735 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3736 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3737 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3738 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3739 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3740 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3741 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3742 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3743 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3744 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3745 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3746 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3747 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3748 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3749 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3750 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3751 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3752 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3753 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3754 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3755 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3756 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3757 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3758 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3759 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3760 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3761 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3762 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3763 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3764 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3765 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3766 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3767 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3768 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3769 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3770 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3771 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3772 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3773
hub_port_status(struct usb_device * dev,int port,U16 * status,U16 * change)3774 int hub_port_status(struct usb_device *dev, int port,
3775 U16 *status, U16 *change)
3776 {
3777 struct usb_hub *hub = (struct usb_hub*) usb_get_intfdata(dev->actconfig->interface[0]);
3778 int ret;
3779
3780 ret = get_port_status(dev, port + 1, &hub->status.port);
3781 if (ret < 0) {
3782 dev_err (hubdev (dev),
3783 "%s failed (err = %d)\n", __FUNCTION__, ret);
3784 }
3785 else {
3786 *status = LE16ToCPU(hub->status.port.wPortStatus);
3787 *change = LE16ToCPU(hub->status.port.wPortChange);
3788 ret = 0;
3789 }
3790 return ret;
3791 }
3792 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3793 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3794 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3795 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3796 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3797 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3798 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3799 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3800 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3801 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3802 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3803 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3804 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3805 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3806 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3807 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3808 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3809 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3810 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3811 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3812 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3813 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3814 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3815 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3816 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3817 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3818 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3819 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3820 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3821 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3822 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3823 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3824 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3825 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3826 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3827 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3828 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3829 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3830 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3831 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3832 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3833 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3834 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3835 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3836 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3837 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3838 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3839 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3840 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3841 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3842 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3843 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3844 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3845 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3846 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3847 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3848 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3849 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3850 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3851 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3852 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3853 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3854 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3855 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3856 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3857 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3858 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3859 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3860 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3861 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3862 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3863 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3864 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3865 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3866 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3867 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3868 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3869 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3870 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3871 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3872
3873 #if 0 // move to drvHub.h
3874 #define HUB_RESET_TRIES 5
3875 #define HUB_PROBE_TRIES 2
3876 #define HUB_ROOT_RESET_TIME 50 /* times are in msec */
3877 #define HUB_SHORT_RESET_TIME 10
3878 #define HUB_LONG_RESET_TIME 200
3879 #define HUB_RESET_TIMEOUT 500
3880 #endif
3881 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3882 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3883 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3884 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3885 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3886 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3887 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3888 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3889 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3890 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3891 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3892 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3893 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3894 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3895 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3896 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3897 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3898 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3899 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3900 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3901 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3902 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3903 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3904 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3905 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3906 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3907 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3908 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3909 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3910 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3911 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3912 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3913 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3914 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3915 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3916 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3917 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3918 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3919 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3920 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3921 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3922 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3923 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3924 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3925 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3926 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3927 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3928 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3929 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3930 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3931 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3932 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3933 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3934 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3935 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3936 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3937 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3938 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3939 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3940 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3941 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3942 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3943 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3944 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3945 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3946 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3947 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3948 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3949 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3950 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3951 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3952 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3953
hub_port_wait_reset(struct usb_device * hub,int port,struct usb_device * dev,U32 delay)3954 static int hub_port_wait_reset(struct usb_device *hub, int port,
3955 struct usb_device *dev, U32 delay)
3956 {
3957 int delay_time, ret;
3958 U16 portstatus;
3959 U16 portchange;
3960 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3961 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3962 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3963 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3964 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3965 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3966 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3967 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3968 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3969 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3970 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3971 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3972 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3973 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3974 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3975 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3976 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3977 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3978 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3979 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3980 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3981 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3982 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3983 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3984 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3985 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3986 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3987 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3988 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3989 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3990 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3991 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3992 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3993 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3994 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3995 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3996 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3997 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3998 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
3999 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4000 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4001 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4002 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4003 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4004 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4005 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4006 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4007 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4008 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4009 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4010 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4011 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4012 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4013 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4014 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4015 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4016 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4017 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4018 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4019 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4020 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4021 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4022 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4023 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4024 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4025 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4026 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4027 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4028 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4029 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4030 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4031 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4032 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4033 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4034 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4035 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4036
4037 for (delay_time = 0;
4038 delay_time < HUB_RESET_TIMEOUT;
4039 delay_time += delay) {
4040 wait_ms(delay);
4041
4042 ret = hub_port_status(hub, port, &portstatus, &portchange);
4043 if (ret < 0) {
4044 return -1;
4045 }
4046 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4047 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4048 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4049 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4050 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4051 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4052 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4053 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4054 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4055 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4056 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4057 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4058 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4059 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4060 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4061 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4062 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4063 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4064 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4065 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4066 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4067 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4068 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4069 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4070 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4071 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4072 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4073 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4074 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4075 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4076 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4077 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4078 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4079 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4080 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4081 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4082 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4083 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4084 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4085 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4086 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4087 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4088 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4089 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4090 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4091 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4092 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4093 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4094 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4095 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4096 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4097 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4098 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4099 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4100 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4101 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4102 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4103 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4104 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4105 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4106 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4107 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4108 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4109 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4110 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4111 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4112 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4113 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4114 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4115 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4116 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4117 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4118 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4119 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4120 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4121 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4122 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4123 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4124 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4125 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4126
4127 if (!(portstatus & USB_PORT_STAT_CONNECTION))
4128 return 1;
4129
4130 if ((portchange & USB_PORT_STAT_C_CONNECTION))
4131 //return -1;
4132 return 1; // disconnect
4133
4134 if (!(portstatus & USB_PORT_STAT_RESET) &&
4135 (portstatus & USB_PORT_STAT_ENABLE)) {
4136
4137 if (portstatus & USB_PORT_STAT_HIGH_SPEED)
4138 dev->speed = USB_SPEED_HIGH;
4139 else if (portstatus & USB_PORT_STAT_LOW_SPEED)
4140 dev->speed = USB_SPEED_LOW;
4141 else
4142 dev->speed = USB_SPEED_FULL;
4143 dev_dbg(hubdev(hub),"Device Speed is %s\n",portspeed (portstatus));
4144 diag_printf("hub_port_wait_reset:: Device Speed is %s\n", portspeed(portstatus));
4145 //printk("Device Speed is %s\n",portspeed (portstatus));
4146 return 0;
4147 }
4148 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4149 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4150 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4151 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4152 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4153 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4154 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4155 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4156 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4157 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4158 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4159 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4160 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4161 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4162 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4163 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4164 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4165 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4166 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4167 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4168 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4169 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4170 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4171 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4172 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4173 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4174 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4175 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4176 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4177 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4178 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4179 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4180 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4181 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4182 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4183 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4184 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4185 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4186 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4187 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4188 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4189 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4190 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4191 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4192 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4193 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4194 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4195 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4196 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4197 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4198 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4199 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4200 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4201 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4202 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4203 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4204 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4205 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4206 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4207 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4208 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4209 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4210 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4211 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4212 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4213 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4214 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4215 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4216 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4217 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4218 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4219 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4220 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4221 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4222 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4223 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4224 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4225 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4226 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4227
4228 if (delay_time >= 2 * HUB_SHORT_RESET_TIME)
4229 delay = HUB_LONG_RESET_TIME;
4230
4231 dev_dbg (hubdev (hub),
4232 "port %d not reset yet, waiting %dms\n",
4233 port + 1, delay);
4234 }
4235
4236 return -1;
4237 }
4238
4239 /* return: -1 on error, 0 on success, 1 on disconnect. */
4240 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4241 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4242 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4243 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4244 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4245 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4246 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4247 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4248 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4249 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4250 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4251 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4252 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4253 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4254 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4255 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4256 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4257 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4258 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4259 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4260 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4261 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4262 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4263 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4264 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4265 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4266 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4267 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4268 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4269 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4270 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4271 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4272 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4273 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4274 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4275 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4276 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4277 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4278 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4279 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4280 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4281 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4282 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4283 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4284 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4285 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4286 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4287 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4288 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4289 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4290 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4291 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4292 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4293 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4294 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4295 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4296 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4297 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4298 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4299 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4300 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4301 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4302 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4303 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4304 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4305 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4306 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4307 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4308 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4309 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4310 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4311 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4312 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4313 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4314 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4315 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4316 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4317 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4318 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4319 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4320 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4321 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4322
hub_port_reset(struct usb_device * hub,int port,struct usb_device * dev,U32 delay)4323 static int hub_port_reset(struct usb_device *hub, int port,
4324 struct usb_device *dev, U32 delay)
4325 {
4326 int i, status;
4327
4328 for (i = 0; i < HUB_RESET_TRIES; i++) {
4329 set_port_feature(hub, port + 1, USB_PORT_FEAT_RESET);
4330
4331 status = hub_port_wait_reset(hub, port, dev, delay);
4332 //diag_printf("<hub_port_reset> loop %d, status %d\n", i, status);
4333 if (status != -1) {
4334 clear_port_feature(hub,
4335 port + 1, USB_PORT_FEAT_C_RESET);
4336 dev->state = status
4337 ? USB_STATE_NOTATTACHED
4338 : USB_STATE_DEFAULT;
4339 return status;
4340 }
4341 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4342 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4343 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4344 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4345 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4346 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4347 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4348 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4349 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4350 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4351 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4352 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4353 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4354 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4355 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4356 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4357 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4358 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4359 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4360 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4361 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4362 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4363 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4364 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4365 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4366 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4367 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4368 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4369 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4370 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4371 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4372 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4373 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4374 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4375 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4376 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4377 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4378 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4379 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4380 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4381 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4382 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4383 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4384 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4385 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4386 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4387 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4388 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4389 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4390 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4391 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4392 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4393 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4394 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4395 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4396 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4397 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4398 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4399 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4400 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4401 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4402 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4403 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4404 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4405 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4406 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4407 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4408 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4409 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4410 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4411 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4412 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4413 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4414 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4415 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4416 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4417
4418 dev_dbg (hubdev (hub),
4419 "port %d not enabled, trying reset again...\n",
4420 port + 1);
4421 delay = HUB_LONG_RESET_TIME;
4422 }
4423
4424 dev_err (hubdev (hub),
4425 "Cannot enable port %i. Maybe the USB cable is bad?\n",
4426 port + 1);
4427
4428 return -1;
4429 }
4430 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4431 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4432 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4433 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4434 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4435 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4436 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4437 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4438 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4439 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4440 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4441 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4442 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4443 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4444 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4445 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4446 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4447 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4448 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4449 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4450 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4451 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4452 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4453 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4454 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4455 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4456 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4457 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4458 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4459 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4460 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4461 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4462 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4463 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4464 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4465 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4466 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4467 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4468 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4469 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4470 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4471 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4472 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4473 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4474 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4475 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4476 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4477 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4478 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4479 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4480 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4481 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4482 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4483 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4484 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4485 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4486 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4487 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4488 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4489 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4490 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4491 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4492 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4493 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4494 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4495 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4496 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4497 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4498 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4499 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4500 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4501 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4502 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4503 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4504 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4505 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4506 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4507 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4508 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4509 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4510 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4511 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4512
hub_port_disable(struct usb_device * hub,int port)4513 int hub_port_disable(struct usb_device *hub, int port)
4514 {
4515 int ret;
4516
4517 ret = clear_port_feature(hub, port + 1, USB_PORT_FEAT_ENABLE);
4518 if (ret) {
4519 dev_err(hubdev(hub), "cannot disable port %d (err = %d)\n",
4520 port + 1, ret);
4521 }
4522
4523 return ret;
4524 }
4525 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4526 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4527 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4528 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4529 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4530 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4531 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4532 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4533 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4534 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4535 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4536 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4537 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4538 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4539 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4540 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4541 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4542 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4543 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4544 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4545 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4546 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4547 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4548 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4549 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4550 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4551 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4552 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4553 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4554 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4555 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4556 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4557 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4558 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4559 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4560 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4561 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4562 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4563 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4564 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4565 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4566 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4567 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4568 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4569 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4570 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4571 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4572 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4573 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4574 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4575 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4576 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4577 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4578 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4579 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4580 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4581 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4582 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4583 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4584 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4585 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4586 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4587 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4588 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4589 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4590 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4591 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4592 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4593 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4594 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4595 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4596 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4597 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4598 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4599 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4600 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4601 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4602
4603
4604 #define HUB_DEBOUNCE_TIMEOUT 1500 //400
4605 //#define HUB_DEBOUNCE_STEP 25
4606 //#define HUB_DEBOUNCE_STABLE 4 // # of counts
4607
hub_port_debounce(struct usb_device * hub,int port)4608 static int hub_port_debounce(struct usb_device *hub, int port)
4609 {
4610 int ret;
4611 int delay_time, stable_count;
4612 U16 portchange, portstatus;
4613 U32 connection;
4614 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4615 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4616 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4617 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4618 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4619 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4620 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4621 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4622 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4623 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4624 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4625 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4626 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4627 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4628 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4629 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4630 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4631 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4632 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4633 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4634 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4635 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4636 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4637 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4638 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4639 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4640 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4641 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4642 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4643 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4644 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4645 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4646 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4647 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4648 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4649 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4650 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4651 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4652 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4653 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4654 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4655 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4656 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4657 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4658 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4659 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4660 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4661 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4662 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4663 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4664 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4665 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4666 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4667 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4668 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4669 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4670 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4671 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4672 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4673 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4674 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4675 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4676 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4677 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4678 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4679 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4680 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4681 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4682 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4683 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4684
4685 connection = 0;
4686 stable_count = 0;
4687 for (delay_time = 0; delay_time < HUB_DEBOUNCE_TIMEOUT; delay_time += HUB_DEBOUNCE_STEP) {
4688 wait_ms(HUB_DEBOUNCE_STEP);
4689
4690 ret = hub_port_status(hub, port, &portstatus, &portchange);
4691 if (ret < 0)
4692 return -1;
4693
4694 if ((U16) (portstatus & USB_PORT_STAT_CONNECTION) == connection) {
4695 if (connection) {
4696 if (++stable_count == HUB_DEBOUNCE_STABLE)
4697 break;
4698 }
4699 } else {
4700 stable_count = 0;
4701 }
4702 connection = portstatus & USB_PORT_STAT_CONNECTION;
4703 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4704 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4705 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4706 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4707 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4708 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4709 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4710 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4711 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4712 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4713 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4714 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4715 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4716 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4717 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4718 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4719 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4720 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4721 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4722 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4723 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4724 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4725 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4726 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4727 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4728 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4729 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4730 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4731 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4732 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4733 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4734 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4735 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4736 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4737 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4738 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4739 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4740 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4741 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4742 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4743 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4744 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4745 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4746 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4747 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4748 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4749 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4750 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4751 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4752 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4753 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4754 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4755 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4756 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4757 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4758 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4759 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4760 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4761 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4762 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4763 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4764 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4765 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4766 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4767 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4768 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4769 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4770 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4771 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4772
4773 if ((portchange & USB_PORT_STAT_C_CONNECTION)) {
4774 clear_port_feature(hub, port+1, USB_PORT_FEAT_C_CONNECTION);
4775 }
4776 }
4777
4778 dev_info (hubdev (hub),
4779 "debounce: port %d: delay %dms stable %d status 0x%x\n",
4780 port + 1, delay_time, stable_count, portstatus);
4781
4782 return ((portstatus&USB_PORT_STAT_CONNECTION)) ? 0 : 1;
4783 }
4784 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4785 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4786 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4787 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4788 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4789 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4790 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4791 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4792 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4793 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4794 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4795 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4796 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4797 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4798 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4799 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4800 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4801 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4802 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4803 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4804 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4805 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4806 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4807 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4808 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4809 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4810 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4811 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4812 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4813 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4814 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4815 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4816 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4817 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4818 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4819 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4820 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4821 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4822 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4823 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4824 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4825 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4826 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4827 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4828 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4829 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4830 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4831 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4832 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4833 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4834 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4835 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4836 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4837 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4838 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4839 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4840 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4841 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4842 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4843 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4844 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4845 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4846 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4847 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4848 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4849 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4850 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4851 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4852 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4853 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4854 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4855 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4856 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4857 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4858
4859 extern void ehci_endpoint_disable (struct usb_hcd *hcd, struct hcd_dev *dev, int ep);
hub_port_connect_change(struct usb_hub * hubstate,int port,U16 portstatus,U16 portchange)4860 void hub_port_connect_change(struct usb_hub *hubstate, int port,
4861 U16 portstatus, U16 portchange)
4862 {
4863 struct usb_device *hub = interface_to_usbdev(hubstate->intf);
4864 struct usb_device *dev;
4865 struct hcd_dev *phcd_dev;
4866 struct usb_hcd *hcd = (struct usb_hcd*) hub->bus->hcpriv;
4867 U32 delay = HUB_SHORT_RESET_TIME;
4868 int i;
4869 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4870 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4871 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4872 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4873 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4874 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4875 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4876 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4877 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4878 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4879 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4880 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4881 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4882 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4883 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4884 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4885 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4886 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4887 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4888 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4889 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4890 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4891 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4892 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4893 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4894 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4895 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4896 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4897 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4898 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4899 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4900 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4901 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4902 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4903 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4904 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4905 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4906 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4907 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4908 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4909 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4910 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4911 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4912 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4913 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4914 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4915 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4916 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4917 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4918 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4919 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4920 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4921 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4922 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4923 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4924 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4925 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4926 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4927 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4928 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4929 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4930 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4931 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4932 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4933 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4934 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4935 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4936 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4937 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4938 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4939 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4940 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4941
4942 diag_printf("hub_port_connect_change ===>\n");
4943 #ifndef CONFIG_FARADAY_FOTG200
4944 diag_printf (
4945 "port %d, status %x, change %x, %s\n",
4946 port + 1, portstatus, portchange, portspeed (portstatus));
4947 #else
4948 dev_dbg (&hubstate->intf->dev,
4949 "port %d, status %x, change %x\n",
4950 port + 1, portstatus, portchange);
4951 #endif
4952 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4953 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4954 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4955 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4956 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4957 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4958 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4959 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4960 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4961 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4962 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4963 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4964 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4965 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4966 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4967 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4968 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4969 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4970 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4971 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4972 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4973 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4974 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4975 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4976 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4977 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4978 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4979 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4980 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4981 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4982 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4983 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4984 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4985 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4986 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4987 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4988 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4989 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4990 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4991 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4992 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4993 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4994 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4995 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4996 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4997 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4998 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
4999 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5000 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5001 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5002 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5003 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5004 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5005 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5006 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5007 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5008 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5009 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5010 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5011 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5012 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5013 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5014 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5015 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5016 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5017 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5018
5019 clear_port_feature(hub, port + 1, USB_PORT_FEAT_C_CONNECTION);
5020
5021 if (hub->children[port])
5022 usb_disconnect(&hub->children[port]);
5023
5024 if (!(portstatus & USB_PORT_STAT_CONNECTION)) {
5025
5026 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5027 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5028 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5029 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5030 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5031 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5032 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5033 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5034 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5035 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5036 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5037 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5038 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5039 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5040 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5041 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5042 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5043 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5044 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5045 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5046 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5047 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5048 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5049 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5050 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5051 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5052 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5053 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5054 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5055 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5056 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5057 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5058 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5059 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5060 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5061 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5062 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5063 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5064 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5065 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5066 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5067 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5068 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5069 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5070 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5071 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5072 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5073 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5074 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5075 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5076 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5077 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5078 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5079 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5080 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5081 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5082 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5083 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5084 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5085 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5086 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5087 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5088 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5089 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5090 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5091 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5092 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5093 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5094 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5095 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5096 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5097 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5098 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5099 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5100 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5101 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5102 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5103 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5104 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5105 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5106 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5107 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5108 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5109 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5110 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5111 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5112 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5113 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5114 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5115 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5116 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5117 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5118 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5119 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5120 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5121 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5122
5123 if (portstatus & USB_PORT_STAT_ENABLE)
5124 hub_port_disable(hub, port);
5125 return;
5126 }
5127
5128 if (hub_port_debounce(hub, port)) {
5129 dev_err (&hubstate->intf->dev,
5130 "connect-debounce failed, port %d disabled\n",
5131 port+1);
5132 hub_port_disable(hub, port);
5133 return;
5134 }
5135 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5136 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5137 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5138 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5139 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5140 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5141 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5142 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5143 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5144 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5145 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5146 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5147 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5148 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5149 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5150 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5151 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5152 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5153 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5154 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5155 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5156 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5157 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5158 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5159 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5160 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5161 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5162 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5163 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5164 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5165 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5166 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5167 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5168 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5169 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5170 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5171 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5172 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5173 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5174 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5175 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5176 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5177 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5178 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5179 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5180 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5181 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5182 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5183 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5184 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5185 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5186 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5187 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5188 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5189 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5190 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5191 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5192 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5193 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5194 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5195 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5196 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5197 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5198 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5199 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5200 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5201 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5202 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5203 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5204 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5205 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5206 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5207 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5208 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5209 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5210 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5211 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5212 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5213 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5214 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5215 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5216 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5217 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5218 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5219 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5220 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5221 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5222 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5223 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5224 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5225 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5226 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5227 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5228 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5229 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5230 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5231
5232
5233
5234 if (!hub->parent)
5235 delay = HUB_ROOT_RESET_TIME;
5236
5237 if (portstatus & USB_PORT_STAT_LOW_SPEED)
5238 delay = HUB_LONG_RESET_TIME;
5239
5240 down(&usb_address0_sem);
5241 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5242 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5243 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5244 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5245 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5246 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5247 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5248 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5249 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5250 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5251 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5252 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5253 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5254 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5255 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5256 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5257 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5258 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5259 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5260 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5261 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5262 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5263 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5264 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5265 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5266 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5267 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5268 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5269 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5270 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5271 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5272 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5273 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5274 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5275 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5276 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5277 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5278 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5279 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5280 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5281 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5282 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5283 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5284 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5285 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5286 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5287 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5288 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5289 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5290 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5291 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5292 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5293 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5294 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5295 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5296 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5297 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5298 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5299 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5300 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5301 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5302 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5303 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5304 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5305 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5306 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5307 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5308 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5309 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5310 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5311 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5312 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5313 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5314 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5315 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5316 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5317 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5318 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5319 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5320 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5321 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5322 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5323 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5324 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5325 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5326 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5327 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5328 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5329 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5330 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5331 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5332 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5333 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5334 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5335 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5336 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5337
5338 for (i = 0; i < HUB_PROBE_TRIES; i++) {
5339 struct usb_device *pdev;
5340 int len;
5341
5342 dev = usb_alloc_dev(hub, hub->bus);
5343 if (!dev) {
5344 dev_err (&hubstate->intf->dev,
5345 "couldn't allocate usb_device%s","\n");
5346 break;
5347 }
5348
5349 hub->children[port] = dev;
5350 dev->state = USB_STATE_POWERED;
5351
5352 //diag_printf("hcd->product_desc: (%s)\n", hcd->product_desc);
5353 if ( (hub->parent == NULL) && (hcd->isBadDevice) )
5354 {
5355 struct ehci_hcd *ehci = hcd_to_ehci (hcd);
5356 U32 temp;
5357 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5358 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5359 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5360 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5361 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5362 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5363 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5364 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5365 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5366 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5367 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5368 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5369 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5370 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5371 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5372 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5373 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5374 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5375 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5376 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5377 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5378 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5379 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5380 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5381 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5382 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5383 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5384 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5385 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5386 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5387 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5388 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5389 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5390 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5391 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5392 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5393 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5394 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5395 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5396 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5397 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5398 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5399 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5400 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5401 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5402 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5403 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5404 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5405 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5406 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5407 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5408 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5409 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5410 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5411 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5412 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5413 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5414 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5415 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5416 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5417 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5418 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5419 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5420 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5421 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5422 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5423 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5424 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5425 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5426 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5427 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5428 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5429 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5430 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5431 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5432 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5433 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5434 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5435 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5436 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5437 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5438 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5439 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5440 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5441 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5442 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5443 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5444 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5445 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5446 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5447 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5448 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5449 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5450 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5451 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5452 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5453
5454 if (hcd->badDeviceCnt == 3)
5455 {
5456 temp = ehci_readl((U32)&ehci->regs->bus_control);
5457 temp |= 0x80; //force enter FSmode
5458 ehci_writel(temp, (U32)&ehci->regs->bus_control);
5459 diag_printf("force enter FSmode\n");
5460 }
5461 hcd->isRootHubPortReset = TRUE;
5462 hcd->isBadDevice = FALSE;
5463 }
5464
5465 if (hcd->isRootHubPortReset)
5466 {
5467 hcd->isRootHubPortReset = FALSE;
5468 }
5469
5470 if (hub_port_reset(hub, port, dev, delay)) {
5471 usb_put_dev(dev);
5472 if (i == 0)
5473 continue;
5474 else
5475 break;
5476 }
5477
5478 if (hub->parent == NULL)
5479 {
5480
5481 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5482 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5483 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5484 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5485 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5486 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5487 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5488 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5489 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5490 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5491 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5492 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5493 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5494 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5495 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5496 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5497 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5498 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5499 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5500 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5501 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5502 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5503 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5504 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5505 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5506 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5507 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5508 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5509 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5510 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5511 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5512 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5513 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5514 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5515 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5516 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5517 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5518 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5519 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5520 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5521 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5522 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5523 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5524 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5525 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5526 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5527 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5528 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5529 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5530 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5531 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5532 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5533 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5534 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5535 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5536 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5537 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5538 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5539 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5540 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5541 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5542 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5543 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5544 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5545 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5546 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5547 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5548 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5549 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5550 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5551 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5552 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5553 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5554 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5555 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5556 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5557 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5558 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5559 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5560 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5561 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5562 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5563 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5564 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5565 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5566 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5567 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5568 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5569 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5570 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5571 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5572 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5573 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5574 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5575 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5576 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5577 struct ehci_hcd *ehci = hcd_to_ehci (hcd);
5578 U32 temp = ehci_readl((U32)&ehci->regs->port_status[0]);
5579
5580 if (!(temp & PORT_CONNECT))
5581 break;
5582 }
5583
5584 usb_choose_address(dev);
5585
5586 #ifndef CONFIG_FARADAY_FOTG200
5587 if (hub->tt) {
5588 dev->tt = hub->tt;
5589 dev->ttport = hub->ttport;
5590 }
5591 else if (dev->speed != USB_SPEED_HIGH
5592 && hub->speed == USB_SPEED_HIGH) {
5593 dev->tt = &hubstate->tt;
5594 dev->ttport = port + 1;
5595 }
5596 #endif
5597 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5598 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5599 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5600 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5601 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5602 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5603 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5604 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5605 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5606 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5607 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5608 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5609 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5610 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5611 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5612 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5613 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5614 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5615 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5616 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5617 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5618 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5619 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5620 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5621 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5622 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5623 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5624 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5625 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5626 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5627 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5628 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5629 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5630 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5631 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5632 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5633 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5634 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5635 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5636 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5637 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5638 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5639 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5640 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5641 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5642 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5643 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5644 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5645 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5646 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5647 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5648 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5649 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5650 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5651 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5652 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5653 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5654 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5655 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5656 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5657 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5658 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5659 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5660 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5661 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5662 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5663 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5664 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5665 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5666 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5667 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5668 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5669 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5670 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5671 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5672 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5673 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5674 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5675 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5676 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5677 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5678 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5679 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5680 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5681 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5682 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5683 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5684 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5685 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5686 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5687 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5688 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5689 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5690 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5691 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5692 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5693
5694
5695 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5696 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5697 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5698 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5699 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5700 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5701 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5702 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5703 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5704 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5705 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5706 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5707 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5708 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5709 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5710 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5711 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5712 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5713 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5714 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5715 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5716 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5717 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5718 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5719 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5720 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5721 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5722 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5723 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5724 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5725 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5726 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5727 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5728 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5729 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5730 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5731 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5732 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5733 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5734 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5735 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5736 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5737 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5738 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5739 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5740 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5741 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5742 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5743 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5744 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5745 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5746 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5747 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5748 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5749 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5750 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5751 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5752 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5753 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5754 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5755 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5756 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5757 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5758 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5759 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5760 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5761 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5762 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5763 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5764 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5765 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5766 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5767 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5768 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5769 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5770 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5771 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5772 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5773 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5774 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5775 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5776 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5777 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5778 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5779 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5780 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5781 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5782 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5783 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5784 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5785 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5786 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5787 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5788 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5789 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5790 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5791 pdev = dev->parent;
5792 if (pdev->devpath [0] != '0')
5793 len = USB_sprintf (dev->devpath,
5794 "%s.%d", pdev->devpath, port + 1);
5795 else
5796 len = USB_sprintf (dev->devpath,
5797 "%d", port + 1);
5798 if (len == sizeof dev->devpath) {
5799 dev_err (&hubstate->intf->dev,
5800 "devpath size! usb/%03d/%03d path %s\n",
5801 dev->bus->busnum, dev->devnum, dev->devpath);
5802 }
5803
5804 dev_info (&hubstate->intf->dev,
5805 "new USB device on port %d, assigned address %d\n",
5806 port + 1, dev->devnum);
5807
5808 dev->dev.parent = dev->parent->dev.parent->parent;
5809 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5810 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5811 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5812 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5813 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5814 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5815 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5816 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5817 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5818 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5819 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5820 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5821 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5822 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5823 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5824 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5825 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5826 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5827 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5828 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5829 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5830 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5831 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5832 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5833 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5834 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5835 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5836 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5837 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5838 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5839 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5840 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5841 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5842 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5843 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5844 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5845 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5846 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5847 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5848 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5849 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5850 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5851 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5852 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5853 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5854 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5855 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5856 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5857 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5858 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5859 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5860 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5861 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5862 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5863 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5864 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5865 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5866 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5867 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5868 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5869 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5870 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5871 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5872 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5873 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5874 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5875 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5876 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5877 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5878 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5879 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5880 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5881 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5882 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5883 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5884 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5885 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5886 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5887 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5888 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5889 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5890 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5891 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5892 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5893 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5894 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5895 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5896 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5897 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5898 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5899 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5900 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5901 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5902 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5903 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5904 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5905
5906 g_CurntPort = port;
5907 if (!usb_new_device(dev, &hub->dev))
5908 goto done;
5909
5910 //Clean qh buffer
5911 phcd_dev = (struct hcd_dev *)dev->hcpriv;
5912 ehci_endpoint_disable(hcd, phcd_dev, 0);
5913
5914 usb_put_dev(dev);
5915
5916 delay = HUB_LONG_RESET_TIME;
5917 }
5918
5919
5920 diag_printf("HUB_PROBE_TRIES fail, i = %d\n", i);
5921 hub->children[port] = NULL;
5922 hub_port_disable(hub, port);
5923 done:
5924 up(&usb_address0_sem);
5925 }
5926 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5927 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5928 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5929 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5930 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5931 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5932 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5933 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5934 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5935 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5936 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5937 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5938 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5939 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5940 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5941 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5942 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5943 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5944 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5945 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5946 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5947 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5948 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5949 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5950 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5951 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5952 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5953 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5954 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5955 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5956 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5957 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5958 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5959 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5960 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5961 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5962 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5963 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5964 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5965 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5966 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5967 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5968 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5969 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5970 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5971 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5972 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5973 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5974 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5975 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5976 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5977 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5978 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5979 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5980 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5981 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5982 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5983 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5984 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5985 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5986 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5987 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5988 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5989 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5990 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5991 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5992 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5993 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5994 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5995 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5996 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5997 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5998 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
5999 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6000 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6001 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6002 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6003 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6004 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6005 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6006 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6007 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6008 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6009 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6010 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6011 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6012 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6013 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6014 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6015 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6016 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6017 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6018 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6019 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6020 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6021 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6022
clean_hub_events(void)6023 void clean_hub_events(void)
6024 {
6025 struct list_head *tmp;
6026
6027 // MsOS_DisableInterrupt(E_IRQ_FIQ_ALL);
6028 MS_U32 u32OldIntr;
6029 u32OldIntr = MsOS_DisableAllInterrupts();
6030
6031 while (1) {
6032 if (list_empty(&hub_event_list))
6033 break;
6034 tmp = hub_event_list.next;
6035 list_del_init(tmp);
6036 }
6037
6038 // MsOS_EnableInterrupt(E_IRQ_FIQ_ALL);
6039 MsOS_RestoreAllInterrupts(u32OldIntr);
6040
6041 }
6042 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6043 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6044 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6045 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6046 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6047 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6048 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6049 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6050 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6051 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6052 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6053 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6054 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6055 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6056 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6057 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6058 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6059 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6060 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6061 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6062 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6063 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6064 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6065 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6066 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6067 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6068 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6069 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6070 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6071 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6072 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6073 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6074 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6075 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6076 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6077 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6078 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6079 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6080 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6081 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6082 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6083 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6084 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6085 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6086 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6087 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6088 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6089 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6090 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6091 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6092 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6093 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6094 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6095 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6096 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6097 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6098 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6099 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6100 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6101 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6102 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6103 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6104 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6105 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6106 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6107 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6108 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6109 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6110 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6111 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6112 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6113 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6114 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6115 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6116 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6117 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6118 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6119 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6120 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6121 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6122 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6123 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6124 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6125 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6126 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6127 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6128 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6129 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6130 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6131 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6132 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6133 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6134 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6135 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6136 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6137 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6138
has_hub_events(U16 * pPortStatus)6139 BOOL has_hub_events(U16 *pPortStatus)
6140 {
6141 //U16 portstatus;
6142 BOOL status;
6143 U16 portchange;
6144 struct list_head *tmp;
6145 struct usb_device *dev;
6146 struct usb_hub *hub;
6147 //int i, ret;
6148
6149 USBCriticalSectionIn(0);
6150 if (list_empty(&hub_event_list))
6151 status = FALSE;
6152 else
6153 {
6154 U32 u32OldIntr;
6155 u32OldIntr = MsOS_DisableAllInterrupts();
6156
6157 tmp = hub_event_list.next;
6158 hub = list_entry(tmp, struct usb_hub, event_list);
6159 dev = interface_to_usbdev(hub->intf);
6160
6161 //MsOS_EnableInterrupt(E_IRQ_FIQ_ALL);
6162 MsOS_RestoreAllInterrupts(u32OldIntr);
6163
6164
6165 hub_port_status(dev, 0, pPortStatus, &portchange);
6166 //diag_printf("<has_hub_events> portstatus: %X\n", *pPortStatus);
6167
6168 if (portchange & USB_PORT_STAT_C_CONNECTION)
6169 status = TRUE;
6170 else
6171 status = FALSE;
6172 }
6173
6174 USBCriticalSectionOut(0);
6175 return status;
6176 }
6177 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6178 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6179 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6180 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6181 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6182 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6183 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6184 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6185 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6186 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6187 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6188 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6189 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6190 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6191 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6192 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6193 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6194 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6195 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6196 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6197 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6198 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6199 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6200 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6201 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6202 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6203 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6204 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6205 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6206 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6207 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6208 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6209 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6210 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6211 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6212 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6213 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6214 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6215 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6216 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6217 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6218 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6219 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6220 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6221 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6222 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6223 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6224 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6225 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6226 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6227 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6228 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6229 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6230 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6231 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6232 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6233 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6234 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6235 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6236 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6237 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6238 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6239 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6240 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6241 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6242 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6243 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6244 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6245 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6246 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6247 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6248 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6249 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6250 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6251 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6252 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6253 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6254 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6255 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6256 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6257 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6258 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6259 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6260 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6261 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6262 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6263 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6264 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6265 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6266 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6267 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6268 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6269 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6270 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6271 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6272 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6273
hub_events(void)6274 static void hub_events(void)
6275 {
6276 U32 flags;
6277 struct list_head *tmp;
6278 struct usb_device *dev;
6279 struct usb_hub *hub;
6280 U16 hubstatus;
6281 U16 hubchange;
6282 U16 portstatus;
6283 U16 portchange;
6284 int i, ret;
6285
6286 while (1) {
6287 spin_lock_irqsave(&hub_event_lock, flags);
6288
6289 if (list_empty(&hub_event_list))
6290 break;
6291
6292 // MsOS_DisableInterrupt(E_IRQ_FIQ_ALL);
6293 U32 u32OldIntr;
6294 u32OldIntr = MsOS_DisableAllInterrupts();
6295
6296 tmp = hub_event_list.next;
6297
6298 hub = list_entry(tmp, struct usb_hub, event_list);
6299 //list_entry(tmp, struct usb_hub, event_list,struct list_head, hub);
6300 dev = interface_to_usbdev(hub->intf);
6301
6302 list_del_init(tmp);
6303 // MsOS_EnableInterrupt(E_IRQ_FIQ_ALL);
6304 MsOS_RestoreAllInterrupts(u32OldIntr);
6305
6306 //if (unlikely(down_trylock(&hub->khubd_sem)))
6307
6308 spin_unlock_irqrestore(&hub_event_lock, flags);
6309
6310 if (hub->error) {
6311 dev_dbg (&hub->intf->dev, "resetting for error %d\n",
6312 hub->error);
6313
6314 if (hub_reset(hub)) {
6315 dev_dbg (&hub->intf->dev,
6316 "can't reset; disconnecting%s","\n");
6317 up(&hub->khubd_sem);
6318 hub_start_disconnect(dev);
6319 continue;
6320 }
6321
6322 hub->nerrors = 0;
6323 hub->error = 0;
6324 }
6325 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6326 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6327 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6328 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6329 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6330 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6331 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6332 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6333 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6334 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6335 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6336 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6337 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6338 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6339 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6340 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6341 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6342 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6343 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6344 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6345 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6346 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6347 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6348 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6349 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6350 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6351 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6352 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6353 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6354 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6355 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6356 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6357 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6358 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6359 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6360 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6361 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6362 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6363 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6364 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6365 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6366 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6367 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6368 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6369 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6370 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6371 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6372 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6373 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6374 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6375 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6376 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6377 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6378 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6379 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6380 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6381 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6382 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6383 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6384 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6385 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6386 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6387 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6388 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6389 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6390 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6391 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6392 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6393 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6394 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6395 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6396 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6397 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6398 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6399 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6400 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6401 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6402 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6403 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6404 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6405 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6406 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6407 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6408 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6409 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6410 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6411 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6412 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6413 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6414 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6415 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6416 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6417 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6418 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6419 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6420 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6421
6422 //diag_printf("get hub event\n");
6423 for (i = 0; i < hub->descriptor.bNbrPorts; i++) {
6424 ret = hub_port_status(dev, i, &portstatus, &portchange);
6425 if (ret < 0) {
6426 continue;
6427 }
6428 if (portchange & USB_PORT_STAT_C_CONNECTION) {
6429 hub_port_connect_change(hub, i, portstatus, portchange);
6430 } else if (portchange & USB_PORT_STAT_C_ENABLE) {
6431 dev_dbg (hubdev (dev),
6432 "port %d enable change, status %x\n",
6433 i + 1, portstatus);
6434 clear_port_feature(dev,
6435 i + 1, USB_PORT_FEAT_C_ENABLE);
6436 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6437 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6438 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6439 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6440 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6441 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6442 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6443 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6444 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6445 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6446 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6447 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6448 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6449 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6450 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6451 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6452 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6453 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6454 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6455 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6456 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6457 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6458 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6459 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6460 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6461 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6462 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6463 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6464 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6465 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6466 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6467 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6468 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6469 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6470 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6471 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6472 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6473 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6474 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6475 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6476 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6477 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6478 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6479 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6480 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6481 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6482 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6483 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6484 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6485 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6486 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6487 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6488 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6489 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6490 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6491 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6492 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6493 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6494 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6495 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6496 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6497 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6498 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6499 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6500 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6501 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6502 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6503 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6504 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6505 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6506 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6507 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6508 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6509 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6510 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6511 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6512 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6513 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6514 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6515 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6516 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6517 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6518 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6519 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6520 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6521 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6522 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6523 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6524 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6525 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6526 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6527 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6528 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6529 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6530 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6531 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6532
6533
6534 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6535 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6536 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6537 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6538 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6539 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6540 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6541 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6542 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6543 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6544 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6545 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6546 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6547 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6548 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6549 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6550 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6551 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6552 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6553 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6554 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6555 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6556 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6557 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6558 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6559 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6560 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6561 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6562 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6563 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6564 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6565 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6566 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6567 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6568 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6569 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6570 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6571 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6572 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6573 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6574 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6575 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6576 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6577 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6578 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6579 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6580 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6581 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6582 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6583 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6584 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6585 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6586 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6587 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6588 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6589 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6590 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6591 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6592 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6593 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6594 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6595 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6596 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6597 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6598 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6599 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6600 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6601 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6602 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6603 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6604 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6605 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6606 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6607 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6608 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6609 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6610 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6611 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6612 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6613 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6614 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6615 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6616 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6617 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6618 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6619 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6620 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6621 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6622 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6623 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6624 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6625 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6626 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6627 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6628 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6629 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6630 if (!(portstatus & USB_PORT_STAT_ENABLE)
6631 && (portstatus & USB_PORT_STAT_CONNECTION)
6632 && (dev->children[i])) {
6633 dev_err (&hub->intf->dev,
6634 "port %i "
6635 "disabled by hub (EMI?), "
6636 "re-enabling...",
6637 i + 1);
6638 hub_port_connect_change(hub,
6639 i, portstatus, portchange);
6640 }
6641 }
6642 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6643 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6644 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6645 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6646 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6647 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6648 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6649 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6650 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6651 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6652 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6653 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6654 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6655 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6656 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6657 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6658 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6659 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6660 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6661 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6662 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6663 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6664 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6665 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6666 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6667 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6668 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6669 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6670 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6671 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6672 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6673 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6674 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6675 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6676 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6677 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6678 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6679 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6680 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6681 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6682 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6683 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6684 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6685 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6686 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6687 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6688 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6689 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6690 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6691 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6692 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6693 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6694 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6695 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6696 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6697 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6698 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6699 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6700 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6701 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6702 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6703 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6704 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6705 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6706 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6707 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6708 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6709 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6710 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6711 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6712 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6713 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6714 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6715 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6716 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6717 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6718 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6719 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6720 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6721 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6722 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6723 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6724 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6725 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6726 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6727 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6728 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6729 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6730 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6731 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6732 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6733 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6734 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6735 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6736 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6737 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6738
6739 if (portchange & USB_PORT_STAT_C_SUSPEND) {
6740 dev_dbg (&hub->intf->dev,
6741 "suspend change on port %d\n",
6742 i + 1);
6743 clear_port_feature(dev,
6744 i + 1, USB_PORT_FEAT_C_SUSPEND);
6745 }
6746
6747 if (portchange & USB_PORT_STAT_C_OVERCURRENT) {
6748 dev_err (&hub->intf->dev,
6749 "over-current change on port %d\n",
6750 i + 1);
6751 clear_port_feature(dev,
6752 i + 1, USB_PORT_FEAT_C_OVER_CURRENT);
6753 hub_power_on(hub);
6754 }
6755
6756 if (portchange & USB_PORT_STAT_C_RESET) {
6757 dev_dbg (&hub->intf->dev,
6758 "reset change on port %d\n",
6759 i + 1);
6760 clear_port_feature(dev,
6761 i + 1, USB_PORT_FEAT_C_RESET);
6762 }
6763 } /* end for i */
6764 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6765 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6766 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6767 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6768 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6769 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6770 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6771 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6772 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6773 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6774 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6775 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6776 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6777 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6778 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6779 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6780 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6781 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6782 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6783 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6784 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6785 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6786 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6787 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6788 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6789 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6790 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6791 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6792 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6793 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6794 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6795 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6796 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6797 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6798 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6799 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6800 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6801 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6802 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6803 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6804 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6805 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6806 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6807 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6808 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6809 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6810 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6811 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6812 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6813 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6814 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6815 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6816 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6817 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6818 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6819 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6820 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6821 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6822 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6823 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6824 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6825 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6826 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6827 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6828 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6829 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6830 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6831 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6832 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6833 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6834 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6835 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6836 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6837 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6838 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6839 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6840 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6841 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6842 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6843 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6844 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6845 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6846 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6847 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6848 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6849 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6850 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6851 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6852 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6853 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6854 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6855 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6856 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6857 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6858 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6859 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6860
6861 if (hub_hub_status(hub, &hubstatus, &hubchange) < 0) {
6862 dev_err (&hub->intf->dev, "get_hub_status failed%s","\n");
6863 }
6864 else {
6865 if (hubchange & HUB_CHANGE_LOCAL_POWER) {
6866 dev_dbg (&hub->intf->dev, "power change%s","\n");
6867 clear_hub_feature(dev, C_HUB_LOCAL_POWER);
6868 }
6869 if (hubchange & HUB_CHANGE_OVERCURRENT) {
6870 dev_dbg (&hub->intf->dev, "overcurrent change%s","\n");
6871 wait_ms(500);
6872 clear_hub_feature(dev, C_HUB_OVER_CURRENT);
6873 hub_power_on(hub);
6874 }
6875 }
6876 up(&hub->khubd_sem);
6877 } /* end while (1) */
6878
6879 spin_unlock_irqrestore(&hub_event_lock, flags);
6880 }
6881 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6882 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6883 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6884 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6885 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6886 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6887 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6888 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6889 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6890 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6891 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6892 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6893 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6894 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6895 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6896 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6897 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6898 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6899 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6900 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6901 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6902 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6903 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6904 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6905 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6906 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6907 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6908 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6909 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6910 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6911 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6912 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6913 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6914 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6915 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6916 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6917 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6918 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6919 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6920 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6921 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6922 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6923 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6924 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6925 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6926 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6927 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6928 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6929 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6930 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6931 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6932 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6933 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6934 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6935 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6936 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6937 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6938 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6939 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6940 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6941 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6942 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6943 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6944 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6945 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6946 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6947 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6948 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6949 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6950 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6951 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6952 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6953 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6954 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6955 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6956 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6957 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6958 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6959 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6960 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6961 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6962 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6963 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6964 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6965 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6966 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6967 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6968 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6969 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6970 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6971 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6972 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6973 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6974 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6975 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6976 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
6977
6978 #if 0
6979 static int hub_thread(void *__hub)
6980 {
6981 do {
6982 hub_events();
6983 }while(1);
6984
6985 dbg("hub_thread exiting%s","");
6986 //complete_and_exit(&khubd_exited, 0);
6987 return 0;
6988 }
6989 #endif
6990
hub_poll(void)6991 void hub_poll(void)
6992 {
6993 //check_usb_lock();
6994 USBCriticalSectionIn(0);
6995 hub_events();
6996 USBCriticalSectionOut(0);
6997
6998 //unlock_usb_core();
6999 }
7000 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7001 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7002 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7003 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7004 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7005 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7006 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7007 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7008 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7009 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7010 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7011 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7012 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7013 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7014 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7015 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7016 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7017 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7018 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7019 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7020 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7021 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7022 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7023 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7024 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7025 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7026 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7027 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7028 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7029 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7030 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7031 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7032 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7033 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7034 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7035 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7036 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7037 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7038 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7039 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7040 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7041 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7042 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7043 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7044 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7045 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7046 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7047 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7048 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7049 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7050 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7051 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7052 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7053 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7054 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7055 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7056 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7057 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7058 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7059 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7060 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7061 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7062 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7063 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7064 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7065 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7066 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7067 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7068 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7069 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7070 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7071 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7072 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7073 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7074 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7075 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7076 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7077 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7078 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7079 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7080 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7081 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7082 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7083 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7084 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7085 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7086 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7087 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7088 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7089 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7090 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7091 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7092 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7093 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7094 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7095 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7096
7097 static struct usb_device_id hub_id_table [] = {
7098 { USB_DEVICE_ID_MATCH_DEV_CLASS,0,0,0,0,USB_CLASS_HUB,0,0,0,0,0,0},
7099 { USB_DEVICE_ID_MATCH_INT_CLASS,0,0,0,0,0,0,0,USB_CLASS_HUB,0,0,0},
7100 { 0,0,0,0,0,0,0,0,0,0,0,0}
7101
7102 };
7103
7104 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7105 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7106 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7107 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7108 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7109 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7110 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7111 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7112 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7113 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7114 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7115 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7116 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7117 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7118 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7119 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7120 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7121 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7122 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7123 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7124 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7125 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7126 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7127 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7128 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7129 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7130 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7131 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7132 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7133 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7134 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7135 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7136 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7137 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7138 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7139 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7140 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7141 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7142 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7143 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7144 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7145 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7146 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7147 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7148 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7149 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7150 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7151 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7152 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7153 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7154 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7155 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7156 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7157 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7158 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7159 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7160 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7161 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7162 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7163 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7164 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7165 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7166 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7167 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7168 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7169 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7170 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7171 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7172 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7173 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7174 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7175 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7176 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7177 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7178 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7179 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7180 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7181 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7182 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7183 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7184 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7185 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7186 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7187 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7188 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7189 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7190 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7191 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7192 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7193 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7194 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7195 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7196 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7197 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7198 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7199 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7200
7201 static struct usb_driver hub_driver = {
7202 NULL,
7203 "hub",
7204 hub_probe,
7205 hub_disconnect,
7206 hub_ioctl,
7207 hub_id_table
7208 };
7209
7210 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7211 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7212 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7213 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7214 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7215 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7216 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7217 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7218 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7219 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7220 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7221 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7222 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7223 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7224 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7225 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7226 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7227 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7228 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7229 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7230 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7231 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7232 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7233 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7234 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7235 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7236 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7237 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7238 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7239 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7240 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7241 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7242 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7243 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7244 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7245 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7246 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7247 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7248 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7249 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7250 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7251 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7252 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7253 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7254 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7255 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7256 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7257 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7258 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7259 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7260 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7261 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7262 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7263 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7264 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7265 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7266 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7267 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7268 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7269 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7270 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7271 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7272 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7273 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7274 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7275 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7276 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7277 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7278 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7279 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7280 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7281 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7282 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7283 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7284 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7285 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7286 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7287 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7288 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7289 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7290 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7291 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7292 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7293 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7294 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7295 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7296 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7297 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7298 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7299 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7300 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7301 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7302 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7303 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7304 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7305 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7306
usb_hub_init(void)7307 int usb_hub_init(void)
7308 {
7309 //pid_t pid;
7310
7311
7312 if (usb_register(&hub_driver) < 0) {
7313 usb_err("Unable to register USB hub driver%s","");
7314 return -1;
7315 }
7316 // Start up hub thread here (if platform has OS support)
7317
7318 return 0;
7319 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7320 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7321 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7322 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7323 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7324 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7325 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7326 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7327 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7328 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7329 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7330 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7331 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7332 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7333 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7334 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7335 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7336 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7337 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7338 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7339 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7340 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7341 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7342 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7343 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7344 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7345 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7346 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7347 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7348 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7349 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7350 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7351 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7352 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7353 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7354 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7355 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7356 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7357 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7358 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7359 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7360 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7361 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7362 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7363 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7364 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7365 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7366 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7367 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7368 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7369 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7370 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7371 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7372 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7373 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7374 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7375 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7376 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7377 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7378 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7379 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7380 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7381 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7382 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7383 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7384 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7385 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7386 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7387 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7388 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7389 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7390 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7391 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7392 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7393 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7394 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7395 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7396 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7397 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7398 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7399 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7400 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7401 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7402 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7403 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7404 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7405 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7406 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7407 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7408 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7409 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7410 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7411 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7412 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7413 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7414 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7415
7416 /*
7417 pid = kernel_thread(hub_thread, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND);
7418
7419 if (pid >= 0) {
7420 khubd_pid = pid;
7421
7422 return 0;
7423 }
7424 */
7425
7426 usb_deregister(&hub_driver);
7427 usb_err("failed to start hub_thread%s","");
7428 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7429 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7430 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7431 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7432 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7433 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7434 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7435 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7436 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7437 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7438 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7439 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7440 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7441 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7442 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7443 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7444 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7445 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7446 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7447 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7448 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7449 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7450 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7451 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7452 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7453 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7454 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7455 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7456 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7457 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7458 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7459 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7460 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7461 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7462 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7463 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7464 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7465 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7466 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7467 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7468 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7469 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7470 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7471 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7472 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7473 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7474 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7475 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7476 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7477 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7478 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7479 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7480 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7481 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7482 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7483 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7484 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7485 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7486 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7487 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7488 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7489 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7490 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7491 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7492 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7493 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7494 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7495 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7496 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7497 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7498 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7499 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7500 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7501 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7502 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7503 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7504 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7505 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7506 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7507 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7508 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7509 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7510 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7511 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7512 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7513 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7514 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7515 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7516 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7517 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7518 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7519 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7520 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7521 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7522 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7523 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7524
7525 return -1;
7526 }
7527
usb_hub_cleanup(void)7528 void usb_hub_cleanup(void)
7529 {
7530 //int ret;
7531
7532 //ret = kill_proc(khubd_pid, SIGKILL, 1);
7533
7534 //wait_for_completion(&khubd_exited);
7535 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7536 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7537 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7538 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7539 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7540 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7541 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7542 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7543 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7544 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7545 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7546 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7547 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7548 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7549 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7550 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7551 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7552 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7553 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7554 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7555 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7556 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7557 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7558 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7559 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7560 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7561 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7562 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7563 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7564 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7565 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7566 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7567 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7568 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7569 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7570 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7571 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7572 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7573 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7574 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7575 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7576 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7577 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7578 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7579 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7580 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7581 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7582 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7583 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7584 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7585 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7586 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7587 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7588 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7589 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7590 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7591 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7592 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7593 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7594 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7595 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7596 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7597 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7598 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7599 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7600 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7601 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7602 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7603 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7604 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7605 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7606 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7607 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7608 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7609 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7610 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7611 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7612 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7613 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7614 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7615 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7616 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7617 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7618 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7619 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7620 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7621 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7622 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7623 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7624 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7625 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7626 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7627 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7628 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7629 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7630 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7631
7632
7633 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7634 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7635 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7636 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7637 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7638 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7639 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7640 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7641 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7642 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7643 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7644 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7645 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7646 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7647 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7648 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7649 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7650 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7651 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7652 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7653 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7654 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7655 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7656 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7657 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7658 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7659 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7660 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7661 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7662 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7663 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7664 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7665 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7666 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7667 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7668 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7669 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7670 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7671 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7672 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7673 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7674 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7675 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7676 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7677 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7678 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7679 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7680 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7681 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7682 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7683 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7684 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7685 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7686 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7687 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7688 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7689 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7690 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7691 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7692 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7693 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7694 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7695 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7696 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7697 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7698 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7699 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7700 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7701 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7702 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7703 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7704 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7705 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7706 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7707 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7708 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7709 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7710 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7711 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7712 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7713 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7714 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7715 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7716 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7717 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7718 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7719 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7720 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7721 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7722 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7723 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7724 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7725 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7726 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7727 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7728 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7729 usb_deregister(&hub_driver);
7730 }
7731
7732
7733 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7734 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7735 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7736 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7737 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7738 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7739 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7740 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7741 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7742 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7743 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7744 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7745 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7746 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7747 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7748 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7749 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7750 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7751 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7752 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7753 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7754 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7755 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7756 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7757 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7758 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7759 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7760 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7761 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7762 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7763 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7764 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7765 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7766 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7767 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7768 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7769 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7770 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7771 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7772 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7773 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7774 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7775 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7776 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7777 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7778 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7779 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7780 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7781 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7782 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7783 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7784 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7785 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7786 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7787 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7788 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7789 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7790 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7791 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7792 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7793 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7794 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7795 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7796 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7797 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7798 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7799 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7800 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7801 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7802 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7803 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7804 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7805 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7806 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7807 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7808 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7809 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7810 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7811 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7812 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7813 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7814 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7815 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7816 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7817 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7818 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7819 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7820 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7821 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7822 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7823 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7824 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7825 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7826 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7827 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7828 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
usb_physical_reset_device(struct usb_device * dev)7829 int usb_physical_reset_device(struct usb_device *dev)
7830 {
7831 struct usb_device *parent = dev->parent;
7832 struct usb_device_descriptor *descriptor;
7833 int i, ret, port = -1;
7834
7835 if (!parent) {
7836 usb_err("attempting to reset root hub!%s","");
7837 return -EINVAL;
7838 }
7839 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7840 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7841 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7842 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7843 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7844 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7845 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7846 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7847 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7848 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7849 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7850 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7851 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7852 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7853 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7854 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7855 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7856 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7857 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7858 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7859 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7860 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7861 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7862 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7863 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7864 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7865 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7866 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7867 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7868 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7869 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7870 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7871 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7872 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7873 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7874 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7875 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7876 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7877 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7878 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7879 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7880 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7881 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7882 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7883 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7884 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7885 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7886 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7887 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7888 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7889 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7890 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7891 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7892 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7893 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7894 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7895 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7896 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7897 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7898 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7899 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7900 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7901 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7902 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7903 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7904 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7905 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7906 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7907 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7908 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7909 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7910 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7911 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7912 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7913 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7914 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7915 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7916 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7917 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7918 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7919 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7920 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7921 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7922 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7923 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7924 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7925 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7926 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7927 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7928 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7929 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7930 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7931 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7932 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7933 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7934 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7935
7936 for (i = 0; i < parent->maxchild; i++)
7937 if (parent->children[i] == dev) {
7938 port = i;
7939 break;
7940 }
7941
7942 if (port < 0)
7943 return -ENOENT;
7944
7945 descriptor = (struct usb_device_descriptor*) kmalloc(sizeof *descriptor, GFP_NOIO);
7946 if (!descriptor) {
7947 return -ENOMEM;
7948 }
7949 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7950 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7951 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7952 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7953 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7954 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7955 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7956 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7957 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7958 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7959 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7960 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7961 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7962 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7963 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7964 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7965 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7966 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7967 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7968 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7969 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7970 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7971 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7972 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7973 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7974 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7975 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7976 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7977 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7978 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7979 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7980 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7981 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7982 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7983 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7984 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7985 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7986 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7987 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7988 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7989 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7990 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7991 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7992 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7993 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7994 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7995 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7996 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7997 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7998 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
7999 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8000 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8001 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8002 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8003 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8004 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8005 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8006 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8007 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8008 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8009 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8010 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8011 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8012 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8013 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8014 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8015 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8016 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8017 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8018 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8019 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8020 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8021 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8022 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8023 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8024 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8025 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8026 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8027 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8028 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8029 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8030 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8031 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8032 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8033 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8034 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8035 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8036 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8037 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8038 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8039 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8040 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8041 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8042 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8043 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8044 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8045
8046 down(&usb_address0_sem);
8047
8048 if (hub_port_reset(parent, port, dev, HUB_SHORT_RESET_TIME)) {
8049 hub_port_disable(parent, port);
8050 up(&usb_address0_sem);
8051 kfree(descriptor);
8052 return(-ENODEV);
8053 }
8054 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8055 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8056 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8057 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8058 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8059 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8060 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8061 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8062 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8063 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8064 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8065 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8066 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8067 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8068 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8069 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8070 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8071 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8072 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8073 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8074 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8075 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8076 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8077 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8078 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8079 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8080 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8081 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8082 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8083 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8084 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8085 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8086 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8087 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8088 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8089 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8090 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8091 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8092 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8093 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8094 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8095 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8096 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8097 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8098 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8099 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8100 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8101 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8102 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8103 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8104 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8105 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8106 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8107 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8108 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8109 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8110 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8111 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8112 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8113 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8114 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8115 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8116 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8117 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8118 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8119 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8120 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8121 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8122 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8123 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8124 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8125 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8126 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8127 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8128 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8129 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8130 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8131 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8132 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8133 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8134 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8135 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8136 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8137 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8138 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8139 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8140 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8141 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8142 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8143 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8144 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8145 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8146 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8147 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8148 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8149 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8150
8151 ret = usb_set_address(dev);
8152 if (ret < 0) {
8153 usb_err("USB device not accepting new address (error=%d)", ret);
8154 hub_port_disable(parent, port);
8155 up(&usb_address0_sem);
8156 kfree(descriptor);
8157 return ret;
8158 }
8159 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8160 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8161 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8162 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8163 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8164 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8165 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8166 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8167 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8168 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8169 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8170 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8171 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8172 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8173 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8174 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8175 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8176 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8177 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8178 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8179 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8180 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8181 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8182 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8183 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8184 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8185 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8186 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8187 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8188 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8189 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8190 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8191 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8192 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8193 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8194 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8195 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8196 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8197 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8198 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8199 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8200 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8201 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8202 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8203 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8204 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8205 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8206 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8207 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8208 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8209 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8210 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8211 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8212 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8213 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8214 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8215 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8216 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8217 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8218 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8219 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8220 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8221 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8222 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8223 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8224 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8225 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8226 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8227 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8228 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8229 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8230 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8231 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8232 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8233 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8234 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8235 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8236 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8237 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8238 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8239 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8240 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8241 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8242 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8243 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8244 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8245 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8246 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8247 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8248 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8249 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8250 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8251 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8252 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8253 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8254 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8255
8256 wait_ms(10);
8257
8258 up(&usb_address0_sem);
8259
8260
8261 ret = usb_get_descriptor(dev, USB_DT_DEVICE, 0, descriptor,
8262 sizeof(*descriptor));
8263 if (ret < 0) {
8264 kfree(descriptor);
8265 return ret;
8266 }
8267 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8268 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8269 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8270 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8271 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8272 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8273 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8274 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8275 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8276 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8277 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8278 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8279 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8280 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8281 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8282 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8283 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8284 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8285 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8286 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8287 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8288 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8289 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8290 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8291 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8292 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8293 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8294 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8295 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8296 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8297 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8298 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8299 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8300 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8301 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8302 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8303 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8304 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8305 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8306 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8307 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8308 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8309 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8310 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8311 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8312 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8313 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8314 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8315 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8316 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8317 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8318 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8319 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8320 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8321 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8322 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8323 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8324 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8325 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8326 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8327 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8328 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8329 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8330 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8331 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8332 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8333 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8334 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8335 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8336 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8337 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8338 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8339 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8340 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8341 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8342 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8343 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8344 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8345 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8346 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8347 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8348 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8349 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8350 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8351 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8352 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8353 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8354 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8355 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8356 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8357 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8358 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8359 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8360 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8361 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8362 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8363
8364 descriptor->bcdUSB = LE16ToCPU(descriptor->bcdUSB);
8365 descriptor->idVendor = LE16ToCPU(descriptor->idVendor);
8366 descriptor->idProduct = LE16ToCPU(descriptor->idProduct);
8367 descriptor->bcdDevice = LE16ToCPU(descriptor->bcdDevice);
8368
8369 if (memcmp(&dev->descriptor, descriptor, sizeof(*descriptor))) {
8370 kfree(descriptor);
8371 usb_destroy_configuration(dev);
8372
8373 ret = usb_get_device_descriptor(dev);
8374 if ((U32) ret < sizeof(dev->descriptor)) {
8375 if (ret < 0) {
8376 usb_err("unable to get device %s descriptor "
8377 "(error=%d)", dev->devpath, ret);
8378 }
8379 else
8380 usb_err("USB device %s descriptor short read "
8381 "(expected %i, got %i)",
8382 dev->devpath,
8383 sizeof(dev->descriptor), ret);
8384
8385 clear_bit(dev->devnum, dev->bus->devmap.devicemap,U32);
8386 dev->devnum = -1;
8387 return -EIO;
8388 }
8389
8390 ret = usb_get_configuration(dev);
8391 if (ret < 0) {
8392 usb_err("unable to get configuration (error=%d)", ret);
8393 usb_destroy_configuration(dev);
8394 clear_bit(dev->devnum, dev->bus->devmap.devicemap,U32);
8395 dev->devnum = -1;
8396 return 1;
8397 }
8398
8399 if(dev->descriptor.bDeviceClass == USB_CLASS_COMM)
8400 usb_set_configuration(dev, dev->config[1].desc.bConfigurationValue);
8401 else
8402 usb_set_configuration(dev, dev->config[0].desc.bConfigurationValue);
8403 return 1;
8404 }
8405
8406 kfree(descriptor);
8407 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8408 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8409 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8410 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8411 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8412 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8413 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8414 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8415 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8416 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8417 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8418 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8419 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8420 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8421 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8422 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8423 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8424 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8425 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8426 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8427 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8428 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8429 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8430 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8431 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8432 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8433 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8434 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8435 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8436 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8437 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8438 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8439 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8440 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8441 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8442 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8443 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8444 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8445 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8446 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8447 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8448 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8449 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8450 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8451 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8452 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8453 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8454 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8455 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8456 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8457 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8458 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8459 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8460 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8461 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8462 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8463 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8464 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8465 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8466 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8467 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8468 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8469 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8470 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8471 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8472 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8473 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8474 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8475 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8476 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8477 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8478 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8479 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8480 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8481 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8482 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8483 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8484 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8485 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8486 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8487 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8488 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8489 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8490 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8491 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8492 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8493 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8494 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8495 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8496 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8497 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8498 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8499 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8500 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8501 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8502 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8503
8504 // GGYY
8505 ret = usb_set_configuration(dev, dev->actconfig->desc.bConfigurationValue);
8506 #if 0
8507 ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
8508 USB_REQ_SET_CONFIGURATION, 0,
8509 dev->actconfig->desc.bConfigurationValue, 0,
8510 NULL, 0, HZ * USB_CTRL_SET_TIMEOUT);
8511
8512 if (ret < 0) {
8513 usb_err("failed to set dev %s active configuration (error=%d)",
8514 dev->devpath, ret);
8515 return ret;
8516 }
8517
8518 dev->state = USB_STATE_CONFIGURED; //Note_Timeout
8519 #endif
8520 #if 0
8521 for (i = 0; i < dev->actconfig->desc.bNumInterfaces; i++) {
8522 struct usb_interface *intf = dev->actconfig->interface[i];
8523 struct usb_interface_descriptor *as;
8524
8525 as = &intf->altsetting[intf->act_altsetting].desc;
8526 ret = usb_set_interface(dev, as->bInterfaceNumber,
8527 as->bAlternateSetting);
8528 if (ret < 0) {
8529 usb_err("failed to set active alternate setting "
8530 "for dev %s interface %d (error=%d)",
8531 dev->devpath, i, ret);
8532 return ret;
8533 }
8534 }
8535 #endif
8536
8537 diag_printf("usb_physical_reset_device done\n");
8538 return 0;
8539 }
8540
8541 //extern BOOL gIsBadDevice;
8542 //extern BOOL gIsBadDevice_Port2;
8543 //U8 g_usb_phy_reset_flg = FALSE;
8544 //U8 g_usb_phy_reset_flg_Port2 = FALSE;
8545 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8546 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8547 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8548 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8549 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8550 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8551 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8552 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8553 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8554 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8555 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8556 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8557 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8558 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8559 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8560 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8561 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8562 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8563 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8564 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8565 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8566 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8567 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8568 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8569 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8570 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8571 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8572 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8573 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8574 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8575 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8576 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8577 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8578 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8579 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8580 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8581 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8582 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8583 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8584 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8585 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8586 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8587 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8588 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8589 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8590 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8591 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8592 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8593 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8594 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8595 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8596 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8597 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8598 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8599 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8600 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8601 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8602 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8603 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8604 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8605 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8606 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8607 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8608 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8609 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8610 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8611 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8612 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8613 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8614 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8615 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8616 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8617 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8618 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8619 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8620 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8621 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8622 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8623 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8624 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8625 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8626 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8627 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8628 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8629 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8630 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8631 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8632 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8633 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8634 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8635 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8636 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8637 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8638 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8639 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8640 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8641
usb_reset_device(struct usb_device * udev)8642 int usb_reset_device(struct usb_device *udev)
8643 {
8644 struct usb_hcd *hcd = (struct usb_hcd*) udev->bus->hcpriv;
8645 struct ehci_hcd *ehci = hcd_to_ehci(hcd);
8646 U8 temp_s;
8647 int r;
8648
8649 //down_read(&gdev->bus->subsys.rwsem);
8650 diag_printf("usb_reset_device\n");
8651 temp_s = ehci_readb((U32)&ehci->regs->port_status[0]);
8652 temp_s &= PORT_CONNECT;
8653 if (temp_s == 0) // root hub disconnected
8654 return -1;
8655
8656 // if (udev->bus->hcpriv == cpe_ehci_dev.dev.driver_data)
8657 // {
8658 //g_usb_phy_reset_flg = TRUE;
8659 if ((udev->parent->parent == NULL) && hcd->isBadDevice) // one hub tier???
8660 {
8661 diag_printf("Reset the all USB\n");
8662 Usb_host_Init_EX(hcd);
8663 //Usb_host_Init();
8664 }
8665 // }
8666 // else
8667 // {
8668 //#ifdef USB_PORT2_ENABLE
8669 //g_usb_phy_reset_flg_Port2 = TRUE;
8670 // if ((udev->parent->parent== NULL) && hcd->isBadDevice)
8671 // {
8672 // diag_printf("Reset the all USB 2\n");
8673 // Usb_host_Init_EX(hcd);
8674 //Usb_host_Init_Port2();
8675 // }
8676 //#endif
8677 // }
8678
8679 r = usb_physical_reset_device(udev);
8680
8681 //if (udev->bus->hcpriv == cpe_ehci_dev.dev.driver_data)
8682 //g_usb_phy_reset_flg = FALSE;
8683 //else
8684 //g_usb_phy_reset_flg_Port2 = FALSE;
8685
8686 //up_read(&gdev->bus->subsys.rwsem);
8687
8688 return r;
8689 }
8690 #endif //#ifdef
8691
8692 // --------------------------------------------------------------------
8693 LIST_HEAD(hub_event_list_Port1);
8694 LIST_HEAD(hub_event_list_Port3);
8695
has_hub_events_EX(U16 * pPortStatus,struct s_gVar4UsbPort * pRootHub)8696 BOOL has_hub_events_EX(U16 *pPortStatus, struct s_gVar4UsbPort *pRootHub)
8697 {
8698 //U16 portstatus;
8699 BOOL status;
8700 U16 portchange;
8701 struct list_head *tmp;
8702 struct usb_device *dev;
8703 struct usb_hub *hub;
8704 struct list_head *tmp_list = pRootHub->p_hub_event;
8705
8706 USBCriticalSectionIn(pRootHub->portNum);
8707 if (list_empty(tmp_list))
8708 {
8709 status = FALSE;
8710 }
8711 else
8712 {
8713 U32 u32OldIntr;
8714 u32OldIntr = MsOS_DisableAllInterrupts();
8715
8716 tmp = tmp_list->next;
8717 hub = list_entry(tmp, struct usb_hub, event_list);
8718 dev = interface_to_usbdev(hub->intf);
8719
8720 MsOS_RestoreAllInterrupts(u32OldIntr);
8721
8722 hub_port_status(dev, 0, pPortStatus, &portchange);
8723 //diag_printf("portstatus: %X\n", *pPortStatus);
8724
8725 if (portchange & USB_PORT_STAT_C_CONNECTION)
8726 status = TRUE;
8727 else
8728 status = FALSE;
8729 }
8730
8731 USBCriticalSectionOut(pRootHub->portNum);
8732 return status;
8733 }
8734 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8735 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8736 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8737 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8738 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8739 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8740 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8741 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8742 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8743 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8744 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8745 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8746 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8747 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8748 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8749 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8750 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8751 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8752 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8753 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8754 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8755 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8756 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8757 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8758 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8759 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8760 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8761 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8762 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8763 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8764 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8765 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8766 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8767 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8768 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8769 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8770 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8771 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8772 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8773 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8774 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8775 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8776 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8777 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8778 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8779 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8780 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8781 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8782 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8783 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8784 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8785 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8786 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8787 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8788 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8789 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8790 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8791 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8792 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8793 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8794 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8795 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8796 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8797 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8798 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8799 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8800 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8801 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8802 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8803 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8804 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8805 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8806 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8807 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8808 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8809 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8810 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8811 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8812 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8813 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8814 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8815 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8816 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8817 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8818 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8819 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8820 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8821 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8822 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8823 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8824 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8825 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8826 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8827 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8828 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8829 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8830
hub_events_EX(struct s_gVar4UsbPort * pRootHub)8831 static void hub_events_EX(struct s_gVar4UsbPort *pRootHub)
8832 {
8833 U32 flags;
8834 struct list_head *tmp_list = pRootHub->p_hub_event;
8835 struct list_head *tmp;
8836 struct usb_device *dev;
8837 struct usb_hub *hub;
8838 U16 hubstatus;
8839 U16 hubchange;
8840 U16 portstatus;
8841 U16 portchange;
8842 int i, ret;
8843
8844
8845 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8846 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8847 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8848 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8849 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8850 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8851 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8852 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8853 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8854 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8855 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8856 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8857 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8858 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8859 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8860 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8861 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8862 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8863 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8864 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8865 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8866 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8867 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8868 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8869 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8870 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8871 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8872 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8873 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8874 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8875 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8876 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8877 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8878 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8879 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8880 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8881 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8882 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8883 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8884 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8885 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8886 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8887 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8888 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8889 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8890 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8891 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8892 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8893 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8894 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8895 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8896 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8897 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8898 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8899 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8900 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8901 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8902 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8903 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8904 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8905 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8906 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8907 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8908 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8909 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8910 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8911 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8912 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8913 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8914 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8915 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8916 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8917 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8918 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8919 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8920 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8921 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8922 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8923 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8924 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8925 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8926 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8927 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8928 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8929 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8930 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8931 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8932 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8933 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8934 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8935 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8936 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8937 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8938 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8939 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8940 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8941 while (1) {
8942 spin_lock_irqsave(&hub_event_lock, flags);
8943
8944 if (list_empty(tmp_list))
8945 break;
8946
8947 U32 u32OldIntr;
8948 u32OldIntr = MsOS_DisableAllInterrupts();
8949
8950 tmp = tmp_list->next;
8951
8952 hub = list_entry(tmp, struct usb_hub, event_list);
8953 //list_entry(tmp, struct usb_hub, event_list,struct list_head, hub);
8954 dev = interface_to_usbdev(hub->intf);
8955
8956 list_del_init(tmp);
8957 MsOS_RestoreAllInterrupts(u32OldIntr);
8958
8959 //if (unlikely(down_trylock(&hub->khubd_sem)))
8960 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8961 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8962 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8963 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8964 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8965 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8966 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8967 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8968 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8969 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8970 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8971 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8972 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8973 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8974 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8975 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8976 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8977 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8978 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8979 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8980 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8981 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8982 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8983 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8984 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8985 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8986 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8987 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8988 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8989 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8990 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8991 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8992 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8993 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8994 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8995 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8996 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8997 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8998 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
8999 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9000 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9001 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9002 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9003 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9004 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9005 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9006 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9007 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9008 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9009 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9010 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9011 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9012 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9013 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9014 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9015 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9016 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9017 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9018 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9019 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9020 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9021 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9022 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9023 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9024 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9025 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9026 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9027 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9028 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9029 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9030 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9031 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9032 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9033 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9034 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9035 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9036 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9037 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9038 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9039 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9040 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9041 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9042 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9043 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9044 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9045 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9046 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9047 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9048 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9049 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9050 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9051 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9052 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9053 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9054 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9055 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9056
9057 spin_unlock_irqrestore(&hub_event_lock, flags);
9058
9059 if (hub->error) {
9060 dev_dbg (&hub->intf->dev, "resetting for error %d\n", hub->error);
9061
9062 if (hub_reset(hub)) {
9063 dev_dbg (&hub->intf->dev, "can't reset; disconnecting%s","\n");
9064 up(&hub->khubd_sem);
9065 hub_start_disconnect(dev);
9066 continue;
9067 }
9068
9069 hub->nerrors = 0;
9070 hub->error = 0;
9071 }
9072 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9073 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9074 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9075 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9076 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9077 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9078 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9079 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9080 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9081 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9082 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9083 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9084 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9085 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9086 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9087 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9088 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9089 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9090 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9091 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9092 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9093 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9094 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9095 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9096 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9097 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9098 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9099 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9100 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9101 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9102 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9103 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9104 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9105 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9106 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9107 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9108 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9109 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9110 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9111 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9112 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9113 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9114 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9115 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9116 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9117 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9118 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9119 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9120 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9121 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9122 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9123 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9124 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9125 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9126 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9127 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9128 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9129 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9130 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9131 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9132 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9133 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9134 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9135 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9136 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9137 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9138 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9139 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9140 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9141 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9142 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9143 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9144 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9145 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9146 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9147 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9148 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9149 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9150 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9151 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9152 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9153 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9154 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9155 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9156 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9157 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9158 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9159 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9160 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9161 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9162 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9163 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9164 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9165 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9166 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9167 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9168
9169 diag_printf("EX**get hub event %d\n", pRootHub->portNum);
9170 for (i = 0; i < hub->descriptor.bNbrPorts; i++) {
9171 ret = hub_port_status(dev, i, &portstatus, &portchange);
9172 if (ret < 0) {
9173 continue;
9174 }
9175 if (portchange & USB_PORT_STAT_C_CONNECTION) {
9176 hub_port_connect_change(hub, i, portstatus, portchange);
9177 } else if (portchange & USB_PORT_STAT_C_ENABLE) {
9178 dev_dbg (hubdev (dev), "port %d enable change, status %x\n", i + 1, portstatus);
9179 clear_port_feature(dev, i + 1, USB_PORT_FEAT_C_ENABLE);
9180
9181
9182 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9183 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9184 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9185 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9186 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9187 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9188 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9189 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9190 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9191 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9192 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9193 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9194 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9195 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9196 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9197 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9198 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9199 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9200 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9201 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9202 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9203 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9204 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9205 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9206 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9207 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9208 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9209 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9210 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9211 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9212 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9213 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9214 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9215 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9216 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9217 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9218 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9219 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9220 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9221 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9222 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9223 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9224 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9225 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9226 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9227 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9228 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9229 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9230 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9231 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9232 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9233 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9234 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9235 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9236 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9237 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9238 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9239 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9240 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9241 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9242 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9243 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9244 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9245 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9246 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9247 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9248 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9249 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9250 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9251 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9252 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9253 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9254 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9255 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9256 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9257 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9258 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9259 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9260 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9261 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9262 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9263 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9264 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9265 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9266 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9267 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9268 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9269 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9270 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9271 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9272 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9273 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9274 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9275 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9276 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9277 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9278 if (!(portstatus & USB_PORT_STAT_ENABLE)
9279 && (portstatus & USB_PORT_STAT_CONNECTION)
9280 && (dev->children[i])) {
9281 dev_err (&hub->intf->dev, "port %i " "disabled by hub (EMI?), " "re-enabling...", i + 1);
9282 hub_port_connect_change(hub, i, portstatus, portchange);
9283 }
9284 }
9285
9286 if (portchange & USB_PORT_STAT_C_SUSPEND) {
9287 dev_dbg (&hub->intf->dev, "suspend change on port %d\n", i + 1);
9288 clear_port_feature(dev, i + 1, USB_PORT_FEAT_C_SUSPEND);
9289 }
9290
9291 if (portchange & USB_PORT_STAT_C_OVERCURRENT) {
9292 dev_err (&hub->intf->dev,
9293 "over-current change on port %d\n", i + 1);
9294 clear_port_feature(dev, i + 1, USB_PORT_FEAT_C_OVER_CURRENT);
9295 hub_power_on(hub);
9296 }
9297 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9298 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9299 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9300 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9301 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9302 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9303 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9304 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9305 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9306 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9307 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9308 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9309 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9310 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9311 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9312 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9313 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9314 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9315 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9316 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9317 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9318 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9319 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9320 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9321 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9322 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9323 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9324 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9325 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9326 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9327 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9328 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9329 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9330 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9331 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9332 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9333 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9334 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9335 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9336 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9337 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9338 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9339 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9340 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9341 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9342 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9343 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9344 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9345 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9346 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9347 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9348 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9349 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9350 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9351 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9352 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9353 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9354 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9355 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9356 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9357 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9358 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9359 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9360 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9361 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9362 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9363 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9364 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9365 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9366 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9367 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9368 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9369 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9370 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9371 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9372 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9373 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9374 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9375 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9376 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9377 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9378 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9379 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9380 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9381 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9382 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9383 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9384 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9385 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9386 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9387 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9388 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9389 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9390 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9391 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9392 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9393
9394 if (portchange & USB_PORT_STAT_C_RESET) {
9395 dev_dbg (&hub->intf->dev, "reset change on port %d\n", i + 1);
9396 clear_port_feature(dev, i + 1, USB_PORT_FEAT_C_RESET);
9397 }
9398 } /* end for i */
9399
9400 if (hub_hub_status(hub, &hubstatus, &hubchange) < 0) {
9401 dev_err (&hub->intf->dev, "get_hub_status failed%s","\n");
9402 }
9403 else {
9404 if (hubchange & HUB_CHANGE_LOCAL_POWER) {
9405 dev_dbg (&hub->intf->dev, "power change%s","\n");
9406 clear_hub_feature(dev, C_HUB_LOCAL_POWER);
9407 }
9408
9409 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9410 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9411 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9412 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9413 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9414 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9415 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9416 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9417 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9418 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9419 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9420 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9421 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9422 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9423 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9424 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9425 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9426 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9427 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9428 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9429 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9430 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9431 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9432 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9433 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9434 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9435 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9436 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9437 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9438 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9439 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9440 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9441 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9442 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9443 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9444 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9445 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9446 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9447 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9448 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9449 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9450 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9451 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9452 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9453 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9454 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9455 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9456 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9457 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9458 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9459 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9460 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9461 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9462 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9463 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9464 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9465 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9466 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9467 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9468 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9469 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9470 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9471 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9472 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9473 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9474 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9475 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9476 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9477 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9478 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9479 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9480 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9481 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9482 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9483 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9484 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9485 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9486 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9487 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9488 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9489 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9490 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9491 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9492 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9493 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9494 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9495 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9496 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9497 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9498 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9499 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9500 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9501 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9502 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9503 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9504 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
9505 if (hubchange & HUB_CHANGE_OVERCURRENT) {
9506 dev_dbg (&hub->intf->dev, "overcurrent change%s","\n");
9507 wait_ms(500);
9508 clear_hub_feature(dev, C_HUB_OVER_CURRENT);
9509 hub_power_on(hub);
9510 }
9511 }
9512 up(&hub->khubd_sem);
9513 } /* end while (1) */
9514
9515 spin_unlock_irqrestore(&hub_event_lock, flags);
9516 }
9517
hub_poll_EX(struct s_gVar4UsbPort * pRootHub)9518 void hub_poll_EX(struct s_gVar4UsbPort *pRootHub)
9519 {
9520 USBCriticalSectionIn(pRootHub->portNum);
9521 hub_events_EX(pRootHub);
9522 USBCriticalSectionOut(pRootHub->portNum);
9523 }
9524
9525