[coreboot] USB debug cables and emulation

Joseph Smith joe at settoplinux.org
Fri Jul 4 05:12:52 CEST 2008

> -----Original Message-----
> From: coreboot-bounces+joe=settoplinux.org at coreboot.org [mailto:coreboot-
> bounces+joe=settoplinux.org at coreboot.org] On Behalf Of Patrick Georgi
> Sent: Thursday, July 03, 2008 9:44 PM
> To: Joseph Smith
> Cc: Stefan Reinauer; coreboot at coreboot.org
> Subject: Re: [coreboot] USB debug cables and emulation
> Joseph Smith schrieb:
> >> We're pretty far with the UHCI stack in GRUB2. If you are looking for a
> >> USB project to jump on, we can certainly use help ;-)
> >>
> >> Initial keyboard support is there. MSC support is there, UHCI is there.
> >>
> >> Missing: Fixes, Testing, OHCI, EHCI, Fixes, Fixes, Testing...
> >>
> >> Maybe we can pack it into libpayload instead of GRUB2 too, so we can
> >> make it available to more payloads?
> >>
> It's clean code with no imports (though I got some clues from other
> sources, esp. as far as workarounds for chipset bugs are concerned, but
> it should be safe), so it's not bound to a license, and apart from
> grub_strcpy here and grub_uint32_t there, which can be sanitized easily,
> and some trivial pci controller detection logic, it's not very grub2
> specific either. I merely develop it inside the grub2 tree because
> that's the most convenient for now.
> > Stefan, I would love to help out. I offered my services to Patrick a
> while
> > ago, with no response.
> > What can I do?
> >
> Oops, sorry!
> You seem to be only starting into USB now, but so did I when I started
> writing this code (which probably shows at places). I quickly collected
> a TODO:
> For UHCI:
>  - testing and fixes, lots of it
>  - make more clever (eg. bulk transfer with >1 packet/ms, which might be
> done next week already)
>  - fix some abstractions (eg. bulk transfer is at the wrong place
> currently)
>  - improve interrupt transfer handling
> For OHCI:
>  - create driver (most of UHCI doesn't apply here, because the chip is
> more clever. "fix some abstractions" definitely helps, though)
> For EHCI:
>  - figure out how to gain control over a device from the USB1 controller
> (that will somehow interact with the USB1 driver)
>  - PING/DATA2 protocol, microframes support
>  - extend HUB driver, so it handles USB1 devices on a USB2 hub
> USB devices:
>  - the keyboard driver is rather rudimentary
>  - mouse doesn't exist
>  - mass storage only likes few devices (high priority for me)
>  - hub driver doesn't have proper device power management yet
> Get the code to run, figure out the design (sorry, no documentation yet
> - but ask me. The code can only become better that way), play with it,
> fix it for your hardware, ask questions, send/commit patches, ...
> On my personal TODO (after this %!$# northbridge works for me) is most
> of the UHCI stuff, and mass storage. Everything else is pretty much free
> for grabs (but it might be good to tell me so I don't step on your
> toes). OHCI and mouse are definitely not on my list for the short term,
> other usb device drivers also aren't. I also don't mind patches to any
> part of the code :-)

Great. I am going to be on vacation next week. I am about half way through
reading the USB 2.0 specification (http://www.usb.org/developers/docs/), and
I will try to finish by next week and dive right in when I get back :-)

Joseph Smith

More information about the coreboot mailing list