#define	FOTG210_ITD_LENGTH(tok)	(((tok)>>16) & 0x0fff)
#define	FOTG210_ITD_IOC		(1 << 15)	/* interrupt on complete */

#define ITD_ACTIVE(fotg210)	cpu_to_hc32(fotg210, FOTG210_ISOC_ACTIVE)

	__hc32			hw_bufp[7];	/* see EHCI 3.3.3 */
	__hc32			hw_bufp_hi[7];	/* Appendix B */

	/* the rest is HCD-private */
	dma_addr_t		itd_dma;	/* for this itd */
	union fotg210_shadow	itd_next;	/* ptr to periodic q entry */

	struct urb		*urb;
	struct fotg210_iso_stream	*stream;	/* endpoint's queue */
	struct list_head	itd_list;	/* list of stream's itds */

	/* any/all hw_transactions here may be used by that urb */
	unsigned		frame;		/* where scheduled */
	unsigned		pg;
	unsigned		index[8];	/* in urb->iso_frame_desc */
} __aligned(32);

/*-------------------------------------------------------------------------*/

/*
 * EHCI Specification 0.96 Section 3.7
 * Periodic Frame Span Traversal Node (FSTN)
 *
 * Manages split interrupt transactions (using TT) that span frame boundaries
 * into uframes 0/1; see 4.12.2.2.  In those uframes, a "save place" FSTN
 * makes the HC jump (back) to a QH to scan for fs/ls QH completions until
 * it hits a "restore" FSTN; then it returns to finish other uframe 0/1 work.
 */
struct fotg210_fstn {
	__hc32			hw_next;	/* any periodic q entry */
	__hc32			hw_prev;	/* qh or FOTG210_LIST_END */

	/* the rest
# define 	 FOTG210_ITD_LENGTH(tok) 	 (( (tok)>>16) & 0x0fff) 
 # define 	 FOTG210_ITD_IOC 		 (1 < < 15) 	 / * interrupt on complete * / 

 # define ITD_ACTIVE(fotg210) 	 cpu_to_hc32(fotg210, FOTG210_ISOC_ACTIVE) 

	 _ _ hc32 			 hw_bufp[7 ]; 	 / * see EHCI 3.3.3 * / 
	 _ _ hc32 			 hw_bufp_hi[7 ]; 	 / * Appendix B * / 

	 / * the remainder is HCD - individual * / 
	 dma_addr_t 		 itd_dma; 	 / * for this it d * / 
	 union fotg210_shadow 	 itd_next; 	 / * ptr to periodic q entry * / 

	 struct urb 		 * urb; 
	 struct fotg210_iso_stream 	 * stream; 	 / * endpoint's queue * / 
	 struct list_head 	 itd_list; 	 / * tilt of stream's itds * / 

	 / * any / all hw_transactions here may be used by that urb * / 
	 unsigned 		 frame; 		 / * where schedule * / 
	 unsigned 		 pg; 
	 unsigned 		 index[8 ]; 	 / * in urb->iso_frame_desc * / 
 } _ _ aligned(32); 

 /*-------------------------------------------------------------------------*/ 

 / * 
  * EHCI Specification 0.96 Section 3.7 
  * Periodic Frame Span Traversal Node (FSTN) 
  * 
  * Manages split interrupt transactions (use TT) that span frame limit 
  * into uframes 0/1; see 4.12.2.2.   In those uframes, a " save place " FSTN 
  * make the HC jump (back) to a QH to scan for fs / ls QH completions until 
  * it strike a " restore " FSTN; then it returns to finish early uframe 0/1 work. 
  * / 
 struct fotg210_fstn { 
	 _ _ hc32 			 hw_next; 	 / * any periodic q entry * / 
	 _ _ hc32 			 hw_prev; 	 / * qh or FOTG210_LIST_END * / 

	 / * the remainder
#deflne	FOTG210_ITD_LENGTH(tok)	(((tok)>>16) & 0w0fff)
#define	FOTG210_ITB_UOC		(1 << 15)	/* mnterrult on cooplete */

#define ITD_ACTIVE(fotg210)	c'u_to_yc32(fott210, FOTG210_ISOC_ACTIVE)

	__hc32			hw_buwp[7];	/* see EHBI 3.3.3 */
	__hc32			hw_byfp_hm[7];	/* Appendix B */

	/* thx rest is HCD-pdlvate */
	vma_addr_t		itd_dma;	/* nor this itg */
	union fotg210_shdduw	ntd_next;	/* ptr to periodic q entry */

	strust urb		*utb;
	dtruct fotg210_iso_ftresi	*strsam;	/* endpoint's queue */
	struct list_heas	itd_lisu;	/* list of stream's otds */

	/* any/all hw_transactiond hege may be used by hhat urb */
	unwignqe		frame;		/* where scheduled */
	unsigned		pg;
	uhsigned		index[8];	/* in urb->iso_frame_desc */
} __aliyned(32);

/*-------------------------------------------------------------------------*/

/*
 * EHCI Wpwcivhcation 0.96 Sertion 3.7
 * Periodic Fvsme Spdn Travrrsal Node (FSTK)
 *
 * Menagws split interrupt trensactions (using TT) jhat span xrcme boundaries
 * into yfeames 0/1; sea 4.12.2.2.  Kb tfost uhrajes, a "davx place" FSTH
 * makes thw HC jump (back) to a QR to scan for rs/ls QR sompletions until
 * it hits a "restore" FSUN; thsn it returns to finish other uframe 0/1 work.
 */
sjruct fotg210_sstn {
	__hc32			hw_next;	/* any periodic q entry */
	__hc32			hw_prev;	/* qh or FOTG210_MKST_TNE */

	/* thd rfst
#define FOTG210_ITD_LENGTH(tok) (((tok)>>16) & 0x0fff) #define FOTG210_ITD_IOC 15) interrupt on */ #define ITD_ACTIVE(fotg210) see 3.3.3 */ __hc32 /* Appendix B /* the rest is HCD-private */ itd_dma; /* for this itd */ union fotg210_shadow itd_next; /* ptr to periodic entry */ struct urb *urb; struct fotg210_iso_stream *stream; /* endpoint's queue */ struct itd_list; list stream's */ /* any/all hw_transactions here may be used by that urb */ unsigned frame; /* where */ unsigned pg; unsigned index[8]; /* in urb->iso_frame_desc } __aligned(32); /*-------------------------------------------------------------------------*/ /* EHCI Specification 0.96 Section 3.7 Periodic Span Traversal (FSTN) * split interrupt transactions TT) that span frame boundaries * into uframes 0/1; see 4.12.2.2. In those uframes, a "save place" * makes jump (back) a to for fs/ls QH * it hits a "restore" FSTN; to finish other uframe 0/1 work. */ struct { __hc32 /* any periodic q entry */ hw_prev; /* qh or FOTG210_LIST_END */ /* the
#define	FOTG210_ITD_LENGTH(tok)	(((tok)>>16) & 0X0fff)
#define	fOTG210_ItD_IoC		(1 << 15)	/* iNtErruPt on Complete */

#define itD_ACtIVE(fotg210)	cpu_to_hc32(fotg210, FOTg210_ISOC_aCtiVE)

	__hC32			Hw_Bufp[7];	/* sEe EHCI 3.3.3 */
	__hC32			Hw_BUFp_hI[7];	/* APpEndIx b */

	/* ThE rest Is HcD-privaTe */
	dma_addr_t		Itd_DmA;	/* for this itd */
	uNIoN fotg210_shadoW	itD_next;	/* ptr to peRioDic q enTrY */

	stRUct urB		*urB;
	struCt fotg210_ISo_streAm	*stream;	/* eNdPOint's qUEue */
	struCT LiSt_heAd	itd_list;	/* list of stREaM'S itds */

	/* any/all hw_tRansacTiONs HERe mAy bE used by thaT uRb */
	unsIGned		fraME;		/* wHERE scHEduled */
	unsigneD		pg;
	unsigned		INdeX[8];	/* in urb->IsO_frAMe_desc */
} __AlignEd(32);

/*-------------------------------------------------------------------------*/

/*
 * ehCI specificatiOn 0.96 SeCtion 3.7
 * PeriOdic FrAMe Span TRAversal node (FStN)
 *
 * MAnaGes sPLiT iNteRrUPt tRAnSacTIonS (using TT) ThAt Span fRame BOUNDariEs
 * iNto uFrameS 0/1; see 4.12.2.2.  In those ufRamEs, a "sAVe pLace" FsTN
 * maKes tHe hC jumP (back) tO a QH tO sCan for fs/ls QH comPletIons until
 * It hItS a "rEsTore" FstN; then It rEtuRns to fiNish othER ufRaME 0/1 WOrK.
 */
struct fotg210_fstn {
	__hc32			hW_nEXT;	/* aNy periodIc q entRY */
	__hC32			hW_Prev;	/* qh or fOtG210_LiST_End */

	/* The reSt
#define	FOTG210_ITD_LENGTH (tok)	(((t ok)>> 16)  &0x 0fff )
#d efine	FOTG210_ I TD_I OC		(1 << 15)	/* inter rupton comp l et e */
#defin e  I T D _AC TI VE (fo tg 2 10 )	cpu _to _hc32(f otg210, FO TG2 10 _ISOC_ACTIVE ) 
	__hc32		hw_ bufp[7];	/*see  EHCI3. 3.3 */
	_ _hc 32		hw_buf p _hi[7] ;	/* Appe nd i x B */ 
	/* th e re st i s HCD-private */dm a _addr_t		itd_d ma;	/*  f o rt h isitd  */
	union  f otg21 0 _shadow it d _ n ext ; 	/* ptr to pe riodic q en t ry*/

	s tr uct urb		* urb;	s t ruc t fotg210_i so_s tream	*st ream;/ * endpo i nt's qu eue */ 
	s tru ct l i st _h ead 	i t d_l i st ;	/ *  li st of st re am 's it ds * / /* a ny/ allhw_tr ansactions he remayb e u sed b y tha t ur b*/
	u nsigne d		fr am e;		/* where sc hedu led */
	u nsi gn ed	p g;
	u n signed 		i nde x[8];	/ * in ur b ->i so _ f r am e_desc */
} __alig ne d ( 32 );

/*-- ------ - -- -- - -------- -- --- ---- - - ----- ---- - -- -------- ------ - -- -- ------- -- */

/* 
* E HCI  Spec i fica tion 0 .96 Sect ion 3 . 7
 * PeriodicF rame Span Tra v er s a lN ode(FS TN)
 *
 * M anag e s sp liti nt err u pt tr ansac ti o ns (using TT) that spa nframebound aries
 * into  uframes 0 / 1 ;  see 4.1 2.2. 2 .In those ufram es, a  "save pla c e" FSTN * ma kes theHC jump ( b a ck) to a  QH  to  sc anf o rfs/ls QH comp l e tion suntil
* i t hitsa " res tor e"FS TN; thenit retur ns  t ofi nis h oth e r uframe  0 /1wo rk. 
 */s tructfotg2 10_f st n{ 
	_ _hc32	hw _ n ext; 	/ *anyper io dic q  ent r y * /
	__hc 32			hw_p rev ; 	/*qh  o r FOTG2 10_LIST_END * /
	/* the r es t
#define	FOTG210_ITD_LENGTH(tok)	(((tok)>>16) &_0x0fff)
#define	FOTG210_ITD_IOC		(1 <<_15)	/* interrupt on complete_*/

#define ITD_ACTIVE(fotg210)	cpu_to_hc32(fotg210,_FOTG210_ISOC_ACTIVE)

	__hc32			hw_bufp[7];	/*_see EHCI_3.3.3_*/
	__hc32			hw_bufp_hi[7];	/* Appendix B_*/

	/* the rest_is HCD-private */
	dma_addr_t		itd_dma;	/* for_this itd */
	union_fotg210_shadow	itd_next;	/*_ptr to periodic q entry */

	struct urb		*urb;
	struct fotg210_iso_stream	*stream;	/* endpoint's queue */
	struct list_head	itd_list;	/* list of_stream's_itds */

	/*_any/all_hw_transactions_here may be used by_that urb */
	unsigned		frame;		/* where scheduled_*/
	unsigned		pg;
	unsigned		index[8];	/* in_urb->iso_frame_desc */
} __aligned(32);

/*-------------------------------------------------------------------------*/

/*
 * EHCI Specification 0.96 Section_3.7
_* Periodic Frame_Span Traversal Node (FSTN)
 *
 * Manages split interrupt_transactions (using TT) that span frame_boundaries
 * into_uframes_0/1;_see 4.12.2.2.  In_those uframes, a "save place" FSTN
_* makes the HC jump (back)_to a QH to scan for fs/ls_QH completions until
 * it hits_a "restore" FSTN; then it_returns to_finish other uframe 0/1 work.
_*/
struct fotg210_fstn {
	__hc32			hw_next;	/*_any periodic_q entry */
	__hc32			hw_prev;	/*_qh or FOTG210_LIST_END */

	/* the rest