//! [`TdmConfig::with_msb_shift`], [`TdmConfig::with_ws_width`], [`TdmConfig::with_ws_polarity`],
//! must agree on the number of channels, data bit width, and frame synchronization pattern; this
//! MSB (most-significant bit) mode is similar to Philips mode, except the WS line is pulled low at
//! the same time the first data bit of the first slot is sent. It is held low for 50% of the frame.
//! PCM (pulse-code modulation) short mode pulls the WS line *high* one BCK period before the first
//! slot is sent, keeps it high until just before the last data bit of the first slot is sent, then
pub trait I2sMasterDmaChannel<'d, S>: crate::private::Sealed + Into<crate::dma::$any_channel<'d>> {}
// Proxy type so that the type-erased DMA channel can be named in the driver, regardless of the DMA engine.
/// - **`Data{X}` (on-wire slot width)**: The number of bit-clock (BCLK) cycles allocated to each
/// - **`Channel{Y}` (in-memory sample width)**: The number of active audio data bits per sample
/// - When `X == Y` (e.g. [`Data16Channel16`], [`Data32Channel32`]), the entire slot carries sample
/// - When `X > Y` (e.g. [`Data32Channel16`]), the `Y`-bit sample occupies `Y` bits of the `X`-bit
/// - **RX**: The leading `X - Y` bits are discarded; the last `Y` bits of the slot are captured
/// `Channel{Y}` refers to the in-memory sample data width. (This differs from some datasheets where
/// the on-wire slot is called "slot width" or "channel width", and the sample size is called "data
/// 32-bit on-wire slot width (32 BCLK cycles) and 24-bit in-memory sample width (3 bytes packed
/// (`Channel{Y}`). On the ESP32-S2, each slot on the wire matches the sample data width in memory
/// - **`Data{X}` (on-wire slot width)**: The number of bit-clock (BCLK) cycles allocated to each
/// 24-bit on-wire slot width (24 BCLK cycles) and 24-bit in-memory sample width (3 bytes packed
/// (`Channel{Y}`). On the ESP32, each slot on the wire matches the sample data width in memory (`X
/// - **`Data{X}` (on-wire slot width)**: The number of bit-clock (BCLK) cycles allocated to each
/// Alignment of sample data within the on-wire slot when the in-memory sample width is less than
/// Both directions share a single module clock on `i2s_version = "1"`, and the clock tree counts