1#[cfg(any(spi_master_supports_dma, spi_slave_supports_dma))]
13use crate::dma::DmaError;
14
15#[cfg(spi_master_driver_supported)]
16pub mod master;
17
18crate::unstable_module! {
19 #[cfg(spi_slave_driver_supported)]
20 pub mod slave;
21}
22
23#[cfg_attr(
24 any(spi_master_version = "1", spi_master_version = "2"),
25 path = "clocks/v1v2.rs"
26)]
27#[cfg_attr(
28 all(spi_master_version = "3", not(any(esp32p4, esp32s31, soc_has_pcr))),
29 path = "clocks/v3.rs"
30)]
31#[cfg_attr(esp32p4, path = "clocks/esp32p4.rs")]
32#[cfg_attr(esp32s31, path = "clocks/esp32s31.rs")]
33#[cfg_attr(soc_has_pcr, path = "clocks/v3_pcr.rs")]
34mod clocks;
35
36#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
38#[cfg_attr(feature = "defmt", derive(defmt::Format))]
39#[non_exhaustive]
40pub enum Error {
41 #[cfg(feature = "unstable")]
43 #[cfg_attr(docsrs, doc(cfg(feature = "unstable")))]
44 #[allow(clippy::enum_variant_names, reason = "DMA is unstable")]
45 #[cfg(any(spi_master_supports_dma, spi_slave_supports_dma))]
46 DmaError(DmaError),
47 MaxDmaTransferSizeExceeded,
49 FifoSizeExeeded,
52 Unsupported,
55 Unknown,
57}
58
59#[doc(hidden)]
60#[cfg(feature = "unstable")]
61#[cfg(any(spi_master_supports_dma, spi_slave_supports_dma))]
62impl From<DmaError> for Error {
63 fn from(value: DmaError) -> Self {
64 Error::DmaError(value)
65 }
66}
67
68#[doc(hidden)]
69#[cfg(not(feature = "unstable"))]
70#[cfg(any(spi_master_supports_dma, spi_slave_supports_dma))]
71impl From<DmaError> for Error {
72 fn from(_value: DmaError) -> Self {
73 Error::Unknown
74 }
75}
76
77impl embedded_hal::spi::Error for Error {
78 fn kind(&self) -> embedded_hal::spi::ErrorKind {
79 embedded_hal::spi::ErrorKind::Other
80 }
81}
82
83#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
89#[cfg_attr(feature = "defmt", derive(defmt::Format))]
90pub enum Mode {
91 _0,
94 _1,
97 _2,
100 _3,
103}
104
105#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
107#[cfg_attr(feature = "defmt", derive(defmt::Format))]
108pub enum BitOrder {
109 MsbFirst,
111 LsbFirst,
113}