From a238933059d70df5c0f87d3dcaeda1a62cf6ccfa Mon Sep 17 00:00:00 2001 From: Mikey Sklar Date: Sat, 19 Sep 2026 05:43:22 -0700 Subject: [PATCH 1/2] raspberrypi: update pico-sdk to 2.3.1 Co-Authored-By: Claude Opus 5 (1M context) --- ports/raspberrypi/sdk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/raspberrypi/sdk b/ports/raspberrypi/sdk index a1438dff1d3..079c6f39023 160000 --- a/ports/raspberrypi/sdk +++ b/ports/raspberrypi/sdk @@ -1 +1 @@ -Subproject commit a1438dff1d38bd9c65dbd693f0e5db4b9ae91779 +Subproject commit 079c6f39023649b154152db30f1d781e884879bc From f7bbc1f26501a1ede5e8bb9f96de8e24f082f66f Mon Sep 17 00:00:00 2001 From: Mikey Sklar Date: Sat, 19 Sep 2026 07:20:08 -0700 Subject: [PATCH 2/2] raspberrypi: rp2pio: claim pinless state machines without a gpio range pico-sdk 2.3 (raspberrypi/pico-sdk#2989) makes pio_claim_free_sm_and_add_program_for_gpio_range() return false for a gpio_count of 0 when PICO_PIO_USE_GPIO_BASE is set, so on RP2350B a StateMachine that uses no pins could not be constructed. Use pio_claim_free_sm_and_add_program() when there are no pins. Co-Authored-By: Claude Opus 5 (1M context) --- ports/raspberrypi/common-hal/rp2pio/StateMachine.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ports/raspberrypi/common-hal/rp2pio/StateMachine.c b/ports/raspberrypi/common-hal/rp2pio/StateMachine.c index 2f815cd2ee0..612b7b5ec2e 100644 --- a/ports/raspberrypi/common-hal/rp2pio/StateMachine.c +++ b/ports/raspberrypi/common-hal/rp2pio/StateMachine.c @@ -433,7 +433,9 @@ bool rp2pio_statemachine_construct(rp2pio_statemachine_obj_t *self, added = true; } else { uint program_offset; - bool r = pio_claim_free_sm_and_add_program_for_gpio_range(&program_struct, &pio, (uint *)&state_machine, &program_offset, gpio_base, gpio_count, true); + bool r = gpio_count + ? pio_claim_free_sm_and_add_program_for_gpio_range(&program_struct, &pio, (uint *)&state_machine, &program_offset, gpio_base, gpio_count, true) + : pio_claim_free_sm_and_add_program(&program_struct, &pio, (uint *)&state_machine, &program_offset); if (!r) { return false; }