aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--embassy-rp/src/gpio.rs24
1 files changed, 18 insertions, 6 deletions
diff --git a/embassy-rp/src/gpio.rs b/embassy-rp/src/gpio.rs
index d0bb7e574..31397172c 100644
--- a/embassy-rp/src/gpio.rs
+++ b/embassy-rp/src/gpio.rs
@@ -846,12 +846,12 @@ pub(crate) trait SealedPin: Sized {
846 846
847 #[inline] 847 #[inline]
848 fn _pin(&self) -> u8 { 848 fn _pin(&self) -> u8 {
849 self.pin_bank() & 0x1f 849 self.pin_bank() & 0x7f
850 } 850 }
851 851
852 #[inline] 852 #[inline]
853 fn _bank(&self) -> Bank { 853 fn _bank(&self) -> Bank {
854 match self.pin_bank() >> 5 { 854 match self.pin_bank() >> 7 {
855 #[cfg(feature = "qspi-as-gpio")] 855 #[cfg(feature = "qspi-as-gpio")]
856 1 => Bank::Qspi, 856 1 => Bank::Qspi,
857 _ => Bank::Bank0, 857 _ => Bank::Bank0,
@@ -880,15 +880,27 @@ pub(crate) trait SealedPin: Sized {
880 } 880 }
881 881
882 fn sio_out(&self) -> pac::sio::Gpio { 882 fn sio_out(&self) -> pac::sio::Gpio {
883 SIO.gpio_out(self._bank() as _) 883 if cfg!(feature = "rp2040") {
884 SIO.gpio_out(self._bank() as _)
885 } else {
886 SIO.gpio_out((self._pin() / 32) as _)
887 }
884 } 888 }
885 889
886 fn sio_oe(&self) -> pac::sio::Gpio { 890 fn sio_oe(&self) -> pac::sio::Gpio {
887 SIO.gpio_oe(self._bank() as _) 891 if cfg!(feature = "rp2040") {
892 SIO.gpio_oe(self._bank() as _)
893 } else {
894 SIO.gpio_oe((self._pin() / 32) as _)
895 }
888 } 896 }
889 897
890 fn sio_in(&self) -> Reg<u32, RW> { 898 fn sio_in(&self) -> Reg<u32, RW> {
891 SIO.gpio_in(self._bank() as _) 899 if cfg!(feature = "rp2040") {
900 SIO.gpio_in(self._bank() as _)
901 } else {
902 SIO.gpio_in((self._pin() / 32) as _)
903 }
892 } 904 }
893 905
894 fn int_proc(&self) -> pac::io::Int { 906 fn int_proc(&self) -> pac::io::Int {
@@ -953,7 +965,7 @@ macro_rules! impl_pin {
953 impl SealedPin for peripherals::$name { 965 impl SealedPin for peripherals::$name {
954 #[inline] 966 #[inline]
955 fn pin_bank(&self) -> u8 { 967 fn pin_bank(&self) -> u8 {
956 ($bank as u8) * 32 + $pin_num 968 ($bank as u8) * 128 + $pin_num
957 } 969 }
958 } 970 }
959 971