mirror of
https://github.com/hathach/tinyusb.git
synced 2025-02-20 18:40:57 +00:00
Make sure OUT endpoint 0 on the SAMDs always has a valid buffer to store
a SETUP token into.
This commit is contained in:
parent
246c28db1a
commit
bf8c4612dc
@ -164,6 +164,12 @@ bool dcd_edpt_xfer (uint8_t rhport, uint8_t ep_addr, uint8_t * buffer, uint16_t
|
|||||||
UsbDeviceDescBank* bank = &sram_registers[epnum][dir];
|
UsbDeviceDescBank* bank = &sram_registers[epnum][dir];
|
||||||
UsbDeviceEndpoint* ep = &USB->DEVICE.DeviceEndpoint[epnum];
|
UsbDeviceEndpoint* ep = &USB->DEVICE.DeviceEndpoint[epnum];
|
||||||
|
|
||||||
|
// A setup token can occur immediately after an OUT STATUS packet so make sure we have a valid
|
||||||
|
// buffer for the control endpoint.
|
||||||
|
if (epnum == 0 && dir == 0 && buffer == NULL) {
|
||||||
|
buffer = _setup_packet;
|
||||||
|
}
|
||||||
|
|
||||||
bank->ADDR.reg = (uint32_t) buffer;
|
bank->ADDR.reg = (uint32_t) buffer;
|
||||||
if ( dir == TUSB_DIR_OUT )
|
if ( dir == TUSB_DIR_OUT )
|
||||||
{
|
{
|
||||||
|
@ -163,6 +163,12 @@ bool dcd_edpt_xfer (uint8_t rhport, uint8_t ep_addr, uint8_t * buffer, uint16_t
|
|||||||
UsbDeviceDescBank* bank = &sram_registers[epnum][dir];
|
UsbDeviceDescBank* bank = &sram_registers[epnum][dir];
|
||||||
UsbDeviceEndpoint* ep = &USB->DEVICE.DeviceEndpoint[epnum];
|
UsbDeviceEndpoint* ep = &USB->DEVICE.DeviceEndpoint[epnum];
|
||||||
|
|
||||||
|
// A setup token can occur immediately after an OUT STATUS packet so make sure we have a valid
|
||||||
|
// buffer for the control endpoint.
|
||||||
|
if (epnum == 0 && dir == 0 && buffer == NULL) {
|
||||||
|
buffer = _setup_packet;
|
||||||
|
}
|
||||||
|
|
||||||
bank->ADDR.reg = (uint32_t) buffer;
|
bank->ADDR.reg = (uint32_t) buffer;
|
||||||
if ( dir == TUSB_DIR_OUT )
|
if ( dir == TUSB_DIR_OUT )
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user