Index: boot/arch/amd64/Makefile.inc
===================================================================
--- boot/arch/amd64/Makefile.inc	(revision b942a66fcc8bdbbdffef53483fd6e7472144106c)
+++ boot/arch/amd64/Makefile.inc	(revision 5119d344096203503fefb679bf5917fe4631b2c0)
@@ -56,5 +56,6 @@
 	bus/usb/usbmast \
 	bus/usb/usbmid \
-	bus/usb/vhc
+	bus/usb/vhc \
+	bus/usb/xhci
 
 RD_DRV_CFG += \
Index: tools/ew.py
===================================================================
--- tools/ew.py	(revision b942a66fcc8bdbbdffef53483fd6e7472144106c)
+++ tools/ew.py	(revision 5119d344096203503fefb679bf5917fe4631b2c0)
@@ -160,4 +160,9 @@
 	return ' -usb'
 
+def qemu_xhci_options():
+	if is_override('noxhci'):
+		return ''
+	return ' -device nec-usb-xhci,id=xhci'
+
 def qemu_audio_options():
 	if is_override('nosnd'):
@@ -180,4 +185,6 @@
 	if (not 'usb' in cfg.keys()) or cfg['usb']:
 		cmdline += qemu_usb_options()
+	if (not 'xhci' in cfg.keys()) or cfg['xhci']:
+		cmdline += qemu_xhci_options()
 	if (not 'audio' in cfg.keys()) or cfg['audio']:
 		cmdline += qemu_audio_options()
@@ -286,5 +293,5 @@
 def usage():
 	print("%s - emulator wrapper for running HelenOS\n" % os.path.basename(sys.argv[0]))
-	print("%s [-d] [-h] [-net e1k|rtl8139|ne2k] [-nohdd] [-nokvm] [-nonet] [-nosnd] [-nousb]\n" %
+	print("%s [-d] [-h] [-net e1k|rtl8139|ne2k] [-nohdd] [-nokvm] [-nonet] [-nosnd] [-nousb] [-noxhci]\n" %
 	    os.path.basename(sys.argv[0]))
 	print("-d\tDry run: do not run the emulation, just print the command line.")
@@ -295,4 +302,5 @@
 	print("-nosnd\tDisable sound, if applicable.")
 	print("-nousb\tDisable USB support, if applicable.")
+	print("-noxhci\tDisable XHCI support, if applicable.")
 
 def fail(platform, machine):
@@ -336,4 +344,6 @@
 		elif sys.argv[i] == '-nousb':
 			overrides['nousb'] = True
+		elif sys.argv[i] == '-noxhci':
+			overrides['noxhci'] = True
 		else:
 			usage()
Index: uspace/Makefile
===================================================================
--- uspace/Makefile	(revision b942a66fcc8bdbbdffef53483fd6e7472144106c)
+++ uspace/Makefile	(revision 5119d344096203503fefb679bf5917fe4631b2c0)
@@ -159,4 +159,5 @@
 	drv/bus/usb/usbmid \
 	drv/bus/usb/vhc \
+	drv/bus/usb/xhci \
 	drv/nic/ne2k \
 	drv/nic/e1k \
Index: uspace/drv/bus/usb/xhci/Makefile
===================================================================
--- uspace/drv/bus/usb/xhci/Makefile	(revision 5119d344096203503fefb679bf5917fe4631b2c0)
+++ uspace/drv/bus/usb/xhci/Makefile	(revision 5119d344096203503fefb679bf5917fe4631b2c0)
@@ -0,0 +1,44 @@
+#
+# Copyright (c) 2017 Ondrej Hlavaty <aearsis@eideo.cz>
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+# - Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in the
+#   documentation and/or other materials provided with the distribution.
+# - The name of the author may not be used to endorse or promote products
+#   derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+USPACE_PREFIX = ../../../..
+
+LIBS = \
+	$(LIBUSB_PREFIX)/libusb.a \
+	$(LIBDRV_PREFIX)/libdrv.a
+
+EXTRA_CFLAGS += \
+	-I$(LIBUSB_PREFIX)/include \
+	-I$(LIBDRV_PREFIX)/include
+
+BINARY = xhci
+
+SOURCES = \
+	main.c
+
+include $(USPACE_PREFIX)/Makefile.common
Index: uspace/drv/bus/usb/xhci/main.c
===================================================================
--- uspace/drv/bus/usb/xhci/main.c	(revision 5119d344096203503fefb679bf5917fe4631b2c0)
+++ uspace/drv/bus/usb/xhci/main.c	(revision 5119d344096203503fefb679bf5917fe4631b2c0)
@@ -0,0 +1,84 @@
+/*
+ * Copyright (c) 2017 Ondrej Hlavaty <aearsis@eideo.cz>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ *   notice, this list of conditions and the following disclaimer in the
+ *   documentation and/or other materials provided with the distribution.
+ * - The name of the author may not be used to endorse or promote products
+ *   derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/** @addtogroup drvusbxhci
+ * @{
+ */
+/** @file
+ * Main routines of XHCI driver.
+ */
+
+#include <ddf/driver.h>
+#include <errno.h>
+#include <io/log.h>
+#include <io/logctl.h>
+#include <usb/debug.h>
+
+#define NAME "xhci"
+
+
+/** Initializes a new ddf driver instance of XHCI hcd.
+ *
+ * @param[in] device DDF instance of the device to initialize.
+ * @return Error code.
+ */
+static int xhci_dev_add(ddf_dev_t *device)
+{
+	usb_log_info("Requested to add device %s", ddf_dev_get_name(device));
+	return ENOTSUP;
+}
+
+
+static const driver_ops_t xhci_driver_ops = {
+	.dev_add = xhci_dev_add,
+};
+
+static const driver_t xhci_driver = {
+	.name = NAME,
+	.driver_ops = &xhci_driver_ops
+};
+
+
+/** Initializes global driver structures (NONE).
+ *
+ * @param[in] argc Nmber of arguments in argv vector (ignored).
+ * @param[in] argv Cmdline argument vector (ignored).
+ * @return Error code.
+ *
+ * Driver debug level is set here.
+ */
+int main(int argc, char *argv[])
+{
+	log_init(NAME);
+	logctl_set_log_level(NAME, LVL_DEBUG);
+	return ddf_driver_main(&xhci_driver);
+}
+
+/**
+ * @}
+ */
Index: uspace/drv/bus/usb/xhci/xhci.ma
===================================================================
--- uspace/drv/bus/usb/xhci/xhci.ma	(revision 5119d344096203503fefb679bf5917fe4631b2c0)
+++ uspace/drv/bus/usb/xhci/xhci.ma	(revision 5119d344096203503fefb679bf5917fe4631b2c0)
@@ -0,0 +1,2 @@
+20 usb/host=xhci
+10 pci/class=0c&subclass=03&progif=30
