diff --git a/embassy-rp/Cargo.toml b/embassy-rp/Cargo.toml index 49aa6a4d..66823771 100644 --- a/embassy-rp/Cargo.toml +++ b/embassy-rp/Cargo.toml @@ -76,7 +76,7 @@ embedded-storage = { version = "0.3" } rand_core = "0.6.4" fixed = "1.23.1" -rp-pac = { version = "5" } +rp-pac = { version = "6" } embedded-hal-02 = { package = "embedded-hal", version = "0.2.6", features = ["unproven"] } embedded-hal-1 = { package = "embedded-hal", version = "=1.0.0-alpha.10", optional = true} diff --git a/embassy-rp/src/clocks.rs b/embassy-rp/src/clocks.rs index 4c622310..ddd61d22 100644 --- a/embassy-rp/src/clocks.rs +++ b/embassy-rp/src/clocks.rs @@ -46,13 +46,13 @@ static CLOCKS: Clocks = Clocks { #[non_exhaustive] #[derive(Clone, Copy, Debug, PartialEq, Eq)] pub enum PeriClkSrc { - Sys = ClkPeriCtrlAuxsrc::CLK_SYS.0, - PllSys = ClkPeriCtrlAuxsrc::CLKSRC_PLL_SYS.0, - PllUsb = ClkPeriCtrlAuxsrc::CLKSRC_PLL_USB.0, - Rosc = ClkPeriCtrlAuxsrc::ROSC_CLKSRC_PH.0, - Xosc = ClkPeriCtrlAuxsrc::XOSC_CLKSRC.0, - // Gpin0 = ClkPeriCtrlAuxsrc::CLKSRC_GPIN0.0, - // Gpin1 = ClkPeriCtrlAuxsrc::CLKSRC_GPIN1.0, + Sys = ClkPeriCtrlAuxsrc::CLK_SYS as _, + PllSys = ClkPeriCtrlAuxsrc::CLKSRC_PLL_SYS as _, + PllUsb = ClkPeriCtrlAuxsrc::CLKSRC_PLL_USB as _, + Rosc = ClkPeriCtrlAuxsrc::ROSC_CLKSRC_PH as _, + Xosc = ClkPeriCtrlAuxsrc::XOSC_CLKSRC as _, + // Gpin0 = ClkPeriCtrlAuxsrc::CLKSRC_GPIN0 as _ , + // Gpin1 = ClkPeriCtrlAuxsrc::CLKSRC_GPIN1 as _ , } #[non_exhaustive] @@ -251,12 +251,12 @@ pub struct SysClkConfig { #[non_exhaustive] #[derive(Clone, Copy, Debug, PartialEq, Eq)] pub enum UsbClkSrc { - PllUsb = ClkUsbCtrlAuxsrc::CLKSRC_PLL_USB.0, - PllSys = ClkUsbCtrlAuxsrc::CLKSRC_PLL_SYS.0, - Rosc = ClkUsbCtrlAuxsrc::ROSC_CLKSRC_PH.0, - Xosc = ClkUsbCtrlAuxsrc::XOSC_CLKSRC.0, - // Gpin0 = ClkUsbCtrlAuxsrc::CLKSRC_GPIN0.0, - // Gpin1 = ClkUsbCtrlAuxsrc::CLKSRC_GPIN1.0, + PllUsb = ClkUsbCtrlAuxsrc::CLKSRC_PLL_USB as _, + PllSys = ClkUsbCtrlAuxsrc::CLKSRC_PLL_SYS as _, + Rosc = ClkUsbCtrlAuxsrc::ROSC_CLKSRC_PH as _, + Xosc = ClkUsbCtrlAuxsrc::XOSC_CLKSRC as _, + // Gpin0 = ClkUsbCtrlAuxsrc::CLKSRC_GPIN0 as _ , + // Gpin1 = ClkUsbCtrlAuxsrc::CLKSRC_GPIN1 as _ , } pub struct UsbClkConfig { @@ -269,12 +269,12 @@ pub struct UsbClkConfig { #[non_exhaustive] #[derive(Clone, Copy, Debug, PartialEq, Eq)] pub enum AdcClkSrc { - PllUsb = ClkAdcCtrlAuxsrc::CLKSRC_PLL_USB.0, - PllSys = ClkAdcCtrlAuxsrc::CLKSRC_PLL_SYS.0, - Rosc = ClkAdcCtrlAuxsrc::ROSC_CLKSRC_PH.0, - Xosc = ClkAdcCtrlAuxsrc::XOSC_CLKSRC.0, - // Gpin0 = ClkAdcCtrlAuxsrc::CLKSRC_GPIN0.0, - // Gpin1 = ClkAdcCtrlAuxsrc::CLKSRC_GPIN1.0, + PllUsb = ClkAdcCtrlAuxsrc::CLKSRC_PLL_USB as _, + PllSys = ClkAdcCtrlAuxsrc::CLKSRC_PLL_SYS as _, + Rosc = ClkAdcCtrlAuxsrc::ROSC_CLKSRC_PH as _, + Xosc = ClkAdcCtrlAuxsrc::XOSC_CLKSRC as _, + // Gpin0 = ClkAdcCtrlAuxsrc::CLKSRC_GPIN0 as _ , + // Gpin1 = ClkAdcCtrlAuxsrc::CLKSRC_GPIN1 as _ , } pub struct AdcClkConfig { @@ -287,12 +287,12 @@ pub struct AdcClkConfig { #[non_exhaustive] #[derive(Clone, Copy, Debug, PartialEq, Eq)] pub enum RtcClkSrc { - PllUsb = ClkRtcCtrlAuxsrc::CLKSRC_PLL_USB.0, - PllSys = ClkRtcCtrlAuxsrc::CLKSRC_PLL_SYS.0, - Rosc = ClkRtcCtrlAuxsrc::ROSC_CLKSRC_PH.0, - Xosc = ClkRtcCtrlAuxsrc::XOSC_CLKSRC.0, - // Gpin0 = ClkRtcCtrlAuxsrc::CLKSRC_GPIN0.0, - // Gpin1 = ClkRtcCtrlAuxsrc::CLKSRC_GPIN1.0, + PllUsb = ClkRtcCtrlAuxsrc::CLKSRC_PLL_USB as _, + PllSys = ClkRtcCtrlAuxsrc::CLKSRC_PLL_SYS as _, + Rosc = ClkRtcCtrlAuxsrc::ROSC_CLKSRC_PH as _, + Xosc = ClkRtcCtrlAuxsrc::XOSC_CLKSRC as _, + // Gpin0 = ClkRtcCtrlAuxsrc::CLKSRC_GPIN0 as _ , + // Gpin1 = ClkRtcCtrlAuxsrc::CLKSRC_GPIN1 as _ , } pub struct RtcClkConfig { @@ -396,7 +396,7 @@ pub(crate) unsafe fn init(config: ClockConfig) { w.set_src(ref_src); w.set_auxsrc(ref_aux); }); - while c.clk_ref_selected().read() != 1 << ref_src.0 {} + while c.clk_ref_selected().read() != 1 << ref_src as u32 {} c.clk_ref_div().write(|w| { w.set_int(config.ref_clk.div); }); @@ -425,13 +425,13 @@ pub(crate) unsafe fn init(config: ClockConfig) { CLOCKS.sys.store(clk_sys_freq, Ordering::Relaxed); if sys_src != ClkSysCtrlSrc::CLK_REF { c.clk_sys_ctrl().write(|w| w.set_src(ClkSysCtrlSrc::CLK_REF)); - while c.clk_sys_selected().read() != 1 << ClkSysCtrlSrc::CLK_REF.0 {} + while c.clk_sys_selected().read() != 1 << ClkSysCtrlSrc::CLK_REF as u32 {} } c.clk_sys_ctrl().write(|w| { w.set_auxsrc(sys_aux); w.set_src(sys_src); }); - while c.clk_sys_selected().read() != 1 << sys_src.0 {} + while c.clk_sys_selected().read() != 1 << sys_src as u32 {} c.clk_sys_div().write(|w| { w.set_int(config.sys_clk.div_int); w.set_frac(config.sys_clk.div_frac); @@ -442,7 +442,7 @@ pub(crate) unsafe fn init(config: ClockConfig) { if let Some(src) = config.peri_clk_src { c.clk_peri_ctrl().write(|w| { w.set_enable(true); - w.set_auxsrc(ClkPeriCtrlAuxsrc(src as _)); + w.set_auxsrc(ClkPeriCtrlAuxsrc::from_bits(src as _)); }); let peri_freq = match src { PeriClkSrc::Sys => clk_sys_freq, @@ -468,7 +468,7 @@ pub(crate) unsafe fn init(config: ClockConfig) { c.clk_usb_ctrl().write(|w| { w.set_phase(conf.phase); w.set_enable(true); - w.set_auxsrc(ClkUsbCtrlAuxsrc(conf.src as _)); + w.set_auxsrc(ClkUsbCtrlAuxsrc::from_bits(conf.src as _)); }); let usb_freq = match conf.src { UsbClkSrc::PllUsb => pll_usb_freq, @@ -491,7 +491,7 @@ pub(crate) unsafe fn init(config: ClockConfig) { c.clk_adc_ctrl().write(|w| { w.set_phase(conf.phase); w.set_enable(true); - w.set_auxsrc(ClkAdcCtrlAuxsrc(conf.src as _)); + w.set_auxsrc(ClkAdcCtrlAuxsrc::from_bits(conf.src as _)); }); let adc_in_freq = match conf.src { AdcClkSrc::PllUsb => pll_usb_freq, @@ -517,7 +517,7 @@ pub(crate) unsafe fn init(config: ClockConfig) { c.clk_rtc_ctrl().write(|w| { w.set_phase(conf.phase); w.set_enable(true); - w.set_auxsrc(ClkRtcCtrlAuxsrc(conf.src as _)); + w.set_auxsrc(ClkRtcCtrlAuxsrc::from_bits(conf.src as _)); }); let rtc_in_freq = match conf.src { RtcClkSrc::PllUsb => pll_usb_freq, @@ -718,7 +718,7 @@ impl<'d, T: Pin> Drop for Gpin<'d, T> { self.gpin .io() .ctrl() - .write(|w| w.set_funcsel(pac::io::vals::Gpio0ctrlFuncsel::NULL.0)); + .write(|w| w.set_funcsel(pac::io::vals::Gpio0ctrlFuncsel::NULL as _)); } } @@ -743,17 +743,17 @@ impl_gpoutpin!(PIN_25, 3); #[repr(u8)] pub enum GpoutSrc { - PllSys = ClkGpoutCtrlAuxsrc::CLKSRC_PLL_SYS.0, - // Gpin0 = ClkGpoutCtrlAuxsrc::CLKSRC_GPIN0.0, - // Gpin1 = ClkGpoutCtrlAuxsrc::CLKSRC_GPIN1.0, - PllUsb = ClkGpoutCtrlAuxsrc::CLKSRC_PLL_USB.0, - Rosc = ClkGpoutCtrlAuxsrc::ROSC_CLKSRC.0, - Xosc = ClkGpoutCtrlAuxsrc::XOSC_CLKSRC.0, - Sys = ClkGpoutCtrlAuxsrc::CLK_SYS.0, - Usb = ClkGpoutCtrlAuxsrc::CLK_USB.0, - Adc = ClkGpoutCtrlAuxsrc::CLK_ADC.0, - Rtc = ClkGpoutCtrlAuxsrc::CLK_RTC.0, - Ref = ClkGpoutCtrlAuxsrc::CLK_REF.0, + PllSys = ClkGpoutCtrlAuxsrc::CLKSRC_PLL_SYS as _, + // Gpin0 = ClkGpoutCtrlAuxsrc::CLKSRC_GPIN0 as _ , + // Gpin1 = ClkGpoutCtrlAuxsrc::CLKSRC_GPIN1 as _ , + PllUsb = ClkGpoutCtrlAuxsrc::CLKSRC_PLL_USB as _, + Rosc = ClkGpoutCtrlAuxsrc::ROSC_CLKSRC as _, + Xosc = ClkGpoutCtrlAuxsrc::XOSC_CLKSRC as _, + Sys = ClkGpoutCtrlAuxsrc::CLK_SYS as _, + Usb = ClkGpoutCtrlAuxsrc::CLK_USB as _, + Adc = ClkGpoutCtrlAuxsrc::CLK_ADC as _, + Rtc = ClkGpoutCtrlAuxsrc::CLK_RTC as _, + Ref = ClkGpoutCtrlAuxsrc::CLK_REF as _, } pub struct Gpout<'d, T: GpoutPin> { @@ -780,7 +780,7 @@ impl<'d, T: GpoutPin> Gpout<'d, T> { pub fn set_src(&self, src: GpoutSrc) { let c = pac::CLOCKS; c.clk_gpout_ctrl(self.gpout.number()).modify(|w| { - w.set_auxsrc(ClkGpoutCtrlAuxsrc(src as _)); + w.set_auxsrc(ClkGpoutCtrlAuxsrc::from_bits(src as _)); }); } @@ -831,7 +831,7 @@ impl<'d, T: GpoutPin> Drop for Gpout<'d, T> { self.gpout .io() .ctrl() - .write(|w| w.set_funcsel(pac::io::vals::Gpio0ctrlFuncsel::NULL.0)); + .write(|w| w.set_funcsel(pac::io::vals::Gpio0ctrlFuncsel::NULL as _)); } } diff --git a/embassy-rp/src/gpio.rs b/embassy-rp/src/gpio.rs index ce0d0255..f8048a4d 100644 --- a/embassy-rp/src/gpio.rs +++ b/embassy-rp/src/gpio.rs @@ -452,7 +452,7 @@ impl<'d, T: Pin> Flex<'d, T> { }); pin.io().ctrl().write(|w| { - w.set_funcsel(pac::io::vals::Gpio0ctrlFuncsel::SIO_0.0); + w.set_funcsel(pac::io::vals::Gpio0ctrlFuncsel::SIO_0 as _); }); Self { pin } @@ -618,7 +618,7 @@ impl<'d, T: Pin> Drop for Flex<'d, T> { fn drop(&mut self) { self.pin.pad_ctrl().write(|_| {}); self.pin.io().ctrl().write(|w| { - w.set_funcsel(pac::io::vals::Gpio0ctrlFuncsel::NULL.0); + w.set_funcsel(pac::io::vals::Gpio0ctrlFuncsel::NULL as _); }); } } diff --git a/embassy-rp/src/pio.rs b/embassy-rp/src/pio.rs index 1b36e0a5..30648e8e 100644 --- a/embassy-rp/src/pio.rs +++ b/embassy-rp/src/pio.rs @@ -834,7 +834,7 @@ impl<'d, PIO: Instance> Common<'d, PIO> { /// of [`Pio`] do not keep pin registrations alive.** pub fn make_pio_pin(&mut self, pin: impl Peripheral
+ 'd) -> Pin<'d, PIO> {
into_ref!(pin);
- pin.io().ctrl().write(|w| w.set_funcsel(PIO::FUNCSEL.0));
+ pin.io().ctrl().write(|w| w.set_funcsel(PIO::FUNCSEL as _));
// we can be relaxed about this because we're &mut here and nothing is cached
PIO::state().used_pins.fetch_or(1 << pin.pin_bank(), Ordering::Relaxed);
Pin {
@@ -998,7 +998,7 @@ fn on_pio_drop