diff options
| -rw-r--r-- | embassy-stm32/src/usb/usb.rs | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/embassy-stm32/src/usb/usb.rs b/embassy-stm32/src/usb/usb.rs index 4675b3f1a..c00c88215 100644 --- a/embassy-stm32/src/usb/usb.rs +++ b/embassy-stm32/src/usb/usb.rs | |||
| @@ -206,10 +206,6 @@ mod btable { | |||
| 206 | mod btable { | 206 | mod btable { |
| 207 | use super::*; | 207 | use super::*; |
| 208 | 208 | ||
| 209 | pub(super) fn write_in_tx<T: Instance>(_index: usize, _addr: u16) {} | ||
| 210 | |||
| 211 | pub(super) fn write_in_rx<T: Instance>(_index: usize, _addr: u16) {} | ||
| 212 | |||
| 213 | pub(super) fn write_in_len_tx<T: Instance>(index: usize, addr: u16, len: u16) { | 209 | pub(super) fn write_in_len_tx<T: Instance>(index: usize, addr: u16, len: u16) { |
| 214 | assert_eq!(addr & 0b11, 0); | 210 | assert_eq!(addr & 0b11, 0); |
| 215 | USBRAM.mem(index * 2).write_value((addr as u32) | ((len as u32) << 16)); | 211 | USBRAM.mem(index * 2).write_value((addr as u32) | ((len as u32) << 16)); |
| @@ -416,11 +412,23 @@ impl<'d, T: Instance> Driver<'d, T> { | |||
| 416 | let len = align_len_up(max_packet_size); | 412 | let len = align_len_up(max_packet_size); |
| 417 | let addr = self.alloc_ep_mem(len); | 413 | let addr = self.alloc_ep_mem(len); |
| 418 | 414 | ||
| 419 | // ep_in_len is written when actually TXing packets. | 415 | #[cfg(not(any(usbram_32_2048, usbram_32_1024)))] |
| 420 | btable::write_in_len_tx::<T>(index, addr, 0); | 416 | { |
| 417 | // ep_in_len is written when actually transmitting packets. | ||
| 418 | btable::write_in_tx::<T>(index, addr); | ||
| 421 | 419 | ||
| 422 | if ep_type == EndpointType::Isochronous { | 420 | if ep_type == EndpointType::Isochronous { |
| 423 | btable::write_in_len_rx::<T>(index, addr, 0); | 421 | btable::write_in_rx::<T>(index, addr); |
| 422 | } | ||
| 423 | } | ||
| 424 | |||
| 425 | #[cfg(any(usbram_32_2048, usbram_32_1024))] | ||
| 426 | { | ||
| 427 | btable::write_in_len_tx::<T>(index, addr, 0); | ||
| 428 | |||
| 429 | if ep_type == EndpointType::Isochronous { | ||
| 430 | btable::write_in_len_rx::<T>(index, addr, 0); | ||
| 431 | } | ||
| 424 | } | 432 | } |
| 425 | 433 | ||
| 426 | EndpointBuffer { | 434 | EndpointBuffer { |
