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 -- 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