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 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
80 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
81 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
82 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
83 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
84 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
85 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
86 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
87 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
88 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
89 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
90 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
91 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
92 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
93 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
94 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
95
96 #ifndef __MS_EHCI_HCD_H
97 #define __MS_EHCI_HCD_H
98
99 #include <MsTypes.h>
100 #include "include/drvConfig.h"
101
102 #ifdef CONFIG_USB_DEBUG
103 #define DEBUG
104 #else
105 #undef DEBUG
106 #endif
107
108 // Flib Includes
109 //#include "symbol.h"
110 #include "include/drvCompiler.h"
111 #include "include/drvPorts.h"
112 #include "include/drvIO.h"
113 #include "include/drvBitops.h"
114 #include "include/drvPCIMEM.h"
115 #include "include/drvList.h"
116 #include "include/drvTimer.h"
117 #include "include/drvKernel.h"
118 // USB related implemented header files
119 #include "include/drvUSB.h"
120 #include "drvHCD.h"
121
122 #define EHCI_IAA_JIFFIES (HZ/100) /* arbitrary; ~10 msec */
123 #define EHCI_IO_JIFFIES (HZ*10) /* io watchdog > irq_thresh */
124 #define EHCI_ASYNC_JIFFIES (HZ/20) /* async idle timeout */
125 #define EHCI_SHRINK_JIFFIES (HZ/200) /* async qh unlink delay */
126
127 /* definitions used for the EHCI driver */
128
129 /* statistics can be kept for for tuning/monitoring */
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
147 struct ehci_stats {
148 /* irq usage */
149 U32 normal;
150 U32 error;
151 U32 reclaim;
152 U32 lost_iaa;
153
154 /* termination of urbs from core */
155 U32 complete;
156 U32 unlink;
157 };
158
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
176 #define EHCI_MAX_ROOT_PORTS 1 /* see HCS_N_PORTS */
177
178 struct ehci_hcd { /* one per controller */
179 spinlock_t lock;
180
181 /* async schedule support */
182 struct ehci_qh *async;
183 struct ehci_qh *reclaim;
184 int reclaim_ready : 1;
185
186 /* periodic schedule support */
187 #define DEFAULT_I_TDPS 1024 /* some HCs can do less */
188 U32 periodic_size;
189 U32 *periodic_rptr; /*Real pointer for allocated memory for peridic link array*/
190 U32 *periodic; /* hw periodic table */
191 dma_addr_t periodic_dma;
192 U32 i_thresh; /* uframes HC might cache */
193
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
211 union ehci_shadow *pshadow; /* mirror hw periodic table */
212 int next_uframe; /* scan periodic, start here */
213 U32 periodic_sched; /* periodic activity count */
214
215 /* per root hub port */
216
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 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
225 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
226 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
227 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
228 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
229 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
230 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
231 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
232 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
233 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
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 U32 reset_done [EHCI_MAX_ROOT_PORTS];
266
267 /* glue to PCI and HCD framework */
268 struct usb_hcd hcd;
269 struct ehci_caps *caps;
270 struct ehci_regs *regs;
271 U32 hcs_params; /* cached register copy */
272
273 /* per-HC memory pools (could be per-PCI-bus, but ...) */
274
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
324 struct pci_pool *qh_pool; /* qh per active urb */
325 struct pci_pool *qtd_pool; /* one or more per qh */
326 struct pci_pool *itd_pool; /* == itd per iso urb */
327 struct pci_pool *sitd_pool; /* sitd per split iso urb */
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 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
331 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
332 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
333 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
334 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
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
377 struct timer_list watchdog;
378 //struct notifier_block reboot_notifier;
379 U32 actions;
380 U32 stamp;
381
382 /* irq statistics */
383
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 #ifdef EHCI_STATS
401 struct ehci_stats stats;
402 #define COUNT(x) do { (x)++; } while (0)
403 #else
404 #define COUNT(x) do {} while (0)
405 #endif
406 unsigned char uDontSendIAA;
407 };
408
409 /* unwrap an HCD pointer to get an EHCI_HCD pointer */
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
427 //#define hcd_to_ehci(hcd_ptr) container_of(hcd_ptr, struct ehci_hcd, hcd)
hcd_to_ehci(struct usb_hcd * hcd_ptr)428 static __inline__ struct ehci_hcd *hcd_to_ehci(struct usb_hcd *hcd_ptr)
429 {
430 const struct usb_hcd *__mptr = (hcd_ptr);
431 return (struct ehci_hcd *)( (char *)__mptr - (char *)offsetof(struct ehci_hcd,hcd) );
432 }
433
434 /* NOTE: urb->transfer_flags expected to not use this bit !!! */
435 #define EHCI_STATE_UNLINK 0x8000 /* urb being unlinked */
436
437 enum ehci_timer_action {
438 TIMER_IO_WATCHDOG,
439 TIMER_IAA_WATCHDOG,
440 TIMER_ASYNC_SHRINK,
441 TIMER_ASYNC_OFF
442 };
443
444 static __inline__ void
timer_action_done(struct ehci_hcd * ehci,enum ehci_timer_action action)445 timer_action_done (struct ehci_hcd *ehci, enum ehci_timer_action action)
446 {
447 U32 flags;
448
449 kdbg("%d sw_tmr",action);
450 save_and_disable_firqs(&flags);
451 clear_bit (action, &ehci->actions, U32);
452 restore_firqs(&flags);
453 }
454 /*
455 static __inline__ int Test_and_Set_Bit(int nr, void *addr)
456 {
457 U32 tmp,tmp2;
458 U32 int mask, retval;
459 unsigned int *adr = (unsigned int *)addr;
460 //save_and_disable_firqs();
461 __asm {
462 mrs tmp2, CPSR
463 MRS tmp, CPSR
464 ORR tmp, tmp, #(I_BIT|F_BIT)
465 msr CPSR_cxsf, tmp
466 }
467 //Test bit
468 adr += nr >> 5;
469 mask = 1 << (nr & 0x1f);
470 retval = (mask & *adr) != 0;
471 //Set bit
472 *adr |= mask;
473 //restore_firqs();
474 __asm {
475 msr CPSR_cxsf, tmp2
476 }
477 return retval;
478 }*/
479
480 static __inline__ void
timer_action(struct ehci_hcd * ehci,enum ehci_timer_action action)481 timer_action (struct ehci_hcd *ehci, enum ehci_timer_action action)
482 {
483 kdbg("register %d sw_tmr",action);
484 if( action == TIMER_IAA_WATCHDOG )
485 kdbg("%s","");
486 if (!test_and_set_bit(action, &ehci->actions)) {
487 U32 t;
488
489 switch (action) {
490 case TIMER_IAA_WATCHDOG:
491 t = EHCI_IAA_JIFFIES;
492 break;
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 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
502 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
503 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
504 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
505 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
506 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
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
510 case TIMER_IO_WATCHDOG:
511 t = EHCI_IO_JIFFIES;
512 break;
513 case TIMER_ASYNC_OFF:
514 t = EHCI_ASYNC_JIFFIES;
515 break;
516 // case TIMER_ASYNC_SHRINK:
517 default:
518 t = EHCI_SHRINK_JIFFIES;
519 break;
520 }
521 // all timings except IAA watchdog can be overridden.
522 // async queue SHRINK often precedes IAA. while it's ready
523 // to go OFF neither can matter, and afterwards the IO
524 // watchdog stops unless there's still periodic traffic.
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
542 if (action != TIMER_IAA_WATCHDOG
543 && (t+jiffies) > (U32) ehci->watchdog.base_jiffies
544 && timer_pending (&ehci->watchdog))
545 {
546 return;
547 }
548 #if 1 //Open watch dog to deal with the interrupt lost issue
549 ehci->watchdog.base_jiffies = t + jiffies;
550 mod_timer (&ehci->watchdog, t, 0);
551 #endif
552 }
553 }
554
555 /*-------------------------------------------------------------------------*/
556
557 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
558 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
559 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
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
574 struct ehci_caps {
575 unsigned char length; /* CAPLENGTH - size of this struct */
576
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 unsigned char reserved; /* offset 0x1 */
594 U16 hci_version; /* HCIVERSION - offset 0x2 */
595 U32 hcs_params; /* HCSPARAMS - offset 0x4 */
596 #define HCS_DEBUG_PORT(p) (((p)>>20)&0xf) /* bits 23:20, debug port? */
597 #define HCS_INDICATOR(p) ((p)&(1 << 16)) /* true: has port indicators */
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 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
608 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
609 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
610 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
611 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
612 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
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
631 #define HCS_N_CC(p) (((p)>>12)&0xf) /* bits 15:12, #companion HCs */
632 #define HCS_N_PCC(p) (((p)>>8)&0xf) /* bits 11:8, ports per CC */
633 #define HCS_PORTROUTED(p) ((p)&(1 << 7)) /* true: port routing */
634 #define HCS_PPC(p) ((p)&(1 << 4)) /* true: port power control */
635 #define HCS_N_PORTS(p) (((p)>>0)&0xf) /* bits 3:0, ports on HC */
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 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
663 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
664 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
665 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
666 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
667 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
668
669 U32 hcc_params; /* HCCPARAMS - offset 0x8 */
670 #define HCC_EXT_CAPS(p) (((p)>>8)&0xff) /* for pci extended caps */
671 #define HCC_ISOC_CACHE(p) ((p)&(1 << 7)) /* true: can cache isoc frame */
672 #define HCC_ISOC_THRES(p) (((p)>>4)&0x7) /* bits 6:4, uframes cached */
673 #define HCC_CANPARK(p) ((p)&(1 << 2)) /* true: can park on async qh */
674 #define HCC_PGM_FRAMELISTLEN(p) ((p)&(1 << 1)) /* true: periodic_size changes*/
675 #define HCC_64BIT_ADDR(p) ((p)&(1)) /* true: can use 64-bit addr */
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
693 unsigned char portroute [8]; /* nibbles for routing - offset 0xC */
694 } __attribute__((packed));
695
696
697 /* Section 2.3 Host Controller Operational Registers */
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
715 struct ehci_regs {
716
717 /* USBCMD: offset 0x00 */
718
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 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
734 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
735 U32 command;
736 /* 23:16 is r/w intr rate, in microframes; default "8" == 1/msec */
737 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
738 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
739 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
740 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
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
754 #define CMD_PARK (1<<11) /* enable "park" on async qh */
755 #define CMD_PARK_CNT(c) (((c)>>8)&3) /* how many transfers to park for */
756 #define CMD_LRESET (1<<7) /* partial reset (no ports, etc) */
757 #define CMD_IAAD (1<<6) /* "doorbell" interrupt async advance */
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
775 #define CMD_ASE (1<<5) /* async schedule enable */
776 #define CMD_PSE (1<<4) /* periodic schedule enable */
777 /* 3:2 is periodic frame list size */
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
795 #define CMD_RESET (1<<1) /* reset Host Controller not bus */
796 #define CMD_RUN (1<<0) /* start/stop Host Controller */
797
798 /* USBSTS: offset 0x04 */
799 U32 status;
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
817 #define STS_ASS (1<<15) /* Async Schedule Status */
818 #define STS_PSS (1<<14) /* Periodic Schedule Status */
819 #define STS_RECL (1<<13) /* Reclamation */
820 #define STS_HALT (1<<12) /* Not running (any reason) */
821 /* some bits reserved */
822 /* these STS_* flags are also intr_enable bits (USBINTR) */
823
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 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
838 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
839 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
840 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
841 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
842 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
843 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
844 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
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
857 #define STS_IAA (1<<5) /* Interrupted on async advance */
858 #define STS_FATAL (1<<4) /* such as some PCI access errors */
859 #define STS_FLR (1<<3) /* frame list rolled over */
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 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
890 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
891 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
892 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
893 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
894 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
895 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
896 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
897 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
898 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
899 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
900 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
901 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
902 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
903 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
904 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
905 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
906 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
907 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
908
909 #define STS_PCD (1<<2) /* EHCI port change detect */
910 #define STS_ERR (1<<1) /* "error" completion (overflow, ...) */
911 #define STS_INT (1<<0) /* "normal" completion (short, ...) */
912
913 /* USBINTR: offset 0x08 */
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 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
947 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
948 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
949 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
950 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
951 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
952 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
953 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
954 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
955 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
956 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
957 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
958 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
959 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
960 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
961 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
962
963 U32 intr_enable;
964
965 /* FRINDEX: offset 0x0C */
966 U32 frame_index; /* current microframe number */
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
1016 /* Standard EHCI HC*/
1017 /* CTRLDSSEGMENT: offset 0x10 */
1018 U32 segment; /* address bits 63:32 if needed */
1019 /* PERIODICLISTBASE: offset 0x14 */
1020 U32 frame_list; /* points to periodic list */
1021 /* ASYNCICLISTADDR: offset 0x18 */
1022 U32 async_next; /* address of next async queue head */
1023 U32 reserved2; /*0x1c*/
1024 /* port status offset 0x20, Faraday change*/
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 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1035 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1036 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1037 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1038 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1039 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1040 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1041 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1042 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1043 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
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
1058 U32 port_status[1]; /* up to N_PORTS */
1059 /* 31:23 reserved */
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 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1108
1109 #define PORT_WKOC_E (1<<22) /* wake on overcurrent (enable) */
1110 #define PORT_WKDISC_E (1<<21) /* wake on disconnect (enable) */
1111 #define PORT_WKCONN_E (1<<20) /* wake on connect (enable) */
1112 /* 19:16 for port testing */
1113 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1114 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1115 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1116 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1117 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
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
1130 /* 15:14 for using port indicator leds (if HCS_INDICATOR allows) */
1131 #define PORT_OWNER (1<<13) /* true: companion hc owns this port */
1132 #define PORT_POWER (1<<12) /* true: has power (see PPC) */
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
1166 #define PORT_USB11(x) (((x)&(3<<10))==(1<<10)) /* is USB 1.1 device */
1167 /* 11:10 for detecting lowspeed devices (reset vs release ownership) */
1168 /* 9 reserved */
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*/
1183 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1184 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1185
1186 #define PORT_RESET (1<<8) /* reset port */
1187 #define PORT_SUSPEND (1<<7) /* suspend port */
1188 #define PORT_RESUME (1<<6) /* resume it */
1189 #define PORT_OCC (1<<5) /* over current change */
1190 #define PORT_OC (1<<4) /* over current active */
1191 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1192 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1193 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1194 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1195 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1196 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1197 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
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
1240 #define PORT_PEC (1<<3) /* port enable change */
1241 #define PORT_PE (1<<2) /* port enable */
1242 #define PORT_CSC (1<<1) /* connect status change */
1243 #define PORT_CONNECT (1<<0) /* device connected */
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 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1256 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1257 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1258 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1259 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1260
1261 /* Standard EHCI HC*/
1262 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1263 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1264 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1265 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1266 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1267 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1268 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1269 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1270 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1271 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1272 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1273 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
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
1279 //U32 reserved [3];
1280 U32 hcmisc;
1281 U32 reserved[2];
1282 /* Faraday specified register */
1283 U32 bus_control; /*Bus monitor control, offset:0x30*/
1284 #define HALF_SPEED (1<<2)
1285 #define INT_POLAR (1<<3) //bit 3,
1286 #define VBUS_OFF (1<<4)
1287 U32 reserved1 [3];
1288
1289 /* CONFIGFLAG: offset 0x40 */
1290
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 U32 test_register;
1308 // U32 configured_flag; //Faraday's test register, yuwen
1309 //#define FLAG_CF (1<<0) /* true: we'll support "high speed" */
1310 /* PORTSC: offset 0x44 */
1311 } __attribute__((packed));
1312
1313
1314 /*-------------------------------------------------------------------------*/
1315
1316 #define QTD_NEXT(dma) CPUToLE32((U32)dma)
1317
1318 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
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
1335 struct ehci_qtd {
1336 /* first part defined by EHCI spec */
1337 U32 hw_next; /* see EHCI 3.5.1 */
1338 U32 hw_alt_next; /* see EHCI 3.5.2 */
1339 U32 hw_token; /* see EHCI 3.5.3 */
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
1357 #define QTD_TOGGLE ((U32)1 << 31) /* data toggle */
1358 #define QTD_LENGTH(tok) (((tok)>>16) & 0x7fff)
1359 #define QTD_IOC ((U32)1 << 15) /* interrupt on complete */
1360 #define QTD_CERR(tok) (((tok)>>10) & 0x3)
1361 #define QTD_PID(tok) (((tok)>>8) & 0x3)
1362 #define QTD_STS_ACTIVE ((U32)1 << 7) /* HC may execute this */
1363 #define QTD_STS_HALT ((U32)1 << 6) /* halted on error */
1364 #define QTD_STS_DBE ((U32)1 << 5) /* data buffer error (in HC) */
1365 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1366 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1367 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1368 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1369 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1370 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1371 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1372 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1373 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
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
1414 #define QTD_STS_BABBLE ((U32)1 << 4) /* device was babbling (qtd halted) */
1415 #define QTD_STS_XACT ((U32)1 << 3) /* device gave illegal response */
1416 #define QTD_STS_MMF ((U32)1 << 2) /* incomplete split transaction */
1417 #define QTD_STS_STS ((U32)1 << 1) /* split transaction state */
1418 #define QTD_STS_PING ((U32)1 << 0) /* issue PING? */
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 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1440 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1441 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1442 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1443 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1444 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1445 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
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
1468 U32 hw_buf [5]; /* see EHCI 3.5.4 */
1469 U32 hw_buf_hi [5]; /* Appendix B */
1470
1471 /* the rest is HCD-private */
1472 dma_addr_t qtd_dma; /* qtd address */
1473 struct list_head qtd_list; /* sw qtd list */
1474 struct urb *urb; /* qtd's urb */
1475 size_t length; /* length of buffer */
1476 } __attribute__ ((aligned (32)));
1477
1478 /* mask NakCnt+T in qh->hw_alt_next */
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 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1494 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1495
1496 #define QTD_MASK CPUToLE32 (~0x1f)
1497
1498 #define IS_SHORT_READ(token) (QTD_LENGTH (token) != 0 && QTD_PID (token) == 1)
1499
1500 /*-------------------------------------------------------------------------*/
1501
1502 #define Q_NEXT_TYPE(dma) ((dma) & CPUToLE32 (3 << 1))
1503
1504 #define Q_TYPE_ITD CPUToLE32 (0 << 1)
1505 #define Q_TYPE_QH CPUToLE32 (1 << 1)
1506 #define Q_TYPE_SITD CPUToLE32 (2 << 1)
1507 #define Q_TYPE_FSTN CPUToLE32 (3 << 1)
1508
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 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1544 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1545 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1546 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1547 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1548 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1549 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1550 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1551 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1552 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1553 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1554 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
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
1558 #define QH_NEXT(dma) (CPUToLE32(((U32)dma)&~0x01f)|Q_TYPE_QH)
1559
1560 #define EHCI_LIST_END CPUToLE32(1)
1561
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 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1597 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1598 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1599 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1600 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1601 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1602 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1603 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
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 union ehci_shadow {
1611 struct ehci_qh *qh; /* == Q_TYPE_QH */
1612 struct ehci_itd *itd; /* == Q_TYPE_ITD */
1613
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 struct ehci_sitd *sitd; /* == Q_TYPE_SITD */
1631 struct ehci_fstn *fstn; /* == Q_TYPE_FSTN */
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
1649 U32 *hw_next;
1650
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 void *ptr; // page pointer
1668 };
1669
1670 /*-------------------------------------------------------------------------*/
1671
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 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1682 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1683 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1684 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1685 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1686 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1687 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1688
1689 struct ehci_qh {
1690 U32 hw_next;
1691 U32 hw_info1;
1692
1693 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1694 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1695 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1696 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1697 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1698 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1699 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1700 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
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 #define QH_HEAD 0x00008000
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
1743 U32 hw_info2;
1744 U32 hw_current;
1745
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
1763 U32 hw_qtd_next;
1764 U32 hw_alt_next;
1765 U32 hw_token;
1766 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1767 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1768 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1769 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1770 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1771 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1772 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1773 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1774 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1775 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1776 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1777 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1778 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1779 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1780 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1781 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1782 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1783 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1784 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1785 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
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
1799 U32 hw_buf [5];
1800 U32 hw_buf_hi [5];
1801
1802 /* the rest is HCD-private */
1803
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 dma_addr_t qh_dma; /* address of qh */
1821 union ehci_shadow qh_next; /* ptr to qh; or periodic */
1822 struct list_head qtd_list; /* sw qtd list */
1823 struct ehci_qtd *dummy;
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 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1854 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1855 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1856
1857 struct ehci_qh *reclaim;
1858
1859 atomic_t refcount;
1860 U32 stamp;
1861
1862 unsigned char qh_state;
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
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 #define QH_STATE_LINKED 1
1897 #define QH_STATE_UNLINK 2
1898 #define QH_STATE_IDLE 3
1899 #define QH_STATE_UNLINK_WAIT 4
1900 #define QH_STATE_COMPLETING 5
1901
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
1919 unsigned char usecs;
1920 unsigned char gap_uf;
1921 unsigned char c_usecs;
1922 U16 period;
1923 U16 start;
1924 #define NO_FRAME ((U16)~0)
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 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1934 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1935 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1936 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1937 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1938 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1939 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1940 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1941
1942 } __attribute__ ((aligned (32)));
1943
1944 /*-------------------------------------------------------------------------*/
1945
1946
1947 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
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 struct ehci_itd {
1964 U32 hw_next;
1965 U32 hw_transaction [8];
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
1983 #define EHCI_ISOC_ACTIVE ((U32)1<<31)
1984 #define EHCI_ISOC_BUF_ERR ((U32)1<<30)
1985 #define EHCI_ISOC_BABBLE ((U32)1<<29)
1986 #define EHCI_ISOC_XACTERR ((U32)1<<28)
1987 #define EHCI_ITD_LENGTH(tok) (((U32)(tok)>>16) & 0x7fff)
1988 #define EHCI_ITD_IOC ((U32)1 << 15)
1989 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1990 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1991 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1992 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1993 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1994 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1995 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1996 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1997 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1998 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
1999 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2000 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2001 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
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
2022 U32 hw_bufp [7];
2023 U32 hw_bufp_hi [7];
2024
2025
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 dma_addr_t itd_dma;
2059 union ehci_shadow itd_next;
2060
2061 struct urb *urb;
2062 struct list_head itd_list;
2063 dma_addr_t buf_dma;
2064
2065
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 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2069 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2070 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2071 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2072 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2073 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2074 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2075 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2076 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2077 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2078 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2079 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2080 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
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 U32 transaction;
2099 U16 index;
2100 U16 uframe;
2101 U16 usecs;
2102 } __attribute__ ((aligned (32)));
2103
2104 /*-------------------------------------------------------------------------*/
2105
2106
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
2140 struct ehci_sitd {
2141 U32 hw_next;
2142 U32 hw_fullspeed_ep;
2143 U32 hw_uframe;
2144 U32 hw_tx_results1;
2145 U32 hw_tx_results2;
2146 U32 hw_tx_results3;
2147 U32 hw_backpointer;
2148 U32 hw_buf_hi [2];
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 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2156 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2157 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2158 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2159 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2160 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2161 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2162 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2163 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2164 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2165 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2166 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2167 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2168 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2169 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2170 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2171 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2172 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2173 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2174 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
2175 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/
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
2182 dma_addr_t sitd_dma;
2183 union ehci_shadow sitd_next;
2184 struct urb *urb;
2185 dma_addr_t buf_dma;
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
2203 U16 usecs;
2204 U16 c_usecs;
2205 } __attribute__ ((aligned (32)));
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
2223 /*-------------------------------------------------------------------------*/
2224
2225
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 struct ehci_fstn {
2243 U32 hw_next;
2244 U32 hw_prev;
2245
2246 dma_addr_t fstn_dma;
2247 union ehci_shadow fstn_next;
2248 } __attribute__ ((aligned (32)));
2249
2250 /*-------------------------------------------------------------------------*/
2251
2252 #define SUBMIT_URB(urb,mem_flags) usb_submit_urb(urb,mem_flags)
2253
2254 #ifndef DEBUG
2255 #define STUB_DEBUG_FILES
2256 #endif /* DEBUG */
2257
2258 #define writel(data, reg_adr) ( (*( (volatile MS_U32 *) (reg_adr) ) ) = ((MS_U32)data) )
2259 #define readl(reg_adr) ( *( (volatile MS_U32 *) (reg_adr) ) )
2260 #define writew(data, reg_adr) ( (*( (volatile MS_U16 *) (reg_adr) ) ) = ((MS_U16)data) )
2261 #define readw(reg_adr) ( *( (volatile MS_U16 *) (reg_adr) ) )
2262 #define writeb(data, reg_adr) ( (*( (volatile MS_U8 *) (reg_adr) ) ) = ((MS_U8)data) )
2263 #define readb(reg_adr) ( *( (volatile MS_U8 *) (reg_adr) ) )
2264
ehci_readl(unsigned int regs)2265 static inline unsigned int ehci_readl( unsigned int regs)
2266 {
2267 regs = ( (regs & 0xffffff00) + ((regs & 0x000000ff)*2) );
2268 return (readl((void*)(unsigned int)regs) & 0x0000ffff)|((readl((void*)((unsigned int)regs+4))<<16) & 0xffff0000);
2269 }
2270
ehci_writel(const unsigned int val,unsigned int regs)2271 static inline void ehci_writel(const unsigned int val, unsigned int regs)
2272 {
2273 regs = ((regs & 0xffffff00) + ((regs & 0x000000ff)*2)) ;
2274 writel(val & 0x0000ffff,(void*)regs) ;
2275 writel(((val>>16) & 0x0000ffff),(void*)((unsigned int)regs+4)) ;
2276 }
2277
ehci_readw(unsigned int regs)2278 static inline unsigned short ehci_readw(unsigned int regs)
2279 {
2280 if (regs & 0x1)
2281 {
2282 diag_printf("TRAP: ehci_readw address not alignment !! 0x%x \n", regs);
2283 while(1);
2284 }
2285 regs = ( (regs & 0xffffff00) + ((regs & 0x000000ff)*2) );
2286 return (readw((void*)(unsigned int)regs));
2287 }
2288
ehci_readb(unsigned int regs)2289 static inline unsigned char ehci_readb(unsigned int regs)
2290 {
2291 if (regs & 0x1)
2292 regs = ( (regs & 0xffffff00) + ((regs & 0x000000ff)*2)-1 );
2293 else
2294 regs = ( (regs & 0xffffff00) + ((regs & 0x000000ff)*2) );
2295 return (readb((void*)(unsigned int)regs));
2296 }
2297
2298 /*-------------------------------------------------------------------------*/
2299
2300 #endif
2301