Conversation
📝 WalkthroughWalkthroughAdds support for the M5Stack Paper S3: a new Devices/m5stack-papers3 tree (CMake, device.properties, devicetree, module, hardware Configuration, and factory functions for touch, display, and SD card). Introduces a FastEpdDisplay driver (new class and implementation) with LVGL integration and an idf dependency on FastEPD. Exposes DisplayDevice::requestFullRefresh() virtual method. Removes the TT_DEVICE_ID choice block from Firmware/Kconfig. Adds m5stack-papers3 (esp32s3) to the CI build matrix and maps SPI RAM mode OPI to OCT in device.py. 🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing touches🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 3
🧹 Nitpick comments (2)
device.py (1)
151-152: Consider adding a brief comment explaining the OPI→OCT mapping.The remapping is correct since ESP-IDF uses
CONFIG_SPIRAM_MODE_OCTfor octal PSRAM mode, but device configurations may use "OPI" (Octal Peripheral Interface) terminology. A short comment would help future maintainers understand why this alias exists.📝 Suggested comment
mode = get_property_or_exit(device_properties, "hardware", "spiRamMode") + # ESP-IDF uses "OCT" for octal mode; accept "OPI" (Octal Peripheral Interface) as alias if mode == "OPI": mode = "OCT"Firmware/idf_component.yml (1)
57-59: Consider adding target rules for FastEPD dependency.Other display-related dependencies in this file use target rules to restrict which platforms include them. Since FastEPD is only used by the Paper S3 device (ESP32-S3), adding a rule would avoid pulling this dependency for other targets and maintain consistency with similar dependencies like
esp_lcd_ili9341andesp_lcd_st7735.Proposed fix
FastEPD: git: https://github.com/bitbank2/FastEPD.git version: 1.4.2 + rules: + - if: "target == esp32s3"
Selectively imported code from @juicecultus fork
Full diff of code is here.
I'm very happy to have it building and running in the first attempt, so great job @juicecultus
Things not included:
structvalue assignments for various drivers. They are unsafe and shouldn't be used.Summary by CodeRabbit
New Features
Changes
Chores