diff options
| author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2022-10-10 06:49:34 +0000 |
|---|---|---|
| committer | GitHub <[email protected]> | 2022-10-10 06:49:34 +0000 |
| commit | 9d5b524bb083310c2e1753859ebc9fca080a4238 (patch) | |
| tree | 1d8c940845f9a945d57ad1386b367bba59c8d0dd | |
| parent | ef533e6df48d35b57fcb497e7bb5d6bafd6ca725 (diff) | |
| parent | aa8ba2115c4606b53dedce1af2da5de2fd59f563 (diff) | |
Merge #1005
1005: Expose Pin::pin() and Pin::bank() as public r=lulf a=mkj
Co-authored-by: Matt Johnston <[email protected]>
| -rw-r--r-- | embassy-rp/src/gpio.rs | 32 |
1 files changed, 22 insertions, 10 deletions
diff --git a/embassy-rp/src/gpio.rs b/embassy-rp/src/gpio.rs index a28bae96b..f79f592b4 100644 --- a/embassy-rp/src/gpio.rs +++ b/embassy-rp/src/gpio.rs | |||
| @@ -599,12 +599,12 @@ pub(crate) mod sealed { | |||
| 599 | fn pin_bank(&self) -> u8; | 599 | fn pin_bank(&self) -> u8; |
| 600 | 600 | ||
| 601 | #[inline] | 601 | #[inline] |
| 602 | fn pin(&self) -> u8 { | 602 | fn _pin(&self) -> u8 { |
| 603 | self.pin_bank() & 0x1f | 603 | self.pin_bank() & 0x1f |
| 604 | } | 604 | } |
| 605 | 605 | ||
| 606 | #[inline] | 606 | #[inline] |
| 607 | fn bank(&self) -> Bank { | 607 | fn _bank(&self) -> Bank { |
| 608 | if self.pin_bank() & 0x20 == 0 { | 608 | if self.pin_bank() & 0x20 == 0 { |
| 609 | Bank::Bank0 | 609 | Bank::Bank0 |
| 610 | } else { | 610 | } else { |
| @@ -613,35 +613,35 @@ pub(crate) mod sealed { | |||
| 613 | } | 613 | } |
| 614 | 614 | ||
| 615 | fn io(&self) -> pac::io::Gpio { | 615 | fn io(&self) -> pac::io::Gpio { |
| 616 | let block = match self.bank() { | 616 | let block = match self._bank() { |
| 617 | Bank::Bank0 => crate::pac::IO_BANK0, | 617 | Bank::Bank0 => crate::pac::IO_BANK0, |
| 618 | Bank::Qspi => crate::pac::IO_QSPI, | 618 | Bank::Qspi => crate::pac::IO_QSPI, |
| 619 | }; | 619 | }; |
| 620 | block.gpio(self.pin() as _) | 620 | block.gpio(self._pin() as _) |
| 621 | } | 621 | } |
| 622 | 622 | ||
| 623 | fn pad_ctrl(&self) -> Reg<pac::pads::regs::GpioCtrl, RW> { | 623 | fn pad_ctrl(&self) -> Reg<pac::pads::regs::GpioCtrl, RW> { |
| 624 | let block = match self.bank() { | 624 | let block = match self._bank() { |
| 625 | Bank::Bank0 => crate::pac::PADS_BANK0, | 625 | Bank::Bank0 => crate::pac::PADS_BANK0, |
| 626 | Bank::Qspi => crate::pac::PADS_QSPI, | 626 | Bank::Qspi => crate::pac::PADS_QSPI, |
| 627 | }; | 627 | }; |
| 628 | block.gpio(self.pin() as _) | 628 | block.gpio(self._pin() as _) |
| 629 | } | 629 | } |
| 630 | 630 | ||
| 631 | fn sio_out(&self) -> pac::sio::Gpio { | 631 | fn sio_out(&self) -> pac::sio::Gpio { |
| 632 | SIO.gpio_out(self.bank() as _) | 632 | SIO.gpio_out(self._bank() as _) |
| 633 | } | 633 | } |
| 634 | 634 | ||
| 635 | fn sio_oe(&self) -> pac::sio::Gpio { | 635 | fn sio_oe(&self) -> pac::sio::Gpio { |
| 636 | SIO.gpio_oe(self.bank() as _) | 636 | SIO.gpio_oe(self._bank() as _) |
| 637 | } | 637 | } |
| 638 | 638 | ||
| 639 | fn sio_in(&self) -> Reg<u32, RW> { | 639 | fn sio_in(&self) -> Reg<u32, RW> { |
| 640 | SIO.gpio_in(self.bank() as _) | 640 | SIO.gpio_in(self._bank() as _) |
| 641 | } | 641 | } |
| 642 | 642 | ||
| 643 | fn int_proc(&self) -> pac::io::Int { | 643 | fn int_proc(&self) -> pac::io::Int { |
| 644 | let io_block = match self.bank() { | 644 | let io_block = match self._bank() { |
| 645 | Bank::Bank0 => crate::pac::IO_BANK0, | 645 | Bank::Bank0 => crate::pac::IO_BANK0, |
| 646 | Bank::Qspi => crate::pac::IO_QSPI, | 646 | Bank::Qspi => crate::pac::IO_QSPI, |
| 647 | }; | 647 | }; |
| @@ -658,6 +658,18 @@ pub trait Pin: Peripheral<P = Self> + Into<AnyPin> + sealed::Pin + Sized + 'stat | |||
| 658 | pin_bank: self.pin_bank(), | 658 | pin_bank: self.pin_bank(), |
| 659 | } | 659 | } |
| 660 | } | 660 | } |
| 661 | |||
| 662 | /// Returns the pin number within a bank | ||
| 663 | #[inline] | ||
| 664 | fn pin(&self) -> u8 { | ||
| 665 | self._pin() | ||
| 666 | } | ||
| 667 | |||
| 668 | /// Returns the bank of this pin | ||
| 669 | #[inline] | ||
| 670 | fn bank(&self) -> Bank { | ||
| 671 | self._bank() | ||
| 672 | } | ||
| 661 | } | 673 | } |
| 662 | 674 | ||
| 663 | pub struct AnyPin { | 675 | pub struct AnyPin { |
