diff --git a/include/dev/usb.h b/include/dev/usb.h
new file mode 100644
index 0000000..556a4ed
--- /dev/null
+++ b/include/dev/usb.h
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2008 Travis Geiselbrecht
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files
+ * (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge,
+ * publish, distribute, sublicense, and/or sell copies of the Software,
+ * and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+#ifndef __DEV_USB_H
+#define __DEV_USB_H
+
+/* device side usb stack api */
+
+void usb_init(void);
+
+#endif
+
diff --git a/include/dev/usbc.h b/include/dev/usbc.h
new file mode 100644
index 0000000..26c1945
--- /dev/null
+++ b/include/dev/usbc.h
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2008 Travis Geiselbrecht
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files
+ * (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge,
+ * publish, distribute, sublicense, and/or sell copies of the Software,
+ * and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+#ifndef __DEV_USBC_H
+#define __DEV_USBC_H
+
+/* device side usb controller api (used by the usb stack) */
+void usbc_init(void);
+
+#endif
+
diff --git a/include/hw/usb.h b/include/hw/usb.h
new file mode 100644
index 0000000..a533b7b
--- /dev/null
+++ b/include/hw/usb.h
@@ -0,0 +1,106 @@
+/*
+ * Copyright (c) 2008 Travis Geiselbrecht
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files
+ * (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge,
+ * publish, distribute, sublicense, and/or sell copies of the Software,
+ * and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+#ifndef __HW_USB_H
+#define __HW_USB_H
+
+#include <sys/types.h>
+#include <compiler.h>
+
+/* GLOBAL STATUS VALUES */
+#define STD_COMMAND                 0x00
+#define SETUP_COMMAND_PHASE         0x40
+#define FUNCTION_ERROR              0x7F    /* Used when we are stalling the function EP0 */
+#define HUB_ERROR                   0xFF    /* Used when we are stalling the HUB EP0 */
+
+/* Request Types */
+#define DIR_OUT                     (0 << 7)
+#define DIR_IN                      (1 << 7)
+#define DIR_MASK                    (1 << 7)
+#define TYPE_STANDARD               (0 << 5)
+#define TYPE_CLASS                  (1 << 5)
+#define TYPE_VENDOR                 (2 << 5)
+#define TYPE_MASK                   (3 << 5)
+#define RECIP_DEVICE                (0 << 0)
+#define RECIP_INTERFACE             (1 << 0)
+#define RECIP_ENDPOINT              (2 << 0)
+#define RECIP_OTHER                 (3 << 0)
+#define RECIP_MASK                  (0x1f << 0)
+
+/* 1.0 Request Values */
+#define GET_STATUS                  0x00
+#define CLEAR_FEATURE               0x01
+#define SET_FEATURE                 0x03
+#define SET_ADDRESS                 0x05
+#define GET_DESCRIPTOR              0x06
+#define SET_DESCRIPTOR              0x07
+#define GET_CONFIGURATION           0x08
+#define SET_CONFIGURATION           0x09
+#define GET_INTERFACE               0x0A
+#define SET_INTERFACE               0x0B
+#define SYNCH_FRAME                 0x0C
+
+/* Mass storage requests */
+#define MASS_STORAGE_GET_MAX_LUN	0xfe
+#define MASS_STORAGE_RESET			0xff
+
+/* DFU requests */
+#define DFU_DETACH                  0x00
+#define DFU_DNLOAD                  0x01
+#define DFU_UPLOAD                  0x02
+#define DFU_GETSTATUS               0x03
+#define DFU_CLRSTATUS               0x04
+#define DFU_GETSTATE                0x05
+#define DFU_ABORT                   0x06
+
+/* HID Request Values */
+#define GET_REPORT                  0x01
+#define GET_IDLE                    0x02
+#define GET_PROTOCOL                0x03
+#define SET_REPORT                  0x09
+#define SET_IDLE                    0x0A
+#define SET_PROTOCOL                0x0B
+
+/* Descriptor Types */
+#define DEVICE                      0x01
+#define CONFIGURATION               0x02
+#define STRING                      0x03
+#define INTERFACE                   0x04
+#define ENDPOINT                    0x05
+#define DEVICE_QUALIFIER            0x06
+#define OTHER_SPEED_CONFIGURATION   0x07
+#define INTERFACE_POWER             0x08
+#define HID                         0x21
+#define HIDREPORT                   0x22
+#define HIDPHYSICAL                 0x23
+
+/* general USB defines */
+struct usb_setup {
+	uint8_t request_type;
+	uint8_t request;
+	uint16_t value;
+	uint16_t index;
+	uint16_t length;
+} __PACKED;
+
+#endif
+
diff --git a/include/reg.h b/include/reg.h
index e10a3e8..d04d4ea 100644
--- a/include/reg.h
+++ b/include/reg.h
@@ -31,6 +31,11 @@
 #define REG16(addr) ((volatile uint16_t *)(addr))
 #define REG8(addr) ((volatile uint8_t *)(addr))
 
+#define RMWREG64(addr, startbit, width, val) *REG64(addr) = (*REG64(addr) & ~(((1<<(width)) - 1) << (startbit))) | ((val) << (startbit))
+#define RMWREG32(addr, startbit, width, val) *REG32(addr) = (*REG32(addr) & ~(((1<<(width)) - 1) << (startbit))) | ((val) << (startbit))
+#define RMWREG16(addr, startbit, width, val) *REG16(addr) = (*REG16(addr) & ~(((1<<(width)) - 1) << (startbit))) | ((val) << (startbit))
+#define RMWREG8(addr, startbit, width, val) *REG8(addr) = (*REG8(addr) & ~(((1<<(width)) - 1) << (startbit))) | ((val) << (startbit))
+
 #define writel(v, a) (*REG32(a) = (v))
 #define readl(a) (*REG32(a))
 
