xref: /utopia/UTPA2-700.0.x/modules/usb/drv/usb_ecos/usbhost/drvEHCI.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
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