Thanks, Alan, for the explanations. I guess my question is what we should do if our host controller has integrated transaction translator but no USBMOD register. I guess we can put in a dumb register and do nothing. Another question, about ehci_port_speed(). We cannot use the existing 26 offset, as hard-coded in ehci_port_speed(): static inline unsigned int ehci_port_speed(struct ehci_hcd *ehci, unsigned int portsc) { if (ehci_is_TDI(ehci)) { switch ((portsc>>26)&3) { Because it may get us into copyright issues. Can we define our own offset bit, for example: #define EHCI_TT_SPEED_BITS 26 #ifdef CONFIG_XPS_USB2_HCD_XILINX #define EHCI_TT_SPEED_BITS 28 #endif static inline unsigned int ehci_port_speed(struct ehci_hcd *ehci, unsigned int portsc) { if (ehci_is_TDI(ehci)) { switch ((portsc>>EHCI_TT_SPEED_BITS)&3) { Is it acceptable to Linux? Thanks, Julie. > -----Original Message----- > From: Alan Stern [mailto:stern@xxxxxxxxxxxxxxxxxxx] > Sent: Thursday, February 05, 2009 3:13 PM > To: Julie Zhu > Cc: linux-usb@xxxxxxxxxxxxxxx > Subject: Re: What is TDI in ehci_is_TDI() > > On Thu, 5 Feb 2009, Julie Zhu wrote: > > > Hello, > > > > I wonder what does "TDI" stand for in ehci_is_TDI()? The current one > > checks hcd->has_tt, as in ehci.h: > > "TDI" is the abbreviation for a company name (I don't know what the > original full name was). > > > #define ehci_is_TDI(e) (ehci_to_hcd(e)->has_tt) > > > > Is it true that if an EHCI host controller has Transaction Translator, > > which means has_tt = 1, then it becomes "TDI"? > > I don't know the exact sequence of events. Some company, either ARC > or TDI, developed an EHCI controller with an integrated Transaction > Translator. Their intellectual property has moved on and is now being > licensed or copied by other companies that also make EHCI controllers > (Freescale, Intel, and maybe more). > > So yes, this macro selects EHCI host controllers that have an > integrated TT. > > > The part worries me is that in ehci_reset(): > > > > if (ehci_is_TDI(ehci)) > > tdi_reset (ehci); > > > > And in tdi_reset(), it accesses a USBMOD register, which is not EHCI > > defined. > > That's because the integrated TT is not in the original EHCI > specification. It is an extension added by ARC/TDI. > > > Can someone clarify the correct way to implement the driver for an EHCI > > compliant host controller with transaction translator? > > If you mean a host controller that complies exactly with the EHCI spec > then there is no such thing. By definition, such controllers do not > have TTs. > > > Since the USBMOD > > register is not EHCI specified, we are not going to have that. > > You mean you designing your own EHCI controller, and it won't have an > integrated TT? > > > Have I > > missed something? > > Probably. But it's hard to tell what you've missed. > > Alan Stern > This email and any attachments are intended for the sole use of the named recipient(s) and contain(s) confidential information that may be proprietary, privileged or copyrighted under applicable law. If you are not the intended recipient, do not read, copy, or forward this email message or any attachments. Delete this email message and any attachments immediately. -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html