aboutsummaryrefslogtreecommitdiff
path: root/embassy-rp/src/dma.rs
diff options
context:
space:
mode:
authorDario Nieuwenhuis <[email protected]>2024-04-05 00:35:25 +0200
committerDario Nieuwenhuis <[email protected]>2024-04-05 00:48:46 +0200
commita84b33995eacc32e0e13d70293fa9bd7b2bd75f8 (patch)
treecfd48dbdad8885495cf20c4832f373444b867397 /embassy-rp/src/dma.rs
parentab85eb4b60cd49ebcd43d2305f42327685f5e5a6 (diff)
rp: remove mod sealed.
Diffstat (limited to 'embassy-rp/src/dma.rs')
-rw-r--r--embassy-rp/src/dma.rs23
1 files changed, 11 insertions, 12 deletions
diff --git a/embassy-rp/src/dma.rs b/embassy-rp/src/dma.rs
index 44aabce6b..e6374a86c 100644
--- a/embassy-rp/src/dma.rs
+++ b/embassy-rp/src/dma.rs
@@ -208,14 +208,12 @@ pub(crate) const CHANNEL_COUNT: usize = 12;
208const NEW_AW: AtomicWaker = AtomicWaker::new(); 208const NEW_AW: AtomicWaker = AtomicWaker::new();
209static CHANNEL_WAKERS: [AtomicWaker; CHANNEL_COUNT] = [NEW_AW; CHANNEL_COUNT]; 209static CHANNEL_WAKERS: [AtomicWaker; CHANNEL_COUNT] = [NEW_AW; CHANNEL_COUNT];
210 210
211mod sealed { 211trait SealedChannel {}
212 pub trait Channel {} 212trait SealedWord {}
213
214 pub trait Word {}
215}
216 213
217/// DMA channel interface. 214/// DMA channel interface.
218pub trait Channel: Peripheral<P = Self> + sealed::Channel + Into<AnyChannel> + Sized + 'static { 215#[allow(private_bounds)]
216pub trait Channel: Peripheral<P = Self> + SealedChannel + Into<AnyChannel> + Sized + 'static {
219 /// Channel number. 217 /// Channel number.
220 fn number(&self) -> u8; 218 fn number(&self) -> u8;
221 219
@@ -231,26 +229,27 @@ pub trait Channel: Peripheral<P = Self> + sealed::Channel + Into<AnyChannel> + S
231} 229}
232 230
233/// DMA word. 231/// DMA word.
234pub trait Word: sealed::Word { 232#[allow(private_bounds)]
233pub trait Word: SealedWord {
235 /// Word size. 234 /// Word size.
236 fn size() -> vals::DataSize; 235 fn size() -> vals::DataSize;
237} 236}
238 237
239impl sealed::Word for u8 {} 238impl SealedWord for u8 {}
240impl Word for u8 { 239impl Word for u8 {
241 fn size() -> vals::DataSize { 240 fn size() -> vals::DataSize {
242 vals::DataSize::SIZE_BYTE 241 vals::DataSize::SIZE_BYTE
243 } 242 }
244} 243}
245 244
246impl sealed::Word for u16 {} 245impl SealedWord for u16 {}
247impl Word for u16 { 246impl Word for u16 {
248 fn size() -> vals::DataSize { 247 fn size() -> vals::DataSize {
249 vals::DataSize::SIZE_HALFWORD 248 vals::DataSize::SIZE_HALFWORD
250 } 249 }
251} 250}
252 251
253impl sealed::Word for u32 {} 252impl SealedWord for u32 {}
254impl Word for u32 { 253impl Word for u32 {
255 fn size() -> vals::DataSize { 254 fn size() -> vals::DataSize {
256 vals::DataSize::SIZE_WORD 255 vals::DataSize::SIZE_WORD
@@ -264,7 +263,7 @@ pub struct AnyChannel {
264 263
265impl_peripheral!(AnyChannel); 264impl_peripheral!(AnyChannel);
266 265
267impl sealed::Channel for AnyChannel {} 266impl SealedChannel for AnyChannel {}
268impl Channel for AnyChannel { 267impl Channel for AnyChannel {
269 fn number(&self) -> u8 { 268 fn number(&self) -> u8 {
270 self.number 269 self.number
@@ -273,7 +272,7 @@ impl Channel for AnyChannel {
273 272
274macro_rules! channel { 273macro_rules! channel {
275 ($name:ident, $num:expr) => { 274 ($name:ident, $num:expr) => {
276 impl sealed::Channel for peripherals::$name {} 275 impl SealedChannel for peripherals::$name {}
277 impl Channel for peripherals::$name { 276 impl Channel for peripherals::$name {
278 fn number(&self) -> u8 { 277 fn number(&self) -> u8 {
279 $num 278 $num