On Fri, Apr 20, 2012 at 11:23:27PM -0400, Mike Vlad wrote: > First, a very big thank you for answering this, and in such detail. You deserve a raise! :) > But before I jump for joy I want to /triple/ check to make sure I have this right, just to make sure I'm not delusional from the excitement of having this resolved. Don't drop the linux-usb mailing list, please. I'm sure other folks will be asking similar questions, and I want this response archived so I can point them to it. > > You can only integrate an xHC into a chipset (making the hardware physically part of the chipset package) if you comply with the xHCI 1.0 spec. > Think of the 0.96 spec as a test run. Intel wanted to make sure the interface architecture is correct before we allow anyone (including ourselves) to integrate it into chipsets that are harder to swap out than a stand-alone chip. > Back at IDF, Intel announced that our Ivy Bridge chipset (Panther Point) will have an integrated (1.0) xHCI host controller. If you really want a 1.0 host, then you should wait for an Ivy Bridge system. > So this means 1) a 3rd party's USB 3.0 integrated controller is at xHCI rev. 1.0 on an Ivy Bridge motherboard? The integrated host controller in the Panther Point chipset is an Intel xHCI host, not a third party host controller. I misspoke in my original email. If you want an integrated xHCI host controller, you need to make sure you have the Panther Point chipset. I think you might be able to buy an Ivy Bridge CPU without buying a Panther Point chipset with it, especially if you're building your own motherboard. If you want the Intel integrated xHCI 1.0 host, you need to make sure your motherboard has a Panther Point chipset. The official names for the Panther Point chipset are: Mobile Intel® HM77 Express Chipset Mobile Intel® UM77 Express Chipset Mobile Intel® HM76 Express Chipset Mobile Intel® HM75 Express Chipset Intel® Z75 Express Chipset Intel® Z77 Express Chipset Intel® H77 Express Chipset Intel® B75 Express Chipset Mobile Intel® HM70 Express Chipset You can also look up future Panther Point skews on ark.intel.com: http://ark.intel.com/products/codename/37531 >As I understand it, Intel dictates what the xHCI standard is and motherboard vendors/3rd parties follow suit. This springs another question; 2) can a chipset even have two different xHCI revisions between different integrated controllers? Integrated host controllers must always be 1.0 host controllers. I suppose they could have different IP that comply to different 1.0 spec errata, but I don't think that's likely. Now, I know that some motherboard vendors and OEM ship systems with multiple xHCI hosts. One system I know of has both an NEC 0.96 and a TI 0.96 host. I think you're getting confused about discrete vs integrated hosts. Discrete can mean a PCIe add-in card, or a "discrete" chip that is soldiered into place on a mother board. Integrated means the host is a part of the physical chipset package, i.e. the chipset chip that is placed onto the motherboard, like the Z77 Express chipset. > The motherboard I have in mind is in fact an Ivy Bridge (Asus Sabertooth Z77). The 3rd party integrated controller is an ASMedia ASM1042. The ASMedia website lists this controller as 0.96, but after the info you gave, I conclude that it's only relevant to a discrete host controller of theirs. I think that ASMedia host is a discrete chip that's soldered onto the ASUS motherboard. That board supports both Gen 2 and Gen 3 CPUs, so the ASMedia host was probably put there for the Gen 2 chipset that didn't have an integrated xHCI host. If you make sure to buy a Panther Point chipset from the list above, along with the Ivy Bridge CPU, and put them in the Asus Sabertooth Z77 motherboard, I suspect you'll end up with both an Intel 1.0 xHCI host, and an ASMedia 0.96 xHCI host. Sarah > ----- Original Message ----- > From: Sarah Sharp > Sent: 04/20/12 07:13 PM > To: Mike Vlad > Subject: Re: Question about xHCI > > On Thu, Apr 19, 2012 at 04:42:04PM -0400, Mike Vlad wrote: > Hello Sarah, > > I've been trying to get answers to some questions from Intel and elsewhere and it proved unsuccessful. Long story short, I discovered you and your involvement in xHCI. I don't know much about hardware/software inner workings, and am looking for a little clarification: > > 1a) Can a controller compliant to xHCI rev. 0.96 be updated to 1.0? (i.e. via firmware/bios/Linux kernel update?) No, the hardware registers are different. A 0.96 or 1.0 chipset is certified to that particular specification revision, and the vendor has no incentive to provide an upgrade. > 1b) Or are these revisions hardware based? (Meaning whatever revision it comes with, it has to stay that way) Yes. > 2) Does it look like there's a revision after 1.0 on the horizon? Let me explain what the 0.96 and 1.0 revisions mean before I answer that question. > The thing I don't understand is what xHCI really is, in simple terms. A driver? A hardware architecture? xHCI is a spec that defines the interface between the eXtensible Host Controller (xHC) and software. So it's an interface specification, that defines both the registers that the hardware needs to expose, and the data structures and behavioral model that a software driver needs to use in order to communicate with the hardware. Basically, the 0.96 spec was released to allow third-party host vendors to create PCIe add-in cards or stand-alone chips that OEMs could add to their motherboard. You can only integrate an xHC into a chipset (making the hardware physically part of the chipset package) if you comply with the xHCI 1.0 spec. Think of the 0.96 spec as a test run. Intel wanted to make sure the interface architecture is correct before we allow anyone (including ourselves) to integrate it into chipsets that are harder to swap out than a stand-alone chip. There were architectural issues that were fixed in the 1.0 spec that were found in the 0.96 spec. I can't remember too much about what got fixed though. Some regist ry tweaks, maybe some bulk streams hardware behavioral fixes for the new USB storage class, USB attached SCSI (UAS), and some updates for the USB 2.1 low power states (link PM). If Intel were ever to have a "1.1" xHCI spec, it would probably be a compilation of the errata that's currently available against the 1.0 spec. But it's not a big leap, like from discrete hosts to integrated hosts like the 0.96 to 1.0 spec is. > I'm looking to buy a 7 series Intel motherboard soon (which complies to rev. 1.0 according to an Intel datasheet for OEMs) and all the ones I wanted have 3rd party USB 3.0 controllers (ASMedia ASM1042) that comply to 0.96, even though the latest is 1.0. So my thinking is that I don't want to get controllers with "old standards" and have a feature(s) missing that I may need in the future when USB 3.0 matures, assuming no updates are possible. Back at IDF, Intel announced that our Ivy Bridge chipset (Panther Point) will have an integrated (1.0) xHCI host controller. If you really want a 1.0 host, then you should wait for an Ivy Bridge system. I'm using a discrete 0.96 NEC xHCI in my personal x220 laptop, but that's because I'm a crazy early adopter who couldn't wait to get a new computer with USB 3.0. :) I have to say, I wish I had waited for the Ivy Bridge ultrabooks instead, since those will be much thinner and lighter, and have an Intel 1.0 xHCI host. I've been waiting to upgrade my work laptop until Ivy Bridge comes out, of course. Bit of legalize: The above paragraph is designed to express my personal preference, and should in no way be construed as being the opinions of my employer, Intel. Sarah Sharp -- 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