29#ifndef INCLUDE_LIBOPENCM3_PAC55XX_GPIO_H_
30#define INCLUDE_LIBOPENCM3_PAC55XX_GPIO_H_
43#define GPIOA GPIOA_BASE
44#define GPIOB GPIOB_BASE
45#define GPIOC GPIOC_BASE
46#define GPIOD GPIOD_BASE
47#define GPIOE GPIOE_BASE
48#define GPIOF GPIOF_BASE
49#define GPIOG GPIOG_BASE
55#define GPIO_MAX_PIN (7U)
77#define GPIO_MODER(base) MMIO32((base) + 0x00)
78#define GPIOA_MODER GPIO_MODER(GPIOA)
79#define GPIOB_MODER GPIO_MODER(GPIOB)
80#define GPIOC_MODER GPIO_MODER(GPIOC)
81#define GPIOD_MODER GPIO_MODER(GPIOD)
82#define GPIOE_MODER GPIO_MODER(GPIOE)
83#define GPIOF_MODER GPIO_MODER(GPIOF)
84#define GPIOG_MODER GPIO_MODER(GPIOG)
85#define GPIO_MODER_MASK 0x3
86#define GPIO_MODER_MASK_PIN(pin) (GPIO_MODER_MASK << ((pin)*2))
87#define GPIO_MODER_MODE(pin, mode) (((mode)&GPIO_MODER_MASK) << ((pin)*2))
94#define GPIO_OUTMASKR(base) MMIO32((base) + 0x04)
95#define GPIOA_OUTMASKR GPIO_OUTMASKR(GPIOA)
96#define GPIOB_OUTMASKR GPIO_OUTMASKR(GPIOB)
97#define GPIOC_OUTMASKR GPIO_OUTMASKR(GPIOC)
98#define GPIOD_OUTMASKR GPIO_OUTMASKR(GPIOD)
99#define GPIOE_OUTMASKR GPIO_OUTMASKR(GPIOE)
100#define GPIOF_OUTMASKR GPIO_OUTMASKR(GPIOF)
101#define GPIOG_OUTMASKR GPIO_OUTMASKR(GPIOG)
107#define GPIO_OUTR(base) MMIO32((base) + 0x08)
108#define GPIOA_OUTR GPIO_OUTR(GPIOA)
109#define GPIOB_OUTR GPIO_OUTR(GPIOB)
110#define GPIOC_OUTR GPIO_OUTR(GPIOC)
111#define GPIOD_OUTR GPIO_OUTR(GPIOD)
112#define GPIOE_OUTR GPIO_OUTR(GPIOE)
113#define GPIOF_OUTR GPIO_OUTR(GPIOF)
114#define GPIOG_OUTR GPIO_OUTR(GPIOG)
120#define GPIO_INR(base) MMIO32((base) + 0x0C)
121#define GPIOA_INR GPIO_INR(GPIOA)
122#define GPIOB_INR GPIO_INR(GPIOB)
123#define GPIOC_INR GPIO_INR(GPIOC)
124#define GPIOD_INR GPIO_INR(GPIOD)
125#define GPIOE_INR GPIO_INR(GPIOE)
126#define GPIOF_INR GPIO_INR(GPIOF)
127#define GPIOG_INR GPIO_INR(GPIOG)
133#define GPIO_INTENR(base) MMIO32((base) + 0x10)
134#define GPIOA_INTENR GPIO_INTENR(GPIOA)
135#define GPIOB_INTENR GPIO_INTENR(GPIOB)
136#define GPIOC_INTENR GPIO_INTENR(GPIOC)
137#define GPIOD_INTENR GPIO_INTENR(GPIOD)
138#define GPIOE_INTENR GPIO_INTENR(GPIOE)
139#define GPIOF_INTENR GPIO_INTENR(GPIOF)
140#define GPIOG_INTENR GPIO_INTENR(GPIOG)
146#define GPIO_INTFLAGR(base) MMIO32((base) + 0x14)
147#define GPIOA_INTFLAGR GPIO_INTFLAGR(GPIOA)
148#define GPIOB_INTFLAGR GPIO_INTFLAGR(GPIOB)
149#define GPIOC_INTFLAGR GPIO_INTFLAGR(GPIOC)
150#define GPIOD_INTFLAGR GPIO_INTFLAGR(GPIOD)
151#define GPIOE_INTFLAGR GPIO_INTFLAGR(GPIOE)
152#define GPIOF_INTFLAGR GPIO_INTFLAGR(GPIOF)
153#define GPIOG_INTFLAGR GPIO_INTFLAGR(GPIOG)
159#define GPIO_INTCLEARR(base) MMIO32((base) + 0x1C)
160#define GPIOA_INTCLEARR GPIO_INTCLEARR(GPIOA)
161#define GPIOB_INTCLEARR GPIO_INTCLEARR(GPIOB)
162#define GPIOC_INTCLEARR GPIO_INTCLEARR(GPIOC)
163#define GPIOD_INTCLEARR GPIO_INTCLEARR(GPIOD)
164#define GPIOE_INTCLEARR GPIO_INTCLEARR(GPIOE)
165#define GPIOF_INTCLEARR GPIO_INTCLEARR(GPIOF)
166#define GPIOG_INTCLEARR GPIO_INTCLEARR(GPIOG)
172#define GPIO_INTTYPE_EDGE 0U
173#define GPIO_INTTYPE_LEVEL 1U
174#define GPIO_INTTYPER(base) MMIO32((base) + 0x20)
175#define GPIOA_INTTYPER GPIO_INTTYPER(GPIOA)
176#define GPIOB_INTTYPER GPIO_INTTYPER(GPIOB)
177#define GPIOC_INTTYPER GPIO_INTTYPER(GPIOC)
178#define GPIOD_INTTYPER GPIO_INTTYPER(GPIOD)
179#define GPIOE_INTTYPER GPIO_INTTYPER(GPIOE)
180#define GPIOF_INTTYPER GPIO_INTTYPER(GPIOF)
181#define GPIOG_INTTYPER GPIO_INTTYPER(GPIOG)
187#define GPIO_INTCFG_FALLING_LOW 0U
188#define GPIO_INTCFG_RISING_HIGH 1U
189#define GPIO_INTCFGR(base) MMIO32((base) + 0x24)
190#define GPIOA_INTCFGR GPIO_INTCFGR(GPIOA)
191#define GPIOB_INTCFGR GPIO_INTCFGR(GPIOB)
192#define GPIOC_INTCFGR GPIO_INTCFGR(GPIOC)
193#define GPIOD_INTCFGR GPIO_INTCFGR(GPIOD)
194#define GPIOE_INTCFGR GPIO_INTCFGR(GPIOE)
195#define GPIOF_INTCFGR GPIO_INTCFGR(GPIOF)
196#define GPIOG_INTCFGR GPIO_INTCFGR(GPIOG)
202#define GPIO_INTEDGEBOTHR(base) MMIO32((base) + 0x28)
203#define GPIOA_INTEDGEBOTHR GPIO_INTEDGEBOTHR(GPIOA)
204#define GPIOB_INTEDGEBOTHR GPIO_INTEDGEBOTHR(GPIOB)
205#define GPIOC_INTEDGEBOTHR GPIO_INTEDGEBOTHR(GPIOC)
206#define GPIOD_INTEDGEBOTHR GPIO_INTEDGEBOTHR(GPIOD)
207#define GPIOE_INTEDGEBOTHR GPIO_INTEDGEBOTHR(GPIOE)
208#define GPIOF_INTEDGEBOTHR GPIO_INTEDGEBOTHR(GPIOF)
209#define GPIOG_INTEDGEBOTHR GPIO_INTEDGEBOTHR(GPIOG)
215#define GPIO_CLKSYNCR(base) MMIO32((base) + 0x2C)
216#define GPIOA_CLKSYNCR GPIO_CLKSYNCR(GPIOA)
217#define GPIOB_CLKSYNCR GPIO_CLKSYNCR(GPIOB)
218#define GPIOC_CLKSYNCR GPIO_CLKSYNCR(GPIOC)
219#define GPIOD_CLKSYNCR GPIO_CLKSYNCR(GPIOD)
220#define GPIOE_CLKSYNCR GPIO_CLKSYNCR(GPIOE)
221#define GPIOF_CLKSYNCR GPIO_CLKSYNCR(GPIOF)
222#define GPIOG_CLKSYNCR GPIO_CLKSYNCR(GPIOG)
228#define GPIO_DOSETR(base) MMIO32((base) + 0x30)
229#define GPIOA_DOSETR GPIO_DOSETR(GPIOA)
230#define GPIOB_DOSETR GPIO_DOSETR(GPIOB)
231#define GPIOC_DOSETR GPIO_DOSETR(GPIOC)
232#define GPIOD_DOSETR GPIO_DOSETR(GPIOD)
233#define GPIOE_DOSETR GPIO_DOSETR(GPIOE)
234#define GPIOF_DOSETR GPIO_DOSETR(GPIOF)
235#define GPIOG_DOSETR GPIO_DOSETR(GPIOG)
241#define GPIO_DOCLEARR(base) MMIO32((base) + 0x34)
242#define GPIOA_DOCLEARR GPIO_DOCLEARR(GPIOA)
243#define GPIOB_DOCLEARR GPIO_DOCLEARR(GPIOB)
244#define GPIOC_DOCLEARR GPIO_DOCLEARR(GPIOC)
245#define GPIOD_DOCLEARR GPIO_DOCLEARR(GPIOD)
246#define GPIOE_DOCLEARR GPIO_DOCLEARR(GPIOE)
247#define GPIOF_DOCLEARR GPIO_DOCLEARR(GPIOF)
248#define GPIOG_DOCLEARR GPIO_DOCLEARR(GPIOG)
279void gpio_set(uint32_t gpioport, uint16_t gpios);
285void gpio_clear(uint32_t gpioport, uint16_t gpios);
292uint16_t
gpio_get(uint32_t gpioport, uint16_t gpios);
ccs_drive_strength_t
Drive strength enumeration for type specificity.
void gpio_mode_setup(uint32_t gpioport, gpio_mode_t mode, ccs_pull_updown_t pull_up_down, uint16_t gpios)
Set the IO mode and pull-up/down configuration for the pins.
void gpio_set_schmidt_trigger(uint32_t gpioport, bool enable, uint16_t gpios)
Set input schmidt trigger for glitch rejection on the input pin.
uint16_t gpio_get(uint32_t gpioport, uint16_t gpios)
Return a masked bitfield of the port specified.
void gpio_set_outmask(uint32_t gpioport, bool enable, uint16_t gpios)
Set the output mask (disable changes) to the output pins specified.
void gpio_set(uint32_t gpioport, uint16_t gpios)
Set the port pins specified to the true state.
void gpio_clear(uint32_t gpioport, uint16_t gpios)
Clear the port pins specified to the false state.
void gpio_set_output_options(uint32_t gpioport, ccs_drive_strength_t strength, uint16_t gpios)
Set special output options for the gpio pin.
void gpio_set_af(uint32_t gpioport, ccs_muxsel_func_t muxsel, uint16_t gpios)
Set the function of the pin for this port.
@ GPIO_HIGH_IMPEDENCE_INPUT
ccs_pull_updown_t
Pull Up/Down enum for type specificity.