From 456a23a731616784a5262102b10869616e9b0598 Mon Sep 17 00:00:00 2001 From: Cal Abel Date: Sat, 26 Sep 2026 22:24:22 -0400 Subject: [PATCH 1/2] fix(spi): cancel queued transfers before releasing buffers --- cores/arduino/SERCOM.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/cores/arduino/SERCOM.cpp b/cores/arduino/SERCOM.cpp index 14021cc7e..090836104 100644 --- a/cores/arduino/SERCOM.cpp +++ b/cores/arduino/SERCOM.cpp @@ -673,7 +673,27 @@ void SERCOM::initSPIClock(SercomSpiClockMode clockMode, uint32_t baudrate) void SERCOM::resetSPI() { + const uint32_t primask = __get_PRIMASK(); + __disable_irq(); +#ifdef USE_ZERODMA + dmaAbortTx(); + dmaAbortRx(); +#endif // USE_ZERODMA + + _txnQueue.clear(); + _spi.currentTxn = nullptr; + _spi.index = 0; + _spi.length = 0; + _spi.active = false; + _spi.useDma = false; + _spi.dmaNeedTx = false; + _spi.dmaNeedRx = false; + _spi.dmaTxDone = false; + _spi.dmaRxDone = false; + _spi.returnValue = SercomSpiError::SUCCESS; + resetSERCOM(); + __set_PRIMASK(primask); } void SERCOM::setDataOrderSPI(SercomDataOrder dataOrder) From 13f0abbd25515ae3984571836de1cbf7d2b08f7e Mon Sep 17 00:00:00 2001 From: Cal Abel Date: Sat, 26 Sep 2026 22:38:19 -0400 Subject: [PATCH 2/2] ci: exclude SAME5x Ethernet example on unsupported boards --- .../examples/SecureClient/.circuitplayground_m0.test.skip | 0 .../Ethernet/examples/SecureClient/.feather_m4_can.test.skip | 0 libraries/Ethernet/examples/SecureClient/.hallowing.test.skip | 0 libraries/Ethernet/examples/SecureClient/.hallowing_m4.test.skip | 0 libraries/Ethernet/examples/SecureClient/.metro_m0.test.skip | 0 .../examples/SecureClient/.metro_m0:usbstack=tinyusb.test.skip | 0 libraries/Ethernet/examples/SecureClient/.metro_m4.test.skip | 0 .../SecureClient/.metro_m4:speed=120,usbstack=tinyusb.test.skip | 0 libraries/Ethernet/examples/SecureClient/.pybadge_m4.test.skip | 0 libraries/Ethernet/examples/SecureClient/.pygamer_m4.test.skip | 0 libraries/Ethernet/examples/SecureClient/.pyportal_m4.test.skip | 0 .../Ethernet/examples/SecureClient/.pyportal_m4_titano.test.skip | 0 12 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 libraries/Ethernet/examples/SecureClient/.circuitplayground_m0.test.skip create mode 100644 libraries/Ethernet/examples/SecureClient/.feather_m4_can.test.skip create mode 100644 libraries/Ethernet/examples/SecureClient/.hallowing.test.skip create mode 100644 libraries/Ethernet/examples/SecureClient/.hallowing_m4.test.skip create mode 100644 libraries/Ethernet/examples/SecureClient/.metro_m0.test.skip create mode 100644 libraries/Ethernet/examples/SecureClient/.metro_m0:usbstack=tinyusb.test.skip create mode 100644 libraries/Ethernet/examples/SecureClient/.metro_m4.test.skip create mode 100644 libraries/Ethernet/examples/SecureClient/.metro_m4:speed=120,usbstack=tinyusb.test.skip create mode 100644 libraries/Ethernet/examples/SecureClient/.pybadge_m4.test.skip create mode 100644 libraries/Ethernet/examples/SecureClient/.pygamer_m4.test.skip create mode 100644 libraries/Ethernet/examples/SecureClient/.pyportal_m4.test.skip create mode 100644 libraries/Ethernet/examples/SecureClient/.pyportal_m4_titano.test.skip diff --git a/libraries/Ethernet/examples/SecureClient/.circuitplayground_m0.test.skip b/libraries/Ethernet/examples/SecureClient/.circuitplayground_m0.test.skip new file mode 100644 index 000000000..e69de29bb diff --git a/libraries/Ethernet/examples/SecureClient/.feather_m4_can.test.skip b/libraries/Ethernet/examples/SecureClient/.feather_m4_can.test.skip new file mode 100644 index 000000000..e69de29bb diff --git a/libraries/Ethernet/examples/SecureClient/.hallowing.test.skip b/libraries/Ethernet/examples/SecureClient/.hallowing.test.skip new file mode 100644 index 000000000..e69de29bb diff --git a/libraries/Ethernet/examples/SecureClient/.hallowing_m4.test.skip b/libraries/Ethernet/examples/SecureClient/.hallowing_m4.test.skip new file mode 100644 index 000000000..e69de29bb diff --git a/libraries/Ethernet/examples/SecureClient/.metro_m0.test.skip b/libraries/Ethernet/examples/SecureClient/.metro_m0.test.skip new file mode 100644 index 000000000..e69de29bb diff --git a/libraries/Ethernet/examples/SecureClient/.metro_m0:usbstack=tinyusb.test.skip b/libraries/Ethernet/examples/SecureClient/.metro_m0:usbstack=tinyusb.test.skip new file mode 100644 index 000000000..e69de29bb diff --git a/libraries/Ethernet/examples/SecureClient/.metro_m4.test.skip b/libraries/Ethernet/examples/SecureClient/.metro_m4.test.skip new file mode 100644 index 000000000..e69de29bb diff --git a/libraries/Ethernet/examples/SecureClient/.metro_m4:speed=120,usbstack=tinyusb.test.skip b/libraries/Ethernet/examples/SecureClient/.metro_m4:speed=120,usbstack=tinyusb.test.skip new file mode 100644 index 000000000..e69de29bb diff --git a/libraries/Ethernet/examples/SecureClient/.pybadge_m4.test.skip b/libraries/Ethernet/examples/SecureClient/.pybadge_m4.test.skip new file mode 100644 index 000000000..e69de29bb diff --git a/libraries/Ethernet/examples/SecureClient/.pygamer_m4.test.skip b/libraries/Ethernet/examples/SecureClient/.pygamer_m4.test.skip new file mode 100644 index 000000000..e69de29bb diff --git a/libraries/Ethernet/examples/SecureClient/.pyportal_m4.test.skip b/libraries/Ethernet/examples/SecureClient/.pyportal_m4.test.skip new file mode 100644 index 000000000..e69de29bb diff --git a/libraries/Ethernet/examples/SecureClient/.pyportal_m4_titano.test.skip b/libraries/Ethernet/examples/SecureClient/.pyportal_m4_titano.test.skip new file mode 100644 index 000000000..e69de29bb