From 5c93e9daddcbb33733a67174b726d02dc21ab913 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Timo=20Kro=CC=88ger?= <timokroeger93@gmail.com>
Date: Fri, 10 May 2024 10:37:56 +0200
Subject: [PATCH] [UCPD] Use `ChannelAndRequest` helper

---
 embassy-stm32/src/ucpd.rs | 40 ++++++++++++++++-----------------------
 1 file changed, 16 insertions(+), 24 deletions(-)

diff --git a/embassy-stm32/src/ucpd.rs b/embassy-stm32/src/ucpd.rs
index ff8c7aaad..d6d0682b9 100644
--- a/embassy-stm32/src/ucpd.rs
+++ b/embassy-stm32/src/ucpd.rs
@@ -20,10 +20,10 @@ use core::sync::atomic::{AtomicBool, Ordering};
 use core::task::Poll;
 
 use embassy_hal_internal::drop::OnDrop;
-use embassy_hal_internal::{into_ref, Peripheral, PeripheralRef};
+use embassy_hal_internal::{into_ref, Peripheral};
 use embassy_sync::waitqueue::AtomicWaker;
 
-use crate::dma::{AnyChannel, Request, Transfer, TransferOptions};
+use crate::dma::{ChannelAndRequest, TransferOptions};
 use crate::interrupt;
 use crate::interrupt::typelevel::Interrupt;
 use crate::pac::ucpd::vals::{Anamode, Ccenable, PscUsbpdclk, Txmode};
@@ -179,10 +179,14 @@ impl<'d, T: Instance> Ucpd<'d, T> {
             self.cc_phy,
             PdPhy {
                 _lifetime: PhantomData,
-                rx_dma_ch: rx_dma.map_into(),
-                rx_dma_req,
-                tx_dma_ch: tx_dma.map_into(),
-                tx_dma_req,
+                rx_dma: ChannelAndRequest {
+                    channel: rx_dma.map_into(),
+                    request: rx_dma_req,
+                },
+                tx_dma: ChannelAndRequest {
+                    channel: tx_dma.map_into(),
+                    request: tx_dma_req,
+                },
             },
         )
     }
@@ -309,10 +313,8 @@ pub enum TxError {
 /// Power Delivery (PD) PHY.
 pub struct PdPhy<'d, T: Instance> {
     _lifetime: PhantomData<&'d mut T>,
-    rx_dma_ch: PeripheralRef<'d, AnyChannel>,
-    rx_dma_req: Request,
-    tx_dma_ch: PeripheralRef<'d, AnyChannel>,
-    tx_dma_req: Request,
+    rx_dma: ChannelAndRequest<'d>,
+    tx_dma: ChannelAndRequest<'d>,
 }
 
 impl<'d, T: Instance> Drop for PdPhy<'d, T> {
@@ -337,13 +339,8 @@ impl<'d, T: Instance> PdPhy<'d, T> {
         let r = T::REGS;
 
         let dma = unsafe {
-            Transfer::new_read(
-                &mut self.rx_dma_ch,
-                self.rx_dma_req,
-                r.rxdr().as_ptr() as *mut u8,
-                buf,
-                TransferOptions::default(),
-            )
+            self.rx_dma
+                .read(r.rxdr().as_ptr() as *mut u8, buf, TransferOptions::default())
         };
 
         // Clear interrupt flags (possibly set from last receive).
@@ -418,13 +415,8 @@ impl<'d, T: Instance> PdPhy<'d, T> {
 
         // Start the DMA and let it do its thing in the background.
         let _dma = unsafe {
-            Transfer::new_write(
-                &mut self.tx_dma_ch,
-                self.tx_dma_req,
-                buf,
-                r.txdr().as_ptr() as *mut u8,
-                TransferOptions::default(),
-            )
+            self.tx_dma
+                .write(buf, r.txdr().as_ptr() as *mut u8, TransferOptions::default())
         };
 
         // Configure and start the transmission.