Skip to content

Commit bba0420

Browse files
authored
Add gpio_set_irqover to match inover/outover/oeover (fixes #265) (#470)
1 parent 8d7bdd2 commit bba0420

File tree

4 files changed

+25
-0
lines changed

4 files changed

+25
-0
lines changed

src/host/hardware_gpio/gpio.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,10 @@ void gpio_set_pulls(uint gpio, bool up, bool down) {
2727

2828
}
2929

30+
void gpio_set_irqover(uint gpio, uint value) {
31+
32+
}
33+
3034
void gpio_set_outover(uint gpio, uint value) {
3135

3236
}

src/host/hardware_gpio/include/hardware/gpio.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@ void gpio_disable_pulls(uint gpio);
6161

6262
void gpio_set_pulls(uint gpio, bool up, bool down);
6363

64+
void gpio_set_irqover(uint gpio, uint value);
65+
6466
void gpio_set_outover(uint gpio, uint value);
6567

6668
void gpio_set_inover(uint gpio, uint value);

src/rp2_common/hardware_gpio/gpio.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,15 @@ void gpio_set_pulls(uint gpio, bool up, bool down) {
5757
);
5858
}
5959

60+
// Direct override for per-GPIO IRQ signal
61+
void gpio_set_irqover(uint gpio, uint value) {
62+
invalid_params_if(GPIO, gpio >= NUM_BANK0_GPIOS);
63+
hw_write_masked(&iobank0_hw->io[gpio].ctrl,
64+
value << IO_BANK0_GPIO0_CTRL_IRQOVER_LSB,
65+
IO_BANK0_GPIO0_CTRL_IRQOVER_BITS
66+
);
67+
}
68+
6069
// Direct overrides for pad controls
6170
void gpio_set_inover(uint gpio, uint value) {
6271
invalid_params_if(GPIO, gpio >= NUM_BANK0_GPIOS);

src/rp2_common/hardware_gpio/include/hardware/gpio.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,16 @@ static inline void gpio_disable_pulls(uint gpio) {
239239
gpio_set_pulls(gpio, false, false);
240240
}
241241

242+
/*! \brief Set GPIO IRQ override
243+
* \ingroup hardware_gpio
244+
*
245+
* Optionally invert a GPIO IRQ signal, or drive it high or low
246+
*
247+
* \param gpio GPIO number
248+
* \param value See \ref gpio_override
249+
*/
250+
void gpio_set_irqover(uint gpio, uint value);
251+
242252
/*! \brief Set GPIO output override
243253
* \ingroup hardware_gpio
244254
*

0 commit comments

Comments
 (0)