Page 1 of 1

UHCI Specifications

Posted: Wed May 27, 2009 8:51 pm
by madeofstaples
Hi,

I think I'm ready to implement USB drivers, so I've of course been reading the OHCI, UHCI, and EHCI specifications. I gather that I should use the PCI class code register to identify the appropriate USB driver, so I referenced the specs of each standard to determine the value I need to match:

For EHCI the specs say the class code should be 0x0C0320
For OHCI the specs say the class code should be 0x0C0310
For UHCI the specs say the class code should be 0x010180 (which appears to be the class code for a master IDE controller?), this, followed by a table with values which suggest that 0x0C0300 is really the default value (UHCI specs, page 25).

I briefly looked through the uhci_hcd linux driver and I'm not too familiar with writing drivers in linux, but it looked as though it used the 0x0C0300 value, which seems right. However, I searched for "010180" in the linux source tree and found nothing used in the context of a PCI class code, so I am just wondering: is this just a typo that was never corrected? or is that value of any importance...?

Thanks

Re: UHCI Specifications

Posted: Thu May 28, 2009 8:45 am
by jal
madeofstaples wrote:is this just a typo that was never corrected? or is that value of any importance...?
It's on page 19, not 25, in the document you linked? Anyway, though it says the 'default value' is 010180h, the register contents info directly below it shows 0c0300h. So I suppose it's a typo, or else the meaning of 'default value' is something else from what I would expect.


JAL

Re: UHCI Specifications

Posted: Thu May 28, 2009 9:00 am
by madeofstaples
jal wrote:
madeofstaples wrote:is this just a typo that was never corrected? or is that value of any importance...?
It's on page 19, not 25, in the document you linked?
Page 25 of the PDF document, physical page 19. Sorry.
jal wrote:Anyway, though it says the 'default value' is 010180h, the register contents info directly below it shows 0c0300h. So I suppose it's a typo, or else the meaning of 'default value' is something else from what I would expect.
Thanks, this is what I thought, I guess I'm just a little stunned that such a typo was never corrected in 13 years with probably at least thousands of reads... I'm also curious how that value ended up there, since it would appear to be that of an IDE controller, yet in 13 years such an IDE controller doesn't seem to have gained support in linux?

I just realized that my own machines have UHCI chipsets so I could just write some quick bootcode to test the very initial value I'll see. I expect I'll find the value 0x0C0300, but if I don't I'll be sure to post back with my results.

Thanks again.

Edit: Code from the MBR found the UHCI controller to indeed have a class code of 0x0C0300

Re: UHCI Specifications

Posted: Thu May 28, 2009 12:33 pm
by jal
madeofstaples wrote:Edit: Code from the MBR found the UHCI controller to indeed have a class code of 0x0C0300
Ah, that's good news then. 0x0c0300 it is :).


JAL