//! Mappings for General Purpose I/Os. //! //! For CC2538 System-on-Chip Solution. use drone_core::periph; use drone_cortexm::reg::marker::*; periph! { /// Generic GPIO port peripheral variant. pub trait GpioPortMap {} /// Generic GPIO port peripheral. pub struct GpioPortPeriph; GPIO { DATA { 0x20 RwReg; DATA { RwRwRegFieldBits } } DIR { 0x20 RwReg; DIR { RwRwRegFieldBits } } IS { 0x20 RwReg; IS { RwRwRegFieldBits } } IBE { 0x20 RwReg; IBE { RwRwRegFieldBits } } IEV { 0x20 RwReg; IEV { RwRwRegFieldBits } } IE { 0x20 RwReg; IE { RwRwRegFieldBits } } RIS { 0x20 RoReg; RIS { RoRoRegFieldBits } } MIS { 0x20 RoReg; MIS { RoRoRegFieldBits } } IC { 0x20 WoReg; IC { WoWoRegFieldBits } } AFSEL { 0x20 RwReg; AFSEL { RwRwRegFieldBits } } GPIOLOCK { 0x20 RwReg; LOCK { RwRwRegFieldBits } } GPIOCR { 0x20 RwReg; CR { RwRwRegFieldBits } } PMUX { 0x20 RwReg; CKOEN { RwRwRegFieldBit } CKOPIN { RwRwRegFieldBit } DCEN { RwRwRegFieldBit } DCPIN { RwRwRegFieldBit } } P_EDGE_CTRL { 0x20 RwReg; PDIRC7 { RwRwRegFieldBit } PDIRC6 { RwRwRegFieldBit } PDIRC5 { RwRwRegFieldBit } PDIRC4 { RwRwRegFieldBit } PDIRC3 { RwRwRegFieldBit } PDIRC2 { RwRwRegFieldBit } PDIRC1 { RwRwRegFieldBit } PDIRC0 { RwRwRegFieldBit } PCIRC7 { RwRwRegFieldBit } PCIRC6 { RwRwRegFieldBit } PCIRC5 { RwRwRegFieldBit } PCIRC4 { RwRwRegFieldBit } PCIRC3 { RwRwRegFieldBit } PCIRC2 { RwRwRegFieldBit } PCIRC1 { RwRwRegFieldBit } PCIRC0 { RwRwRegFieldBit } PBIRC7 { RwRwRegFieldBit } PBIRC6 { RwRwRegFieldBit } PBIRC5 { RwRwRegFieldBit } PBIRC4 { RwRwRegFieldBit } PBIRC3 { RwRwRegFieldBit } PBIRC2 { RwRwRegFieldBit } PBIRC1 { RwRwRegFieldBit } PBIRC0 { RwRwRegFieldBit } PAIRC7 { RwRwRegFieldBit } PAIRC6 { RwRwRegFieldBit } PAIRC5 { RwRwRegFieldBit } PAIRC4 { RwRwRegFieldBit } PAIRC3 { RwRwRegFieldBit } PAIRC2 { RwRwRegFieldBit } PAIRC1 { RwRwRegFieldBit } PAIRC0 { RwRwRegFieldBit } } PI_IEN { 0x20 RwReg; PDIEN7 { RwRwRegFieldBit } PDIEN6 { RwRwRegFieldBit } PDIEN5 { RwRwRegFieldBit } PDIEN4 { RwRwRegFieldBit } PDIEN3 { RwRwRegFieldBit } PDIEN2 { RwRwRegFieldBit } PDIEN1 { RwRwRegFieldBit } PDIEN0 { RwRwRegFieldBit } PCIEN7 { RwRwRegFieldBit } PCIEN6 { RwRwRegFieldBit } PCIEN5 { RwRwRegFieldBit } PCIEN4 { RwRwRegFieldBit } PCIEN3 { RwRwRegFieldBit } PCIEN2 { RwRwRegFieldBit } PCIEN1 { RwRwRegFieldBit } PCIEN0 { RwRwRegFieldBit } PBIEN7 { RwRwRegFieldBit } PBIEN6 { RwRwRegFieldBit } PBIEN5 { RwRwRegFieldBit } PBIEN4 { RwRwRegFieldBit } PBIEN3 { RwRwRegFieldBit } PBIEN2 { RwRwRegFieldBit } PBIEN1 { RwRwRegFieldBit } PBIEN0 { RwRwRegFieldBit } PAIEN7 { RwRwRegFieldBit } PAIEN6 { RwRwRegFieldBit } PAIEN5 { RwRwRegFieldBit } PAIEN4 { RwRwRegFieldBit } PAIEN3 { RwRwRegFieldBit } PAIEN2 { RwRwRegFieldBit } PAIEN1 { RwRwRegFieldBit } PAIEN0 { RwRwRegFieldBit } } IRQ_DETECT_ACK { 0x20 RwReg; PDIACK7 { RwRwRegFieldBit } PDIACK6 { RwRwRegFieldBit } PDIACK5 { RwRwRegFieldBit } PDIACK4 { RwRwRegFieldBit } PDIACK3 { RwRwRegFieldBit } PDIACK2 { RwRwRegFieldBit } PDIACK1 { RwRwRegFieldBit } PDIACK0 { RwRwRegFieldBit } PCIACK7 { RwRwRegFieldBit } PCIACK6 { RwRwRegFieldBit } PCIACK5 { RwRwRegFieldBit } PCIACK4 { RwRwRegFieldBit } PCIACK3 { RwRwRegFieldBit } PCIACK2 { RwRwRegFieldBit } PCIACK1 { RwRwRegFieldBit } PCIACK0 { RwRwRegFieldBit } PBIACK7 { RwRwRegFieldBit } PBIACK6 { RwRwRegFieldBit } PBIACK5 { RwRwRegFieldBit } PBIACK4 { RwRwRegFieldBit } PBIACK3 { RwRwRegFieldBit } PBIACK2 { RwRwRegFieldBit } PBIACK1 { RwRwRegFieldBit } PBIACK0 { RwRwRegFieldBit } PAIACK7 { RwRwRegFieldBit } PAIACK6 { RwRwRegFieldBit } PAIACK5 { RwRwRegFieldBit } PAIACK4 { RwRwRegFieldBit } PAIACK3 { RwRwRegFieldBit } PAIACK2 { RwRwRegFieldBit } PAIACK1 { RwRwRegFieldBit } PAIACK0 { RwRwRegFieldBit } } USB_IRQ_ACK { 0x20 RwReg; USBACK { RwRwRegFieldBit } } IRQ_DETECT_UNMASK { 0x20 RwReg; PDIACK7 { RwRwRegFieldBit } PDIACK6 { RwRwRegFieldBit } PDIACK5 { RwRwRegFieldBit } PDIACK4 { RwRwRegFieldBit } PDIACK3 { RwRwRegFieldBit } PDIACK2 { RwRwRegFieldBit } PDIACK1 { RwRwRegFieldBit } PDIACK0 { RwRwRegFieldBit } PCIACK7 { RwRwRegFieldBit } PCIACK6 { RwRwRegFieldBit } PCIACK5 { RwRwRegFieldBit } PCIACK4 { RwRwRegFieldBit } PCIACK3 { RwRwRegFieldBit } PCIACK2 { RwRwRegFieldBit } PCIACK1 { RwRwRegFieldBit } PCIACK0 { RwRwRegFieldBit } PBIACK7 { RwRwRegFieldBit } PBIACK6 { RwRwRegFieldBit } PBIACK5 { RwRwRegFieldBit } PBIACK4 { RwRwRegFieldBit } PBIACK3 { RwRwRegFieldBit } PBIACK2 { RwRwRegFieldBit } PBIACK1 { RwRwRegFieldBit } PBIACK0 { RwRwRegFieldBit } PAIACK7 { RwRwRegFieldBit } PAIACK6 { RwRwRegFieldBit } PAIACK5 { RwRwRegFieldBit } PAIACK4 { RwRwRegFieldBit } PAIACK3 { RwRwRegFieldBit } PAIACK2 { RwRwRegFieldBit } PAIACK1 { RwRwRegFieldBit } PAIACK0 { RwRwRegFieldBit } } } } #[allow(unused_macros)] macro_rules! map_gpio_port { ( $port_macro_doc:expr, $port_macro:ident, $port_ty_doc:expr, $port_ty:ident, $gpio:ident, ) => { periph::map! { #[doc = $port_macro_doc] pub macro $port_macro; #[doc = $port_ty_doc] pub struct $port_ty; impl GpioPortMap for $port_ty {} drone_tisl_map_pieces::reg; crate; GPIO { $gpio; DATA { DATA; DATA { DATA } } DIR { DIR; DIR { DIR } } IS { IS; IS { IS } } IBE { IBE; IBE { IBE } } IEV { IEV; IEV { IEV } } IE { IE; IE { IE } } RIS { RIS; RIS { RIS } } MIS { MIS; MIS { MIS } } IC { IC; IC { IC } } AFSEL { AFSEL; AFSEL { AFSEL } } GPIOLOCK { GPIOLOCK; LOCK { LOCK } } GPIOCR { GPIOCR; CR { CR } } PMUX { PMUX; CKOEN { CKOEN } CKOPIN { CKOPIN } DCEN { DCEN } DCPIN { DCPIN } } P_EDGE_CTRL { P_EDGE_CTRL; PDIRC7 { PDIRC7 } PDIRC6 { PDIRC6 } PDIRC5 { PDIRC5 } PDIRC4 { PDIRC4 } PDIRC3 { PDIRC3 } PDIRC2 { PDIRC2 } PDIRC1 { PDIRC1 } PDIRC0 { PDIRC0 } PCIRC7 { PCIRC7 } PCIRC6 { PCIRC6 } PCIRC5 { PCIRC5 } PCIRC4 { PCIRC4 } PCIRC3 { PCIRC3 } PCIRC2 { PCIRC2 } PCIRC1 { PCIRC1 } PCIRC0 { PCIRC0 } PBIRC7 { PBIRC7 } PBIRC6 { PBIRC6 } PBIRC5 { PBIRC5 } PBIRC4 { PBIRC4 } PBIRC3 { PBIRC3 } PBIRC2 { PBIRC2 } PBIRC1 { PBIRC1 } PBIRC0 { PBIRC0 } PAIRC7 { PAIRC7 } PAIRC6 { PAIRC6 } PAIRC5 { PAIRC5 } PAIRC4 { PAIRC4 } PAIRC3 { PAIRC3 } PAIRC2 { PAIRC2 } PAIRC1 { PAIRC1 } PAIRC0 { PAIRC0 } } PI_IEN { PI_IEN; PDIEN7 { PDIEN7 } PDIEN6 { PDIEN6 } PDIEN5 { PDIEN5 } PDIEN4 { PDIEN4 } PDIEN3 { PDIEN3 } PDIEN2 { PDIEN2 } PDIEN1 { PDIEN1 } PDIEN0 { PDIEN0 } PCIEN7 { PCIEN7 } PCIEN6 { PCIEN6 } PCIEN5 { PCIEN5 } PCIEN4 { PCIEN4 } PCIEN3 { PCIEN3 } PCIEN2 { PCIEN2 } PCIEN1 { PCIEN1 } PCIEN0 { PCIEN0 } PBIEN7 { PBIEN7 } PBIEN6 { PBIEN6 } PBIEN5 { PBIEN5 } PBIEN4 { PBIEN4 } PBIEN3 { PBIEN3 } PBIEN2 { PBIEN2 } PBIEN1 { PBIEN1 } PBIEN0 { PBIEN0 } PAIEN7 { PAIEN7 } PAIEN6 { PAIEN6 } PAIEN5 { PAIEN5 } PAIEN4 { PAIEN4 } PAIEN3 { PAIEN3 } PAIEN2 { PAIEN2 } PAIEN1 { PAIEN1 } PAIEN0 { PAIEN0 } } IRQ_DETECT_ACK { IRQ_DETECT_ACK; PDIACK7 { PDIACK7 } PDIACK6 { PDIACK6 } PDIACK5 { PDIACK5 } PDIACK4 { PDIACK4 } PDIACK3 { PDIACK3 } PDIACK2 { PDIACK2 } PDIACK1 { PDIACK1 } PDIACK0 { PDIACK0 } PCIACK7 { PCIACK7 } PCIACK6 { PCIACK6 } PCIACK5 { PCIACK5 } PCIACK4 { PCIACK4 } PCIACK3 { PCIACK3 } PCIACK2 { PCIACK2 } PCIACK1 { PCIACK1 } PCIACK0 { PCIACK0 } PBIACK7 { PBIACK7 } PBIACK6 { PBIACK6 } PBIACK5 { PBIACK5 } PBIACK4 { PBIACK4 } PBIACK3 { PBIACK3 } PBIACK2 { PBIACK2 } PBIACK1 { PBIACK1 } PBIACK0 { PBIACK0 } PAIACK7 { PAIACK7 } PAIACK6 { PAIACK6 } PAIACK5 { PAIACK5 } PAIACK4 { PAIACK4 } PAIACK3 { PAIACK3 } PAIACK2 { PAIACK2 } PAIACK1 { PAIACK1 } PAIACK0 { PAIACK0 } } USB_IRQ_ACK { USB_IRQ_ACK; USBACK { USBACK } } IRQ_DETECT_UNMASK { IRQ_DETECT_UNMASK; PDIACK7 { PDIACK7 } PDIACK6 { PDIACK6 } PDIACK5 { PDIACK5 } PDIACK4 { PDIACK4 } PDIACK3 { PDIACK3 } PDIACK2 { PDIACK2 } PDIACK1 { PDIACK1 } PDIACK0 { PDIACK0 } PCIACK7 { PCIACK7 } PCIACK6 { PCIACK6 } PCIACK5 { PCIACK5 } PCIACK4 { PCIACK4 } PCIACK3 { PCIACK3 } PCIACK2 { PCIACK2 } PCIACK1 { PCIACK1 } PCIACK0 { PCIACK0 } PBIACK7 { PBIACK7 } PBIACK6 { PBIACK6 } PBIACK5 { PBIACK5 } PBIACK4 { PBIACK4 } PBIACK3 { PBIACK3 } PBIACK2 { PBIACK2 } PBIACK1 { PBIACK1 } PBIACK0 { PBIACK0 } PAIACK7 { PAIACK7 } PAIACK6 { PAIACK6 } PAIACK5 { PAIACK5 } PAIACK4 { PAIACK4 } PAIACK3 { PAIACK3 } PAIACK2 { PAIACK2 } PAIACK1 { PAIACK1 } PAIACK0 { PAIACK0 } } } } }; } map_gpio_port! { "Extracts GPIO port A register tokens.", periph_gpio_a, "GPIO port A peripheral variant.", GpioA, GPIO_A, } map_gpio_port! { "Extracts GPIO port B register tokens.", periph_gpio_b, "GPIO port B peripheral variant.", GpioB, GPIO_B, } map_gpio_port! { "Extracts GPIO port C register tokens.", periph_gpio_c, "GPIO port C peripheral variant.", GpioC, GPIO_C, } map_gpio_port! { "Extracts GPIO port D register tokens.", periph_gpio_d, "GPIO port D peripheral variant.", GpioD, GPIO_D, }