coreboot-kgpe-d16/util/uio_usbdebug
Patrick Georgi b890a1228d Remove address from GPLv2 headers
As per discussion with lawyers[tm], it's not a good idea to
shorten the license header too much - not for legal reasons
but because there are tools that look for them, and giving
them a standard pattern simplifies things.

However, we got confirmation that we don't have to update
every file ever added to coreboot whenever the FSF gets a
new lease, but can drop the address instead.

util/kconfig is excluded because that's imported code that
we may want to synchronize every now and then.

$ find * -type f -exec sed -i "s:Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, *MA[, ]*02110-1301[, ]*USA:Foundation, Inc.:" {} +
$ find * -type f -exec sed -i "s:Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA:Foundation, Inc.:" {} +
$ find * -type f -exec sed -i "s:Foundation, Inc., 59 Temple Place[-, ]*Suite 330, Boston, MA *02111-1307[, ]*USA:Foundation, Inc.:" {} +
$ find * -type f -exec sed -i "s:Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.:Foundation, Inc.:" {} +
$ find * -type f
	-a \! -name \*.patch \
	-a \! -name \*_shipped \
	-a \! -name LICENSE_GPL \
	-a \! -name LGPL.txt \
	-a \! -name COPYING \
	-a \! -name DISCLAIMER \
	-exec sed -i "/Foundation, Inc./ N;s:Foundation, Inc.* USA\.* *:Foundation, Inc. :;s:Foundation, Inc. $:Foundation, Inc.:" {} +

Change-Id: Icc968a5a5f3a5df8d32b940f9cdb35350654bef9
Signed-off-by: Patrick Georgi <pgeorgi@chromium.org>
Reviewed-on: http://review.coreboot.org/9233
Tested-by: build bot (Jenkins)
Reviewed-by: Vladimir Serbinenko <phcoder@gmail.com>
2015-05-21 20:50:25 +02:00
..
console
drivers/usb
include/device
lib
linux
Makefile
README uio_usbdebug: User-space-i/o framework for usbdebug 2015-03-19 19:19:42 +01:00
uio_usbdebug.c
uio_usbdebug_intel.c Remove address from GPLv2 headers 2015-05-21 20:50:25 +02:00

README

uio_usbdebug - Run coreboot's usbdebug driver in userspace
==========================================================


## Purpose

uio_usbdebug enables you to debug coreboot's usbdebug driver inside a
running operating system (only Linux at this time). This comes very
handy if you're hacking the usbdebug driver and don't have any other
debug output from coreboot itself.


## State

Currently only Intel chipsets are supported. Support for other chipsets
should be straightforward (normally just some port-enable code has to
be implemented).

The Linux kernel driver (see linux/uio_ehci_pci.c) has only one PCI ID
hardcoded (for ICH7). The whole setup has been developed and tested on
a ThinkPad T60.

### Files

uio_usbdebug.c       -	The userspace part of the uio interface.

uio_usbdebug_intel.c -	Port enable code for Intel chipsets.

linux/uio_ehci_pci.c -	Kernel part of the uio interface.

console/printk.c     -	A do_printk() implementation so you can see debug
			output with CONFIG_DEBUG_USBDEBUG enabled.

device/*.c lib/*.c   -	Some stubs for (hopefully) unneeded functions for
			proper linking.


## Usage

### Preparations

The MMIO space has to be a whole 4K page in size and alignment to be
mapped into userspace. This is very uncommon, so you'll most probably
have to remap the MMIO space. The Linux kernel does that for you with
the `pci=resource_alignment=<pci address>` kernel parameter (e.g.
`pci=resource_alignment=0:1d.7` for ICH7).

If your PCI device isn't listed in the kernel driver yet, you might want
to add it to the `ehci_pci_ids` table in `linux/uio_ehci_pci.c` (or do
some module alias magic if you know how to).

### Build / Install

Somehow like this:

$ # Configure coreboot for your board and enable CONFIG_USBDEBUG
$ make menuconfig
$ cd util/uio_usbdebug/
$ make -Clinux/
$ sudo make -Clinux/ install
$ make

### Run

$ # Unload Linux' EHCI driver (high-speed devices will stop working)
$ sudo modprobe -r ehci-pci
$ # Load the uio driver
$ sudo modprobe uio-ehci-pci
$ # Find your uio device
$ ls /sys/module/uio_ehci_pci/drivers/*/*/uio/
uio0
$ # Run uio_usbdebug on this device
$ sudo ./uio_usbdebug /dev/uio0

Sadly, uio_usbdebug has to be run with root privileges since there are
port-80 writes in the usbdebug driver.