From 9f740746cdf5339d12fad4cbabdc91909ded4c37 Mon Sep 17 00:00:00 2001 From: Lars Kruse Date: Mon, 15 Dec 2025 14:33:10 +0100 Subject: [PATCH] rp2040,rp23xx,rp23xx-rv: allow up to 32 PIO instructions Previously only up to 31 PIO instructions were accepted. But the hardware allowed 32 instructions. Now we accept 32 instructions. See the corresponding commit in the pico-sdk repository: https://github.com/raspberrypi/pico-sdk/commit/6f7dc67791dfffc2a22a0f0b59e83fd4da89b408 Signed-off-by: Lars Kruse --- arch/arm/src/rp2040/rp2040_pio.c | 2 +- arch/arm/src/rp23xx/rp23xx_pio.c | 2 +- arch/risc-v/src/rp23xx-rv/rp23xx_pio.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/arch/arm/src/rp2040/rp2040_pio.c b/arch/arm/src/rp2040/rp2040_pio.c index ee4c6e45cdad7..4254275438a84 100644 --- a/arch/arm/src/rp2040/rp2040_pio.c +++ b/arch/arm/src/rp2040/rp2040_pio.c @@ -133,7 +133,7 @@ static void hw_claim_clear(uint8_t *bits, uint32_t bit_index) static int _pio_find_offset_for_program(uint32_t pio, const rp2040_pio_program_t *program) { - ASSERT(program->length < PIO_INSTRUCTION_COUNT); + ASSERT(program->length <= PIO_INSTRUCTION_COUNT); uint32_t used_mask = _used_instruction_space[rp2040_pio_get_index(pio)]; uint32_t program_mask = (1u << program->length) - 1; diff --git a/arch/arm/src/rp23xx/rp23xx_pio.c b/arch/arm/src/rp23xx/rp23xx_pio.c index ef04170c13d1a..eaf56ad26da30 100644 --- a/arch/arm/src/rp23xx/rp23xx_pio.c +++ b/arch/arm/src/rp23xx/rp23xx_pio.c @@ -120,7 +120,7 @@ static void hw_claim_clear(uint8_t *bits, uint32_t bit_index) static int _pio_find_offset_for_program(uint32_t pio, const rp23xx_pio_program_t *program) { - ASSERT(program->length < PIO_INSTRUCTION_COUNT); + ASSERT(program->length <= PIO_INSTRUCTION_COUNT); uint32_t used_mask = _used_instruction_space[rp23xx_pio_get_index(pio)]; uint32_t program_mask = (1u << program->length) - 1; diff --git a/arch/risc-v/src/rp23xx-rv/rp23xx_pio.c b/arch/risc-v/src/rp23xx-rv/rp23xx_pio.c index 01cc8f6536bf2..fc1cf4ea74ca8 100644 --- a/arch/risc-v/src/rp23xx-rv/rp23xx_pio.c +++ b/arch/risc-v/src/rp23xx-rv/rp23xx_pio.c @@ -120,7 +120,7 @@ static void hw_claim_clear(uint8_t *bits, uint32_t bit_index) static int _pio_find_offset_for_program(uint32_t pio, const rp23xx_pio_program_t *program) { - ASSERT(program->length < PIO_INSTRUCTION_COUNT); + ASSERT(program->length <= PIO_INSTRUCTION_COUNT); uint32_t used_mask = _used_instruction_space[rp23xx_pio_get_index(pio)]; uint32_t program_mask = (1u << program->length) - 1;