ソースを参照

update(port/musb): add mode check

Signed-off-by: sakumisu <1203593632@qq.com>
sakumisu 5 ヶ月 前
コミット
8cf12c1958
2 ファイル変更9 行追加1 行削除
  1. 5 1
      port/musb/usb_dc_musb.c
  2. 4 0
      port/musb/usb_hc_musb.c

+ 5 - 1
port/musb/usb_dc_musb.c

@@ -121,7 +121,7 @@
 #define MUSB_RXHUBADDRx_OFFSET  0x8E
 #define MUSB_RXHUBPORTx_OFFSET  0x8F
 
-#define MUSB_TXMAP0_OFFSET 0x100
+#define MUSB_TXMAP0_OFFSET          0x100
 
 // do not use EPIDX
 #define USB_TXMAP_BASE(ep_idx)      (USB_BASE + MUSB_TXMAP0_OFFSET + 0x10 * ep_idx)
@@ -787,6 +787,10 @@ void USBD_IRQHandler(uint8_t busid)
     uint8_t ep_idx;
     uint16_t write_count, read_count;
 
+    if (HWREGB(USB_BASE + MUSB_DEVCTL_OFFSET) & USB_DEVCTL_HOST) {
+        return;
+    }
+
     is = HWREGB(USB_BASE + MUSB_IS_OFFSET);
     txis = HWREGH(USB_BASE + MUSB_TXIS_OFFSET);
     rxis = HWREGH(USB_BASE + MUSB_RXIS_OFFSET);

+ 4 - 0
port/musb/usb_hc_musb.c

@@ -977,6 +977,10 @@ void USBH_IRQHandler(uint8_t busid)
 
     bus = &g_usbhost_bus[busid];
 
+    if (!(HWREGB(USB_BASE + MUSB_DEVCTL_OFFSET) & USB_DEVCTL_HOST)) {
+        return;
+    }
+
     is = HWREGB(USB_BASE + MUSB_IS_OFFSET);
     txis = HWREGH(USB_BASE + MUSB_TXIS_OFFSET);
     rxis = HWREGH(USB_BASE + MUSB_RXIS_OFFSET);