summaryrefslogtreecommitdiffstats
path: root/src/config
diff options
context:
space:
mode:
authorMichael Brown2015-09-04 03:26:01 +0200
committerMichael Brown2015-09-07 02:38:40 +0200
commit15a8800a984239553cbbb6629e076e98a3be7537 (patch)
tree87c62eac43dc8f06224e128625d157e5cdf94fc9 /src/config
parent[efi] Allow efidev_parent() to traverse multiple device generations (diff)
downloadipxe-15a8800a984239553cbbb6629e076e98a3be7537.tar.gz
ipxe-15a8800a984239553cbbb6629e076e98a3be7537.tar.xz
ipxe-15a8800a984239553cbbb6629e076e98a3be7537.zip
[efi] Add a USB host controller driver based on EFI_USB_IO_PROTOCOL
Allow iPXE to coexist with other USB device drivers, by attaching to the EFI_USB_IO_PROTOCOL instances provided by the UEFI platform firmware. The EFI_USB_IO_PROTOCOL is an unsurprisingly badly designed abstraction of a USB device. The poor design choices intrinsic in the UEFI specification prevent efficient operation as a network device, with the result that devices operated using the EFI_USB_IO_PROTOCOL operate approximately two orders of magnitude slower than devices operated using our native EHCI or xHCI host controller drivers. Since the performance is so abysmally slow, and since the underlying problems are due to fundamental architectural mistakes in the UEFI specification, support for the EFI_USB_IO_PROTOCOL host controller driver is left as disabled by default. Users are advised to use the native iPXE host controller drivers instead. Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/config')
-rw-r--r--src/config/config_usb.c3
-rw-r--r--src/config/usb.h1
2 files changed, 4 insertions, 0 deletions
diff --git a/src/config/config_usb.c b/src/config/config_usb.c
index dc0e6e6a..4e5843b9 100644
--- a/src/config/config_usb.c
+++ b/src/config/config_usb.c
@@ -43,6 +43,9 @@ REQUIRE_OBJECT ( ehci );
#ifdef USB_HCD_UHCI
REQUIRE_OBJECT ( uhci );
#endif
+#ifdef USB_HCD_USBIO
+REQUIRE_OBJECT ( usbio );
+#endif
/*
* Drag in USB peripherals
diff --git a/src/config/usb.h b/src/config/usb.h
index 52e82eaa..6d80e7f6 100644
--- a/src/config/usb.h
+++ b/src/config/usb.h
@@ -18,6 +18,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
//#undef USB_HCD_XHCI /* xHCI USB host controller */
//#undef USB_HCD_EHCI /* EHCI USB host controller */
//#undef USB_HCD_UHCI /* UHCI USB host controller */
+//#define USB_HCD_USBIO /* Very slow EFI USB host controller */
/*
* USB peripherals