@@ -108,6 +108,15 @@ int usb_dc_init(uint8_t busid)
108108
109109int usb_dc_deinit (uint8_t busid )
110110{
111+ USB_OTG_DEV -> INTEN = 0 ;
112+ USB_OTG_DEV -> CTL &= ~USB_CTL_USBENSOFEN_MASK ;
113+
114+ memset (& g_kinetis_udc [busid ], 0 , sizeof (g_kinetis_udc [busid ]));
115+
116+ USB_OTG_DEV -> BDTPAGE1 = (uint8_t )((uintptr_t )& g_kinetis_bdt [busid ] >> 8 );
117+ USB_OTG_DEV -> BDTPAGE2 = (uint8_t )((uintptr_t )& g_kinetis_bdt [busid ] >> 16 );
118+ USB_OTG_DEV -> BDTPAGE3 = (uint8_t )((uintptr_t )& g_kinetis_bdt [busid ] >> 24 );
119+
111120 usb_dc_low_level_deinit (busid );
112121 return 0 ;
113122}
@@ -421,7 +430,7 @@ void USBD_IRQHandler(uint8_t busid)
421430 usbd_event_ep_in_complete_handler (busid , ep_idx | 0x80 , g_kinetis_udc [busid ].in_ep [ep_idx ].actual_xfer_len );
422431 } else {
423432 kinetis_start_transfer (busid , ep_idx | 0x80 , g_kinetis_udc [busid ].in_ep [ep_idx ].xfer_buf ,
424- MIN (g_kinetis_udc [busid ].in_ep [ep_idx ].xfer_len , g_kinetis_udc [busid ].in_ep [ep_idx ].ep_mps ));
433+ MIN (g_kinetis_udc [busid ].in_ep [ep_idx ].xfer_len , g_kinetis_udc [busid ].in_ep [ep_idx ].ep_mps ));
425434 }
426435 } else {
427436 g_kinetis_udc [busid ].out_ep [ep_idx ].xfer_buf += bc ;
@@ -432,7 +441,7 @@ void USBD_IRQHandler(uint8_t busid)
432441 usbd_event_ep_out_complete_handler (busid , ep_idx , g_kinetis_udc [busid ].out_ep [ep_idx ].actual_xfer_len );
433442 } else {
434443 kinetis_start_transfer (busid , ep_idx , g_kinetis_udc [busid ].out_ep [ep_idx ].xfer_buf ,
435- MIN (g_kinetis_udc [busid ].out_ep [ep_idx ].xfer_len , g_kinetis_udc [busid ].out_ep [ep_idx ].ep_mps ));
444+ MIN (g_kinetis_udc [busid ].out_ep [ep_idx ].xfer_len , g_kinetis_udc [busid ].out_ep [ep_idx ].ep_mps ));
436445 }
437446 }
438447
0 commit comments