USB HCD driver

Simon Arlott simon at
Sun Jun 3 14:40:48 EDT 2012

On 03/06/12 19:28, Stephen Warren wrote:
> On 06/03/2012 12:06 PM, Simon Arlott wrote:
>> I'm giving up on writing a USB HCD driver.
>> There's no specification on how to use the hardware, only a mountain of
>> documentation on the driver itself which is needlessly full of wrappers
>> making it very difficult to understand what it's actually doing.
> I worked a bit on getting U-Boot running on the Raspberry Pi yesterday
> (I have a very minimal version working just with the serial port and
> timer enabled), with the eventual intention of getting the USB
> controller up and running, so I could boot over the network (at least
> the kernel and DTB). I was just about to start looking at the USB
> controller. The documentation situation sounds unfortunate-(

Synopsys have put a lot of effort into writing and maintaining a driver
(with lots of ugly msleep() hacks) that'll never make it into the
mainline kernel without a complete rewrite. Considering the apparent
lack of Broadcom experience with mainline Linux it's not surprising they
didn't notice this.

> Do you know if the USB controller is a standard EHCI controller, just
> perhaps with some extra knobs for PHY and OTG configuration, or is it
> something more complex/unusual?

It borrows some parts from EHCI without using the EHCI interface. They
specifically mention that they made the hardware cheaper by implementing
more of it in software.

The URB queueing system might be identical to EHCI as it uses the same
terminology but the registers definitely aren't. There's also a large
quantity of configuration data that the driver is expected to use to
configure the device.

Simon Arlott

More information about the linux-rpi-kernel mailing list