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) rhport;
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
*------------------------------------------------------------------*/

View File

@ -237,6 +237,20 @@ void dcd_remote_wakeup(uint8_t rhport)
// 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
//--------------------------------------------------------------------+