summaryrefslogtreecommitdiff
path: root/src/portable
diff options
context:
space:
mode:
authorrobert-hh <[email protected]>2022-06-27 20:31:44 +0200
committerrobert-hh <[email protected]>2022-06-27 20:31:44 +0200
commitbc4da2047bf73f81cfcd6daa9bd07901dcdff3c9 (patch)
treeafa693d040996cf6fbb9f0d6856d6f9638e4451b /src/portable
parent3ead682af05bee3a275125f3e0384dd9b2882546 (diff)
samd: Fix a lock-up situation at high traffic.
This PR fixes a transmit lock-up, which happens, when data is received and sent at the sime time at moderate to high speeds, like code which just echoes incoming data. In my case, an issue was reported here: https://github.com/micropython/micropython/issues/8521
Diffstat (limited to 'src/portable')
-rw-r--r--src/portable/microchip/samd/dcd_samd.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/portable/microchip/samd/dcd_samd.c b/src/portable/microchip/samd/dcd_samd.c
index 20dbde0f4..22fe32407 100644
--- a/src/portable/microchip/samd/dcd_samd.c
+++ b/src/portable/microchip/samd/dcd_samd.c
@@ -286,14 +286,14 @@ bool dcd_edpt_xfer (uint8_t rhport, uint8_t ep_addr, uint8_t * buffer, uint16_t
{
bank->PCKSIZE.bit.MULTI_PACKET_SIZE = total_bytes;
bank->PCKSIZE.bit.BYTE_COUNT = 0;
- ep->EPSTATUSCLR.reg |= USB_DEVICE_EPSTATUSCLR_BK0RDY;
- ep->EPINTFLAG.reg |= USB_DEVICE_EPINTFLAG_TRFAIL0;
+ ep->EPSTATUSCLR.reg = USB_DEVICE_EPSTATUSCLR_BK0RDY;
+ ep->EPINTFLAG.reg = USB_DEVICE_EPINTFLAG_TRFAIL0;
} else
{
bank->PCKSIZE.bit.MULTI_PACKET_SIZE = 0;
bank->PCKSIZE.bit.BYTE_COUNT = total_bytes;
- ep->EPSTATUSSET.reg |= USB_DEVICE_EPSTATUSSET_BK1RDY;
- ep->EPINTFLAG.reg |= USB_DEVICE_EPINTFLAG_TRFAIL1;
+ ep->EPSTATUSSET.reg = USB_DEVICE_EPSTATUSSET_BK1RDY;
+ ep->EPINTFLAG.reg = USB_DEVICE_EPINTFLAG_TRFAIL1;
}
return true;