Index: uspace/drv/bus/usb/ehci/hw_struct/fstn.h
===================================================================
--- uspace/drv/bus/usb/ehci/hw_struct/fstn.h	(revision 657601973ecf3e3e5b7928453eab90806b0ec3ab)
+++ uspace/drv/bus/usb/ehci/hw_struct/fstn.h	(revision 657601973ecf3e3e5b7928453eab90806b0ec3ab)
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2013 Jan Vesely
+ * 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 drvusbehci
+ * @{
+ */
+/** @file
+ * @brief EHCI driver
+ */
+#ifndef DRV_EHCI_HW_STRUCT_FSTN_H
+#define DRV_EHCI_HW_STRUCT_FSTN_H
+
+#include "link_pointer.h"
+
+typedef struct fstn {
+	link_pointer_t normal_path;
+	link_pointer_t back_path;
+} fstn_t;
+
+#endif
+/**
+ * @}
+ */
+
Index: uspace/drv/bus/usb/ehci/hw_struct/iso_transfer_descriptor.h
===================================================================
--- uspace/drv/bus/usb/ehci/hw_struct/iso_transfer_descriptor.h	(revision 657601973ecf3e3e5b7928453eab90806b0ec3ab)
+++ uspace/drv/bus/usb/ehci/hw_struct/iso_transfer_descriptor.h	(revision 657601973ecf3e3e5b7928453eab90806b0ec3ab)
@@ -0,0 +1,76 @@
+/*
+ * Copyright (c) 2013 Jan Vesely
+ * 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 drvusbehci
+ * @{
+ */
+/** @file
+ * @brief EHCI driver
+ */
+#ifndef DRV_EHCI_HW_STRUCT_ISO_TRANSFER_DESCRIPTOR_H
+#define DRV_EHCI_HW_STRUCT_ISO_TRANSFER_DESCRIPTOR_H
+
+#include <sys/types.h>
+#include "link_pointer.h"
+
+/** Isochronous transfer descriptor (HS only) */
+typedef struct itd {
+	link_pointer_t next;
+
+	volatile uint32_t transaction[8];
+#define ITD_TRANSACTION_STATUS_ACTIVE_FLAG  (1 << 31)
+#define ITD_TRANSACTION_STATUS_BUFFER_ERROR_FLAG  (1 << 30)
+#define ITD_TRANSACTION_STATUS_BABBLE_FLAG   (1 << 29)
+#define ITD_TRANSACTION_STATUS_TRANS_ERROR_FLAG  (1 << 28)
+#define ITD_TRANSACTION_LENGHT_MASK    0xfff
+#define ITD_TRANSACTION_LENGHT_SHIFT   16
+#define ITD_TRANSACTION_IOC_FLAG       (1 << 15)
+#define ITD_TRANSACTION_PG_MASK        0x3
+#define ITD_TRANSACTION_PG_SHIFT       12
+#define ITD_TRANSACTION_OFFSET_MASK    0xfff
+#define ITD_TRANSACTION_OFFSET_SHIFT   0
+
+	volatile uint32_t buffer_pointer[7]
+#define ITD_BUFFER_POINTER_MASK      0xfffff000
+/* First buffer pointer */
+#define ITD_BUFFER_POINTER_EP_MASK      0xf
+#define ITD_BUFFER_POINTER_EP_SHIFT     8
+#define ITD_BUFFER_POINTER_ADDR_MASK    0x3f
+#define ITD_BUFFER_POINTER_ADDR_SHIFT   0
+/* Second buffer pointer */
+#define ITD_BUFFER_POINTER_IN_FLAG            (1 << 11)
+#define ITD_BUFFER_POINTER_MAX_PACKET_MASK    0x3ff
+#define ITD_BUFFER_POINTER_MAX_PACKET_SHIFT   0
+/* Third buffer pointer */
+#define ITD_BUFFER_POINTER_MULTI_MASK    0x3
+#define ITD_BUFFER_POINTER_MULTI_SHIFT   0
+
+} itd_t;
+#endif
+/**
+ * @}
+ */
Index: uspace/drv/bus/usb/ehci/hw_struct/link_pointer.h
===================================================================
--- uspace/drv/bus/usb/ehci/hw_struct/link_pointer.h	(revision 657601973ecf3e3e5b7928453eab90806b0ec3ab)
+++ uspace/drv/bus/usb/ehci/hw_struct/link_pointer.h	(revision 657601973ecf3e3e5b7928453eab90806b0ec3ab)
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 2013 Jan Vesely
+ * 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 drvusbehci
+ * @{
+ */
+/** @file
+ * @brief EHCI driver
+ */
+#ifndef DRV_EHCI_HW_STRUCT_LINK_POINTER_H
+#define DRV_EHCI_HW_STRUCT_LINK_POINTER_H
+
+#include <sys/types.h>
+
+/** EHCI link pointer, used by many data structures */
+typedef volatile uint32_t link_pointer_t;
+
+#define LINK_POINTER_ADDRESS_MASK   0xfffffff0 /* upper 28 bits */
+
+#define LINK_POINTER_TERMINATE_FLAG   (1 << 0)
+
+enum {
+	LINK_POINTER_TYPE_iTD  = 0x0 << 1,
+	LINK_POINTER_TYPE_QH   = 0x1 << 1,
+	LINK_POINTER_TYPE_siTD = 0x2 << 1,
+	LINK_POINTER_TYPE_FSTN = 0x3 << 1,
+	LINK_POINTER_TYPE_MASK = 0x3 << 1,
+};
+
+#define LINK_POINTER_QH(address) \
+	((address & LINK_POINTER_ADDRESS_MASK) | LINK_POINTER_TYPE_QH)
+
+#define LINK_POINTER_TD(address) \
+	(address & LINK_POINTER_ADDRESS_MASK)
+
+#define LINK_POINTER_TERM \
+	((link_pointer_t)LINK_POINTER_TERMINATE_FLAG)
+
+#endif
+/**
+ * @}
+ */
Index: uspace/drv/bus/usb/ehci/hw_struct/mem_access.h
===================================================================
--- uspace/drv/bus/usb/ehci/hw_struct/mem_access.h	(revision 657601973ecf3e3e5b7928453eab90806b0ec3ab)
+++ uspace/drv/bus/usb/ehci/hw_struct/mem_access.h	(revision 657601973ecf3e3e5b7928453eab90806b0ec3ab)
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 2013 Jan Vesely
+ * 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 drvusbohci
+ * @{
+ */
+/** @file
+ * @brief OHCI driver
+ */
+#ifndef DRV_EHCI_HW_MEM_ACCESS_H
+#define DRV_EHCI_HW_MEM_ACCESS_H
+
+#include <byteorder.h>
+
+#define EHCI_MEM32_WR(reg, val) reg = host2uint32_t_le(val)
+#define EHCI_MEM32_RD(reg) uint32_t_le2host(reg)
+#define EHCI_MEM32_SET(reg, val) reg |= host2uint32_t_le(val)
+#define EHCI_MEM32_CLR(reg, val) reg &= host2uint32_t_le(~val)
+
+#endif
+
+/*
+ * @}
+ */
+
Index: uspace/drv/bus/usb/ehci/hw_struct/queue_head.h
===================================================================
--- uspace/drv/bus/usb/ehci/hw_struct/queue_head.h	(revision 657601973ecf3e3e5b7928453eab90806b0ec3ab)
+++ uspace/drv/bus/usb/ehci/hw_struct/queue_head.h	(revision 657601973ecf3e3e5b7928453eab90806b0ec3ab)
@@ -0,0 +1,123 @@
+/*
+ * Copyright (c) 2013 Jan Vesely
+ * 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 drvusbehci
+ * @{
+ */
+/** @file
+ * @brief EHCI driver
+ */
+#ifndef DRV_EHCI_HW_STRUCT_QH_H
+#define DRV_EHCI_HW_STRUCT_QH_H
+
+#include <assert.h>
+#include <sys/types.h>
+
+#include "link_pointer.h"
+
+/** This structure is defined in EHCI design guide p. 46 */
+typedef struct queue_head {
+	link_pointer_t horizontal;
+
+	volatile uint32_t ep_char;
+#define QH_EP_CHAR_RL_MASK    0xf
+#define QH_EP_CHAR_RL_SHIFT   28
+#define QH_EP_CHAR_C_FLAG     (1 << 27)
+#define QH_EP_CHAR_LENGTH_MASK   0x7ff
+#define QH_EP_CHAR_LENGTH_SHIFT  16
+#define QH_EP_CHAR_H_FLAG     (1 << 15)
+#define QH_EP_CHAR_DTC_FLAG   (1 << 14)
+#define QH_EP_CHAR_EPS_MASK   0x3
+#define QH_EP_CHAR_EPS_SHIFT  12
+#define QH_EP_CHAR_EPS_FS     0x0
+#define QH_EP_CHAR_EPS_LS     0x1
+#define QH_EP_CHAR_EPS_HS     0x2
+#define QH_EP_CHAR_EP_MASK    0xf
+#define QH_EP_CHAR_EP_SHIFT   8
+#define QH_EP_CHAR_INACT_FLAG (1 << 7)
+#define QH_EP_CHAR_ADDR_MASK  0x3f
+#define QH_EP_CHAR_ADDR_SHIFT 0
+
+	volatile uint32_t ep_cap;
+#define QH_EP_CAP_MULTI_MASK   0x3
+#define QH_EP_CAP_MULTI_SHIFT  30
+#define QH_EP_CAP_PORT_MASK    0x7f
+#define QH_EP_CAP_PORT_SHIFT   23
+#define QH_EP_CAP_HUB_MASK     0x7f
+#define QH_EP_CAP_HUB_SHIFT    16
+#define QH_EP_CAP_C_MASK_MASK  0xff
+#define QH_EP_CAP_C_MASK_SHIFT 8
+#define QH_EP_CAP_S_MASK_MASK  0xff
+#define QH_EP_CAP_S_MASL_SHIFT 0
+
+	link_pointer_t current;
+/* Transfer overlay starts here */
+	link_pointer_t next;
+	link_pointer_t alternate;
+#define QH_ALTERNATE_NACK_CNT_MASK   0x7
+#define QH_ALTERNATE_NACK_CNT_SHIFT  1
+
+	volatile uint32_t status;
+#define QH_STATUS_TOGGLE_FLAG   (1 << 31)
+#define QH_STATUS_TOTAL_MASK    0x7fff
+#define QH_STATUS_TOTAL_SHIFT   16
+#define QH_STATUS_IOC_FLAG      (1 << 15)
+#define QH_STATUS_C_PAGE_MASK   0x7
+#define QH_STATUS_C_PAGE_SHIFT  12
+#define QH_STATUS_CERR_MASK     0x3
+#define QH_STATUS_CERR_SHIFT    10
+#define QH_STATUS_PID_MASK      0x3
+#define QH_STATUS_PID_SHIFT     8
+#define QH_STATUS_ACTIVE_FLAG   (1 << 7)
+#define QH_STATUS_HALTED_FLAG   (1 << 6)
+#define QH_STATUS_BUFF_ERROR_FLAG  (1 << 5)
+#define QH_STATUS_BABBLE_FLAG   (1 << 4)
+#define QH_STATUS_TRANS_ERR_FLAG   (1 << 3)
+#define QH_STATUS_MISSED_FLAG   (1 << 2)
+#define QH_STATUS_SPLIT_FLAG    (1 << 1)
+#define QH_STATUS_PING_FLAG     (1 << 0)
+
+	volatile uint32_t buffer_pointer[5];
+#define QH_BUFFER_POINTER_MASK   0xfffff000
+/* Only the first buffer pointer */
+#define QH_BUFFER_POINTER_OFFSET_MASK   0xfff
+#define QH_BUFFER_POINTER_OFFSET_SHIFT  0
+/* Only the second buffer pointer */
+#define QH_BUFFER_POINTER_C_MASK_MASK   0xff
+#define QH_BUFFER_POINTER_C_MASK_SHIFFT 0
+/* Only the third buffer pointer */
+#define QH_BUFFER_POINTER_S_MASK      0x7f
+#define QH_BUFFER_POINTER_S_SHIFT     5
+#define QH_BUFFER_POINTER_FTAG_MASK   0x1f
+#define QH_BUFFER_POINTER_FTAG_SHIFT  0
+
+} qh_t;
+
+#endif
+/**
+ * @}
+ */
Index: uspace/drv/bus/usb/ehci/hw_struct/split_iso_transfer_descriptor.h
===================================================================
--- uspace/drv/bus/usb/ehci/hw_struct/split_iso_transfer_descriptor.h	(revision 657601973ecf3e3e5b7928453eab90806b0ec3ab)
+++ uspace/drv/bus/usb/ehci/hw_struct/split_iso_transfer_descriptor.h	(revision 657601973ecf3e3e5b7928453eab90806b0ec3ab)
@@ -0,0 +1,93 @@
+/*
+ * Copyright (c) 2013 Jan Vesely
+ * 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 drvusbehci
+ * @{
+ */
+/** @file
+ * @brief EHCI driver
+ */
+#ifndef DRV_EHCI_HW_STRUCT_SPLIT_ISO_TRANSFER_DESCRIPTOR_H
+#define DRV_EHCI_HW_STRUCT_SPLIT_ISO_TRANSFER_DESCRIPTOR_H
+
+#include <sys/types.h>
+#include "link_pointer.h"
+
+/** Isochronous transfer descriptor (split only) */
+typedef struct sitd {
+	link_pointer_t next;
+
+	volatile uint32_t ep;
+#define SITD_EP_IN_FLAG         (1 << 31)
+#define SITD_EP_PORT_MASK       0x3f
+#define SITD_EP_PORT_SHIFT      24
+#define SITD_EP_HUB_ADDR_MASK   0x3f
+#define SITD_EP_HUB_ADDR_SHIFT  16
+#define SITD_EP_EP_MASK         0xf
+#define SITD_EP_EP_SHIFT        8
+#define SITD_EP_ADDR_MASK       0x3f
+#define SITD_EP_ADDR_SHIFT      0
+
+	volatile uint32_t uframe;
+#define SITD_uFRAME_CMASK_MASK    0xff
+#define SITD_uFRAME_CMASK_SHIFT   8
+#define SITD_uFRAME_SMASK_MASK    0xff
+#define SITD_uFRAME_SMASK_SHIFT   0
+
+	volatile uint32_t status;
+#define SITD_STATUS_IOC_FLAG            (1 << 31)
+#define SITD_STATUS_PAGE_FLAG           (1 << 30)
+#define SITD_STATUS_TOTAL_MASK          0x3ff
+#define SITD_STATUS_TOTAL_SHIFT         16
+#define SITD_STATUS_uFRAME_CMASK_MASK   0xff
+#define SITD_STATUS_uFRAME_CMAKS_SHIFT  8
+#define SITD_STATUS_ACTIVE_FLAG         (1 << 7)
+#define SITD_STATUS_ERR_FLAG            (1 << 6)
+#define SITD_STATUS_DATA_ERROR_FLAG     (1 << 5)
+#define SITD_STATUS_BABBLE_FLAG         (1 << 4)
+#define SITD_STATUS_TRANS_ERROR_FLAG    (1 << 3)
+#define SITD_STATUS_MISSED_uFRAME_FLAG  (1 << 2)
+#define SITD_STATUS_SPLIT_COMPLETE_FLAG (1 << 1)
+
+	volatile uint32_t buffer_pointer[2];
+#define SITD_BUFFER_POINTER_MASK   0xfffff000
+/* Only the first page pointer */
+#define SITD_BUFFER_POINTER_CURRENT_MASK    0xfff
+#define SITD_BUFFER_POINTER_CURRENT_SHIFT   0
+/* Only the second page pointer */
+#define SITD_BUFFER_POINTER_TP_MASK       0x3
+#define SITD_BUFFER_POINTER_TP_SHIFT      3
+#define SITD_BUFFER_POINTER_COUNT_MASK    0x7
+#define SITD_BUFFER_POINTER_COUNT_SHIFT   0
+
+	link_pointer_t back;
+} sitd_t;
+#endif
+/**
+ * @}
+ */
+
Index: uspace/drv/bus/usb/ehci/hw_struct/transfer_descriptor.h
===================================================================
--- uspace/drv/bus/usb/ehci/hw_struct/transfer_descriptor.h	(revision 657601973ecf3e3e5b7928453eab90806b0ec3ab)
+++ uspace/drv/bus/usb/ehci/hw_struct/transfer_descriptor.h	(revision 657601973ecf3e3e5b7928453eab90806b0ec3ab)
@@ -0,0 +1,79 @@
+/*
+ * Copyright (c) 2013 Jan Vesely
+ * 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 drvusbehci
+ * @{
+ */
+/** @file
+ * @brief EHCI driver
+ */
+#ifndef DRV_EHCI_HW_STRUCT_TRANSFER_DESCRIPTOR_H
+#define DRV_EHCI_HW_STRUCT_TRANSFER_DESCRIPTOR_H
+
+#include <sys/types.h>
+#include "link_pointer.h"
+
+/** Transfer descriptor (non-ISO) */
+typedef struct td {
+	link_pointer_t next;
+	link_pointer_t alternate;
+
+	volatile uint32_t status;
+#define TD_STATUS_TOGGLE_FLAG   (1 << 31)
+#define TD_STATUS_TOTAL_MASK    0x7fff
+#define TD_STATUS_TOTAL_SHIFT   16
+#define TD_STATUS_IOC_FLAG      (1 << 15)
+#define TD_STATUS_C_PAGE_MASK   0x7
+#define TD_STATUS_C_PAGE_SHIFT  12
+#define TD_STATUS_CERR_MASK     0x3
+#define TD_STATUS_CERR_SHIFT    10
+#define TD_STATUS_PID_MASK      0x3
+#define TD_STATUS_PID_SHIFT     8
+#define TD_STATUS_PID_OUT       0x0
+#define TD_STATUS_PID_IN        0x1
+#define TD_STATUS_PID_SETUP     0x2
+#define TD_STATUS_ACTIVE_FLAG   (1 << 7)
+#define TD_STATUS_HALTED_FLAG   (1 << 6)
+#define TD_STATUS_BUFF_ERROR_FLAG  (1 << 5)
+#define TD_STATUS_BABBLE_FLAG   (1 << 4)
+#define TD_STATUS_TRANS_ERR_FLAG   (1 << 3)
+#define TD_STATUS_MISSED_FLAG   (1 << 2)
+#define TD_STATUS_SPLIT_FLAG    (1 << 1)
+#define TD_STATUS_PING_FLAG     (1 << 0)
+
+	volatile uint32_t buffer_pointer[5];
+#define SITD_BUFFER_POINTER_MASK   0xfffff000
+/* Only the first page pointer */
+#define SITD_BUFFER_POINTER_CURRENT_MASK    0xfff
+#define SITD_BUFFER_POINTER_CURRENT_SHIFT   0
+
+} td_t;
+#endif
+/**
+ * @}
+ */
+
