diff --git a/ch32v003fun/ch32v003fun.h b/ch32v003fun/ch32v003fun.h
index f7823c2ffe53f5ddc7626475e4c5fc0c2c371e60..931cfee42b8f98066ed63bcfd2544dc23cde5aaa 100644
--- a/ch32v003fun/ch32v003fun.h
+++ b/ch32v003fun/ch32v003fun.h
@@ -1676,7 +1676,6 @@ typedef struct
 /* Touch Sensor, Mirrors Analog to Digital Converter */
 typedef struct
 {
-	//XXX TODO: CHECK THIS
 	__IO uint32_t RESERVED0[3];
 	__IO uint32_t CHARGE1;
 	__IO uint32_t CHARGE2;
@@ -1689,7 +1688,6 @@ typedef struct
 /* Op amp / comparator */
 typedef struct
 {
-	//XXX TODO: CHECK THIS
 	__IO uint16_t CFGR1;
 	__IO uint16_t CFGR2;
 	__IO uint32_t CTLR1;
@@ -1699,6 +1697,7 @@ typedef struct
 	__IO uint32_t POLL_KEY;
 } OPACMP_TypeDef;
 
+/* USB Full Speed Device Mode */
 typedef struct
 {
 	__IO uint8_t BASE_CTLR;
@@ -1747,6 +1746,8 @@ typedef struct
 	__IO uint32_t UEP6_DMA;
 	__IO uint32_t UEP7_DMA;
 
+	__IO uint32_t RESERVED4;
+
 	//__IO uint32_t UEP5_CTLR;
 	__IO uint16_t UEP5_TX_LEN;
 	__IO uint16_t UEP5_CTLR_H;
@@ -1762,7 +1763,63 @@ typedef struct
 	__IO uint32_t UEPX_MOD;
 } USBFS_TypeDef;
 
-// TODO: Break host host-mode.
+/* USB Host Mode */
+
+typedef struct
+{
+	__IO uint8_t RESERVED0;
+	__IO uint8_t HOST_CTLR; // or host ctlr
+	__IO uint8_t RESERVED1;
+	__IO uint8_t RESERVED2;
+	__IO uint8_t RESERVED3;
+	__IO uint8_t RESERVED4;
+	__IO uint8_t RESERVED5;
+	__IO uint8_t RESERVED6;
+	__IO uint16_t RESERVED7;
+	__IO uint16_t RESERVED8;
+	__IO uint8_t RESERVED9;
+	__IO uint8_t HOST_EP_MOD; // Also HOST_EP_MOD
+	__IO uint8_t RESERVED10;
+	__IO uint8_t RESERVED11;
+
+	__IO uint32_t RESERVED12;
+	__IO uint32_t RESERVED13;
+	__IO uint32_t HOST_RX_DMA; // Also HOST_RX_DMA
+	__IO uint32_t HOST_TX_DMA; // Also HOST_TX_DMA
+
+	__IO uint16_t RESERVED14;
+	__IO uint16_t RESERVED15;
+	__IO uint16_t RESERVED16;
+
+	__IO uint16_t HOST_SETUP;
+	__IO uint16_t HOST_EP_PID;
+	__IO uint16_t HOST_RX_CTL;
+	__IO uint16_t HOST_TX_LEN;
+	__IO uint16_t HOST_TX_CTL;
+
+	__IO uint16_t RESERVED20;
+	__IO uint16_t RESERVED21;
+
+	__IO uint32_t RESERVED22[8];
+
+	__IO uint32_t RESERVED23;
+	__IO uint32_t RESERVED24;
+	__IO uint32_t RESERVED25;
+
+	__IO uint32_t RESERVED26;
+
+	__IO uint16_t RESERVED27;
+	__IO uint16_t RESERVED28;
+
+	__IO uint16_t RESERVED29;
+	__IO uint16_t RESERVED30;
+
+	__IO uint16_t RESERVED31;
+	__IO uint16_t RESERVED32;
+
+	__IO uint32_t RESERVED33;
+} USBDH_TypeDef;
+
 
 /* USB Power Delivery */
 typedef struct
@@ -2060,6 +2117,7 @@ typedef struct
 #define OPA										((OPACMP_TypeDef *)OPA_BASE)
 #define USBFS									((USBFS_TypeDef *)USBFS_BASE)
 #define USBPD									((USBPD_TypeDef *)USBPD_BASE)
+#define USBDH									((USBDH_TypeDef *)USBFS_BASE)
 
 #endif
 #if defined(CH32V20x) || defined(CH32V30x)