diff --git a/arch/arm/src/rp2040/rp2040_gpio.c b/arch/arm/src/rp2040/rp2040_gpio.c index 2a634729617..a2aacbb6df3 100644 --- a/arch/arm/src/rp2040/rp2040_gpio.c +++ b/arch/arm/src/rp2040/rp2040_gpio.c @@ -59,3 +59,11 @@ void rp2040_gpio_set_function(uint32_t gpio, uint32_t func) putreg32(func & RP2040_IO_BANK0_GPIO_CTRL_FUNCSEL_MASK, RP2040_IO_BANK0_GPIO_CTRL(gpio)); } + +void rp2040_gpio_set_pulls(uint32_t gpio, int up, int down) +{ + modbits_reg32((up ? RP2040_PADS_BANK0_GPIO_PUE : 0) | + (down ? RP2040_PADS_BANK0_GPIO_PDE : 0), + RP2040_PADS_BANK0_GPIO_PUE | RP2040_PADS_BANK0_GPIO_PDE, + RP2040_PADS_BANK0_GPIO(gpio)); +} diff --git a/arch/arm/src/rp2040/rp2040_gpio.h b/arch/arm/src/rp2040/rp2040_gpio.h index 3272f749da6..18dc3de4b0b 100644 --- a/arch/arm/src/rp2040/rp2040_gpio.h +++ b/arch/arm/src/rp2040/rp2040_gpio.h @@ -55,6 +55,7 @@ extern "C" ****************************************************************************/ void rp2040_gpio_set_function(uint32_t gpio, uint32_t func); +void rp2040_gpio_set_pulls(uint32_t gpio, int up, int down); #undef EXTERN #if defined(__cplusplus)