implement dcd connect/disconnect for samd and nrf

This commit is contained in:
hathach 2020-04-09 11:47:02 +07:00
parent 11201f1a06
commit c1f3fbbc03
2 changed files with 28 additions and 1 deletions

View File

@ -154,10 +154,23 @@ void dcd_set_config (uint8_t rhport, uint8_t config_num)
void dcd_remote_wakeup(uint8_t rhport) void dcd_remote_wakeup(uint8_t rhport)
{ {
(void) rhport; (void) rhport;
USB->DEVICE.CTRLB.bit.UPRSM = 1; USB->DEVICE.CTRLB.bit.UPRSM = 1;
} }
// disconnect by disabling internal pull-up resistor on D+/D-
void dcd_disconnect(uint8_t rhport)
{
(void) rhport;
USB->DEVICE.CTRLB.reg |= USB_DEVICE_CTRLB_DETACH;
}
// connect by enabling internal pull-up resistor on D+/D-
void dcd_connect(uint8_t rhport)
{
(void) rhport;
USB->DEVICE.CTRLB.reg &= ~USB_DEVICE_CTRLB_DETACH;
}
/*------------------------------------------------------------------*/ /*------------------------------------------------------------------*/
/* DCD Endpoint port /* DCD Endpoint port
*------------------------------------------------------------------*/ *------------------------------------------------------------------*/

View File

@ -237,6 +237,20 @@ void dcd_remote_wakeup(uint8_t rhport)
// We may manually raise DCD_EVENT_RESUME event here // We may manually raise DCD_EVENT_RESUME event here
} }
// disconnect by disabling internal pull-up resistor on D+/D-
void dcd_disconnect(uint8_t rhport)
{
(void) rhport;
NRF_USBD->USBPULLUP = 0;
}
// connect by enabling internal pull-up resistor on D+/D-
void dcd_connect(uint8_t rhport)
{
(void) rhport;
NRF_USBD->USBPULLUP = 1;
}
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+
// Endpoint API // Endpoint API
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+