Thank you for preparing the cleanups and verifying PR #21366 on physical hardware I have opened the documentation cleanup PR on GitHub on your behalf: https://github.com/apache/nuttx/pull/21413
checks are running.. On Tue, 3 Nov 2026 at 18:08, <[email protected]> wrote: > Hello - I tested PR 21366 and I can confirm that the ws2812 example > application works correctly with the diff applied and byte order > transformation active. Also tested with/without the bounds check and > confirmed that the check does prevent buffer overrun and memory > corruption. > > As for the PR itself - I think the fix in ws2812_read can be shortened > to just calling ws2812_byte_order_transform_rgb with res >> 2 instead of > len >> 2 and that the call to ws2812_byte_order_len isn't needed here. > The reason is that the lower half read handler will reduce len in the > same manner as ws2812_byte_order_len does it and res will therefore be > bound to len. > > (Calling ws2812_byte_order_len does not break anything here but it looks > like a bug because it is skipped in some configurations/code paths. It > can also make someone think that the upper half is supposed to take care > of bounding the len parameter which is currently not the case, lower > halves are doing it.) > > On 2026-11-02 20:24, [email protected] wrote: > > First of all - big thanks to you and to everyone involved in helping > > getting all of this merged and for all the fixes. And once again, sorry > > for the mixup with the dev branch. > > > > I compared the code that was supposed to be merged with the code that > > is currently in the mainline and it looks like there is only a minor > > difference, two function description templates left from the header > > file template in the coding style document. I prepared one more patch > > series that removes those templates and also removes description of the > > configuration option that was not added to WS2812 upper half Kconfig. > > The branch is named "doc_cleanups" > > > > As for the PR 21366, I can test it on hardware tomorrow, will also > > check if the merged code was the final version. > > > > Other than that, I have a patch ready which makes use of the byte order > > transformation and can post it. It adds parameter to > > avrdx_ws2812_register which in turn populates the new fields in struct > > ws2812_dev_s. I don't like this approach very much but I found no > > elegant way to call the upper half from board code directly (which > > would allow board code to enable the feature without the need to alter > > every lower half.) > > > > This is for the documentation cleanup: > > > > ============================ > > > > Documentation: cleanups related to WS2812 RGB LED > > > > ## Summary > > > > This patch series removes function description templates from AVR DA/DB > > header file related to WS2812 lower half driver. It also removes > > description of a WS2812 upper half driver configuration option which > > was removed during the review process. > > > > There is no functional change, the patch of the header file only > > removes comments. > > > > ## Impact > > > > **Impact on documentation** - needless code comments removed, > > description of a nonexistent configuration option removed > > > > Otherwise, no new feature added, no impact on users, build, hardware, > > security nor compatibility. > > > > ## Testing > > > > I confirm that changes are verified on local setup and works as > > intended: > > * Build Host(s): Linux, AMD, GCC avr-gcc 14.2 > > * Target(s): AVR DA/DB, tested on breadxavr:ws2812 > > > > Compiled binary has identical sha256 before and after the change. > > > > ## PR verification Self-Check > > > > * [x] This PR introduces only one functional change. > > * [x] I have updated all required description fields above. > > * [x] My PR adheres to Contributing > > [Guidelines](https://github.com/apache/nuttx/blob/master/CONTRIBUTING.md) > > > and > > [Documentation]( > https://nuttx.apache.org/docs/latest/contributing/index.html) > > (git commit title and message, coding standard, etc). > > * [ ] My PR is still work in progress (not ready for review). > > * [x] My PR is ready for review and can be safely merged into a > > codebase. > > > > ============================ > > > > On 2026-11-02 10:30, Swatantra wrote: > >> Hi Kerogit, > >> > >> The PR (#21338) was already merged into master after all CI checks > >> passed. > >> > >> Casaroli did a thorough pass and caught the remaining items (the > >> upper-half > >> buffer clamping and swint error return handling). Since it was already > >> merged, Marco kindly volunteered to handle the follow-up fixes in a > >> separate PR himself. > >> It was a pleasure shepherding your work. > >> > >> Best regards, > >> Swatantra Yadav > >> > >> On Mon, 2 Nov 2026 at 04:34, <[email protected]> wrote: > >> > >>> Hi, sorry, very sorry, I messed up. I did all those checks I wrote > >>> about > >>> in the previous message but then forgot to mention that the branch to > >>> pull for this last part is named avrdx_ws2812. The _v2 branch has > >>> commits I wanted to ask about at some point later and is not ready to > >>> be > >>> merged (and contains more errors than those you fixed.) > >>> > >>> Again, sorry for the additional work - and thanks for the adjustments > >>> in > >>> points 2-3 > >>> > >>> On 2026-11-01 23:30, Swatantra wrote: > >>> > Hi Kerogit, > >>> > > >>> > I have rebased the series onto current master and opened the Pull > >>> > Request > >>> > on GitHub: > >>> > https://github.com/apache/nuttx/pull/21338 > >>> > (Title: AVR: WS2812 RGB LED driver) > >>> > > >>> > All 9 commits have been submitted with your full author attribution > >>> > (Kerogit <[email protected]>) and DCO Signed-off-by preserved. > >>> > > >>> > To ensure the patches passed all automated CI checks cleanly on > GitHub, > >>> > a > >>> > few minor adjustments were made: > >>> > > >>> > 1. EXTERN in avrdx_ws2812.h: > >>> > There were leftover #define EXTERN and #undef EXTERN lines in > >>> > arch/avr/src/avrdx/avrdx_ws2812.h. Running nxstyle flagged these, so > I > >>> > removed them to match the clean approach we used in Step 3's > >>> > avrdx_swint.h. > >>> > > >>> > 2. Kconfig choice vs Conditional select for WS2812_NON_SPI_DRIVER: > >>> > In drivers/leds/Kconfig, changing WS2812_NON_SPI_DRIVER into a choice > >>> > symbol caused olddefconfig to fail in CI builds (such as bluetooth > and > >>> > rp2xxx). In Kconfig syntax, symbols inside a choice block cannot be > >>> > selected by external symbols, but arch/arm/src/rp2040 and rp23xx both > >>> > have > >>> > "select WS2812_NON_SPI_DRIVER". > >>> > > >>> > To preserve your exact goal (not forcing SPI when non-SPI is used, > >>> > while > >>> > keeping SPI enabled by default for legacy boards), I updated the > >>> > top-level > >>> > option to use standard conditional selection: > >>> > > >>> > config WS2812 > >>> > bool "WS2812 LED Driver" > >>> > default n > >>> > select SPI if !WS2812_NON_SPI_DRIVER > >>> > > >>> > This keeps WS2812_NON_SPI_DRIVER as a regular boolean config, > >>> > completely > >>> > satisfying backwards compatibility while avoiding build failures on > >>> > other > >>> > architectures. > >>> > > >>> > 3. Spelling & Assembly Opcode Whitelisting: > >>> > - Fixed a minor typo (endianess -> endianness) in > drivers/leds/ws2812.c > >>> > flagged by codespell. > >>> > - Whitelisted lowercase "rcall" in .codespellrc so codespell does not > >>> > mistake the AVR assembly instruction in avrdx_ws2812_uart_store.S for > >>> > "recall". > >>> > > >>> > 4. CMake Parity: > >>> > Added [skip-cmake-parity] to Commit 6 to satisfy the NuttX checkpatch > >>> > check > >>> > for AVR's GNU Make build system. > >>> > > >>> > The PR is now live in CI and assigned to maintainers. I will monitor > >>> > review > >>> > discussions and relay any feedback here if needed. > >>> > Thank You > >>> > > >>> > Best regards, > >>> > Swatantra Yadav > >>> > > >>> > On Sun, 1 Nov 2026 at 21:12, <[email protected]> wrote: > >>> > > >>> >> Hi, thanks for posting it and also thanks for removing the EXTERN > >>> >> definition, it was not pointed out by checkpatch when I tested the > >>> >> patches. The next part is submitted with EXTERN removed as well. > >>> >> Checked > >>> >> spelling once more, documentation builds correctly so hopefully you > >>> >> won't have much trouble with this one. > >>> >> > >>> >> Some of the changes in this series are partly intended as > suggestions > >>> >> for discussion. I will watch the PR and if people make some comments > >>> >> and/or request changes, I will respond here. > >>> >> > >>> >> ============================ > >>> >> > >>> >> AVR: WS2812 RGB LED driver > >>> >> > >>> >> ## Summary > >>> >> > >>> >> This patch series adds platform-specific driver for WS2812 RGB LED > to > >>> >> AVR DA/DB architecture. RGB data is transmitted using USART > peripheral > >>> >> but the driver is designed to allow other peripherals to be > supported > >>> >> if > >>> >> needed. In addition, there are some fixes for issues discovered when > >>> >> working with existing code - USART control in architecture code and > >>> >> some > >>> >> cleanups in the WS2812 driver upper half. > >>> >> > >>> >> Breadxavr board is updated to provide example configuration that > >>> >> compiles ws2812 program from nuttx-apps to showcase the LEDs. > >>> >> > >>> >> ## Impact > >>> >> > >>> >> **New feature**: driver for WS2812 RGB LED for AVR DA/DB family and > >>> >> example configuration for breadxavr board > >>> >> > >>> >> **Impact on user**: none, new code is not enabled by default. Other > >>> >> AVR > >>> >> families are not supported and not affected, same for other > >>> >> architectures > >>> >> > >>> >> **Impact on build**: new Kconfig options related to the new feature. > >>> >> > >>> >> Also, configuration of WS2812 upper half is altered slightly. The > >>> >> upper > >>> >> half driver initially only supported SPI peripheral and was later > >>> >> extended to interact with architecture lower half instead (in which > >>> >> case > >>> >> the upper half is no longer tied to any specific hardware.) Even if > >>> >> the > >>> >> new style is used and SPI is not needed, the driver enforces "select > >>> >> SPI". > >>> >> > >>> >> The patch series adds a choice between the old and the new style and > >>> >> only the old style selects SPI now. Existing WS2812_NON_SPI_DRIVER > >>> >> configuration option is changed from boolean (default false) to a > >>> >> choice > >>> >> option (default not chosen.) This should be fully backwards > compatible > >>> >> with existing configurations. Default configuration selects the old > >>> >> style driver and existing board configurations with > >>> >> CONFIG_WS2812_NON_SPI_DRIVER=y continue to work without changes. > >>> >> > >>> >> **Impact on documentation**: added documentation for the driver and > >>> >> description of the new configuration to breadxavr board. Description > >>> >> of > >>> >> ws2812_register upper half function in the code is altered to match > >>> >> current parameters of that function. This forced a formatting > cleanup > >>> >> to > >>> >> fix an issue reported by checkpatch before any changes were made. > >>> >> > >>> >> No impact on hardware, security or compatibility > >>> >> > >>> >> ## Testing > >>> >> > >>> >> I confirm that changes are verified on local setup and works as > >>> >> intended: > >>> >> * Build Host(s): Linux, AMD, GCC avr-gcc 14.2 > >>> >> * Target(s): AVR DA/DB, tested on breadxavr > >>> >> > >>> >> Tested with ws2812 example application from nuttx-apps. When > executed > >>> >> from NSH, the LEDs light up in green color and then repeatedly cycle > >>> >> colors to yellow, red, magenta, blue, cyan and back to green. This > >>> >> sequence of colors is not expected, first color is supposed to be > red. > >>> >> After an examination, it was found out that the LEDs used for > testing > >>> >> do > >>> >> not behave as documented and interpret the first received byte as > red > >>> >> (instead of green as described by the documentation.) This was > >>> >> confirmed > >>> >> by a simple non-RTOS firmware that drives output pin directly with > >>> >> timing achieved by nop instructions. The driver should therefore > work > >>> >> with LEDs that behave according to the documentation. > >>> >> > >>> >> Documentation checked by make html > >>> >> > >>> >> ## PR verification Self-Check > >>> >> > >>> >> * [x] This PR introduces only one functional change. > >>> >> * [x] I have updated all required description fields above. > >>> >> * [x] My PR adheres to Contributing > >>> >> [Guidelines]( > >>> https://github.com/apache/nuttx/blob/master/CONTRIBUTING.md) > >>> >> and > >>> >> [Documentation]( > >>> >> https://nuttx.apache.org/docs/latest/contributing/index.html) > >>> >> (git commit title and message, coding standard, etc). > >>> >> * [ ] My PR is still work in progress (not ready for review). > >>> >> * [x] My PR is ready for review and can be safely merged into a > >>> >> codebase. > >>> >> > >>> >> ============================ > >>> >> > >>> >> On 2026-10-29 15:46, Swatantra wrote: > >>> >> > Hello Kerogit, > >>> >> > I have rebased the AVR DA/DB software interrupt emulation patch > series > >>> >> > (`avrdx_swint`) onto latest master and submitted the Pull Request > on > >>> >> > your > >>> >> > behalf: > >>> >> > https://github.com/apache/nuttx/pull/21129 > >>> >> > > >>> >> > All commit authorship, DCO sign-offs, and checkpatch requirements > have > >>> >> > been > >>> >> > verified. > >>> >> > > >>> >> > Best regards, > >>> >> > Swatantra > >>> >> > > >>> >> > On Wed, 28 Oct 2026 at 05:11, <[email protected]> wrote: > >>> >> > > >>> >> >> Hello, > >>> >> >> > >>> >> >> I noticed that the previous phase got merged - thanks to everyone > >>> >> >> involved. Step 3 is support for software interrupt emulation, > branch > >>> >> >> name is avrdx_swint. Documentation builds without conflicts and > >>> >> >> checkpatch reports all checks pass for every changed source code > >>> file. > >>> >> >> > >>> >> >> ============================ > >>> >> >> > >>> >> >> AVR: software interrupt emulation > >>> >> >> > >>> >> >> ## Summary > >>> >> >> > >>> >> >> This patch adds emulated software interrupt functionality to AVR > >>> DA/DB > >>> >> >> architecture. The chip itself does not have any software > interrupt > >>> and > >>> >> >> the suggested way to implement one is to manipulate an I/O pin > >>> >> >> configured to trigger a hardware interrupt. The implementation > can > >>> >> >> serve > >>> >> >> multiple users at the same time and also supports sharing the > >>> hardware > >>> >> >> interrupt of the I/O port with other users. > >>> >> >> > >>> >> >> There is no in-tree user of this functionality yet, intended use > is a > >>> >> >> follow-up patch series that adds driver for WS2812 programmable > LED. > >>> >> >> > >>> >> >> ## Impact > >>> >> >> > >>> >> >> **New feature**: software interrupt emulation for AVR DA/DB > family > >>> >> >> > >>> >> >> **Impact on user**: none, new code is not enabled by default. > Other > >>> >> >> AVR > >>> >> >> families are not supported and not affected. > >>> >> >> > >>> >> >> **Impact on build**: new Kconfig options related to the new > feature, > >>> >> >> none otherwise > >>> >> >> > >>> >> >> **Impact on documentation**: zero latency interrupts guide > updated > >>> >> >> (mentions software interrupt emulation as a way to "get back > into the > >>> >> >> game") > >>> >> >> > >>> >> >> No impact on hardware, security or compatibility > >>> >> >> > >>> >> >> ## Testing > >>> >> >> > >>> >> >> I confirm that changes are verified on local setup and works > as > >>> >> >> intended: > >>> >> >> * Build Host(s): Linux, AMD, GCC avr-gcc 14.2 > >>> >> >> * Target(s): AVR DA/DB, tested on breadxavr > >>> >> >> > >>> >> >> Tested with the (not yet merged) WS2812 driver which uses this > >>> >> >> functionality to notify the OS that the data transmission > performed > >>> by > >>> >> >> the zero latency interrupt handler is finished. > >>> >> >> > >>> >> >> Other than that - Documentation tested by make html, changed > source > >>> >> >> code > >>> >> >> files tested with checkpatch.sh > >>> >> >> > >>> >> >> ## PR verification Self-Check > >>> >> >> > >>> >> >> * [x] This PR introduces only one functional change. > >>> >> >> * [x] I have updated all required description fields above. > >>> >> >> * [x] My PR adheres to Contributing > >>> >> >> [Guidelines]( > >>> >> https://github.com/apache/nuttx/blob/master/CONTRIBUTING.md) > >>> >> >> and > >>> >> >> [Documentation]( > >>> >> >> https://nuttx.apache.org/docs/latest/contributing/index.html) > >>> >> >> (git commit title and message, coding standard, etc). > >>> >> >> * [ ] My PR is still work in progress (not ready for review). > >>> >> >> * [x] My PR is ready for review and can be safely merged into > a > >>> >> >> codebase. > >>> >> >> > >>> >> >> ============================ > >>> >> >> > >>> >> >> > >>> >> >> On 2026-10-16 18:20, Swatantra wrote: > >>> >> >> > Hi, No worries at all. Aspell definitely generates a lot of > false > >>> >> >> > positives > >>> >> >> > with embedded hardware terminology, and Sphinx's > autosectionlabel > >>> >> >> > extension > >>> >> >> > is notorious for flagging duplicate headings across sections. > >>> >> >> > > >>> >> >> > That's the beauty of pair-shepherding—catching those CI quirks > >>> >> together > >>> >> >> > makes the upstream submission smooth. > >>> >> >> > > >>> >> >> > The force-pushed commit is now building cleanly in GitHub > Actions > >>> CI. > >>> >> I > >>> >> >> > will keep an eye on the review progress with Alin and the > >>> maintainers > >>> >> >> > and > >>> >> >> > keep you posted here. > >>> >> >> > > >>> >> >> > Best regards, > >>> >> >> > Swatantra Yadav > >>> >> >> > > >>> >> >> > On Fri, 16 Oct 2026 at 21:39, <[email protected]> wrote: > >>> >> >> > > >>> >> >> >> Hi, thanks for posting the patches and for the fixes. I am > >>> >> >> >> spellchecking > >>> >> >> >> the commits as well but there is lot of noise (aspell doesn't > like > >>> >> the > >>> >> >> >> word datasheet, let alone AVR) so it's unfortunately easy to > miss > >>> >> >> >> something. And sorry about the duplicate label, I tested that > >>> >> document > >>> >> >> >> with make html and found and fixed 2 of those warnings but it > did > >>> not > >>> >> >> >> occur to me that this label needs to be fixed in earlier patch > >>> than > >>> >> >> >> where I did it. > >>> >> >> >> > >>> >> >> >> On 2026-10-16 17:00, Swatantra wrote: > >>> >> >> >> > Hi Kerogit, > >>> >> >> >> > > >>> >> >> >> > I have submitted your Phase 2 series (Zero Latency Interrupt > >>> >> Handlers) > >>> >> >> >> > as a > >>> >> >> >> > pull request on GitHub: > >>> >> >> >> > > >>> >> >> >> > PR: https://github.com/apache/nuttx/pull/20706 > >>> >> >> >> > > >>> >> >> >> > Details of the submission: > >>> >> >> >> > - Rebased cleanly on top of the latest apache/nuttx master > >>> (which > >>> >> >> >> > includes > >>> >> >> >> > merged PR #20677). > >>> >> >> >> > - Fixed a minor documentation typo ("overriden" -> > >>> "overridden") in > >>> >> >> >> > zerolatencyinterrupts.rst so that GitHub Actions CI checks > >>> >> (codespell) > >>> >> >> >> > pass > >>> >> >> >> > cleanly. > >>> >> >> >> > - Preserved your original author attribution and DCO > sign-off > >>> >> >> >> > exclusively > >>> >> >> >> > across all 4 commits. > >>> >> >> >> > - Validated with checkpatch.sh and cvt2utf (0 errors, 0 > >>> warnings). > >>> >> >> >> > > >>> >> >> >> > > >>> >> >> >> > Best regards, > >>> >> >> >> > Swatantra Yadav > >>> >> >> >> > > >>> >> >> >> > On Fri, 16 Oct 2026 at 18:08, <[email protected]> wrote: > >>> >> >> >> > > >>> >> >> >> >> Hello, thanks, I see it merged, next step is zero latency > >>> >> interrupt > >>> >> >> >> >> handling in branch named avrdx_zerolatency_intr. It rebased > >>> >> cleanly > >>> >> >> on > >>> >> >> >> >> current master branch. PR description is: > >>> >> >> >> >> > >>> >> >> >> >> ============================ > >>> >> >> >> >> > >>> >> >> >> >> AVR: support for zero latency interrupt handlers > >>> >> >> >> >> > >>> >> >> >> >> ## Summary > >>> >> >> >> >> > >>> >> >> >> >> This patch series provides support for so-called zero > latency > >>> >> >> >> >> interrupts > >>> >> >> >> >> as described in > >>> >> >> >> >> > >>> >> >> >> >> > >>> >> >> >> > >>> >> >> > >>> >> > >>> > https://nuttx.apache.org/docs/latest/guides/concurrency/zerolatencyinterrupts.html > >>> >> >> >> >> . These can be used for driver code that needs the > interrupt > >>> >> handler > >>> >> >> >> >> to > >>> >> >> >> >> run with as little overhead as possible (for example > because > >>> it is > >>> >> >> >> >> latency sensitive, runs very often etc.) This series does > not > >>> add > >>> >> any > >>> >> >> >> >> in-tree user, that is a topic of a planned follow-up > (driver > >>> for > >>> >> >> >> >> WS2812 > >>> >> >> >> >> programmable LED.) > >>> >> >> >> >> > >>> >> >> >> >> This support is only added for DA/DB family of AVR chips. > >>> >> >> >> >> > >>> >> >> >> >> There are also some fixes of interrupt vectors table > >>> (incorrectly > >>> >> >> >> >> numbered vectors as a result of duplicates) and Kconfig > option > >>> >> >> naming. > >>> >> >> >> >> In addition to that, interupt vectors are renamed (for > DA/DB > >>> >> family > >>> >> >> >> >> only) to be able to override them with custom code written > in C > >>> >> (and > >>> >> >> >> >> compiled with GCC which expects __vector prefix in the > name.) > >>> >> >> >> >> > >>> >> >> >> >> ## Impact > >>> >> >> >> >> > >>> >> >> >> >> New feature is added: zero latency interrupts that override > >>> >> regular > >>> >> >> >> >> interrupt routine with a custom code completely > independent on > >>> the > >>> >> >> >> >> rest > >>> >> >> >> >> of the operating system. > >>> >> >> >> >> > >>> >> >> >> >> There is no impact on existing users, all new code is off > by > >>> >> default. > >>> >> >> >> >> No > >>> >> >> >> >> impact on other architectures nor other AVR families > either. > >>> >> >> >> >> > >>> >> >> >> >> Impact on build - some Kconfig options are renamed from > HAS_ to > >>> >> >> >> >> preferred HAVE_ form. This renaming only touches existing > >>> Kconfig > >>> >> >> >> >> options that are referred to by newly added Kconfig options > >>> (ie. > >>> >> the > >>> >> >> >> >> new > >>> >> >> >> >> option depends on the existing one.) All of the renamed > options > >>> >> are > >>> >> >> >> >> selected automatically based on chip in use so this change > >>> should > >>> >> >> have > >>> >> >> >> >> no impact on existing configurations. > >>> >> >> >> >> > >>> >> >> >> >> Impact on documentation - the guide linked in the summary > is > >>> >> updated > >>> >> >> >> >> to > >>> >> >> >> >> describe specifics of the AVR implementation. > >>> >> >> >> >> > >>> >> >> >> >> No impact on hardware, security or compatibility. > >>> >> >> >> >> > >>> >> >> >> >> ## Testing > >>> >> >> >> >> > >>> >> >> >> >> I confirm that changes are verified on local setup and > >>> works as > >>> >> >> >> >> intended: > >>> >> >> >> >> * Build Host: Linux, AMD, GCC - avr-gcc 14.2 > >>> >> >> >> >> * Target: AVR DA/DB, tested on breadxavr board > >>> >> >> >> >> > >>> >> >> >> >> To test that the interrupt vector renaming did not affect > other > >>> >> AVR > >>> >> >> >> >> families, mega1284p-xplained:nsh was built and disassembly > >>> >> compared. > >>> >> >> >> >> There was no change. > >>> >> >> >> >> > >>> >> >> >> >> The feature was first tested by rudimentary application > that > >>> >> >> >> >> controlled > >>> >> >> >> >> WS2812 programmable LED outside of the OS and then by a new > >>> driver > >>> >> >> for > >>> >> >> >> >> that LED using ws2812 example application from nuttx-apps. > >>> >> >> >> >> > >>> >> >> >> >> ## PR verification Self-Check > >>> >> >> >> >> > >>> >> >> >> >> * [x] This PR introduces only one functional change. > >>> >> >> >> >> * [x] I have updated all required description fields > above. > >>> >> >> >> >> * [x] My PR adheres to Contributing > >>> >> >> >> >> [Guidelines]( > >>> >> >> >> https://github.com/apache/nuttx/blob/master/CONTRIBUTING.md) > >>> >> >> >> >> and > >>> >> >> >> >> [Documentation]( > >>> >> >> >> >> > https://nuttx.apache.org/docs/latest/contributing/index.html) > >>> >> >> >> >> (git commit title and message, coding standard, etc). > >>> >> >> >> >> * [ ] My PR is still work in progress (not ready for > >>> review). > >>> >> >> >> >> * [x] My PR is ready for review and can be safely merged > >>> into a > >>> >> >> >> >> codebase. > >>> >> >> >> >> > >>> >> >> >> >> ============================ > >>> >> >> >> >> > >>> >> >> >> >> On 2026-10-15 07:41, Swatantra wrote: > >>> >> >> >> >> > Hi Kerogit, Alin, > >>> >> >> >> >> > > >>> >> >> >> >> > I have opened the Pull Request for Step 1 on GitHub on > >>> behalf of > >>> >> >> >> >> > Kerogit: > >>> >> >> >> >> > https://github.com/apache/nuttx/pull/20677 > >>> >> >> >> >> > > >>> >> >> >> >> > All 4 commits preserve Kerogit's original authorship and > DCO > >>> >> >> >> sign-offs, > >>> >> >> >> >> > rebased cleanly onto current master, and checked with > >>> nxstyle. > >>> >> >> >> >> > As discussed, we will proceed step-by-step: once this PR > is > >>> >> >> reviewed > >>> >> >> >> >> > and > >>> >> >> >> >> > merged, we can proceed with Step 2 (Zero Latency > Interrupts). > >>> >> >> >> >> > > >>> >> >> >> >> > Best regards, > >>> >> >> >> >> > Swatantra Yadav > >>> >> >> >> >> > > >>> >> >> >> >> > On Thu, 15 Oct 2026 at 03:15, <[email protected]> wrote: > >>> >> >> >> >> > > >>> >> >> >> >> >> Hello, > >>> >> >> >> >> >> > >>> >> >> >> >> >> thanks to everyone for the offers. First part of the > series > >>> is > >>> >> >> ready > >>> >> >> >> >> >> in > >>> >> >> >> >> >> the Git repository, branch is named avrdx_fixes_13.1. > The PR > >>> >> >> >> >> >> description > >>> >> >> >> >> >> is below. I'll be looking at Github and if any question > >>> arise, > >>> >> I > >>> >> >> will > >>> >> >> >> >> >> answer them here. > >>> >> >> >> >> >> > >>> >> >> >> >> >> And just in case - since you mention splitting the > patches > >>> into > >>> >> >> >> >> >> individual PRs. If you mean breaking the branch into 4 > >>> separate > >>> >> >> >> >> >> branches, I would advise against that. The features > more or > >>> >> less > >>> >> >> >> >> >> depend > >>> >> >> >> >> >> on each other (software interrupt emulation changes file > >>> added > >>> >> by > >>> >> >> the > >>> >> >> >> >> >> zero latency interrupts, WS2812 uses both of these > features > >>> >> etc.) > >>> >> >> so > >>> >> >> >> >> >> trying to split them up is most likely going to end > with git > >>> >> >> >> conflicts > >>> >> >> >> >> >> and code that does not build. That's why I was planning > to > >>> >> merge > >>> >> >> this > >>> >> >> >> >> >> in > >>> >> >> >> >> >> step-by-step fashion. > >>> >> >> >> >> >> > >>> >> >> >> >> >> The filled PR template: > >>> >> >> >> >> >> > >>> >> >> >> >> >> ============================ > >>> >> >> >> >> >> > >>> >> >> >> >> >> AVR DA/DB: fix for build failure and other smaller fixes > >>> >> >> >> >> >> > >>> >> >> >> >> >> ## Summary > >>> >> >> >> >> >> > >>> >> >> >> >> >> This patch series fixes build failure for AVR DA/DB > family > >>> and > >>> >> >> adds > >>> >> >> >> >> >> some > >>> >> >> >> >> >> other smaller fixes. > >>> >> >> >> >> >> > >>> >> >> >> >> >> The build failure was caused by patch series that added > >>> >> >> >> >> >> LIBC_ATOMIC_IRQ > >>> >> >> >> >> >> Kconfig option during 13.1 development. Commit > 4ca2256a9bee > >>> >> >> selects > >>> >> >> >> >> >> this > >>> >> >> >> >> >> option by default for AVR chips but not for the DA/DB > >>> family, > >>> >> >> causing > >>> >> >> >> >> >> a > >>> >> >> >> >> >> build failure (atomic functions are missing.) The first > >>> patch > >>> >> of > >>> >> >> this > >>> >> >> >> >> >> series simply adds missing "select LIBC_ATOMIC_IRQ" for > this > >>> >> >> family > >>> >> >> >> as > >>> >> >> >> >> >> well. > >>> >> >> >> >> >> > >>> >> >> >> >> >> Other than that, version 13.1 added a performance > regression > >>> >> which > >>> >> >> >> >> >> manifested as dropped bytes in USART peripheral during > >>> receive > >>> >> >> (with > >>> >> >> >> >> >> heavy round-robin preemptive scheduling load.) The > >>> regression > >>> >> was > >>> >> >> >> >> >> bisected to commit b32712d0a2 that fixes some bugs > (which > >>> were > >>> >> >> >> >> >> affecting > >>> >> >> >> >> >> AVR DA/DB default build as well) but apparently adds > more > >>> >> >> >> >> >> time-consuming > >>> >> >> >> >> >> work to context switch with interrupts disabled. The > patch > >>> for > >>> >> >> this > >>> >> >> >> >> >> simply documents this possibility in the USART driver > >>> >> description. > >>> >> >> >> >> >> > >>> >> >> >> >> >> The remaining patches fix unused variable warning, make > >>> (very > >>> >> >> >> >> >> unlikely) > >>> >> >> >> >> >> board initialization error more visible and reorder > >>> >> manipulation > >>> >> >> with > >>> >> >> >> >> >> stack pointer during context restore to do it in the way > >>> >> >> (presumably) > >>> >> >> >> >> >> intended by the chip manufacturer. > >>> >> >> >> >> >> > >>> >> >> >> >> >> ## Impact > >>> >> >> >> >> >> > >>> >> >> >> >> >> After the patch is applied, it is again possible to > build > >>> the > >>> >> >> code. > >>> >> >> >> >> >> Other than that, there is no impact on existing > code/users. > >>> >> >> >> >> >> > >>> >> >> >> >> >> The stack pointer reordering change is done in file > shared > >>> with > >>> >> >> other > >>> >> >> >> >> >> AVR families - #ifdef blocks are used to cause no > change for > >>> >> them > >>> >> >> >> >> >> > >>> >> >> >> >> >> ## Testing > >>> >> >> >> >> >> > >>> >> >> >> >> >> I confirm that changes are verified on local setup > and > >>> work > >>> >> as > >>> >> >> >> >> >> intended: > >>> >> >> >> >> >> * Build Host: Linux, AMD, GCC-AVR 14.2 > >>> >> >> >> >> >> * Target: AVR (AVR128DA28), breadxavr:nsh > >>> >> >> >> >> >> > >>> >> >> >> >> >> Testing logs before change: > >>> >> >> >> >> >> > >>> >> >> >> >> >> ``` > >>> >> >> >> >> >> $ tools/configure.sh -l breadxavr:nsh > >>> >> >> >> >> >> $ make -j16 > >>> >> >> >> >> >> ... > >>> >> >> >> >> >> avr-ld: > .../nuttx.git/staging/libsched.a(sem_destroy.o): in > >>> >> >> function > >>> >> >> >> >> >> `.L3': > >>> >> >> >> >> >> sem_destroy.c:(.text.nxsem_destroy+0x46): undefined > >>> reference > >>> >> to > >>> >> >> >> >> >> `__atomic_load_4' > >>> >> >> >> >> >> ... > >>> >> >> >> >> >> ``` > >>> >> >> >> >> >> > >>> >> >> >> >> >> Testing logs after change: > >>> >> >> >> >> >> > >>> >> >> >> >> >> ``` > >>> >> >> >> >> >> $ tools/configure.sh -l breadxavr:nsh > >>> >> >> >> >> >> $ make -j16 > >>> >> >> >> >> >> Register: nsh > >>> >> >> >> >> >> Register: sh > >>> >> >> >> >> >> LD: nuttx > >>> >> >> >> >> >> Memory region Used Size Region Size %age Used > >>> >> >> >> >> >> flash: 56377 B 128 KB 43.01% > >>> >> >> >> >> >> sram: 780 B 16 KB 4.76% > >>> >> >> >> >> >> eeprom: 0 B 512 B 0.00% > >>> >> >> >> >> >> rodata: 606 B 4 KB 14.79% > >>> >> >> >> >> >> CP: nuttx.hex > >>> >> >> >> >> >> CP: nuttx.asm > >>> >> >> >> >> >> ``` > >>> >> >> >> >> >> > >>> >> >> >> >> >> To verify that the stack pointer change did not affect > other > >>> >> AVR > >>> >> >> >> >> >> families, mega1284p-xplained:nsh was built before and > after > >>> the > >>> >> >> >> >> >> change. > >>> >> >> >> >> >> The resulting binary was identical (with the exception > of > >>> >> version > >>> >> >> >> >> >> string.) > >>> >> >> >> >> >> > >>> >> >> >> >> >> Header and source files were checked by checkpatch with > no > >>> >> issues > >>> >> >> >> >> >> found, > >>> >> >> >> >> >> spelling checked with aspell. > >>> >> >> >> >> >> > >>> >> >> >> >> >> ## PR verification Self-Check > >>> >> >> >> >> >> > >>> >> >> >> >> >> * [x] This PR introduces only one functional change. > >>> >> >> >> >> >> * [x] I have updated all required description fields > >>> above. > >>> >> >> >> >> >> * [x] My PR adheres to Contributing > >>> >> >> >> >> >> [Guidelines]( > >>> >> >> >> >> > https://github.com/apache/nuttx/blob/master/CONTRIBUTING.md) > >>> >> >> >> >> >> and > >>> >> >> >> >> >> [Documentation]( > >>> >> >> >> >> >> > >>> https://nuttx.apache.org/docs/latest/contributing/index.html) > >>> >> >> >> >> >> (git commit title and message, coding standard, etc). > >>> >> >> >> >> >> * [ ] My PR is still work in progress (not ready for > >>> >> review). > >>> >> >> >> >> >> * [x] My PR is ready for review and can be safely > merged > >>> >> into a > >>> >> >> >> >> >> codebase. > >>> >> >> >> >> >> > >>> >> >> >> >> >> ============================ > >>> >> >> >> >> >> > >>> >> >> >> >> >> On 2026-10-14 18:20, Abhishek Mishra wrote: > >>> >> >> >> >> >> > Hi, > >>> >> >> >> >> >> > > >>> >> >> >> >> >> > I'd be happy to help split the patches into > individual PRs > >>> >> and > >>> >> >> >> work on > >>> >> >> >> >> >> > getting them merged. Please let me know how you'd > like to > >>> >> >> >> coordinate. > >>> >> >> >> >> >> > > >>> >> >> >> >> >> > Best regards, > >>> >> >> >> >> >> > Abhishek > >>> >> >> >> >> >> > > >>> >> >> >> >> >> > On Wed, Oct 14, 2026 at 9:09 PM Alin Jerpelea < > >>> >> >> [email protected]> > >>> >> >> >> >> >> > wrote: > >>> >> >> >> >> >> > > >>> >> >> >> >> >> >> please prepare the first patches and I will handle > them > >>> >> >> >> >> >> >> > >>> >> >> >> >> >> >> Best regards > >>> >> >> >> >> >> >> Alin J > >>> >> >> >> >> >> >> > >>> >> >> >> >> >> >> On Wed, 14 Oct 2026, 16:37 Alin Jerpelea, < > >>> >> [email protected]> > >>> >> >> >> >> wrote: > >>> >> >> >> >> >> >> > >>> >> >> >> >> >> >> > Hi, > >>> >> >> >> >> >> >> > > >>> >> >> >> >> >> >> > I can lend a hand tomorrow > >>> >> >> >> >> >> >> > > >>> >> >> >> >> >> >> > Thanks for your message > >>> >> >> >> >> >> >> > > >>> >> >> >> >> >> >> > Best regards > >>> >> >> >> >> >> >> > Alin > >>> >> >> >> >> >> >> > > >>> >> >> >> >> >> >> > On Wed, 14 Oct 2026, 11:18 Felipe Moura Oliveira, < > >>> >> >> >> >> >> [email protected]> > >>> >> >> >> >> >> >> > wrote: > >>> >> >> >> >> >> >> > > >>> >> >> >> >> >> >> >> Hello, > >>> >> >> >> >> >> >> >> > >>> >> >> >> >> >> >> >> I am away from my desk for the next few days. If > no > >>> one > >>> >> >> offers > >>> >> >> >> to > >>> >> >> >> >> >> help > >>> >> >> >> >> >> >> by > >>> >> >> >> >> >> >> >> this weekend, I will reach out to you so I can > help > >>> you > >>> >> with > >>> >> >> >> this. > >>> >> >> >> >> >> >> >> > >>> >> >> >> >> >> >> >> Regards, > >>> >> >> >> >> >> >> >> > >>> >> >> >> >> >> >> >> > >>> >> >> >> >> >> >> >> *--Felipe Moura de Oliveira* > >>> >> >> >> >> >> >> >> Linkedin < > >>> >> >> https://www.linkedin.com/in/felipe-oliveira-75a651a0 > >>> >> >> >> > > >>> >> >> >> >> >> >> >> > >>> >> >> >> >> >> >> >> On Wed, 14 Oct 2026 at 10:48 <[email protected]> > >>> wrote: > >>> >> >> >> >> >> >> >> > >>> >> >> >> >> >> >> >> > Hello, > >>> >> >> >> >> >> >> >> > > >>> >> >> >> >> >> >> >> > I would like to ask someone to help me merge > some > >>> >> patches > >>> >> >> for > >>> >> >> >> >> the > >>> >> >> >> >> >> AVR > >>> >> >> >> >> >> >> >> > architecture, DA/DB family. I have a series > ready > >>> with > >>> >> >> some > >>> >> >> >> >> fixes > >>> >> >> >> >> >> and > >>> >> >> >> >> >> >> >> > some new features. Same as before, I don't have > a > >>> >> Github > >>> >> >> >> account > >>> >> >> >> >> >> so I > >>> >> >> >> >> >> >> am > >>> >> >> >> >> >> >> >> > looking for someone who could open pull requests > >>> >> >> >> >> >> >> >> > > >>> >> >> >> >> >> >> >> > The series as a whole is available in my > "nuttx.git" > >>> >> >> >> repository > >>> >> >> >> >> at > >>> >> >> >> >> >> >> >> > git.kerogit.eu accessible through HTTP/S. The > >>> relevant > >>> >> >> >> branch > >>> >> >> >> >> is > >>> >> >> >> >> >> >> named > >>> >> >> >> >> >> >> >> > avrdx_ws2812_upstream . > >>> >> >> >> >> >> >> >> > > >>> >> >> >> >> >> >> >> > In its current form, the branch is not suitable > for > >>> >> >> merging > >>> >> >> >> - it > >>> >> >> >> >> >> would > >>> >> >> >> >> >> >> >> > be more than one feature per one PR which is > against > >>> >> the > >>> >> >> >> >> >> contributing > >>> >> >> >> >> >> >> >> > rules. My plan is, if someone decides to help, > to > >>> split > >>> >> >> the > >>> >> >> >> >> series > >>> >> >> >> >> >> >> into > >>> >> >> >> >> >> >> >> > steps and merge these steps one by one. After > one > >>> step > >>> >> is > >>> >> >> >> >> merged, I > >>> >> >> >> >> >> >> >> > would rebase the remainder on current master > branch > >>> and > >>> >> >> >> provide > >>> >> >> >> >> >> next > >>> >> >> >> >> >> >> >> > step. I also plan to prepare text to be filled > in > >>> the > >>> >> PR > >>> >> >> form > >>> >> >> >> >> >> >> >> > (essentialy doing as much as possible to make > the > >>> job > >>> >> >> easier > >>> >> >> >> for > >>> >> >> >> >> >> the > >>> >> >> >> >> >> >> >> > person who will interact with Github.) > >>> >> >> >> >> >> >> >> > > >>> >> >> >> >> >> >> >> > There are four features: > >>> >> >> >> >> >> >> >> > > >>> >> >> >> >> >> >> >> > 1. fixes - build failure introduced between > 13.0 and > >>> >> 13.1, > >>> >> >> >> >> >> documenting > >>> >> >> >> >> >> >> >> > performance regression between these versions > and > >>> some > >>> >> >> minor > >>> >> >> >> >> stuff > >>> >> >> >> >> >> >> >> > 2. zero latency interrupt support - > >>> >> >> >> >> >> >> >> > > >>> >> >> >> >> >> >> >> > > >>> >> >> >> >> >> >> >> > >>> >> >> >> >> >> >> > >>> >> >> >> >> >> > >>> >> >> >> >> > >>> >> >> >> > >>> >> >> > >>> >> > >>> > https://nuttx.apache.org/docs/latest/guides/concurrency/zerolatencyinterrupts.html > >>> >> >> >> >> >> >> >> > 3. software interrupt emulation > >>> >> >> >> >> >> >> >> > 4. lower half for WS2812 driver > >>> >> >> >> >> >> >> >> > > >>> >> >> >> >> >> >> >> > Thanks > >>> >> >> >> >> >> >> >> > > >>> >> >> >> >> >> >> >> > >>> >> >> >> >> >> >> > > >>> >> >> >> >> >> >> > >>> >> >> >> >> >> > >>> >> >> >> >> > >>> >> >> >> > >>> >> >> > >>> >> > >>> > >
