[coreboot] EHCI debug port finder

Carl-Daniel Hailfinger c-d.hailfinger.devel.2006 at gmx.net
Mon Nov 24 03:35:30 CET 2008


Hi,

the challenge is to create a cross-platform tool which tells you about
the EHCI USB debug ports in your machine and whether something is
attached to them.
With existing tools, this is possible only for a few corner cases:
specific Linux kernel versions, special kernel configurations and a
non-mounted /proc/bus/usb together with a patched lsusb shipped with
opensuse.

Suggestion: Create a patch for lspci and make sure upstream merges it.
That would at least take care of being independent on available dmesg
output from a recent, but not too recent kernel. With a patched lspci
(similar to the recent VPD patches) it is possible to display the USB
debug physical port number. After that, you just have to write a new
tool from scratch which can display the USB devices attached to a given
controller and physical port.

On 09.09.2008 03:31, Carl-Daniel Hailfinger wrote:
> I wanted to know which physical port of my multiple USB controllers have
> the debug capability. There was no way to find that easily, so I created
> a tool which will do most of the work for the user.
>
> Example output:
> The following PCI devices support a USB debug port (says lspci):
> 0000:00:1d.7
> The following PCI devices support a USB debug port (says the kernel):
> 0000:00:1d.7
> PCI device 0000:00:1d.7, USB bus 3, USB physical port 1
> Currently connected high-speed devices:
> /:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=ehci_hcd/6p, 480M
>     |__ Port 2: Dev 20, If 0, Class=stor., Driver=usb-storage, 480M
>
> The output can be improved, but it's a good start.
>   

New version. Example output:
The following PCI devices support a USB debug port (says lspci):
0000:00:0b.1 0000:04:08.3
The following PCI devices support a USB debug port (says the kernel):
0000:00:0b.1 0000:04:08.3
Common subset is: 0000:00:0b.1 0000:04:08.3
The following debug ports exist:
PCI device 0000:00:0b.1, USB bus 1, USB physical port 1
  Attached devices:
PCI device 0000:04:08.3, USB bus 3, USB physical port 1
  Attached devices:
  Bus 03 Port 1 Dev 11, If 0, Class=stor., Driver=usb-storage, 480M
Currently connected high-speed devices:
Bus 03 Port 1 Dev 11, If 0, Class=stor., Driver=usb-storage, 480M
Bus 03 Port 4 Dev 13, If 0, Class=stor., Driver=usb-storage, 480M

This only works if /proc/bus/usb is not mounted and if your lsusb can
cope with that.
Basically, lsusb has two different output formats, depending on whether
/proc/bus/usb is available. Besides that, lsusb has lots of other quirks
which make it near unusable. If you look at the script, you'll notice
lots of code is only there to get the output format of various tools in
shape. lsusb is the worst offender there.

Regards,
Carl-Daniel

-- 
http://www.hailfinger.org/

-------------- next part --------------
A non-text attachment was scrubbed...
Name: finddebugport.sh
Type: application/x-shellscript
Size: 2674 bytes
Desc: not available
URL: <http://www.coreboot.org/pipermail/coreboot/attachments/20081124/478dd1e4/attachment.sh>


More information about the coreboot mailing list