From ca0a140d1fdad86184e406764d0fa6bc381f483e Mon Sep 17 00:00:00 2001 From: Phil Spindler Date: Tue, 7 Mar 2023 06:39:27 -0600 Subject: [PATCH 1/3] add low speed cfg select for metro_m0 --- boards/metro_m0/Cargo.toml | 1 + hal/Cargo.toml | 1 + hal/src/thumbv6m/usb/bus.rs | 3 +++ 3 files changed, 5 insertions(+) diff --git a/boards/metro_m0/Cargo.toml b/boards/metro_m0/Cargo.toml index 80606158e8a3..45fa7d59c051 100644 --- a/boards/metro_m0/Cargo.toml +++ b/boards/metro_m0/Cargo.toml @@ -42,6 +42,7 @@ rtic = ["atsamd-hal/rtic"] unproven = ["atsamd-hal/unproven"] use_rtt = ["atsamd-hal/use_rtt"] usb = ["atsamd-hal/usb", "usb-device"] +usb_low_speed = ["atsamd-hal/usb_low_speed"] use_semihosting = [] [profile.dev] diff --git a/hal/Cargo.toml b/hal/Cargo.toml index 89708e40ec3d..43afa12a039b 100644 --- a/hal/Cargo.toml +++ b/hal/Cargo.toml @@ -181,6 +181,7 @@ rtic = ["rtic-monotonic", "fugit"] sdmmc = ["embedded-sdmmc"] unproven = ["embedded-hal/unproven"] usb = ["usb-device"] +usb_low_speed = [] use_rtt = ["jlink_rtt"] #=============================================================================== diff --git a/hal/src/thumbv6m/usb/bus.rs b/hal/src/thumbv6m/usb/bus.rs index f4c31d774375..7702b0107127 100644 --- a/hal/src/thumbv6m/usb/bus.rs +++ b/hal/src/thumbv6m/usb/bus.rs @@ -645,6 +645,9 @@ impl Inner { }); // full speed usb.ctrlb.modify(|_, w| w.spdconf().fs()); + #[cfg(feature = "usb_low_speed")] { + usb.ctrlb.modify(|_, w| w.spdconf().ls()); + } usb.ctrla.modify(|_, w| w.enable().set_bit()); while usb.syncbusy.read().enable().bit_is_set() {} From 305a866d3522a3571d1abc92abea2088bf443c8d Mon Sep 17 00:00:00 2001 From: Phil Spindler Date: Thu, 9 Mar 2023 09:37:22 -0600 Subject: [PATCH 2/3] add note in changelog, add ls to thumbv7m --- boards/metro_m0/CHANGELOG.md | 2 ++ hal/CHANGELOG.md | 1 + hal/src/thumbv7em/usb/bus.rs | 3 +++ 3 files changed, 6 insertions(+) diff --git a/boards/metro_m0/CHANGELOG.md b/boards/metro_m0/CHANGELOG.md index 261fe161e763..6a0009267fb8 100644 --- a/boards/metro_m0/CHANGELOG.md +++ b/boards/metro_m0/CHANGELOG.md @@ -1,5 +1,7 @@ # Unreleased +- Add `usb_low_speed` usb cfg feature to set USB speed to low speed (1.5Mbps). + # v0.12.1 - Update to `atsamd-hal` version `0.15.1` diff --git a/hal/CHANGELOG.md b/hal/CHANGELOG.md index 506e88fc6d3a..bb80828d1f30 100644 --- a/hal/CHANGELOG.md +++ b/hal/CHANGELOG.md @@ -9,6 +9,7 @@ - Fix failing `bsp_pins!` invocation with no aliases (#605 fixes #599) - Add Advanced Encryption Standard (AES) peripheral support including RustCrypto compatible backend - Add embedded-hal `InputPin` trait to EIC pins +- Add `usb_low_speed` usb cfg feature to set USB speed to low speed (1.5Mbps). # v0.15.1 diff --git a/hal/src/thumbv7em/usb/bus.rs b/hal/src/thumbv7em/usb/bus.rs index e8e544001bdd..0ffd748f5269 100644 --- a/hal/src/thumbv7em/usb/bus.rs +++ b/hal/src/thumbv7em/usb/bus.rs @@ -589,6 +589,9 @@ impl Inner { }); // full speed usb.ctrlb.modify(|_, w| w.spdconf().fs()); + #[cfg(feature = "usb_low_speed")] { + usb.ctrlb.modify(|_, w| w.spdconf().ls()); + } usb.ctrla.modify(|_, w| w.enable().set_bit()); while usb.syncbusy.read().enable().bit_is_set() {} From 9725e73d65ebc65da98dce5fc96e9bc5b9e199f9 Mon Sep 17 00:00:00 2001 From: Phil Spindler Date: Thu, 9 Mar 2023 09:55:13 -0600 Subject: [PATCH 3/3] fix fmt error --- hal/src/thumbv6m/usb/bus.rs | 3 ++- hal/src/thumbv7em/usb/bus.rs | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/hal/src/thumbv6m/usb/bus.rs b/hal/src/thumbv6m/usb/bus.rs index 7702b0107127..d817714b9150 100644 --- a/hal/src/thumbv6m/usb/bus.rs +++ b/hal/src/thumbv6m/usb/bus.rs @@ -645,7 +645,8 @@ impl Inner { }); // full speed usb.ctrlb.modify(|_, w| w.spdconf().fs()); - #[cfg(feature = "usb_low_speed")] { + #[cfg(feature = "usb_low_speed")] + { usb.ctrlb.modify(|_, w| w.spdconf().ls()); } diff --git a/hal/src/thumbv7em/usb/bus.rs b/hal/src/thumbv7em/usb/bus.rs index 0ffd748f5269..1edf17887030 100644 --- a/hal/src/thumbv7em/usb/bus.rs +++ b/hal/src/thumbv7em/usb/bus.rs @@ -589,7 +589,8 @@ impl Inner { }); // full speed usb.ctrlb.modify(|_, w| w.spdconf().fs()); - #[cfg(feature = "usb_low_speed")] { + #[cfg(feature = "usb_low_speed")] + { usb.ctrlb.modify(|_, w| w.spdconf().ls()); }