mirror of
https://github.com/embassy-rs/embassy.git
synced 2024-11-25 00:02:28 +00:00
Merge pull request #3538 from elagil/sai_flush_fifo_on_disable
Flush SAI FIFO on init and disable
This commit is contained in:
commit
6c4b3d82b6
@ -861,12 +861,15 @@ impl<'d, T: Instance, W: word::Word> Sai<'d, T, W> {
|
|||||||
ring_buffer: RingBuffer<'d, W>,
|
ring_buffer: RingBuffer<'d, W>,
|
||||||
config: Config,
|
config: Config,
|
||||||
) -> Self {
|
) -> Self {
|
||||||
|
let ch = T::REGS.ch(sub_block as usize);
|
||||||
|
|
||||||
#[cfg(any(sai_v1, sai_v2, sai_v3_2pdm, sai_v3_4pdm, sai_v4_2pdm, sai_v4_4pdm))]
|
#[cfg(any(sai_v1, sai_v2, sai_v3_2pdm, sai_v3_4pdm, sai_v4_2pdm, sai_v4_4pdm))]
|
||||||
{
|
{
|
||||||
let ch = T::REGS.ch(sub_block as usize);
|
|
||||||
ch.cr1().modify(|w| w.set_saien(false));
|
ch.cr1().modify(|w| w.set_saien(false));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ch.cr2().modify(|w| w.set_fflush(true));
|
||||||
|
|
||||||
#[cfg(any(sai_v4_2pdm, sai_v4_4pdm))]
|
#[cfg(any(sai_v4_2pdm, sai_v4_4pdm))]
|
||||||
{
|
{
|
||||||
if let SyncInput::External(i) = config.sync_input {
|
if let SyncInput::External(i) = config.sync_input {
|
||||||
@ -888,7 +891,6 @@ impl<'d, T: Instance, W: word::Word> Sai<'d, T, W> {
|
|||||||
|
|
||||||
#[cfg(any(sai_v1, sai_v2, sai_v3_2pdm, sai_v3_4pdm, sai_v4_2pdm, sai_v4_4pdm))]
|
#[cfg(any(sai_v1, sai_v2, sai_v3_2pdm, sai_v3_4pdm, sai_v4_2pdm, sai_v4_4pdm))]
|
||||||
{
|
{
|
||||||
let ch = T::REGS.ch(sub_block as usize);
|
|
||||||
ch.cr1().modify(|w| {
|
ch.cr1().modify(|w| {
|
||||||
w.set_mode(config.mode.mode(if Self::is_transmitter(&ring_buffer) {
|
w.set_mode(config.mode.mode(if Self::is_transmitter(&ring_buffer) {
|
||||||
TxRx::Transmitter
|
TxRx::Transmitter
|
||||||
@ -1045,6 +1047,7 @@ impl<'d, T: Instance, W: word::Word> Drop for Sai<'d, T, W> {
|
|||||||
fn drop(&mut self) {
|
fn drop(&mut self) {
|
||||||
let ch = T::REGS.ch(self.sub_block as usize);
|
let ch = T::REGS.ch(self.sub_block as usize);
|
||||||
ch.cr1().modify(|w| w.set_saien(false));
|
ch.cr1().modify(|w| w.set_saien(false));
|
||||||
|
ch.cr2().modify(|w| w.set_fflush(true));
|
||||||
self.fs.as_ref().map(|x| x.set_as_disconnected());
|
self.fs.as_ref().map(|x| x.set_as_disconnected());
|
||||||
self.sd.as_ref().map(|x| x.set_as_disconnected());
|
self.sd.as_ref().map(|x| x.set_as_disconnected());
|
||||||
self.sck.as_ref().map(|x| x.set_as_disconnected());
|
self.sck.as_ref().map(|x| x.set_as_disconnected());
|
||||||
|
Loading…
Reference in New Issue
Block a user