From d96b9b36a2d88798e3617c6f9ec4ce4f3fcd57a9 Mon Sep 17 00:00:00 2001 From: Sameer Puri Date: Thu, 2 Apr 2020 13:40:50 -0400 Subject: [PATCH] Set USB SRAM QoS to sensitive latency --- cores/arduino/USB/SAMD21_USBDevice.h | 4 ++++ cores/arduino/USB/USBCore.cpp | 2 ++ 2 files changed, 6 insertions(+) diff --git a/cores/arduino/USB/SAMD21_USBDevice.h b/cores/arduino/USB/SAMD21_USBDevice.h index 2bb71a408..d1ef4f161 100644 --- a/cores/arduino/USB/SAMD21_USBDevice.h +++ b/cores/arduino/USB/SAMD21_USBDevice.h @@ -50,6 +50,10 @@ class USBDevice_SAMD21G18x { inline void noRunInStandby() { usb.CTRLA.bit.RUNSTDBY = 0; } inline void wakeupHost() { usb.CTRLB.bit.UPRSM = 1; } + // USB QoS + inline void setDataSensitiveQoS() { usb.QOSCTRL.bit.DQOS = 2; } + inline void setConfigSensitiveQoS() { usb.QOSCTRL.bit.CQOS = 2; } + // USB speed inline void setFullSpeed() { usb.CTRLB.bit.SPDCONF = USB_DEVICE_CTRLB_SPDCONF_FS_Val; } inline void setLowSpeed() { usb.CTRLB.bit.SPDCONF = USB_DEVICE_CTRLB_SPDCONF_LS_Val; } diff --git a/cores/arduino/USB/USBCore.cpp b/cores/arduino/USB/USBCore.cpp index c49cc077d..bf7888acb 100644 --- a/cores/arduino/USB/USBCore.cpp +++ b/cores/arduino/USB/USBCore.cpp @@ -295,6 +295,8 @@ void USBDeviceClass::init() usbd.reset(); usbd.calibrate(); + usbd.setDataSensitiveQoS(); + usbd.setConfigSensitiveQoS(); usbd.setUSBDeviceMode(); usbd.runInStandby(); usbd.setFullSpeed();