From fe54faa02dc8df557a79a9988b867655ae712619 Mon Sep 17 00:00:00 2001 From: hailin wu Date: Mon, 16 Jun 2025 12:41:36 -0700 Subject: [PATCH 1/2] add pintrl common files --- src/lib.rs | 7 +- src/pinctrl.rs | 399 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 403 insertions(+), 3 deletions(-) create mode 100644 src/pinctrl.rs diff --git a/src/lib.rs b/src/lib.rs index a09f20e..7bc03d7 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,6 +1,7 @@ #![no_std] -pub mod uart; -pub mod watchdog; pub mod hash; -pub mod tests; +pub mod pinctrl; pub mod syscon; +pub mod tests; +pub mod uart; +pub mod watchdog; diff --git a/src/pinctrl.rs b/src/pinctrl.rs new file mode 100644 index 0000000..a0c085d --- /dev/null +++ b/src/pinctrl.rs @@ -0,0 +1,399 @@ +pub struct Pinctrl; + +pub struct PinctrlPin { + pub offset: u32, + pub bit: u32, + pub clear: bool, +} + +// Pin to be cleared or set +pub const PIN_SCL0: PinctrlPin = PinctrlPin { + offset: 0x414, + bit: 28, + clear: false, +}; +pub const PIN_SDA0: PinctrlPin = PinctrlPin { + offset: 0x414, + bit: 29, + clear: false, +}; +pub const PIN_SCL1: PinctrlPin = PinctrlPin { + offset: 0x414, + bit: 30, + clear: false, +}; +pub const PIN_SDA1: PinctrlPin = PinctrlPin { + offset: 0x414, + bit: 31, + clear: false, +}; + +pub const PIN_SCL2: PinctrlPin = PinctrlPin { + offset: 0x418, + bit: 0, + clear: false, +}; +pub const PIN_SDA2: PinctrlPin = PinctrlPin { + offset: 0x418, + bit: 1, + clear: false, +}; +pub const PIN_SCL3: PinctrlPin = PinctrlPin { + offset: 0x418, + bit: 2, + clear: false, +}; +pub const PIN_SDA3: PinctrlPin = PinctrlPin { + offset: 0x418, + bit: 3, + clear: false, +}; +pub const PIN_SCL4: PinctrlPin = PinctrlPin { + offset: 0x418, + bit: 4, + clear: false, +}; +pub const PIN_SDA4: PinctrlPin = PinctrlPin { + offset: 0x418, + bit: 5, + clear: false, +}; +pub const PIN_SCL5: PinctrlPin = PinctrlPin { + offset: 0x418, + bit: 6, + clear: false, +}; +pub const PIN_SDA5: PinctrlPin = PinctrlPin { + offset: 0x418, + bit: 7, + clear: false, +}; +pub const PIN_SCL6: PinctrlPin = PinctrlPin { + offset: 0x418, + bit: 8, + clear: false, +}; +pub const PIN_SDA6: PinctrlPin = PinctrlPin { + offset: 0x418, + bit: 9, + clear: false, +}; +pub const PIN_SCL7: PinctrlPin = PinctrlPin { + offset: 0x418, + bit: 10, + clear: false, +}; +pub const PIN_SDA7: PinctrlPin = PinctrlPin { + offset: 0x418, + bit: 11, + clear: false, +}; +pub const PIN_SCL8: PinctrlPin = PinctrlPin { + offset: 0x418, + bit: 12, + clear: false, +}; +pub const PIN_SDA8: PinctrlPin = PinctrlPin { + offset: 0x418, + bit: 13, + clear: false, +}; +pub const PIN_SCL9: PinctrlPin = PinctrlPin { + offset: 0x418, + bit: 14, + clear: false, +}; +pub const PIN_SDA9: PinctrlPin = PinctrlPin { + offset: 0x418, + bit: 15, + clear: false, +}; +pub const CLR_PIN_I3C_SCL0: PinctrlPin = PinctrlPin { + offset: 0x418, + bit: 16, + clear: true, +}; +pub const CLR_PIN_I3C_SDA0: PinctrlPin = PinctrlPin { + offset: 0x418, + bit: 17, + clear: true, +}; +pub const CLR_PIN_I3C_SCL1: PinctrlPin = PinctrlPin { + offset: 0x418, + bit: 18, + clear: true, +}; +pub const CLR_PIN_I3C_SDA1: PinctrlPin = PinctrlPin { + offset: 0x418, + bit: 19, + clear: true, +}; +pub const CLR_PIN_I3C_SCL2: PinctrlPin = PinctrlPin { + offset: 0x418, + bit: 20, + clear: true, +}; +pub const CLR_PIN_I3C_SDA2: PinctrlPin = PinctrlPin { + offset: 0x418, + bit: 21, + clear: true, +}; +pub const CLR_PIN_I3C_SCL3: PinctrlPin = PinctrlPin { + offset: 0x418, + bit: 22, + clear: true, +}; +pub const CLR_PIN_I3C_SDA3: PinctrlPin = PinctrlPin { + offset: 0x418, + bit: 23, + clear: true, +}; + +pub const PIN_SPI2CS0: PinctrlPin = PinctrlPin { + offset: 0x41C, + bit: 30, + clear: false, +}; +pub const PIN_SPI2CS1: PinctrlPin = PinctrlPin { + offset: 0x41C, + bit: 31, + clear: false, +}; + +pub const PIN_SPI2CK: PinctrlPin = PinctrlPin { + offset: 0x430, + bit: 0, + clear: false, +}; +pub const PIN_SPI2DQ0: PinctrlPin = PinctrlPin { + offset: 0x430, + bit: 1, + clear: false, +}; +pub const PIN_SPI2DQ1: PinctrlPin = PinctrlPin { + offset: 0x430, + bit: 2, + clear: false, +}; +pub const PIN_SPI2DQ2: PinctrlPin = PinctrlPin { + offset: 0x430, + bit: 3, + clear: false, +}; +pub const PIN_SPI2DQ3: PinctrlPin = PinctrlPin { + offset: 0x430, + bit: 4, + clear: false, +}; +pub const PIN_FWSPIDQ2: PinctrlPin = PinctrlPin { + offset: 0x430, + bit: 10, + clear: false, +}; +pub const PIN_FWSPIDQ3: PinctrlPin = PinctrlPin { + offset: 0x430, + bit: 11, + clear: false, +}; +pub const PIN_SPI1DQ2: PinctrlPin = PinctrlPin { + offset: 0x430, + bit: 17, + clear: false, +}; +pub const PIN_SPI1DQ3: PinctrlPin = PinctrlPin { + offset: 0x430, + bit: 18, + clear: false, +}; + +pub const PIN_SCL10: PinctrlPin = PinctrlPin { + offset: 0x4b8, + bit: 16, + clear: false, +}; +pub const PIN_SDA10: PinctrlPin = PinctrlPin { + offset: 0x4b8, + bit: 17, + clear: false, +}; +pub const PIN_SCL11: PinctrlPin = PinctrlPin { + offset: 0x4b8, + bit: 18, + clear: false, +}; +pub const PIN_SDA11: PinctrlPin = PinctrlPin { + offset: 0x4b8, + bit: 19, + clear: false, +}; +pub const PIN_SCL12: PinctrlPin = PinctrlPin { + offset: 0x4b8, + bit: 20, + clear: false, +}; +pub const PIN_SDA12: PinctrlPin = PinctrlPin { + offset: 0x4b8, + bit: 21, + clear: false, +}; +pub const PIN_SCL13: PinctrlPin = PinctrlPin { + offset: 0x4b8, + bit: 22, + clear: false, +}; +pub const PIN_SDA13: PinctrlPin = PinctrlPin { + offset: 0x4b8, + bit: 23, + clear: false, +}; + +pub const PIN_SPIM1_MUX1: PinctrlPin = PinctrlPin { + offset: 0x410, + bit: 12, + clear: true, +}; + +pub const PIN_SPIM1_MUX13: PinctrlPin = PinctrlPin { + offset: 0x4B0, + bit: 12, + clear: true, +}; +pub const PIN_SPIM1_MUX31: PinctrlPin = PinctrlPin { + offset: 0x690, + bit: 12, + clear: false, +}; + +pub const PIN_SPIM2_MUX1: PinctrlPin = PinctrlPin { + offset: 0x410, + bit: 26, + clear: true, +}; + +pub const PIN_SPIM2_MUX13: PinctrlPin = PinctrlPin { + offset: 0x4B0, + bit: 26, + clear: true, +}; + +pub const PIN_SPIM2_MUX31: PinctrlPin = PinctrlPin { + offset: 0x690, + bit: 26, + clear: false, +}; + +pub const PIN_SPIM3_MUX2: PinctrlPin = PinctrlPin { + offset: 0x414, + bit: 8, + clear: true, +}; + +pub const PIN_SPIM3_MUX14: PinctrlPin = PinctrlPin { + offset: 0x4B4, + bit: 8, + clear: true, +}; + +pub const PIN_SPIM3_MUX32: PinctrlPin = PinctrlPin { + offset: 0x694, + bit: 8, + clear: false, +}; + +pub const PIN_SPIM4_MUX2: PinctrlPin = PinctrlPin { + offset: 0x414, + bit: 22, + clear: true, +}; + +pub const PIN_SPIM4_MUX14: PinctrlPin = PinctrlPin { + offset: 0x4B4, + bit: 22, + clear: true, +}; + +pub const PIN_SPIM4_MUX32: PinctrlPin = PinctrlPin { + offset: 0x694, + bit: 22, + clear: false, +}; + +//Pin Group Aliases +pub const PINCTRL_FMC_QUAD: &[PinctrlPin] = &[PIN_FWSPIDQ2, PIN_FWSPIDQ3]; +pub const PINCTRL_SPI1_QUAD: &[PinctrlPin] = &[PIN_SPI1DQ2, PIN_SPI1DQ3]; +pub const PINCTRL_SPI2_DEFAULT: &[PinctrlPin] = &[ + PIN_SPI2CS0, + PIN_SPI2CK, + PIN_SPI2DQ0, + PIN_SPI2DQ1, + PIN_SPI2CS1, +]; +pub const PINCTRL_SPI2_QUAD: &[PinctrlPin] = &[ + PIN_SPI2CS0, + PIN_SPI2CK, + PIN_SPI2DQ0, + PIN_SPI2DQ1, + PIN_SPI2CS1, + PIN_SPI2DQ2, + PIN_SPI2DQ3, +]; +pub const PINCTRL_SPIM1_MUXSEL: &[PinctrlPin] = &[PIN_SPIM1_MUX1, PIN_SPIM1_MUX13, PIN_SPIM1_MUX31]; +pub const PINCTRL_SPIM2_MUXSEL: &[PinctrlPin] = &[PIN_SPIM2_MUX1, PIN_SPIM2_MUX13, PIN_SPIM2_MUX31]; +pub const PINCTRL_SPIM3_MUXSEL: &[PinctrlPin] = &[PIN_SPIM3_MUX2, PIN_SPIM3_MUX14, PIN_SPIM3_MUX32]; +pub const PINCTRL_SPIM4_MUXSEL: &[PinctrlPin] = &[PIN_SPIM4_MUX2, PIN_SPIM4_MUX14, PIN_SPIM4_MUX32]; + +pub const PINCTRL_I2C0: &[PinctrlPin] = &[PIN_SCL0, PIN_SDA0]; +pub const PINCTRL_I2C1: &[PinctrlPin] = &[PIN_SCL1, PIN_SDA1]; +pub const PINCTRL_I2C2: &[PinctrlPin] = &[PIN_SCL2, PIN_SDA2]; +pub const PINCTRL_I2C3: &[PinctrlPin] = &[PIN_SCL3, PIN_SDA3]; +pub const PINCTRL_I2C4: &[PinctrlPin] = &[PIN_SCL4, PIN_SDA4]; +pub const PINCTRL_I2C5: &[PinctrlPin] = &[PIN_SCL5, PIN_SDA5]; +pub const PINCTRL_I2C6: &[PinctrlPin] = &[PIN_SCL6, PIN_SDA6]; +pub const PINCTRL_I2C7: &[PinctrlPin] = &[PIN_SCL7, PIN_SDA7]; +pub const PINCTRL_I2C8: &[PinctrlPin] = &[PIN_SCL8, PIN_SDA8]; +pub const PINCTRL_I2C9: &[PinctrlPin] = &[PIN_SCL9, PIN_SDA9]; +pub const PINCTRL_I2C10: &[PinctrlPin] = + &[PIN_SCL10, PIN_SDA10, CLR_PIN_I3C_SCL0, CLR_PIN_I3C_SDA0]; +pub const PINCTRL_I2C11: &[PinctrlPin] = + &[PIN_SCL11, PIN_SDA11, CLR_PIN_I3C_SCL1, CLR_PIN_I3C_SDA1]; +pub const PINCTRL_I2C12: &[PinctrlPin] = + &[PIN_SCL12, PIN_SDA12, CLR_PIN_I3C_SCL2, CLR_PIN_I3C_SDA2]; +pub const PINCTRL_I2C13: &[PinctrlPin] = + &[PIN_SCL13, PIN_SDA13, CLR_PIN_I3C_SCL3, CLR_PIN_I3C_SDA3]; + +macro_rules! modify_reg { + ($reg:expr, $bit:expr, $clear:expr) => {{ + $reg.modify(|r, w| unsafe { + let current = r.bits(); + let new_val = if $clear { + current & !(1 << $bit) + } else { + current | (1 << $bit) + }; + w.bits(new_val) + }); + }}; +} + +impl Pinctrl { + /// Write pinmux configuration to SCU register + pub fn apply_pinctrl_group(pins: &[PinctrlPin]) { + let scu = unsafe { &*ast1060_pac::Scu::ptr() }; + for pin in pins { + match pin.offset { + 0x410 => modify_reg!(scu.scu410(), pin.bit, pin.clear), + 0x414 => modify_reg!(scu.scu414(), pin.bit, pin.clear), + 0x418 => modify_reg!(scu.scu418(), pin.bit, pin.clear), + 0x41C => modify_reg!(scu.scu41c(), pin.bit, pin.clear), + 0x430 => modify_reg!(scu.scu430(), pin.bit, pin.clear), + 0x434 => modify_reg!(scu.scu434(), pin.bit, pin.clear), + 0x4b0 => modify_reg!(scu.scu4b0(), pin.bit, pin.clear), + 0x4b4 => modify_reg!(scu.scu4b4(), pin.bit, pin.clear), + 0x4b8 => modify_reg!(scu.scu4b8(), pin.bit, pin.clear), + 0x690 => modify_reg!(scu.scu690(), pin.bit, pin.clear), + 0x694 => modify_reg!(scu.scu694(), pin.bit, pin.clear), + _ => {} + } //match + } //for + } +} From b4d71b69a502870d15da382d48dbc69d3bf54194 Mon Sep 17 00:00:00 2001 From: hailin wu Date: Mon, 14 Jul 2025 11:05:46 -0700 Subject: [PATCH 2/2] refactor pinctrl and add more pinctrl devices --- src/lib.rs | 2 +- src/pinctrl.rs | 1183 ++++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 1104 insertions(+), 81 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 9863c4b..ba29fc4 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -5,9 +5,9 @@ pub mod ecdsa; pub mod hace_controller; pub mod hash; pub mod hmac; +pub mod pinctrl; pub mod rsa; pub mod syscon; pub mod tests; -pub mod pinctrl; pub mod uart; pub mod watchdog; diff --git a/src/pinctrl.rs b/src/pinctrl.rs index a0c085d..5d23a3c 100644 --- a/src/pinctrl.rs +++ b/src/pinctrl.rs @@ -1,3 +1,5 @@ +// Licensed under the Apache-2.0 license + pub struct Pinctrl; pub struct PinctrlPin { @@ -247,128 +249,1149 @@ pub const PIN_SDA13: PinctrlPin = PinctrlPin { clear: false, }; -pub const PIN_SPIM1_MUX1: PinctrlPin = PinctrlPin { +pub const PIN_SPIM0_CSIN_CTRL1: PinctrlPin = PinctrlPin { + offset: 0x410, + bit: 0, + clear: true, +}; +pub const PIN_SPIM0_CSIN_CTRL13: PinctrlPin = PinctrlPin { + offset: 0x4B0, + bit: 0, + clear: true, +}; +pub const PIN_SPIM0_CSIN_CTRL31: PinctrlPin = PinctrlPin { + offset: 0x690, + bit: 0, + clear: false, +}; +pub const PIN_SPIM0_CLKIN_CTRL1: PinctrlPin = PinctrlPin { + offset: 0x410, + bit: 1, + clear: true, +}; +pub const PIN_SPIM0_CLKIN_CTRL13: PinctrlPin = PinctrlPin { + offset: 0x4B0, + bit: 1, + clear: true, +}; +pub const PIN_SPIM0_CLKIN_CTRL31: PinctrlPin = PinctrlPin { + offset: 0x690, + bit: 1, + clear: false, +}; +pub const PIN_SPIM0_MOSIIN_CTRL1: PinctrlPin = PinctrlPin { + offset: 0x410, + bit: 2, + clear: true, +}; +pub const PIN_SPIM0_MOSIIN_CTRL13: PinctrlPin = PinctrlPin { + offset: 0x4B0, + bit: 2, + clear: true, +}; +pub const PIN_SPIM0_MOSIIN_CTRL31: PinctrlPin = PinctrlPin { + offset: 0x690, + bit: 2, + clear: false, +}; +pub const PIN_SPIM0_MISOIN_CTRL1: PinctrlPin = PinctrlPin { + offset: 0x410, + bit: 3, + clear: true, +}; +pub const PIN_SPIM0_MISOIN_CTRL13: PinctrlPin = PinctrlPin { + offset: 0x4B0, + bit: 3, + clear: true, +}; +pub const PIN_SPIM0_MISOIN_CTRL31: PinctrlPin = PinctrlPin { + offset: 0x690, + bit: 3, + clear: false, +}; +pub const PIN_SPIM0_IO2IN_CTRL1: PinctrlPin = PinctrlPin { + offset: 0x410, + bit: 4, + clear: true, +}; +pub const PIN_SPIM0_IO2IN_CTRL13: PinctrlPin = PinctrlPin { + offset: 0x4B0, + bit: 4, + clear: true, +}; +pub const PIN_SPIM0_IO2IN_CTRL31: PinctrlPin = PinctrlPin { + offset: 0x690, + bit: 4, + clear: false, +}; +pub const PIN_SPIM0_IO3IN_CTRL1: PinctrlPin = PinctrlPin { + offset: 0x410, + bit: 5, + clear: true, +}; +pub const PIN_SPIM0_IO3IN_CTRL13: PinctrlPin = PinctrlPin { + offset: 0x4B0, + bit: 5, + clear: true, +}; +pub const PIN_SPIM0_IO3IN_CTRL31: PinctrlPin = PinctrlPin { + offset: 0x690, + bit: 5, + clear: false, +}; +pub const PIN_SPIM0_CSNOUT_CTRL1: PinctrlPin = PinctrlPin { + offset: 0x410, + bit: 6, + clear: true, +}; +pub const PIN_SPIM0_CSNOUT_CTRL13: PinctrlPin = PinctrlPin { + offset: 0x4B0, + bit: 6, + clear: true, +}; +pub const PIN_SPIM0_CSNOUT_CTRL31: PinctrlPin = PinctrlPin { + offset: 0x690, + bit: 6, + clear: false, +}; +pub const PIN_SPIM0_CLKOUT_CTRL1: PinctrlPin = PinctrlPin { + offset: 0x410, + bit: 7, + clear: true, +}; +pub const PIN_SPIM0_CLKOUT_CTRL13: PinctrlPin = PinctrlPin { + offset: 0x4B0, + bit: 7, + clear: true, +}; +pub const PIN_SPIM0_CLKOUT_CTRL31: PinctrlPin = PinctrlPin { + offset: 0x690, + bit: 7, + clear: false, +}; +pub const PIN_SPIM0_MOSIOUT_CTRL1: PinctrlPin = PinctrlPin { + offset: 0x410, + bit: 8, + clear: true, +}; +pub const PIN_SPIM0_MOSIOUT_CTRL13: PinctrlPin = PinctrlPin { + offset: 0x4B0, + bit: 8, + clear: true, +}; +pub const PIN_SPIM0_MOSIOUT_CTRL31: PinctrlPin = PinctrlPin { + offset: 0x690, + bit: 8, + clear: false, +}; +pub const PIN_SPIM0_MISOOUT_CTRL1: PinctrlPin = PinctrlPin { + offset: 0x410, + bit: 9, + clear: true, +}; +pub const PIN_SPIM0_MISOOUT_CTRL13: PinctrlPin = PinctrlPin { + offset: 0x4B0, + bit: 9, + clear: true, +}; +pub const PIN_SPIM0_MISOOUT_CTRL31: PinctrlPin = PinctrlPin { + offset: 0x690, + bit: 9, + clear: false, +}; +pub const PIN_SPIM0_IO2OUT_CTRL1: PinctrlPin = PinctrlPin { + offset: 0x410, + bit: 10, + clear: true, +}; +pub const PIN_SPIM0_IO2OUT_CTRL13: PinctrlPin = PinctrlPin { + offset: 0x4B0, + bit: 10, + clear: true, +}; +pub const PIN_SPIM0_IO2OUT_CTRL31: PinctrlPin = PinctrlPin { + offset: 0x690, + bit: 10, + clear: false, +}; +pub const PIN_SPIM0_IO3OUT_CTRL1: PinctrlPin = PinctrlPin { + offset: 0x410, + bit: 11, + clear: true, +}; +pub const PIN_SPIM0_IO3OUT_CTRL13: PinctrlPin = PinctrlPin { + offset: 0x4B0, + bit: 11, + clear: true, +}; +pub const PIN_SPIM0_IO3OUT_CTRL31: PinctrlPin = PinctrlPin { + offset: 0x690, + bit: 11, + clear: false, +}; +pub const PIN_SPIM0_MUX_CTRL1: PinctrlPin = PinctrlPin { offset: 0x410, bit: 12, clear: true, }; -pub const PIN_SPIM1_MUX13: PinctrlPin = PinctrlPin { +pub const PIN_SPIM0_MUX_CTRL13: PinctrlPin = PinctrlPin { offset: 0x4B0, bit: 12, clear: true, }; -pub const PIN_SPIM1_MUX31: PinctrlPin = PinctrlPin { + +pub const PIN_SPIM0_MUX_CTRL31: PinctrlPin = PinctrlPin { offset: 0x690, bit: 12, clear: false, }; - -pub const PIN_SPIM2_MUX1: PinctrlPin = PinctrlPin { +pub const PIN_SPIM0_RSTOUT_CTRL1: PinctrlPin = PinctrlPin { offset: 0x410, - bit: 26, + bit: 13, clear: true, }; -pub const PIN_SPIM2_MUX13: PinctrlPin = PinctrlPin { +pub const PIN_SPIM0_RSTOUT_CTRL13: PinctrlPin = PinctrlPin { offset: 0x4B0, - bit: 26, + bit: 13, clear: true, }; -pub const PIN_SPIM2_MUX31: PinctrlPin = PinctrlPin { +pub const PIN_SPIM0_RSTOUT_CTRL31: PinctrlPin = PinctrlPin { offset: 0x690, - bit: 26, + bit: 13, clear: false, }; - -pub const PIN_SPIM3_MUX2: PinctrlPin = PinctrlPin { +pub const PIN_SPIM0_RSTIN_CTRL2: PinctrlPin = PinctrlPin { offset: 0x414, - bit: 8, + bit: 24, clear: true, }; -pub const PIN_SPIM3_MUX14: PinctrlPin = PinctrlPin { +pub const PIN_SPIM0_RSTIN_CTRL14: PinctrlPin = PinctrlPin { offset: 0x4B4, - bit: 8, + bit: 24, clear: true, }; -pub const PIN_SPIM3_MUX32: PinctrlPin = PinctrlPin { - offset: 0x694, - bit: 8, +pub const PIN_SPIM0_RSTIN_CTRL32: PinctrlPin = PinctrlPin { + offset: 0x690, + bit: 24, clear: false, }; - -pub const PIN_SPIM4_MUX2: PinctrlPin = PinctrlPin { - offset: 0x414, - bit: 22, +pub const PIN_SPIM1_CSIN_CTRL1: PinctrlPin = PinctrlPin { + offset: 0x410, + bit: 14, clear: true, }; - -pub const PIN_SPIM4_MUX14: PinctrlPin = PinctrlPin { - offset: 0x4B4, - bit: 22, +pub const PIN_SPIM1_CSIN_CTRL13: PinctrlPin = PinctrlPin { + offset: 0x4B0, + bit: 14, clear: true, }; - -pub const PIN_SPIM4_MUX32: PinctrlPin = PinctrlPin { - offset: 0x694, - bit: 22, +pub const PIN_SPIM1_CSIN_CTRL31: PinctrlPin = PinctrlPin { + offset: 0x690, + bit: 14, clear: false, }; - -//Pin Group Aliases -pub const PINCTRL_FMC_QUAD: &[PinctrlPin] = &[PIN_FWSPIDQ2, PIN_FWSPIDQ3]; -pub const PINCTRL_SPI1_QUAD: &[PinctrlPin] = &[PIN_SPI1DQ2, PIN_SPI1DQ3]; -pub const PINCTRL_SPI2_DEFAULT: &[PinctrlPin] = &[ - PIN_SPI2CS0, - PIN_SPI2CK, - PIN_SPI2DQ0, - PIN_SPI2DQ1, - PIN_SPI2CS1, -]; -pub const PINCTRL_SPI2_QUAD: &[PinctrlPin] = &[ - PIN_SPI2CS0, - PIN_SPI2CK, - PIN_SPI2DQ0, - PIN_SPI2DQ1, - PIN_SPI2CS1, - PIN_SPI2DQ2, - PIN_SPI2DQ3, -]; -pub const PINCTRL_SPIM1_MUXSEL: &[PinctrlPin] = &[PIN_SPIM1_MUX1, PIN_SPIM1_MUX13, PIN_SPIM1_MUX31]; -pub const PINCTRL_SPIM2_MUXSEL: &[PinctrlPin] = &[PIN_SPIM2_MUX1, PIN_SPIM2_MUX13, PIN_SPIM2_MUX31]; -pub const PINCTRL_SPIM3_MUXSEL: &[PinctrlPin] = &[PIN_SPIM3_MUX2, PIN_SPIM3_MUX14, PIN_SPIM3_MUX32]; -pub const PINCTRL_SPIM4_MUXSEL: &[PinctrlPin] = &[PIN_SPIM4_MUX2, PIN_SPIM4_MUX14, PIN_SPIM4_MUX32]; - -pub const PINCTRL_I2C0: &[PinctrlPin] = &[PIN_SCL0, PIN_SDA0]; -pub const PINCTRL_I2C1: &[PinctrlPin] = &[PIN_SCL1, PIN_SDA1]; -pub const PINCTRL_I2C2: &[PinctrlPin] = &[PIN_SCL2, PIN_SDA2]; -pub const PINCTRL_I2C3: &[PinctrlPin] = &[PIN_SCL3, PIN_SDA3]; -pub const PINCTRL_I2C4: &[PinctrlPin] = &[PIN_SCL4, PIN_SDA4]; -pub const PINCTRL_I2C5: &[PinctrlPin] = &[PIN_SCL5, PIN_SDA5]; -pub const PINCTRL_I2C6: &[PinctrlPin] = &[PIN_SCL6, PIN_SDA6]; -pub const PINCTRL_I2C7: &[PinctrlPin] = &[PIN_SCL7, PIN_SDA7]; -pub const PINCTRL_I2C8: &[PinctrlPin] = &[PIN_SCL8, PIN_SDA8]; -pub const PINCTRL_I2C9: &[PinctrlPin] = &[PIN_SCL9, PIN_SDA9]; -pub const PINCTRL_I2C10: &[PinctrlPin] = - &[PIN_SCL10, PIN_SDA10, CLR_PIN_I3C_SCL0, CLR_PIN_I3C_SDA0]; -pub const PINCTRL_I2C11: &[PinctrlPin] = - &[PIN_SCL11, PIN_SDA11, CLR_PIN_I3C_SCL1, CLR_PIN_I3C_SDA1]; -pub const PINCTRL_I2C12: &[PinctrlPin] = - &[PIN_SCL12, PIN_SDA12, CLR_PIN_I3C_SCL2, CLR_PIN_I3C_SDA2]; -pub const PINCTRL_I2C13: &[PinctrlPin] = - &[PIN_SCL13, PIN_SDA13, CLR_PIN_I3C_SCL3, CLR_PIN_I3C_SDA3]; - -macro_rules! modify_reg { - ($reg:expr, $bit:expr, $clear:expr) => {{ - $reg.modify(|r, w| unsafe { +pub const PIN_SPIM1_CLKIN_CTRL1: PinctrlPin = PinctrlPin { + offset: 0x410, + bit: 15, + clear: true, +}; +pub const PIN_SPIM1_CLKIN_CTRL13: PinctrlPin = PinctrlPin { + offset: 0x4B0, + bit: 15, + clear: true, +}; +pub const PIN_SPIM1_CLKIN_CTRL31: PinctrlPin = PinctrlPin { + offset: 0x690, + bit: 15, + clear: false, +}; +pub const PIN_SPIM1_MOSIIN_CTRL1: PinctrlPin = PinctrlPin { + offset: 0x410, + bit: 16, + clear: true, +}; +pub const PIN_SPIM1_MOSIIN_CTRL13: PinctrlPin = PinctrlPin { + offset: 0x4B0, + bit: 16, + clear: true, +}; +pub const PIN_SPIM1_MOSIIN_CTRL31: PinctrlPin = PinctrlPin { + offset: 0x690, + bit: 16, + clear: false, +}; +pub const PIN_SPIM1_MISOIN_CTRL1: PinctrlPin = PinctrlPin { + offset: 0x410, + bit: 17, + clear: true, +}; +pub const PIN_SPIM1_MISOIN_CTRL13: PinctrlPin = PinctrlPin { + offset: 0x4B0, + bit: 17, + clear: true, +}; +pub const PIN_SPIM1_MISOIN_CTRL31: PinctrlPin = PinctrlPin { + offset: 0x690, + bit: 17, + clear: false, +}; +pub const PIN_SPIM1_IO2IN_CTRL1: PinctrlPin = PinctrlPin { + offset: 0x410, + bit: 18, + clear: true, +}; +pub const PIN_SPIM1_IO2IN_CTRL13: PinctrlPin = PinctrlPin { + offset: 0x4B0, + bit: 18, + clear: true, +}; +pub const PIN_SPIM1_IO2IN_CTRL31: PinctrlPin = PinctrlPin { + offset: 0x690, + bit: 18, + clear: false, +}; +pub const PIN_SPIM1_IO3IN_CTRL1: PinctrlPin = PinctrlPin { + offset: 0x410, + bit: 19, + clear: true, +}; +pub const PIN_SPIM1_IO3IN_CTRL13: PinctrlPin = PinctrlPin { + offset: 0x4B0, + bit: 19, + clear: true, +}; +pub const PIN_SPIM1_IO3IN_CTRL31: PinctrlPin = PinctrlPin { + offset: 0x690, + bit: 19, + clear: false, +}; +pub const PIN_SPIM1_CSNOUT_CTRL1: PinctrlPin = PinctrlPin { + offset: 0x410, + bit: 20, + clear: true, +}; +pub const PIN_SPIM1_CSNOUT_CTRL13: PinctrlPin = PinctrlPin { + offset: 0x4B0, + bit: 20, + clear: true, +}; +pub const PIN_SPIM1_CSNOUT_CTRL31: PinctrlPin = PinctrlPin { + offset: 0x690, + bit: 20, + clear: false, +}; +pub const PIN_SPIM1_CLKOUT_CTRL1: PinctrlPin = PinctrlPin { + offset: 0x410, + bit: 21, + clear: true, +}; +pub const PIN_SPIM1_CLKOUT_CTRL13: PinctrlPin = PinctrlPin { + offset: 0x4B0, + bit: 21, + clear: true, +}; +pub const PIN_SPIM1_CLKOUT_CTRL31: PinctrlPin = PinctrlPin { + offset: 0x690, + bit: 21, + clear: false, +}; +pub const PIN_SPIM1_MOSIOUT_CTRL1: PinctrlPin = PinctrlPin { + offset: 0x410, + bit: 8, + clear: true, +}; +pub const PIN_SPIM1_MOSIOUT_CTRL13: PinctrlPin = PinctrlPin { + offset: 0x4B0, + bit: 8, + clear: true, +}; +pub const PIN_SPIM1_MOSIOUT_CTRL31: PinctrlPin = PinctrlPin { + offset: 0x690, + bit: 8, + clear: false, +}; +pub const PIN_SPIM1_MISOOUT_CTRL1: PinctrlPin = PinctrlPin { + offset: 0x410, + bit: 23, + clear: true, +}; +pub const PIN_SPIM1_MISOOUT_CTRL13: PinctrlPin = PinctrlPin { + offset: 0x4B0, + bit: 23, + clear: true, +}; +pub const PIN_SPIM1_MISOOUT_CTRL31: PinctrlPin = PinctrlPin { + offset: 0x690, + bit: 23, + clear: false, +}; +pub const PIN_SPIM1_IO2OUT_CTRL1: PinctrlPin = PinctrlPin { + offset: 0x410, + bit: 24, + clear: true, +}; +pub const PIN_SPIM1_IO2OUT_CTRL13: PinctrlPin = PinctrlPin { + offset: 0x4B0, + bit: 24, + clear: true, +}; +pub const PIN_SPIM1_IO2OUT_CTRL31: PinctrlPin = PinctrlPin { + offset: 0x690, + bit: 24, + clear: false, +}; +pub const PIN_SPIM1_IO3OUT_CTRL1: PinctrlPin = PinctrlPin { + offset: 0x410, + bit: 25, + clear: true, +}; +pub const PIN_SPIM1_IO3OUT_CTRL13: PinctrlPin = PinctrlPin { + offset: 0x4B0, + bit: 25, + clear: true, +}; +pub const PIN_SPIM1_IO3OUT_CTRL31: PinctrlPin = PinctrlPin { + offset: 0x690, + bit: 25, + clear: false, +}; +pub const PIN_SPIM1_MUX_CTRL1: PinctrlPin = PinctrlPin { + offset: 0x410, + bit: 26, + clear: true, +}; + +pub const PIN_SPIM1_MUX_CTRL13: PinctrlPin = PinctrlPin { + offset: 0x4B0, + bit: 26, + clear: true, +}; + +pub const PIN_SPIM1_MUX_CTRL31: PinctrlPin = PinctrlPin { + offset: 0x690, + bit: 26, + clear: false, +}; +pub const PIN_SPIM1_RSTOUT_CTRL1: PinctrlPin = PinctrlPin { + offset: 0x410, + bit: 27, + clear: true, +}; + +pub const PIN_SPIM1_RSTOUT_CTRL13: PinctrlPin = PinctrlPin { + offset: 0x4B0, + bit: 27, + clear: true, +}; + +pub const PIN_SPIM1_RSTOUT_CTRL31: PinctrlPin = PinctrlPin { + offset: 0x690, + bit: 27, + clear: false, +}; + +pub const PIN_SPIM2_CSIN_CTRL1: PinctrlPin = PinctrlPin { + offset: 0x410, + bit: 28, + clear: true, +}; +pub const PIN_SPIM2_CSIN_CTRL13: PinctrlPin = PinctrlPin { + offset: 0x4B0, + bit: 28, + clear: true, +}; +pub const PIN_SPIM2_CSIN_CTRL31: PinctrlPin = PinctrlPin { + offset: 0x690, + bit: 28, + clear: false, +}; +pub const PIN_SPIM2_CLKIN_CTRL1: PinctrlPin = PinctrlPin { + offset: 0x410, + bit: 29, + clear: true, +}; +pub const PIN_SPIM2_CLKIN_CTRL13: PinctrlPin = PinctrlPin { + offset: 0x4B0, + bit: 29, + clear: true, +}; +pub const PIN_SPIM2_CLKIN_CTRL31: PinctrlPin = PinctrlPin { + offset: 0x690, + bit: 29, + clear: false, +}; +pub const PIN_SPIM2_MOSIIN_CTRL1: PinctrlPin = PinctrlPin { + offset: 0x410, + bit: 30, + clear: true, +}; +pub const PIN_SPIM2_MOSIIN_CTRL13: PinctrlPin = PinctrlPin { + offset: 0x4B0, + bit: 30, + clear: true, +}; +pub const PIN_SPIM2_MOSIIN_CTRL31: PinctrlPin = PinctrlPin { + offset: 0x690, + bit: 30, + clear: false, +}; +pub const PIN_SPIM2_MISOIN_CTRL1: PinctrlPin = PinctrlPin { + offset: 0x410, + bit: 31, + clear: true, +}; +pub const PIN_SPIM2_MISOIN_CTRL13: PinctrlPin = PinctrlPin { + offset: 0x4B0, + bit: 31, + clear: true, +}; +pub const PIN_SPIM2_MISOIN_CTRL31: PinctrlPin = PinctrlPin { + offset: 0x690, + bit: 31, + clear: false, +}; +pub const PIN_SPIM2_IO2IN_CTRL2: PinctrlPin = PinctrlPin { + offset: 0x414, + bit: 0, + clear: true, +}; +pub const PIN_SPIM2_IO2IN_CTRL14: PinctrlPin = PinctrlPin { + offset: 0x4B4, + bit: 0, + clear: true, +}; +pub const PIN_SPIM2_IO2IN_CTRL32: PinctrlPin = PinctrlPin { + offset: 0x694, + bit: 0, + clear: false, +}; +pub const PIN_SPIM2_IO3IN_CTRL2: PinctrlPin = PinctrlPin { + offset: 0x414, + bit: 1, + clear: true, +}; +pub const PIN_SPIM2_IO3IN_CTRL14: PinctrlPin = PinctrlPin { + offset: 0x4B4, + bit: 1, + clear: true, +}; +pub const PIN_SPIM2_IO3IN_CTRL32: PinctrlPin = PinctrlPin { + offset: 0x694, + bit: 1, + clear: false, +}; +pub const PIN_SPIM2_CSNOUT_CTRL2: PinctrlPin = PinctrlPin { + offset: 0x414, + bit: 2, + clear: true, +}; +pub const PIN_SPIM2_CSNOUT_CTRL14: PinctrlPin = PinctrlPin { + offset: 0x4B4, + bit: 2, + clear: true, +}; +pub const PIN_SPIM2_CSNOUT_CTRL32: PinctrlPin = PinctrlPin { + offset: 0x694, + bit: 2, + clear: false, +}; +pub const PIN_SPIM2_CLKOUT_CTRL2: PinctrlPin = PinctrlPin { + offset: 0x414, + bit: 3, + clear: true, +}; +pub const PIN_SPIM2_CLKOUT_CTRL14: PinctrlPin = PinctrlPin { + offset: 0x4B4, + bit: 3, + clear: true, +}; +pub const PIN_SPIM2_CLKOUT_CTRL32: PinctrlPin = PinctrlPin { + offset: 0x694, + bit: 3, + clear: false, +}; +pub const PIN_SPIM2_MOSIOUT_CTRL2: PinctrlPin = PinctrlPin { + offset: 0x414, + bit: 4, + clear: true, +}; +pub const PIN_SPIM2_MOSIOUT_CTRL14: PinctrlPin = PinctrlPin { + offset: 0x4B4, + bit: 4, + clear: true, +}; +pub const PIN_SPIM2_MOSIOUT_CTRL32: PinctrlPin = PinctrlPin { + offset: 0x694, + bit: 4, + clear: false, +}; +pub const PIN_SPIM2_MISOOUT_CTRL2: PinctrlPin = PinctrlPin { + offset: 0x414, + bit: 5, + clear: true, +}; +pub const PIN_SPIM2_MISOOUT_CTRL14: PinctrlPin = PinctrlPin { + offset: 0x4B4, + bit: 5, + clear: true, +}; +pub const PIN_SPIM2_MISOOUT_CTRL32: PinctrlPin = PinctrlPin { + offset: 0x694, + bit: 5, + clear: false, +}; +pub const PIN_SPIM2_IO2OUT_CTRL2: PinctrlPin = PinctrlPin { + offset: 0x414, + bit: 6, + clear: true, +}; +pub const PIN_SPIM2_IO2OUT_CTRL14: PinctrlPin = PinctrlPin { + offset: 0x4B4, + bit: 6, + clear: true, +}; +pub const PIN_SPIM2_IO2OUT_CTRL32: PinctrlPin = PinctrlPin { + offset: 0x694, + bit: 6, + clear: false, +}; +pub const PIN_SPIM2_IO3OUT_CTRL2: PinctrlPin = PinctrlPin { + offset: 0x414, + bit: 7, + clear: true, +}; +pub const PIN_SPIM2_IO3OUT_CTRL14: PinctrlPin = PinctrlPin { + offset: 0x4B4, + bit: 7, + clear: true, +}; +pub const PIN_SPIM2_IO3OUT_CTRL32: PinctrlPin = PinctrlPin { + offset: 0x694, + bit: 7, + clear: false, +}; +pub const PIN_SPIM2_MUX_CTRL2: PinctrlPin = PinctrlPin { + offset: 0x414, + bit: 8, + clear: true, +}; + +pub const PIN_SPIM2_MUX_CTRL14: PinctrlPin = PinctrlPin { + offset: 0x4B4, + bit: 8, + clear: true, +}; + +pub const PIN_SPIM2_MUX_CTRL32: PinctrlPin = PinctrlPin { + offset: 0x694, + bit: 8, + clear: false, +}; +pub const PIN_SPIM2_RSTOUT_CTRL2: PinctrlPin = PinctrlPin { + offset: 0x414, + bit: 9, + clear: true, +}; + +pub const PIN_SPIM2_RSTOUT_CTRL14: PinctrlPin = PinctrlPin { + offset: 0x4B4, + bit: 9, + clear: true, +}; + +pub const PIN_SPIM2_RSTOUT_CTRL32: PinctrlPin = PinctrlPin { + offset: 0x694, + bit: 9, + clear: false, +}; + +pub const PIN_SPIM2_RSTIN_CTRL2: PinctrlPin = PinctrlPin { + offset: 0x414, + bit: 25, + clear: true, +}; + +pub const PIN_SPIM2_RSTIN_CTRL14: PinctrlPin = PinctrlPin { + offset: 0x4B4, + bit: 25, + clear: true, +}; + +pub const PIN_SPIM2_RSTIN_CTRL32: PinctrlPin = PinctrlPin { + offset: 0x694, + bit: 25, + clear: false, +}; + +pub const PIN_SPIM3_CSIN_CTRL2: PinctrlPin = PinctrlPin { + offset: 0x414, + bit: 10, + clear: true, +}; +pub const PIN_SPIM3_CSIN_CTRL14: PinctrlPin = PinctrlPin { + offset: 0x4B4, + bit: 10, + clear: true, +}; +pub const PIN_SPIM3_CSIN_CTRL32: PinctrlPin = PinctrlPin { + offset: 0x694, + bit: 10, + clear: false, +}; +pub const PIN_SPIM3_CLKIN_CTRL2: PinctrlPin = PinctrlPin { + offset: 0x414, + bit: 11, + clear: true, +}; +pub const PIN_SPIM3_CLKIN_CTRL14: PinctrlPin = PinctrlPin { + offset: 0x4B4, + bit: 11, + clear: true, +}; +pub const PIN_SPIM3_CLKIN_CTRL32: PinctrlPin = PinctrlPin { + offset: 0x694, + bit: 11, + clear: false, +}; +pub const PIN_SPIM3_MOSIIN_CTRL2: PinctrlPin = PinctrlPin { + offset: 0x414, + bit: 12, + clear: true, +}; +pub const PIN_SPIM3_MOSIIN_CTRL14: PinctrlPin = PinctrlPin { + offset: 0x4B4, + bit: 12, + clear: true, +}; +pub const PIN_SPIM3_MOSIIN_CTRL32: PinctrlPin = PinctrlPin { + offset: 0x694, + bit: 12, + clear: false, +}; +pub const PIN_SPIM3_MISOIN_CTRL2: PinctrlPin = PinctrlPin { + offset: 0x414, + bit: 13, + clear: true, +}; +pub const PIN_SPIM3_MISOIN_CTRL14: PinctrlPin = PinctrlPin { + offset: 0x4B4, + bit: 13, + clear: true, +}; +pub const PIN_SPIM3_MISOIN_CTRL32: PinctrlPin = PinctrlPin { + offset: 0x694, + bit: 13, + clear: false, +}; +pub const PIN_SPIM3_IO2IN_CTRL2: PinctrlPin = PinctrlPin { + offset: 0x414, + bit: 14, + clear: true, +}; +pub const PIN_SPIM3_IO2IN_CTRL14: PinctrlPin = PinctrlPin { + offset: 0x4B4, + bit: 14, + clear: true, +}; +pub const PIN_SPIM3_IO2IN_CTRL32: PinctrlPin = PinctrlPin { + offset: 0x694, + bit: 14, + clear: false, +}; +pub const PIN_SPIM3_IO3IN_CTRL2: PinctrlPin = PinctrlPin { + offset: 0x414, + bit: 15, + clear: true, +}; +pub const PIN_SPIM3_IO3IN_CTRL14: PinctrlPin = PinctrlPin { + offset: 0x4B4, + bit: 15, + clear: true, +}; +pub const PIN_SPIM3_IO3IN_CTRL32: PinctrlPin = PinctrlPin { + offset: 0x694, + bit: 15, + clear: false, +}; +pub const PIN_SPIM3_CSNOUT_CTRL2: PinctrlPin = PinctrlPin { + offset: 0x414, + bit: 16, + clear: true, +}; +pub const PIN_SPIM3_CSNOUT_CTRL14: PinctrlPin = PinctrlPin { + offset: 0x4B4, + bit: 16, + clear: true, +}; +pub const PIN_SPIM3_CSNOUT_CTRL32: PinctrlPin = PinctrlPin { + offset: 0x694, + bit: 16, + clear: false, +}; +pub const PIN_SPIM3_CLKOUT_CTRL2: PinctrlPin = PinctrlPin { + offset: 0x414, + bit: 17, + clear: true, +}; +pub const PIN_SPIM3_CLKOUT_CTRL14: PinctrlPin = PinctrlPin { + offset: 0x4B4, + bit: 17, + clear: true, +}; +pub const PIN_SPIM3_CLKOUT_CTRL32: PinctrlPin = PinctrlPin { + offset: 0x694, + bit: 17, + clear: false, +}; +pub const PIN_SPIM3_MOSIOUT_CTRL2: PinctrlPin = PinctrlPin { + offset: 0x414, + bit: 18, + clear: true, +}; +pub const PIN_SPIM3_MOSIOUT_CTRL14: PinctrlPin = PinctrlPin { + offset: 0x4B4, + bit: 18, + clear: true, +}; +pub const PIN_SPIM3_MOSIOUT_CTRL32: PinctrlPin = PinctrlPin { + offset: 0x694, + bit: 18, + clear: false, +}; +pub const PIN_SPIM3_MISOOUT_CTRL2: PinctrlPin = PinctrlPin { + offset: 0x414, + bit: 19, + clear: true, +}; +pub const PIN_SPIM3_MISOOUT_CTRL14: PinctrlPin = PinctrlPin { + offset: 0x4B4, + bit: 19, + clear: true, +}; +pub const PIN_SPIM3_MISOOUT_CTRL32: PinctrlPin = PinctrlPin { + offset: 0x694, + bit: 19, + clear: false, +}; +pub const PIN_SPIM3_IO2OUT_CTRL2: PinctrlPin = PinctrlPin { + offset: 0x414, + bit: 20, + clear: true, +}; +pub const PIN_SPIM3_IO2OUT_CTRL14: PinctrlPin = PinctrlPin { + offset: 0x4B4, + bit: 20, + clear: true, +}; +pub const PIN_SPIM3_IO2OUT_CTRL32: PinctrlPin = PinctrlPin { + offset: 0x694, + bit: 20, + clear: false, +}; +pub const PIN_SPIM3_IO3OUT_CTRL2: PinctrlPin = PinctrlPin { + offset: 0x414, + bit: 21, + clear: true, +}; +pub const PIN_SPIM3_IO3OUT_CTRL14: PinctrlPin = PinctrlPin { + offset: 0x4B4, + bit: 21, + clear: true, +}; +pub const PIN_SPIM3_IO3OUT_CTRL32: PinctrlPin = PinctrlPin { + offset: 0x694, + bit: 21, + clear: false, +}; +pub const PIN_SPIM3_MUX_CTRL2: PinctrlPin = PinctrlPin { + offset: 0x414, + bit: 22, + clear: true, +}; + +pub const PIN_SPIM3_MUX_CTRL14: PinctrlPin = PinctrlPin { + offset: 0x4B4, + bit: 22, + clear: true, +}; + +pub const PIN_SPIM3_MUX_CTRL32: PinctrlPin = PinctrlPin { + offset: 0x694, + bit: 22, + clear: false, +}; +pub const PIN_SPIM3_RSTOUT_CTRL2: PinctrlPin = PinctrlPin { + offset: 0x414, + bit: 23, + clear: true, +}; + +pub const PIN_SPIM3_RSTOUT_CTRL14: PinctrlPin = PinctrlPin { + offset: 0x4B4, + bit: 23, + clear: true, +}; + +pub const PIN_SPIM3_RSTOUT_CTRL32: PinctrlPin = PinctrlPin { + offset: 0x694, + bit: 23, + clear: false, +}; + +//Pin Group Aliases +pub const PINCTRL_FMC_QUAD: &[PinctrlPin] = &[PIN_FWSPIDQ2, PIN_FWSPIDQ3]; +pub const PINCTRL_SPI1_QUAD: &[PinctrlPin] = &[PIN_SPI1DQ2, PIN_SPI1DQ3]; +pub const PINCTRL_SPI2_DEFAULT: &[PinctrlPin] = &[ + PIN_SPI2CS0, + PIN_SPI2CK, + PIN_SPI2DQ0, + PIN_SPI2DQ1, + PIN_SPI2CS1, +]; +pub const PINCTRL_SPI2_QUAD: &[PinctrlPin] = &[ + PIN_SPI2CS0, + PIN_SPI2CK, + PIN_SPI2DQ0, + PIN_SPI2DQ1, + PIN_SPI2CS1, + PIN_SPI2DQ2, + PIN_SPI2DQ3, +]; +pub const PINCTRL_SPIM0_MUXSEL: &[PinctrlPin] = &[ + PIN_SPIM0_MUX_CTRL1, + PIN_SPIM0_MUX_CTRL13, + PIN_SPIM0_MUX_CTRL31, +]; +pub const PINCTRL_SPIM1_MUXSEL: &[PinctrlPin] = &[ + PIN_SPIM1_MUX_CTRL1, + PIN_SPIM1_MUX_CTRL13, + PIN_SPIM1_MUX_CTRL31, +]; +pub const PINCTRL_SPIM2_MUXSEL: &[PinctrlPin] = &[ + PIN_SPIM2_MUX_CTRL2, + PIN_SPIM2_MUX_CTRL14, + PIN_SPIM2_MUX_CTRL32, +]; +pub const PINCTRL_SPIM3_MUXSEL: &[PinctrlPin] = &[ + PIN_SPIM3_MUX_CTRL2, + PIN_SPIM3_MUX_CTRL14, + PIN_SPIM3_MUX_CTRL32, +]; + +pub const PINCTRL_SPIM0_QUAD_DEFAULT: &[PinctrlPin] = &[ + PIN_SPIM0_CSIN_CTRL1, + PIN_SPIM0_CSIN_CTRL13, + PIN_SPIM0_CSIN_CTRL31, + PIN_SPIM0_CLKIN_CTRL1, + PIN_SPIM0_CLKIN_CTRL13, + PIN_SPIM0_CLKIN_CTRL31, + PIN_SPIM0_MOSIIN_CTRL1, + PIN_SPIM0_MOSIIN_CTRL13, + PIN_SPIM0_MOSIIN_CTRL31, + PIN_SPIM0_MISOIN_CTRL1, + PIN_SPIM0_MISOIN_CTRL13, + PIN_SPIM0_MISOIN_CTRL31, + PIN_SPIM0_IO2IN_CTRL1, + PIN_SPIM0_IO2IN_CTRL13, + PIN_SPIM0_IO2IN_CTRL31, + PIN_SPIM0_IO3IN_CTRL1, + PIN_SPIM0_IO3IN_CTRL13, + PIN_SPIM0_IO3IN_CTRL31, + PIN_SPIM0_CSNOUT_CTRL1, + PIN_SPIM0_CSNOUT_CTRL13, + PIN_SPIM0_CSNOUT_CTRL31, + PIN_SPIM0_CLKOUT_CTRL1, + PIN_SPIM0_CLKOUT_CTRL13, + PIN_SPIM0_CLKOUT_CTRL31, + PIN_SPIM0_MOSIOUT_CTRL1, + PIN_SPIM0_MOSIOUT_CTRL13, + PIN_SPIM0_MOSIOUT_CTRL31, + PIN_SPIM0_MISOOUT_CTRL1, + PIN_SPIM0_MISOOUT_CTRL13, + PIN_SPIM0_MISOOUT_CTRL31, + PIN_SPIM0_IO2OUT_CTRL1, + PIN_SPIM0_IO2OUT_CTRL13, + PIN_SPIM0_IO2OUT_CTRL31, + PIN_SPIM0_IO3OUT_CTRL1, + PIN_SPIM0_IO3OUT_CTRL13, + PIN_SPIM0_IO3OUT_CTRL31, + PIN_SPIM0_MUX_CTRL1, + PIN_SPIM0_MUX_CTRL13, + PIN_SPIM0_MUX_CTRL31, + PIN_SPIM0_RSTOUT_CTRL1, + PIN_SPIM0_RSTOUT_CTRL13, + PIN_SPIM0_RSTOUT_CTRL31, + PIN_SPIM0_RSTIN_CTRL2, + PIN_SPIM0_RSTIN_CTRL14, + PIN_SPIM0_RSTIN_CTRL32, +]; +pub const PINCTRL_SPIM2_QUAD_DEFAULT: &[PinctrlPin] = &[ + PIN_SPIM2_CSIN_CTRL1, + PIN_SPIM2_CSIN_CTRL13, + PIN_SPIM2_CSIN_CTRL31, + PIN_SPIM2_CLKIN_CTRL1, + PIN_SPIM2_CLKIN_CTRL13, + PIN_SPIM2_CLKIN_CTRL31, + PIN_SPIM2_MOSIIN_CTRL1, + PIN_SPIM2_MOSIIN_CTRL13, + PIN_SPIM2_MOSIIN_CTRL31, + PIN_SPIM2_MISOIN_CTRL1, + PIN_SPIM2_MISOIN_CTRL13, + PIN_SPIM2_MISOIN_CTRL31, + PIN_SPIM2_IO2IN_CTRL2, + PIN_SPIM2_IO2IN_CTRL14, + PIN_SPIM2_IO2IN_CTRL32, + PIN_SPIM2_IO3IN_CTRL2, + PIN_SPIM2_IO3IN_CTRL14, + PIN_SPIM2_IO3IN_CTRL32, + PIN_SPIM2_CSNOUT_CTRL2, + PIN_SPIM2_CSNOUT_CTRL14, + PIN_SPIM2_CSNOUT_CTRL32, + PIN_SPIM2_CLKOUT_CTRL2, + PIN_SPIM2_CLKOUT_CTRL14, + PIN_SPIM2_CLKOUT_CTRL32, + PIN_SPIM2_MOSIOUT_CTRL2, + PIN_SPIM2_MOSIOUT_CTRL14, + PIN_SPIM2_MOSIOUT_CTRL32, + PIN_SPIM2_MISOOUT_CTRL2, + PIN_SPIM2_MISOOUT_CTRL14, + PIN_SPIM2_MISOOUT_CTRL32, + PIN_SPIM2_IO2OUT_CTRL2, + PIN_SPIM2_IO2OUT_CTRL14, + PIN_SPIM2_IO2OUT_CTRL32, + PIN_SPIM2_IO3OUT_CTRL2, + PIN_SPIM2_IO3OUT_CTRL14, + PIN_SPIM2_IO3OUT_CTRL32, + PIN_SPIM2_MUX_CTRL2, + PIN_SPIM2_MUX_CTRL14, + PIN_SPIM2_MUX_CTRL32, + PIN_SPIM2_RSTOUT_CTRL2, + PIN_SPIM2_RSTOUT_CTRL14, + PIN_SPIM2_RSTOUT_CTRL32, + PIN_SPIM2_RSTIN_CTRL2, + PIN_SPIM2_RSTIN_CTRL14, + PIN_SPIM2_RSTIN_CTRL32, +]; + +pub const PINCTRL_SPIM2_PINCTRL0: &[PinctrlPin] = &[ + PIN_SPIM2_CSIN_CTRL1, + PIN_SPIM2_CSIN_CTRL13, + PIN_SPIM2_CSIN_CTRL31, + PIN_SPIM2_CLKIN_CTRL1, + PIN_SPIM2_CLKIN_CTRL13, + PIN_SPIM2_CLKIN_CTRL31, + PIN_SPIM2_MOSIIN_CTRL1, + PIN_SPIM2_MOSIIN_CTRL13, + PIN_SPIM2_MOSIIN_CTRL31, + PIN_SPIM2_MISOIN_CTRL1, + PIN_SPIM2_MISOIN_CTRL13, + PIN_SPIM2_MISOIN_CTRL31, + PIN_SPIM2_IO2IN_CTRL2, + PIN_SPIM2_IO2IN_CTRL14, + PIN_SPIM2_IO2IN_CTRL32, + PIN_SPIM2_IO3IN_CTRL2, + PIN_SPIM2_IO3IN_CTRL14, + PIN_SPIM2_IO3IN_CTRL32, + PIN_SPIM2_CSNOUT_CTRL2, + PIN_SPIM2_CSNOUT_CTRL14, + PIN_SPIM2_CSNOUT_CTRL32, + PIN_SPIM2_CLKOUT_CTRL2, + PIN_SPIM2_CLKOUT_CTRL14, + PIN_SPIM2_CLKOUT_CTRL32, + PIN_SPIM2_MOSIOUT_CTRL2, + PIN_SPIM2_MOSIOUT_CTRL14, + PIN_SPIM2_MOSIOUT_CTRL32, + PIN_SPIM2_MISOOUT_CTRL2, + PIN_SPIM2_MISOOUT_CTRL14, + PIN_SPIM2_MISOOUT_CTRL32, + PIN_SPIM2_IO2OUT_CTRL2, + PIN_SPIM2_IO2OUT_CTRL14, + PIN_SPIM2_IO2OUT_CTRL32, + PIN_SPIM2_IO3OUT_CTRL2, + PIN_SPIM2_IO3OUT_CTRL14, + PIN_SPIM2_IO3OUT_CTRL32, + PIN_SPIM2_MUX_CTRL2, + PIN_SPIM2_MUX_CTRL14, + PIN_SPIM2_MUX_CTRL32, +]; + +pub const PINCTRL_SPIM3_PINCTRL0: &[PinctrlPin] = &[ + PIN_SPIM3_CSIN_CTRL2, + PIN_SPIM3_CSIN_CTRL14, + PIN_SPIM3_CSIN_CTRL32, + PIN_SPIM3_CLKIN_CTRL2, + PIN_SPIM3_CLKIN_CTRL14, + PIN_SPIM3_CLKIN_CTRL32, + PIN_SPIM3_MOSIIN_CTRL2, + PIN_SPIM3_MOSIIN_CTRL14, + PIN_SPIM3_MOSIIN_CTRL32, + PIN_SPIM3_MISOIN_CTRL2, + PIN_SPIM3_MISOIN_CTRL14, + PIN_SPIM3_MISOIN_CTRL32, + PIN_SPIM3_IO2IN_CTRL2, + PIN_SPIM3_IO2IN_CTRL14, + PIN_SPIM3_IO2IN_CTRL32, + PIN_SPIM3_IO3IN_CTRL2, + PIN_SPIM3_IO3IN_CTRL14, + PIN_SPIM3_IO3IN_CTRL32, + PIN_SPIM3_CSNOUT_CTRL2, + PIN_SPIM3_CSNOUT_CTRL14, + PIN_SPIM3_CSNOUT_CTRL32, + PIN_SPIM3_CLKOUT_CTRL2, + PIN_SPIM3_CLKOUT_CTRL14, + PIN_SPIM3_CLKOUT_CTRL32, + PIN_SPIM3_MOSIOUT_CTRL2, + PIN_SPIM3_MOSIOUT_CTRL14, + PIN_SPIM3_MOSIOUT_CTRL32, + PIN_SPIM3_MISOOUT_CTRL2, + PIN_SPIM3_MISOOUT_CTRL14, + PIN_SPIM3_MISOOUT_CTRL32, + PIN_SPIM3_IO2OUT_CTRL2, + PIN_SPIM3_IO2OUT_CTRL14, + PIN_SPIM3_IO2OUT_CTRL32, + PIN_SPIM3_IO3OUT_CTRL2, + PIN_SPIM3_IO3OUT_CTRL14, + PIN_SPIM3_IO3OUT_CTRL32, + PIN_SPIM3_MUX_CTRL2, + PIN_SPIM3_MUX_CTRL14, + PIN_SPIM3_MUX_CTRL32, +]; +pub const PINCTRL_I2C0: &[PinctrlPin] = &[PIN_SCL0, PIN_SDA0]; +pub const PINCTRL_I2C1: &[PinctrlPin] = &[PIN_SCL1, PIN_SDA1]; +pub const PINCTRL_I2C2: &[PinctrlPin] = &[PIN_SCL2, PIN_SDA2]; +pub const PINCTRL_I2C3: &[PinctrlPin] = &[PIN_SCL3, PIN_SDA3]; +pub const PINCTRL_I2C4: &[PinctrlPin] = &[PIN_SCL4, PIN_SDA4]; +pub const PINCTRL_I2C5: &[PinctrlPin] = &[PIN_SCL5, PIN_SDA5]; +pub const PINCTRL_I2C6: &[PinctrlPin] = &[PIN_SCL6, PIN_SDA6]; +pub const PINCTRL_I2C7: &[PinctrlPin] = &[PIN_SCL7, PIN_SDA7]; +pub const PINCTRL_I2C8: &[PinctrlPin] = &[PIN_SCL8, PIN_SDA8]; +pub const PINCTRL_I2C9: &[PinctrlPin] = &[PIN_SCL9, PIN_SDA9]; +pub const PINCTRL_I2C10: &[PinctrlPin] = + &[PIN_SCL10, PIN_SDA10, CLR_PIN_I3C_SCL0, CLR_PIN_I3C_SDA0]; +pub const PINCTRL_I2C11: &[PinctrlPin] = + &[PIN_SCL11, PIN_SDA11, CLR_PIN_I3C_SCL1, CLR_PIN_I3C_SDA1]; +pub const PINCTRL_I2C12: &[PinctrlPin] = + &[PIN_SCL12, PIN_SDA12, CLR_PIN_I3C_SCL2, CLR_PIN_I3C_SDA2]; +pub const PINCTRL_I2C13: &[PinctrlPin] = + &[PIN_SCL13, PIN_SDA13, CLR_PIN_I3C_SCL3, CLR_PIN_I3C_SDA3]; +#[macro_export] +macro_rules! modify_reg { + ($reg:expr, $bit:expr, $clear:expr) => {{ + let reg = $reg; + let bit = $bit; + let clear = $clear; + + reg.modify(|r, w| unsafe { let current = r.bits(); - let new_val = if $clear { - current & !(1 << $bit) + let new_val = if clear { + current & !(1 << bit) } else { - current | (1 << $bit) + current | (1 << bit) }; w.bits(new_val) });