summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDryw Wade <dryw.wade@sparkfun.com>2024-08-06 16:13:57 -0600
committerDamien George <damien@micropython.org>2024-10-15 12:18:32 +1100
commit957cea23d53ca3f9e912ad04570c813020828eb2 (patch)
tree2d0e908dc889abb5ec5a7a789003ee77c8f29f3e
parent7a78e5ae7c89077efdc6d4e18b55c8ea52b3d30c (diff)
rp2/machine_uart: Allow new TX/RX pins on RP2350.
Signed-off-by: Damien George <damien@micropython.org>
-rw-r--r--ports/rp2/machine_uart.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/ports/rp2/machine_uart.c b/ports/rp2/machine_uart.c
index 955e4a847..5fe6e31fd 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);
}