macro_rules! rtc_pins {
( $( $pin_num:expr )+ ) => {
$(
paste::paste! {
#[cfg_attr(docsrs, doc(cfg(feature = "unstable")))]
impl $crate::gpio::RtcPin for $crate::peripherals::[<GPIO $pin_num>]<'_> {
unsafe fn apply_wakeup(&self, wakeup: bool, level: u8) {
let rtc_cntl = $crate::peripherals::LPWR::regs();
let gpio_wakeup = rtc_cntl.gpio_wakeup();
unsafe {
gpio_wakeup.modify(|_, w| w.[< gpio_pin $pin_num _wakeup_enable >]().bit(wakeup));
gpio_wakeup.modify(|_, w| w.[< gpio_pin $pin_num _int_type >]().bits(level));
}
}
fn rtcio_pad_hold(&self, enable: bool) {
$crate::peripherals::LPWR::regs()
.pad_hold().modify(|_, w| w.[< gpio_pin $pin_num _hold >]().bit(enable));
}
}
#[cfg_attr(docsrs, doc(cfg(feature = "unstable")))]
impl crate::gpio::RtcPinWithResistors for $crate::peripherals::[<GPIO $pin_num>]<'_> {
fn rtcio_pullup(&self, enable: bool) {
$crate::peripherals::IO_MUX::regs()
.gpio($pin_num)
.modify(|_, w| w.fun_wpu().bit(enable));
}
fn rtcio_pulldown(&self, enable: bool) {
$crate::peripherals::IO_MUX::regs()
.gpio($pin_num)
.modify(|_, w| w.fun_wpd().bit(enable));
}
}
}
)+
};
}
rtc_pins! {
0
1
2
3
4
5
}