From 957cea23d53ca3f9e912ad04570c813020828eb2 Mon Sep 17 00:00:00 2001 From: Dryw Wade Date: Tue, 6 Aug 2024 16:13:57 -0600 Subject: [PATCH] rp2/machine_uart: Allow new TX/RX pins on RP2350. Signed-off-by: Damien George --- ports/rp2/machine_uart.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/ports/rp2/machine_uart.c b/ports/rp2/machine_uart.c index 955e4a8479..5fe6e31fde 100644 --- a/ports/rp2/machine_uart.c +++ b/ports/rp2/machine_uart.c @@ -69,8 +69,13 @@ #define MAX_BUFFER_SIZE (32766) #define IS_VALID_PERIPH(uart, pin) (((((pin) + 4) & 8) >> 3) == (uart)) +#if PICO_RP2350 +#define IS_VALID_TX(uart, pin) (((pin) & 1) == 0 && IS_VALID_PERIPH(uart, pin)) +#define IS_VALID_RX(uart, pin) (((pin) & 1) == 1 && IS_VALID_PERIPH(uart, pin)) +#else #define IS_VALID_TX(uart, pin) (((pin) & 3) == 0 && IS_VALID_PERIPH(uart, pin)) #define IS_VALID_RX(uart, pin) (((pin) & 3) == 1 && IS_VALID_PERIPH(uart, pin)) +#endif #define IS_VALID_CTS(uart, pin) (((pin) & 3) == 2 && IS_VALID_PERIPH(uart, pin)) #define IS_VALID_RTS(uart, pin) (((pin) & 3) == 3 && IS_VALID_PERIPH(uart, pin)) @@ -398,8 +403,8 @@ static void mp_machine_uart_init_helper(machine_uart_obj_t *self, size_t n_args, __dsb(); // make sure UARTLCR_H register is written to uart_set_fifo_enabled(self->uart, true); __dsb(); // make sure UARTLCR_H register is written to - gpio_set_function(self->tx, GPIO_FUNC_UART); - gpio_set_function(self->rx, GPIO_FUNC_UART); + gpio_set_function(self->tx, UART_FUNCSEL_NUM(self->uart, self->tx)); + gpio_set_function(self->rx, UART_FUNCSEL_NUM(self->uart, self->rx)); if (self->invert & UART_INVERT_RX) { gpio_set_inover(self->rx, GPIO_OVERRIDE_INVERT); }