Skip to content

Add ESP32 PARLIO-capable boards (C5/C6/H2/P4) with required ISR-IRAM flags - #10

Merged
zackees merged 1 commit into
mainfrom
feat/esp32-parlio-boards
Jun 20, 2026
Merged

Add ESP32 PARLIO-capable boards (C5/C6/H2/P4) with required ISR-IRAM flags#10
zackees merged 1 commit into
mainfrom
feat/esp32-parlio-boards

Conversation

@zackees

@zackeeszackees commented Jun 20, 2026

Copy link
Copy Markdown
Member

Summary

  • Add the two required PARLIO TX ISR build flags (CONFIG_PARLIO_TX_ISR_HANDLER_IN_IRAM=1 and CONFIG_PARLIO_TX_ISR_CACHE_SAFE=1) to every ESP32 chip whose SoC capabilities expose PARLIO: C5, C6, H2, P4.
  • Add a new platforms/platformio.esp32p4.ini env (the P4 was completely missing).
  • Bump the pioarduino platform-package on the C5/C6/H2 envs to 55.03.35 for consistency with the newly added P4 env.
  • Add a comment block next to the flags pointing future maintainers at FastLED src/platforms/esp/32/drivers/parlio/ as the canonical PARLIO-capable chipset list.

Why

Without these flags the FastLED PARLIO driver's TX ISR sits in flash and takes cache-miss stalls during execution, silently corrupting LED protocol timing. The FastLED driver only signals their absence with a compile-time #warning, which is easy to miss.

Boards explicitly NOT modified

S3 / C3 / C2 / S2 / original-ESP32 envs are intentionally left without the PARLIO flags — those chips don't have the PARLIO peripheral (SOC_PARLIO_SUPPORTED=0) and adding the flags would falsely imply they do.

Test plan

  • pio run -c platforms/platformio.esp32c5.ini succeeds
  • pio run -c platforms/platformio.esp32c6.ini succeeds
  • pio run -c platforms/platformio.esp32h2.ini succeeds
  • pio run -c platforms/platformio.esp32p4.ini succeeds
  • Confirm the FastLED PARLIO #warning no longer fires on these envs

Closes#9

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Added support for ESP32-P4 development board
  • Chores

    • Updated platform toolchains for ESP32-C5, ESP32-C6, and ESP32-H2 boards
    • Improved system performance optimization for LED interface across all ESP32 variants

Add the two required PARLIO TX ISR build flags
(CONFIG_PARLIO_TX_ISR_HANDLER_IN_IRAM and CONFIG_PARLIO_TX_ISR_CACHE_SAFE)
to every ESP32 chip whose SoC capabilities expose PARLIO. Without these
flags the FastLED PARLIO driver's TX ISR sits in flash and takes
cache-miss stalls during execution, silently corrupting LED timing.
- Update esp32c5, esp32c6, esp32h2 envs with the PARLIO flags and bump
their pioarduino platform-package to 55.03.35 for consistency.
- Add a new esp32p4 env with the PARLIO flags, huge_app partitions and
ARDUINO_USB_MODE=1.
- Add a comment block next to the flags pointing future maintainers at
FastLED src/platforms/esp/32/drivers/parlio/ as the canonical
PARLIO-capable chipset list, so the env list stays in sync if new
PARLIO-capable chips appear.
S3 / C3 / C2 / S2 / original-ESP32 envs are intentionally left without
the PARLIO flags; those chips don't have the peripheral and the flags
would falsely imply they do.
Closes#9
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitaiBot commented Jun 20, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: c9dc5e6e-3c36-4dd3-b0ea-e976f53fb9ee

📥 Commits

Reviewing files that changed from the base of the PR and between ac5ed12 and 0b8e6c0.

📒 Files selected for processing (4)
  • platforms/platformio.esp32c5.ini
  • platforms/platformio.esp32c6.ini
  • platforms/platformio.esp32h2.ini
  • platforms/platformio.esp32p4.ini

📝 Walkthrough

Walkthrough

Three existing PlatformIO environments (esp32c5, esp32c6, esp32h2) are updated to platform-espressif32 version 55.03.35 and gain CONFIG_PARLIO_TX_ISR_HANDLER_IN_IRAM=1 and CONFIG_PARLIO_TX_ISR_CACHE_SAFE=1 build flags. A new platformio.esp32p4.ini file is added with equivalent configuration for the ESP32-P4 board.

Changes

PARLIO ISR flags and platform updates across PARLIO-capable ESP32 envs

Layer / File(s)Summary
Platform bump + PARLIO build flags for esp32c5, esp32c6, esp32h2
platforms/platformio.esp32c5.ini, platforms/platformio.esp32c6.ini, platforms/platformio.esp32h2.ini
Bumps platform-espressif32 to 55.03.35 in all three envs and adds CONFIG_PARLIO_TX_ISR_HANDLER_IN_IRAM=1 and CONFIG_PARLIO_TX_ISR_CACHE_SAFE=1 with comments noting these apply only to PARLIO-capable chips. esp32c6 additionally gains board_build.partitions = huge_app.csv and merges its USB CDC flags into the expanded build_flags block.
New esp32p4 environment
platforms/platformio.esp32p4.ini
Adds a complete PlatformIO config for ESP32-P4: pinned platform URL, esp32-p4-evboard board, Arduino framework, huge_app.csv partitions, PARLIO ISR build flags, ARDUINO_USB_MODE=1, and FastLED lib dependency.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related issues

Poem

🐇 Hop hop, the PARLIO flags are here,
Four boards now safe from cache-miss fear!
C5, C6, H2, P4 — all aligned,
IRAM handlers neatly defined.
No LED timing lost in flash stalls tonight,
The rabbit stamped the .ini right! 🌟

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/esp32-parlio-boards

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@zackees
zackees merged commit f04558e into mainJun 20, 2026
1 of 2 checks passed
@zackees
zackees deleted the feat/esp32-parlio-boards branch June 20, 2026 01:05
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Triage

Development

Successfully merging this pull request may close these issues.

Add ESP32 PARLIO-capable boards (C5, C6, H2, P4) with required ISR-IRAM flags

1 participant

@zackees