From 1f68530bc87a45f7abbc01379b78d5d48f524efa Mon Sep 17 00:00:00 2001 From: Ulf Lilleengen Date: Wed, 29 Oct 2025 13:45:47 +0100 Subject: fix: add missing ppi and grtc peripheral --- embassy-nrf/src/chips/nrf54l15_app.rs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/embassy-nrf/src/chips/nrf54l15_app.rs b/embassy-nrf/src/chips/nrf54l15_app.rs index f58a74825..e063152d6 100644 --- a/embassy-nrf/src/chips/nrf54l15_app.rs +++ b/embassy-nrf/src/chips/nrf54l15_app.rs @@ -217,6 +217,8 @@ embassy_hal_internal::peripherals! { PPI00_CH6, PPI00_CH7, + PPI10_CH0, + PPI20_CH0, PPI20_CH1, PPI20_CH2, @@ -242,6 +244,8 @@ embassy_hal_internal::peripherals! { PPI00_GROUP0, PPI00_GROUP1, + PPI10_GROUP0, + PPI20_GROUP0, PPI20_GROUP1, PPI20_GROUP2, @@ -303,6 +307,9 @@ embassy_hal_internal::peripherals! { P2_09, P2_10, + // GRTC + GRTC, + // RTC RTC10, RTC30, @@ -494,8 +501,8 @@ impl_ppi_group!(PPI20_GROUP5, DPPIC20, 5); impl_ppi_group!(PPI30_GROUP0, DPPIC30, 0); impl_ppi_group!(PPI30_GROUP1, DPPIC30, 1); -// impl_ppi_channel!(PPI10_CH0, pac::DPPIC10, 0 => static); -// impl_ppi_group!(PPI10_GROUP0, pac::DPPIC10, 0); +impl_ppi_channel!(PPI10_CH0, DPPIC10, 0 => static); +impl_ppi_group!(PPI10_GROUP0, DPPIC10, 0); impl_timer!(TIMER00, TIMER00, TIMER00); impl_timer!(TIMER10, TIMER10, TIMER10); -- cgit From 85ee62fa7c0d00fc50677e94f5c02d4f52b601fc Mon Sep 17 00:00:00 2001 From: Ulf Lilleengen Date: Wed, 29 Oct 2025 13:46:33 +0100 Subject: fix: allow compiling without gpiote for nrf54 --- embassy-nrf/src/chips/nrf54l15_app.rs | 55 +++++++++++++++++++---------------- embassy-nrf/src/gpiote.rs | 2 -- 2 files changed, 30 insertions(+), 27 deletions(-) diff --git a/embassy-nrf/src/chips/nrf54l15_app.rs b/embassy-nrf/src/chips/nrf54l15_app.rs index e063152d6..d635bb418 100644 --- a/embassy-nrf/src/chips/nrf54l15_app.rs +++ b/embassy-nrf/src/chips/nrf54l15_app.rs @@ -386,13 +386,6 @@ impl_pin!(P0_03, 0, 3); impl_pin!(P0_04, 0, 4); impl_pin!(P0_05, 0, 5); impl_pin!(P0_06, 0, 6); -impl_gpiote_pin!(P0_00, GPIOTE30); -impl_gpiote_pin!(P0_01, GPIOTE30); -impl_gpiote_pin!(P0_02, GPIOTE30); -impl_gpiote_pin!(P0_03, GPIOTE30); -impl_gpiote_pin!(P0_04, GPIOTE30); -impl_gpiote_pin!(P0_05, GPIOTE30); -impl_gpiote_pin!(P0_06, GPIOTE30); impl_pin!(P1_00, 1, 0); impl_pin!(P1_01, 1, 1); @@ -412,24 +405,6 @@ impl_pin!(P1_14, 1, 14); impl_pin!(P1_15, 1, 15); impl_pin!(P1_16, 1, 16); -impl_gpiote_pin!(P1_00, GPIOTE20); -impl_gpiote_pin!(P1_01, GPIOTE20); -impl_gpiote_pin!(P1_02, GPIOTE20); -impl_gpiote_pin!(P1_03, GPIOTE20); -impl_gpiote_pin!(P1_04, GPIOTE20); -impl_gpiote_pin!(P1_05, GPIOTE20); -impl_gpiote_pin!(P1_06, GPIOTE20); -impl_gpiote_pin!(P1_07, GPIOTE20); -impl_gpiote_pin!(P1_08, GPIOTE20); -impl_gpiote_pin!(P1_09, GPIOTE20); -impl_gpiote_pin!(P1_10, GPIOTE20); -impl_gpiote_pin!(P1_11, GPIOTE20); -impl_gpiote_pin!(P1_12, GPIOTE20); -impl_gpiote_pin!(P1_13, GPIOTE20); -impl_gpiote_pin!(P1_14, GPIOTE20); -impl_gpiote_pin!(P1_15, GPIOTE20); -impl_gpiote_pin!(P1_16, GPIOTE20); - impl_pin!(P2_00, 2, 0); impl_pin!(P2_01, 2, 1); impl_pin!(P2_02, 2, 2); @@ -442,6 +417,36 @@ impl_pin!(P2_08, 2, 8); impl_pin!(P2_09, 2, 9); impl_pin!(P2_10, 2, 10); +cfg_if::cfg_if! { + if #[cfg(feature = "gpiote")] { + impl_gpiote_pin!(P0_00, GPIOTE30); + impl_gpiote_pin!(P0_01, GPIOTE30); + impl_gpiote_pin!(P0_02, GPIOTE30); + impl_gpiote_pin!(P0_03, GPIOTE30); + impl_gpiote_pin!(P0_04, GPIOTE30); + impl_gpiote_pin!(P0_05, GPIOTE30); + impl_gpiote_pin!(P0_06, GPIOTE30); + + impl_gpiote_pin!(P1_00, GPIOTE20); + impl_gpiote_pin!(P1_01, GPIOTE20); + impl_gpiote_pin!(P1_02, GPIOTE20); + impl_gpiote_pin!(P1_03, GPIOTE20); + impl_gpiote_pin!(P1_04, GPIOTE20); + impl_gpiote_pin!(P1_05, GPIOTE20); + impl_gpiote_pin!(P1_06, GPIOTE20); + impl_gpiote_pin!(P1_07, GPIOTE20); + impl_gpiote_pin!(P1_08, GPIOTE20); + impl_gpiote_pin!(P1_09, GPIOTE20); + impl_gpiote_pin!(P1_10, GPIOTE20); + impl_gpiote_pin!(P1_11, GPIOTE20); + impl_gpiote_pin!(P1_12, GPIOTE20); + impl_gpiote_pin!(P1_13, GPIOTE20); + impl_gpiote_pin!(P1_14, GPIOTE20); + impl_gpiote_pin!(P1_15, GPIOTE20); + impl_gpiote_pin!(P1_16, GPIOTE20); + } +} + impl_rtc!(RTC10, RTC10, RTC10); impl_rtc!(RTC30, RTC30, RTC30); diff --git a/embassy-nrf/src/gpiote.rs b/embassy-nrf/src/gpiote.rs index 060950132..b1e7359f6 100644 --- a/embassy-nrf/src/gpiote.rs +++ b/embassy-nrf/src/gpiote.rs @@ -726,9 +726,7 @@ cfg_if::cfg_if! { macro_rules! impl_gpiote_pin { ($type:ident, $inst:ident) => { - #[cfg(feature = "gpiote")] impl crate::gpiote::SealedGpiotePin for peripherals::$type {} - #[cfg(feature = "gpiote")] impl crate::gpiote::GpiotePin for peripherals::$type { type Instance = peripherals::$inst; } -- cgit From 776bf66d8754606cb651a63f7eecda153ca93e97 Mon Sep 17 00:00:00 2001 From: Ulf Lilleengen Date: Wed, 29 Oct 2025 14:53:00 +0100 Subject: fix: ppi bridge channel definitions --- embassy-nrf/src/chips/nrf54l15_app.rs | 99 ++++++++++++++++++++++++++++++----- 1 file changed, 87 insertions(+), 12 deletions(-) diff --git a/embassy-nrf/src/chips/nrf54l15_app.rs b/embassy-nrf/src/chips/nrf54l15_app.rs index d635bb418..f5c9a8156 100644 --- a/embassy-nrf/src/chips/nrf54l15_app.rs +++ b/embassy-nrf/src/chips/nrf54l15_app.rs @@ -256,6 +256,87 @@ embassy_hal_internal::peripherals! { PPI30_GROUP0, PPI30_GROUP1, + // PPI BRIDGE channels + PPIB00_CH0, + PPIB00_CH1, + PPIB00_CH2, + PPIB00_CH3, + PPIB00_CH4, + PPIB00_CH5, + PPIB00_CH6, + PPIB00_CH7, + + PPIB01_CH0, + PPIB01_CH1, + PPIB01_CH2, + PPIB01_CH3, + PPIB01_CH4, + PPIB01_CH5, + PPIB01_CH6, + PPIB01_CH7, + + PPIB10_CH0, + PPIB10_CH1, + PPIB10_CH2, + PPIB10_CH3, + PPIB10_CH4, + PPIB10_CH5, + PPIB10_CH6, + PPIB10_CH7, + + PPIB11_CH0, + PPIB11_CH1, + PPIB11_CH2, + PPIB11_CH3, + PPIB11_CH4, + PPIB11_CH5, + PPIB11_CH6, + PPIB11_CH7, + PPIB11_CH8, + PPIB11_CH9, + PPIB11_CH10, + PPIB11_CH11, + PPIB11_CH12, + PPIB11_CH13, + PPIB11_CH14, + PPIB11_CH15, + + PPIB20_CH0, + PPIB20_CH1, + PPIB20_CH2, + PPIB20_CH3, + PPIB20_CH4, + PPIB20_CH5, + PPIB20_CH6, + PPIB20_CH7, + + PPIB21_CH0, + PPIB21_CH1, + PPIB21_CH2, + PPIB21_CH3, + PPIB21_CH4, + PPIB21_CH5, + PPIB21_CH6, + PPIB21_CH7, + PPIB21_CH8, + PPIB21_CH9, + PPIB21_CH10, + PPIB21_CH11, + PPIB21_CH12, + PPIB21_CH13, + PPIB21_CH14, + PPIB21_CH15, + + PPIB22_CH0, + PPIB22_CH1, + PPIB22_CH2, + PPIB22_CH3, + + PPIB30_CH0, + PPIB30_CH1, + PPIB30_CH2, + PPIB30_CH3, + // Timers TIMER00, TIMER10, @@ -332,15 +413,6 @@ embassy_hal_internal::peripherals! { // RADIO RADIO, - // PPI BRIDGE - PPIB00, - PPIB01, - PPIB10, - PPIB11, - PPIB20, - PPIB21, - PPIB22, - PPIB30, // GPIOTE instances GPIOTE20, @@ -466,6 +538,9 @@ impl_ppi_channel!(PPI00_CH5, DPPIC00, 5 => configurable); impl_ppi_channel!(PPI00_CH6, DPPIC00, 6 => configurable); impl_ppi_channel!(PPI00_CH7, DPPIC00, 7 => configurable); +// DPPI10 channels +impl_ppi_channel!(PPI10_CH0, DPPIC10, 0 => static); + // DPPI20 channels impl_ppi_channel!(PPI20_CH0, DPPIC20, 0 => configurable); impl_ppi_channel!(PPI20_CH1, DPPIC20, 1 => configurable); @@ -494,6 +569,9 @@ impl_ppi_channel!(PPI30_CH3, DPPIC30, 3 => configurable); impl_ppi_group!(PPI00_GROUP0, DPPIC00, 0); impl_ppi_group!(PPI00_GROUP1, DPPIC00, 1); +// DPPI10 groups +impl_ppi_group!(PPI10_GROUP0, DPPIC10, 0); + // DPPI20 groups impl_ppi_group!(PPI20_GROUP0, DPPIC20, 0); impl_ppi_group!(PPI20_GROUP1, DPPIC20, 1); @@ -506,9 +584,6 @@ impl_ppi_group!(PPI20_GROUP5, DPPIC20, 5); impl_ppi_group!(PPI30_GROUP0, DPPIC30, 0); impl_ppi_group!(PPI30_GROUP1, DPPIC30, 1); -impl_ppi_channel!(PPI10_CH0, DPPIC10, 0 => static); -impl_ppi_group!(PPI10_GROUP0, DPPIC10, 0); - impl_timer!(TIMER00, TIMER00, TIMER00); impl_timer!(TIMER10, TIMER10, TIMER10); impl_timer!(TIMER20, TIMER20, TIMER20); -- cgit