diff --git a/esp-hal/src/gpio/lp_io.rs b/esp-hal/src/gpio/lp_io.rs
index 5241c4b3306..7abcea289e7 100644
--- a/esp-hal/src/gpio/lp_io.rs
+++ b/esp-hal/src/gpio/lp_io.rs
@@ -42,6 +42,7 @@ pub struct LowPowerOutput<'d, const PIN: u8> {
impl<'d, const PIN: u8> LowPowerOutput<'d, PIN> {
/// Create a new output pin for use by the low-power core
+ #[instability::unstable]
pub fn new
(_pin: impl Peripheral
+ 'd) -> Self
where
P: OutputPin + RtcPin,
@@ -77,6 +78,7 @@ pub struct LowPowerInput<'d, const PIN: u8> {
impl<'d, const PIN: u8> LowPowerInput<'d, PIN> {
/// Create a new input pin for use by the low-power core
+ #[instability::unstable]
pub fn new
(_pin: impl Peripheral
+ 'd) -> Self
where
P: InputPin + RtcPin,
@@ -121,6 +123,7 @@ pub struct LowPowerOutputOpenDrain<'d, const PIN: u8> {
impl<'d, const PIN: u8> LowPowerOutputOpenDrain<'d, PIN> {
/// Create a new output pin for use by the low-power core
+ #[instability::unstable]
pub fn new
(_pin: impl Peripheral
+ 'd) -> Self
where
P: InputPin + OutputPin + RtcPin,
@@ -191,7 +194,6 @@ pub(crate) fn init_low_power_pin(pin: u8) {
}
#[doc(hidden)]
-#[macro_export]
macro_rules! lp_gpio {
(
$($gpionum:literal)+
@@ -262,3 +264,5 @@ macro_rules! lp_gpio {
)+
}
}
+
+pub(crate) use lp_gpio;
diff --git a/esp-hal/src/gpio/mod.rs b/esp-hal/src/gpio/mod.rs
index dfed16969b6..d6bd79bc730 100644
--- a/esp-hal/src/gpio/mod.rs
+++ b/esp-hal/src/gpio/mod.rs
@@ -86,11 +86,19 @@ mod placeholder;
pub use placeholder::NoPin;
#[cfg(soc_etm)]
-pub mod etm;
+crate::unstable_module! {
+ pub mod etm;
+}
+
#[cfg(lp_io)]
-pub mod lp_io;
+crate::unstable_module! {
+ pub mod lp_io;
+}
+
#[cfg(all(rtc_io, not(esp32)))]
-pub mod rtc_io;
+crate::unstable_module! {
+ pub mod rtc_io;
+}
/// Convenience constant for `Option::None` pin
static USER_INTERRUPT_HANDLER: CFnPtr = CFnPtr::new();
@@ -139,6 +147,7 @@ impl From for Event {
}
/// Event used to wake up from light sleep.
+#[instability::unstable]
#[derive(Debug, Eq, PartialEq, Copy, Clone, Hash)]
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
pub enum WakeEvent {
@@ -233,6 +242,7 @@ pub enum DriveStrength {
///
/// The different variants correspond to different functionality depending on
/// the chip and the specific pin. For more information, refer to your chip's
+#[doc(hidden)]
#[doc = crate::trm_markdown_link!("iomuxgpio")]
#[derive(Debug, Eq, PartialEq, Copy, Clone, Hash)]
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
@@ -268,6 +278,7 @@ impl TryFrom for AlternateFunction {
}
/// RTC function
+#[instability::unstable]
#[derive(Debug, Eq, PartialEq, Copy, Clone, Hash)]
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
pub enum RtcFunction {
@@ -278,6 +289,7 @@ pub enum RtcFunction {
}
/// Trait implemented by RTC pins
+#[instability::unstable]
pub trait RtcPin: Pin {
/// RTC number of the pin
#[cfg(xtensa)]
@@ -300,6 +312,7 @@ pub trait RtcPin: Pin {
/// Trait implemented by RTC pins which supporting internal pull-up / pull-down
/// resistors.
+#[instability::unstable]
pub trait RtcPinWithResistors: RtcPin {
/// Enable/disable the internal pull-up resistor
fn rtcio_pullup(&mut self, enable: bool);
@@ -516,6 +529,7 @@ pub trait OutputPin: Pin + Into + 'static {
}
/// Trait implemented by pins which can be used as analog pins
+#[instability::unstable]
pub trait AnalogPin: Pin {
/// Configure the pin for analog operation
#[doc(hidden)]
@@ -523,6 +537,8 @@ pub trait AnalogPin: Pin {
}
/// Trait implemented by pins which can be used as Touchpad pins
+#[cfg(touch)]
+#[instability::unstable]
pub trait TouchPin: Pin {
/// Configure the pin for analog operation
#[doc(hidden)]
@@ -1583,6 +1599,7 @@ where
/// Enable as a wake-up source.
///
/// This will unlisten for interrupts
+ #[instability::unstable]
#[inline]
pub fn wakeup_enable(&mut self, enable: bool, event: WakeEvent) {
self.pin.wakeup_enable(enable, event);
@@ -1982,6 +1999,7 @@ where
/// Enable as a wake-up source.
///
/// This will unlisten for interrupts
+ #[instability::unstable]
#[inline]
pub fn wakeup_enable(&mut self, enable: bool, event: WakeEvent) {
self.listen_with_options(event.into(), false, false, enable);
diff --git a/esp-hal/src/i2c/master/mod.rs b/esp-hal/src/i2c/master/mod.rs
index db9803720c1..d317c9384c6 100644
--- a/esp-hal/src/i2c/master/mod.rs
+++ b/esp-hal/src/i2c/master/mod.rs
@@ -985,6 +985,7 @@ fn configure_clock(
}
/// Peripheral data describing a particular I2C instance.
+#[doc(hidden)]
#[derive(Debug)]
#[non_exhaustive]
pub struct Info {
@@ -2188,6 +2189,7 @@ impl Driver<'_> {
}
/// Peripheral state for an I2C instance.
+#[doc(hidden)]
#[non_exhaustive]
pub struct State {
/// Waker for the asynchronous operations.
@@ -2195,6 +2197,7 @@ pub struct State {
}
/// I2C Peripheral Instance
+#[doc(hidden)]
pub trait Instance: Peripheral + Into + 'static {
/// Returns the peripheral data and state describing this instance.
fn parts(&self) -> (&Info, &State);
diff --git a/esp-hal/src/soc/esp32c6/gpio.rs b/esp-hal/src/soc/esp32c6/gpio.rs
index 1ae8f62b86d..0be007b7227 100644
--- a/esp-hal/src/soc/esp32c6/gpio.rs
+++ b/esp-hal/src/soc/esp32c6/gpio.rs
@@ -287,7 +287,7 @@ pub enum OutputSignal {
GPIO = 128,
}
-crate::lp_gpio! {
+crate::gpio::lp_io::lp_gpio! {
0
1
2
diff --git a/esp-hal/src/spi/master.rs b/esp-hal/src/spi/master.rs
index fa79bc6e618..48116c037ea 100644
--- a/esp-hal/src/spi/master.rs
+++ b/esp-hal/src/spi/master.rs
@@ -2362,15 +2362,18 @@ mod ehal1 {
}
/// SPI peripheral instance.
+#[doc(hidden)]
pub trait PeripheralInstance: private::Sealed + Into + DmaEligible + 'static {
/// Returns the peripheral data describing this SPI instance.
fn info(&self) -> &'static Info;
}
/// Marker trait for QSPI-capable SPI peripherals.
+#[doc(hidden)]
pub trait QspiInstance: PeripheralInstance {}
/// Peripheral data describing a particular SPI instance.
+#[doc(hidden)]
#[non_exhaustive]
pub struct Info {
/// Pointer to the register block for this SPI instance.
diff --git a/esp-hal/src/spi/slave.rs b/esp-hal/src/spi/slave.rs
index 6b688f7d325..ebd48ef9981 100644
--- a/esp-hal/src/spi/slave.rs
+++ b/esp-hal/src/spi/slave.rs
@@ -602,6 +602,7 @@ impl InstanceDma for crate::peripherals::SPI2 {}
impl InstanceDma for crate::peripherals::SPI3 {}
/// Peripheral data describing a particular SPI instance.
+#[doc(hidden)]
#[non_exhaustive]
#[doc(hidden)]
pub struct Info {
diff --git a/esp-hal/src/trace.rs b/esp-hal/src/trace.rs
index 09777515764..deb44c9f7b1 100644
--- a/esp-hal/src/trace.rs
+++ b/esp-hal/src/trace.rs
@@ -207,6 +207,7 @@ where
}
/// Trace peripheral instance
+#[doc(hidden)]
pub trait Instance: crate::private::Sealed {
/// Get a reference to the peripheral's underlying register block
fn register_block(&self) -> &RegisterBlock;
diff --git a/esp-hal/src/twai/mod.rs b/esp-hal/src/twai/mod.rs
index f630aeaa446..884d2e70d31 100644
--- a/esp-hal/src/twai/mod.rs
+++ b/esp-hal/src/twai/mod.rs
@@ -1360,6 +1360,7 @@ where
}
/// TWAI peripheral instance.
+#[doc(hidden)]
pub trait Instance: Peripheral + Into + 'static {
/// The identifier number for this TWAI instance.
fn number(&self) -> usize;
diff --git a/esp-hal/src/uart.rs b/esp-hal/src/uart.rs
index 0091cdf22b5..cc5f529cd0d 100644
--- a/esp-hal/src/uart.rs
+++ b/esp-hal/src/uart.rs
@@ -2221,6 +2221,7 @@ pub mod lp_uart {
}
/// UART Peripheral Instance
+#[doc(hidden)]
pub trait Instance: Peripheral + Into + 'static {
/// Returns the peripheral data and state describing this UART instance.
fn parts(&self) -> (&'static Info, &'static State);
@@ -2239,6 +2240,7 @@ pub trait Instance: Peripheral + Into + 'static {
}
/// Peripheral data describing a particular UART instance.
+#[doc(hidden)]
#[non_exhaustive]
pub struct Info {
/// Pointer to the register block for this UART instance.
@@ -2269,6 +2271,7 @@ pub struct Info {
}
/// Peripheral state for a UART instance.
+#[doc(hidden)]
#[non_exhaustive]
pub struct State {
/// Waker for the asynchronous RX operations.
diff --git a/esp-hal/src/usb_serial_jtag.rs b/esp-hal/src/usb_serial_jtag.rs
index 93e8fbfbdfc..a53f981c363 100644
--- a/esp-hal/src/usb_serial_jtag.rs
+++ b/esp-hal/src/usb_serial_jtag.rs
@@ -450,6 +450,7 @@ where
}
/// USB Serial/JTAG peripheral instance
+#[doc(hidden)]
pub trait Instance: crate::private::Sealed {
/// Get a reference to the peripheral's underlying register block
fn register_block() -> &'static RegisterBlock;