Add support for connect/disconnect in WCH USBHS
diff --git a/src/portable/wch/dcd_ch32_usbhs.c b/src/portable/wch/dcd_ch32_usbhs.c
index f04f9aa..9c0865e 100644
--- a/src/portable/wch/dcd_ch32_usbhs.c
+++ b/src/portable/wch/dcd_ch32_usbhs.c
@@ -178,7 +178,7 @@
   xfer_status[0][TUSB_DIR_IN].max_size  = CFG_TUD_ENDPOINT0_SIZE;
 
   USBHSD->DEV_AD = 0;
-  USBHSD->CONTROL |= USBHS_DEV_PU_EN;
+  dcd_connect(rhport);
 
   return true;
 }
@@ -218,6 +218,18 @@
   (void)rhport;
 }
 
+void dcd_connect(uint8_t rhport) {
+  (void)rhport;
+  USBHSD->HOST_CTRL |= USBHS_PHY_SUSPENDM;
+  USBHSD->CONTROL |= USBHS_DEV_PU_EN;
+}
+
+void dcd_disconnect(uint8_t rhport) {
+  (void)rhport;
+  USBHSD->CONTROL &= ~USBHS_DEV_PU_EN;
+  USBHSD->HOST_CTRL &= ~USBHS_PHY_SUSPENDM;
+}
+
 void dcd_sof_enable(uint8_t rhport, bool en) {
   (void)rhport;
   if (en) {