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
UHCI Specifications
-
- Member
- Posts: 204
- Joined: Thu Apr 12, 2007 8:15 am
- Location: Michigan
UHCI Specifications
Some people are offended by the verifiable truth; such people tend to remain blissfully unencumbered by fact.
If you are one of these people, my posts may cause considerable discomfort. Read at your own risk.
If you are one of these people, my posts may cause considerable discomfort. Read at your own risk.
Re: UHCI Specifications
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.madeofstaples wrote:is this just a typo that was never corrected? or is that value of any importance...?
JAL
-
- Member
- Posts: 204
- Joined: Thu Apr 12, 2007 8:15 am
- Location: Michigan
Re: UHCI Specifications
Page 25 of the PDF document, physical page 19. Sorry.jal wrote:It's on page 19, not 25, in the document you linked?madeofstaples wrote:is this just a typo that was never corrected? or is that value of any importance...?
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?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.
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
Some people are offended by the verifiable truth; such people tend to remain blissfully unencumbered by fact.
If you are one of these people, my posts may cause considerable discomfort. Read at your own risk.
If you are one of these people, my posts may cause considerable discomfort. Read at your own risk.
Re: UHCI Specifications
Ah, that's good news then. 0x0c0300 it is :).madeofstaples wrote:Edit: Code from the MBR found the UHCI controller to indeed have a class code of 0x0C0300
JAL