You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@nuttx.apache.org by kr...@kerogit.eu on 2026/10/14 09:47:22 UTC

Looking for help with merging patches for AVR

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

Re: Looking for help with merging patches for AVR

Posted by Swatantra <ma...@gmail.com>.
Hi Kerogit,

I would be glad to help you shepherd this series into Apache NuttX via
GitHub PRs.

I have fetched your avrdx_ws2812_upstream branch from git.kerogit.eu and
reviewed the commit history. Breaking it into the 4 logical steps you
outlined makes complete sense and will make reviews smooth for maintainers.

We can start with Step 1 (the 13.0 -> 13.1 build fixes, USART cleanups, and
regression notes). Whenever you are ready, please share the PR description
and notes for Step 1, and I will create the PR branch, verify nxstyle
checks, ensure your author/DCO attribution is preserved.

Best regards,
Swatantra Yadav

On Wed, 14 Oct 2026 at 15:48, Felipe Moura Oliveira <mo...@gmail.com>
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 <kr...@kerogit.eu> 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
> >
>

Re: Looking for help with merging patches for AVR

Posted by Tomek CEDRO <to...@cedro.info>.
Thank you Kerogit, will let you know when the boards are here, for now
I am trying to get free samples through friendly distributors :-)

--
CeDeROM, SQ7MHZ, http://www.tomek.cedro.info

On Thu, Oct 29, 2026 at 6:15 PM <kr...@kerogit.eu> wrote:
>
> Hi, the devkits should work. AVR128DA48 is not supported per-se in NuttX
> but the only thing needed is to define some macros and Kconfig options
> describing available peripherals. I don't have this variant (only DA28
> and DA64) so I did not want to submit support for it done blindly (which
> was probably a good idea, I tested the DA128 and still a lot of bugs
> slipped through.)
>
> If you get the kit, I can post the changes needed to support it. Doesn't
> really matter which one - AFAIK there is a minor difference in
> peripherals and DB has two power domains, that's it.
>
> ATMEGA128A is not the same, IIRC that's a chip family one generation
> older, the family is named "atmega" in Nuttx arch source tree. The
> current ones are in "avrdx" because they have some significant
> differences. (The most notable one is the ability to map part of program
> memory into RAM so const variables are accessible to C code without
> doing a copy in assembly during startup.)
>
> On 2026-10-29 16:31, Tomek CEDRO wrote:
> > Another question ATMEGA128A is not the same? I have found one :-P
> >
> > --
> > CeDeROM, SQ7MHZ, http://www.tomek.cedro.info
> >
> > On Thu, Oct 29, 2026 at 4:25 PM Tomek CEDRO <to...@cedro.info> wrote:
> >>
> >> Thank you Swatantra and KeroGit, I gave my approval on the github :-)
> >>
> >> Would these devkits work for runtime testing?
> >> 1. AVR128DA48 CURIOSITY NANO EVALUATION KIT
> >> https://www.microchip.com/en-us/development-tool/DM164151
> >> 2. AVR128DB48 CURIOSITY NANO EVALUATION KIT
> >> https://www.microchip.com/en-us/development-tool/EV35L43A
> >>
> >> --
> >> CeDeROM, SQ7MHZ, http://www.tomek.cedro.info
> >>
> >> On Thu, Oct 29, 2026 at 3:46 PM Swatantra
> >> <ma...@gmail.com> 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, <kr...@kerogit.eu> 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, <kr...@kerogit.eu> 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, <kr...@kerogit.eu> 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, <kr...@kerogit.eu> 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 <
> >> > > jerpelea@gmail.com>
> >> > > >> >> >> > wrote:
> >> > > >> >> >> >
> >> > > >> >> >> >> please prepare the first patches and I will handle them
> >> > > >> >> >> >>
> >> > > >> >> >> >> Best regards
> >> > > >> >> >> >> Alin J
> >> > > >> >> >> >>
> >> > > >> >> >> >> On Wed, 14 Oct 2026, 16:37 Alin Jerpelea, <je...@gmail.com>
> >> > > >> >> 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, <
> >> > > >> >> >> moura.fmo@gmail.com>
> >> > > >> >> >> >> > 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 <kr...@kerogit.eu> 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
> >> > > >> >> >> >> >> >
> >> > > >> >> >> >> >>
> >> > > >> >> >> >> >
> >> > > >> >> >> >>
> >> > > >> >> >>
> >> > > >> >>
> >> > > >>
> >> > >

Re: Looking for help with merging patches for AVR

Posted by kr...@kerogit.eu.
Hi, the devkits should work. AVR128DA48 is not supported per-se in NuttX 
but the only thing needed is to define some macros and Kconfig options 
describing available peripherals. I don't have this variant (only DA28 
and DA64) so I did not want to submit support for it done blindly (which 
was probably a good idea, I tested the DA128 and still a lot of bugs 
slipped through.)

If you get the kit, I can post the changes needed to support it. Doesn't 
really matter which one - AFAIK there is a minor difference in 
peripherals and DB has two power domains, that's it.

ATMEGA128A is not the same, IIRC that's a chip family one generation 
older, the family is named "atmega" in Nuttx arch source tree. The 
current ones are in "avrdx" because they have some significant 
differences. (The most notable one is the ability to map part of program 
memory into RAM so const variables are accessible to C code without 
doing a copy in assembly during startup.)

On 2026-10-29 16:31, Tomek CEDRO wrote:
> Another question ATMEGA128A is not the same? I have found one :-P
> 
> --
> CeDeROM, SQ7MHZ, http://www.tomek.cedro.info
> 
> On Thu, Oct 29, 2026 at 4:25 PM Tomek CEDRO <to...@cedro.info> wrote:
>> 
>> Thank you Swatantra and KeroGit, I gave my approval on the github :-)
>> 
>> Would these devkits work for runtime testing?
>> 1. AVR128DA48 CURIOSITY NANO EVALUATION KIT
>> https://www.microchip.com/en-us/development-tool/DM164151
>> 2. AVR128DB48 CURIOSITY NANO EVALUATION KIT
>> https://www.microchip.com/en-us/development-tool/EV35L43A
>> 
>> --
>> CeDeROM, SQ7MHZ, http://www.tomek.cedro.info
>> 
>> On Thu, Oct 29, 2026 at 3:46 PM Swatantra 
>> <ma...@gmail.com> 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, <kr...@kerogit.eu> 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, <kr...@kerogit.eu> 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, <kr...@kerogit.eu> 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, <kr...@kerogit.eu> 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 <
>> > > jerpelea@gmail.com>
>> > > >> >> >> > wrote:
>> > > >> >> >> >
>> > > >> >> >> >> please prepare the first patches and I will handle them
>> > > >> >> >> >>
>> > > >> >> >> >> Best regards
>> > > >> >> >> >> Alin J
>> > > >> >> >> >>
>> > > >> >> >> >> On Wed, 14 Oct 2026, 16:37 Alin Jerpelea, <je...@gmail.com>
>> > > >> >> 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, <
>> > > >> >> >> moura.fmo@gmail.com>
>> > > >> >> >> >> > 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 <kr...@kerogit.eu> 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
>> > > >> >> >> >> >> >
>> > > >> >> >> >> >>
>> > > >> >> >> >> >
>> > > >> >> >> >>
>> > > >> >> >>
>> > > >> >>
>> > > >>
>> > >

Re: Looking for help with merging patches for AVR

Posted by Tomek CEDRO <to...@cedro.info>.
Another question ATMEGA128A is not the same? I have found one :-P

--
CeDeROM, SQ7MHZ, http://www.tomek.cedro.info

On Thu, Oct 29, 2026 at 4:25 PM Tomek CEDRO <to...@cedro.info> wrote:
>
> Thank you Swatantra and KeroGit, I gave my approval on the github :-)
>
> Would these devkits work for runtime testing?
> 1. AVR128DA48 CURIOSITY NANO EVALUATION KIT
> https://www.microchip.com/en-us/development-tool/DM164151
> 2. AVR128DB48 CURIOSITY NANO EVALUATION KIT
> https://www.microchip.com/en-us/development-tool/EV35L43A
>
> --
> CeDeROM, SQ7MHZ, http://www.tomek.cedro.info
>
> On Thu, Oct 29, 2026 at 3:46 PM Swatantra <ma...@gmail.com> 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, <kr...@kerogit.eu> 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, <kr...@kerogit.eu> 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, <kr...@kerogit.eu> 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, <kr...@kerogit.eu> 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 <
> > > jerpelea@gmail.com>
> > > >> >> >> > wrote:
> > > >> >> >> >
> > > >> >> >> >> please prepare the first patches and I will handle them
> > > >> >> >> >>
> > > >> >> >> >> Best regards
> > > >> >> >> >> Alin J
> > > >> >> >> >>
> > > >> >> >> >> On Wed, 14 Oct 2026, 16:37 Alin Jerpelea, <je...@gmail.com>
> > > >> >> 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, <
> > > >> >> >> moura.fmo@gmail.com>
> > > >> >> >> >> > 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 <kr...@kerogit.eu> 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
> > > >> >> >> >> >> >
> > > >> >> >> >> >>
> > > >> >> >> >> >
> > > >> >> >> >>
> > > >> >> >>
> > > >> >>
> > > >>
> > >

Re: Looking for help with merging patches for AVR

Posted by Tomek CEDRO <to...@cedro.info>.
Thank you Swatantra and KeroGit, I gave my approval on the github :-)

Would these devkits work for runtime testing?
1. AVR128DA48 CURIOSITY NANO EVALUATION KIT
https://www.microchip.com/en-us/development-tool/DM164151
2. AVR128DB48 CURIOSITY NANO EVALUATION KIT
https://www.microchip.com/en-us/development-tool/EV35L43A

--
CeDeROM, SQ7MHZ, http://www.tomek.cedro.info

On Thu, Oct 29, 2026 at 3:46 PM Swatantra <ma...@gmail.com> 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, <kr...@kerogit.eu> 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, <kr...@kerogit.eu> 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, <kr...@kerogit.eu> 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, <kr...@kerogit.eu> 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 <
> > jerpelea@gmail.com>
> > >> >> >> > wrote:
> > >> >> >> >
> > >> >> >> >> please prepare the first patches and I will handle them
> > >> >> >> >>
> > >> >> >> >> Best regards
> > >> >> >> >> Alin J
> > >> >> >> >>
> > >> >> >> >> On Wed, 14 Oct 2026, 16:37 Alin Jerpelea, <je...@gmail.com>
> > >> >> 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, <
> > >> >> >> moura.fmo@gmail.com>
> > >> >> >> >> > 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 <kr...@kerogit.eu> 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
> > >> >> >> >> >> >
> > >> >> >> >> >>
> > >> >> >> >> >
> > >> >> >> >>
> > >> >> >>
> > >> >>
> > >>
> >

Re: Looking for help with merging patches for AVR

Posted by kr...@kerogit.eu.
Hello, I see it merged - thanks again.

On 2026-11-03 14:52, Swatantra wrote:
> 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, <kr...@kerogit.eu> 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, kr.git@kerogit.eu 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, <kr...@kerogit.eu> 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 <kr...@kerogit.eu>) 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, <kr...@kerogit.eu> 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, <kr...@kerogit.eu> 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, <kr...@kerogit.eu> 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, <kr...@kerogit.eu> 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, <kr...@kerogit.eu> 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 <
>> >>> >> >> jerpelea@gmail.com>
>> >>> >> >> >> >> >> > wrote:
>> >>> >> >> >> >> >> >
>> >>> >> >> >> >> >> >> please prepare the first patches and I will handle
>> them
>> >>> >> >> >> >> >> >>
>> >>> >> >> >> >> >> >> Best regards
>> >>> >> >> >> >> >> >> Alin J
>> >>> >> >> >> >> >> >>
>> >>> >> >> >> >> >> >> On Wed, 14 Oct 2026, 16:37 Alin Jerpelea, <
>> >>> >> jerpelea@gmail.com>
>> >>> >> >> >> >> 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, <
>> >>> >> >> >> >> >> moura.fmo@gmail.com>
>> >>> >> >> >> >> >> >> > 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 <kr...@kerogit.eu>
>> >>> 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
>> >>> >> >> >> >> >> >> >> >
>> >>> >> >> >> >> >> >> >>
>> >>> >> >> >> >> >> >> >
>> >>> >> >> >> >> >> >>
>> >>> >> >> >> >> >>
>> >>> >> >> >> >>
>> >>> >> >> >>
>> >>> >> >>
>> >>> >>
>> >>>
>> 
>> 


Re: Looking for help with merging patches for AVR

Posted by Swatantra <ma...@gmail.com>.
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, <kr...@kerogit.eu> 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, kr.git@kerogit.eu 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, <kr...@kerogit.eu> 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 <kr...@kerogit.eu>) 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, <kr...@kerogit.eu> 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, <kr...@kerogit.eu> 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, <kr...@kerogit.eu> 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, <kr...@kerogit.eu> 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, <kr...@kerogit.eu> 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 <
> >>> >> >> jerpelea@gmail.com>
> >>> >> >> >> >> >> > wrote:
> >>> >> >> >> >> >> >
> >>> >> >> >> >> >> >> please prepare the first patches and I will handle
> them
> >>> >> >> >> >> >> >>
> >>> >> >> >> >> >> >> Best regards
> >>> >> >> >> >> >> >> Alin J
> >>> >> >> >> >> >> >>
> >>> >> >> >> >> >> >> On Wed, 14 Oct 2026, 16:37 Alin Jerpelea, <
> >>> >> jerpelea@gmail.com>
> >>> >> >> >> >> 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, <
> >>> >> >> >> >> >> moura.fmo@gmail.com>
> >>> >> >> >> >> >> >> > 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 <kr...@kerogit.eu>
> >>> 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
> >>> >> >> >> >> >> >> >> >
> >>> >> >> >> >> >> >> >>
> >>> >> >> >> >> >> >> >
> >>> >> >> >> >> >> >>
> >>> >> >> >> >> >>
> >>> >> >> >> >>
> >>> >> >> >>
> >>> >> >>
> >>> >>
> >>>
>
>

Re: Looking for help with merging patches for AVR

Posted by kr...@kerogit.eu.
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, kr.git@kerogit.eu 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, <kr...@kerogit.eu> 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 <kr...@kerogit.eu>) 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, <kr...@kerogit.eu> 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, <kr...@kerogit.eu> 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, <kr...@kerogit.eu> 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, <kr...@kerogit.eu> 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, <kr...@kerogit.eu> 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 <
>>> >> >> jerpelea@gmail.com>
>>> >> >> >> >> >> > wrote:
>>> >> >> >> >> >> >
>>> >> >> >> >> >> >> please prepare the first patches and I will handle them
>>> >> >> >> >> >> >>
>>> >> >> >> >> >> >> Best regards
>>> >> >> >> >> >> >> Alin J
>>> >> >> >> >> >> >>
>>> >> >> >> >> >> >> On Wed, 14 Oct 2026, 16:37 Alin Jerpelea, <
>>> >> jerpelea@gmail.com>
>>> >> >> >> >> 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, <
>>> >> >> >> >> >> moura.fmo@gmail.com>
>>> >> >> >> >> >> >> > 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 <kr...@kerogit.eu>
>>> 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
>>> >> >> >> >> >> >> >> >
>>> >> >> >> >> >> >> >>
>>> >> >> >> >> >> >> >
>>> >> >> >> >> >> >>
>>> >> >> >> >> >>
>>> >> >> >> >>
>>> >> >> >>
>>> >> >>
>>> >>
>>> 


Re: Looking for help with merging patches for AVR

Posted by kr...@kerogit.eu.
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, <kr...@kerogit.eu> 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 <kr...@kerogit.eu>) 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, <kr...@kerogit.eu> 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, <kr...@kerogit.eu> 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, <kr...@kerogit.eu> 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, <kr...@kerogit.eu> 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, <kr...@kerogit.eu> 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 <
>> >> >> jerpelea@gmail.com>
>> >> >> >> >> >> > wrote:
>> >> >> >> >> >> >
>> >> >> >> >> >> >> please prepare the first patches and I will handle them
>> >> >> >> >> >> >>
>> >> >> >> >> >> >> Best regards
>> >> >> >> >> >> >> Alin J
>> >> >> >> >> >> >>
>> >> >> >> >> >> >> On Wed, 14 Oct 2026, 16:37 Alin Jerpelea, <
>> >> jerpelea@gmail.com>
>> >> >> >> >> 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, <
>> >> >> >> >> >> moura.fmo@gmail.com>
>> >> >> >> >> >> >> > 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 <kr...@kerogit.eu>
>> 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
>> >> >> >> >> >> >> >> >
>> >> >> >> >> >> >> >>
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >>
>> >> >> >> >> >>
>> >> >> >> >>
>> >> >> >>
>> >> >>
>> >>
>> 

Re: Looking for help with merging patches for AVR

Posted by Swatantra <ma...@gmail.com>.
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, <kr...@kerogit.eu> 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 <kr...@kerogit.eu>) 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, <kr...@kerogit.eu> 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, <kr...@kerogit.eu> 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, <kr...@kerogit.eu> 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, <kr...@kerogit.eu> 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, <kr...@kerogit.eu> 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 <
> >> >> jerpelea@gmail.com>
> >> >> >> >> >> > wrote:
> >> >> >> >> >> >
> >> >> >> >> >> >> please prepare the first patches and I will handle them
> >> >> >> >> >> >>
> >> >> >> >> >> >> Best regards
> >> >> >> >> >> >> Alin J
> >> >> >> >> >> >>
> >> >> >> >> >> >> On Wed, 14 Oct 2026, 16:37 Alin Jerpelea, <
> >> jerpelea@gmail.com>
> >> >> >> >> 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, <
> >> >> >> >> >> moura.fmo@gmail.com>
> >> >> >> >> >> >> > 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 <kr...@kerogit.eu>
> 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
> >> >> >> >> >> >> >> >
> >> >> >> >> >> >> >>
> >> >> >> >> >> >> >
> >> >> >> >> >> >>
> >> >> >> >> >>
> >> >> >> >>
> >> >> >>
> >> >>
> >>
>

Re: Looking for help with merging patches for AVR

Posted by kr...@kerogit.eu.
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 <kr...@kerogit.eu>) 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, <kr...@kerogit.eu> 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, <kr...@kerogit.eu> 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, <kr...@kerogit.eu> 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, <kr...@kerogit.eu> 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, <kr...@kerogit.eu> 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 <
>> >> jerpelea@gmail.com>
>> >> >> >> >> > wrote:
>> >> >> >> >> >
>> >> >> >> >> >> please prepare the first patches and I will handle them
>> >> >> >> >> >>
>> >> >> >> >> >> Best regards
>> >> >> >> >> >> Alin J
>> >> >> >> >> >>
>> >> >> >> >> >> On Wed, 14 Oct 2026, 16:37 Alin Jerpelea, <
>> jerpelea@gmail.com>
>> >> >> >> 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, <
>> >> >> >> >> moura.fmo@gmail.com>
>> >> >> >> >> >> > 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 <kr...@kerogit.eu> 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
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >>
>> >> >> >> >> >> >
>> >> >> >> >> >>
>> >> >> >> >>
>> >> >> >>
>> >> >>
>> >>
>> 

Re: Looking for help with merging patches for AVR

Posted by Swatantra <ma...@gmail.com>.
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 <kr...@kerogit.eu>) 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, <kr...@kerogit.eu> 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, <kr...@kerogit.eu> 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, <kr...@kerogit.eu> 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, <kr...@kerogit.eu> 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, <kr...@kerogit.eu> 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 <
> >> jerpelea@gmail.com>
> >> >> >> >> > wrote:
> >> >> >> >> >
> >> >> >> >> >> please prepare the first patches and I will handle them
> >> >> >> >> >>
> >> >> >> >> >> Best regards
> >> >> >> >> >> Alin J
> >> >> >> >> >>
> >> >> >> >> >> On Wed, 14 Oct 2026, 16:37 Alin Jerpelea, <
> jerpelea@gmail.com>
> >> >> >> 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, <
> >> >> >> >> moura.fmo@gmail.com>
> >> >> >> >> >> > 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 <kr...@kerogit.eu> 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
> >> >> >> >> >> >> >
> >> >> >> >> >> >>
> >> >> >> >> >> >
> >> >> >> >> >>
> >> >> >> >>
> >> >> >>
> >> >>
> >>
>

Re: Looking for help with merging patches for AVR

Posted by kr...@kerogit.eu.
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, <kr...@kerogit.eu> 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, <kr...@kerogit.eu> 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, <kr...@kerogit.eu> 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, <kr...@kerogit.eu> 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 <
>> jerpelea@gmail.com>
>> >> >> >> > wrote:
>> >> >> >> >
>> >> >> >> >> please prepare the first patches and I will handle them
>> >> >> >> >>
>> >> >> >> >> Best regards
>> >> >> >> >> Alin J
>> >> >> >> >>
>> >> >> >> >> On Wed, 14 Oct 2026, 16:37 Alin Jerpelea, <je...@gmail.com>
>> >> >> 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, <
>> >> >> >> moura.fmo@gmail.com>
>> >> >> >> >> > 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 <kr...@kerogit.eu> 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
>> >> >> >> >> >> >
>> >> >> >> >> >>
>> >> >> >> >> >
>> >> >> >> >>
>> >> >> >>
>> >> >>
>> >>
>> 

Re: Looking for help with merging patches for AVR

Posted by Swatantra <ma...@gmail.com>.
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, <kr...@kerogit.eu> 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, <kr...@kerogit.eu> 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, <kr...@kerogit.eu> 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, <kr...@kerogit.eu> 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 <
> jerpelea@gmail.com>
> >> >> >> > wrote:
> >> >> >> >
> >> >> >> >> please prepare the first patches and I will handle them
> >> >> >> >>
> >> >> >> >> Best regards
> >> >> >> >> Alin J
> >> >> >> >>
> >> >> >> >> On Wed, 14 Oct 2026, 16:37 Alin Jerpelea, <je...@gmail.com>
> >> >> 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, <
> >> >> >> moura.fmo@gmail.com>
> >> >> >> >> > 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 <kr...@kerogit.eu> 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
> >> >> >> >> >> >
> >> >> >> >> >>
> >> >> >> >> >
> >> >> >> >>
> >> >> >>
> >> >>
> >>
>

Re: Looking for help with merging patches for AVR

Posted by kr...@kerogit.eu.
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, <kr...@kerogit.eu> 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, <kr...@kerogit.eu> 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, <kr...@kerogit.eu> 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 <je...@gmail.com>
>> >> >> > wrote:
>> >> >> >
>> >> >> >> please prepare the first patches and I will handle them
>> >> >> >>
>> >> >> >> Best regards
>> >> >> >> Alin J
>> >> >> >>
>> >> >> >> On Wed, 14 Oct 2026, 16:37 Alin Jerpelea, <je...@gmail.com>
>> >> 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, <
>> >> >> moura.fmo@gmail.com>
>> >> >> >> > 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 <kr...@kerogit.eu> 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
>> >> >> >> >> >
>> >> >> >> >>
>> >> >> >> >
>> >> >> >>
>> >> >>
>> >>
>> 

Re: Looking for help with merging patches for AVR

Posted by Swatantra <ma...@gmail.com>.
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, <kr...@kerogit.eu> 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, <kr...@kerogit.eu> 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, <kr...@kerogit.eu> 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 <je...@gmail.com>
> >> >> > wrote:
> >> >> >
> >> >> >> please prepare the first patches and I will handle them
> >> >> >>
> >> >> >> Best regards
> >> >> >> Alin J
> >> >> >>
> >> >> >> On Wed, 14 Oct 2026, 16:37 Alin Jerpelea, <je...@gmail.com>
> >> 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, <
> >> >> moura.fmo@gmail.com>
> >> >> >> > 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 <kr...@kerogit.eu> 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
> >> >> >> >> >
> >> >> >> >>
> >> >> >> >
> >> >> >>
> >> >>
> >>
>

Re: Looking for help with merging patches for AVR

Posted by kr...@kerogit.eu.
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, <kr...@kerogit.eu> 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, <kr...@kerogit.eu> 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 <je...@gmail.com>
>> >> > wrote:
>> >> >
>> >> >> please prepare the first patches and I will handle them
>> >> >>
>> >> >> Best regards
>> >> >> Alin J
>> >> >>
>> >> >> On Wed, 14 Oct 2026, 16:37 Alin Jerpelea, <je...@gmail.com>
>> 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, <
>> >> moura.fmo@gmail.com>
>> >> >> > 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 <kr...@kerogit.eu> 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
>> >> >> >> >
>> >> >> >>
>> >> >> >
>> >> >>
>> >>
>> 

Re: Looking for help with merging patches for AVR

Posted by Swatantra <ma...@gmail.com>.
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, <kr...@kerogit.eu> 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, <kr...@kerogit.eu> 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 <je...@gmail.com>
> >> > wrote:
> >> >
> >> >> please prepare the first patches and I will handle them
> >> >>
> >> >> Best regards
> >> >> Alin J
> >> >>
> >> >> On Wed, 14 Oct 2026, 16:37 Alin Jerpelea, <je...@gmail.com>
> 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, <
> >> moura.fmo@gmail.com>
> >> >> > 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 <kr...@kerogit.eu> 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
> >> >> >> >
> >> >> >>
> >> >> >
> >> >>
> >>
>

Re: Looking for help with merging patches for AVR

Posted by kr...@kerogit.eu.
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, <kr...@kerogit.eu> 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 <je...@gmail.com>
>> > wrote:
>> >
>> >> please prepare the first patches and I will handle them
>> >>
>> >> Best regards
>> >> Alin J
>> >>
>> >> On Wed, 14 Oct 2026, 16:37 Alin Jerpelea, <je...@gmail.com> 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, <
>> moura.fmo@gmail.com>
>> >> > 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 <kr...@kerogit.eu> 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
>> >> >> >
>> >> >>
>> >> >
>> >>
>> 

Re: Looking for help with merging patches for AVR

Posted by Swatantra <ma...@gmail.com>.
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, <kr...@kerogit.eu> 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 <je...@gmail.com>
> > wrote:
> >
> >> please prepare the first patches and I will handle them
> >>
> >> Best regards
> >> Alin J
> >>
> >> On Wed, 14 Oct 2026, 16:37 Alin Jerpelea, <je...@gmail.com> 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, <
> moura.fmo@gmail.com>
> >> > 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 <kr...@kerogit.eu> 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
> >> >> >
> >> >>
> >> >
> >>
>

Re: Looking for help with merging patches for AVR

Posted by kr...@kerogit.eu.
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 <je...@gmail.com> 
> wrote:
> 
>> please prepare the first patches and I will handle them
>> 
>> Best regards
>> Alin J
>> 
>> On Wed, 14 Oct 2026, 16:37 Alin Jerpelea, <je...@gmail.com> 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, <mo...@gmail.com>
>> > 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 <kr...@kerogit.eu> 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
>> >> >
>> >>
>> >
>> 

Re: Looking for help with merging patches for AVR

Posted by Abhishek Mishra <mi...@gmail.com>.
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 <je...@gmail.com> wrote:

> please prepare the first patches and I will handle them
>
> Best regards
> Alin J
>
> On Wed, 14 Oct 2026, 16:37 Alin Jerpelea, <je...@gmail.com> 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, <mo...@gmail.com>
> > 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 <kr...@kerogit.eu> 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
> >> >
> >>
> >
>

Re: Looking for help with merging patches for AVR

Posted by Alin Jerpelea <je...@gmail.com>.
please prepare the first patches and I will handle them

Best regards
Alin J

On Wed, 14 Oct 2026, 16:37 Alin Jerpelea, <je...@gmail.com> 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, <mo...@gmail.com>
> 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 <kr...@kerogit.eu> 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
>> >
>>
>

Re: Looking for help with merging patches for AVR

Posted by Alin Jerpelea <je...@gmail.com>.
Hi,

I can lend a hand tomorrow

Thanks for your message

Best regards
Alin

On Wed, 14 Oct 2026, 11:18 Felipe Moura Oliveira, <mo...@gmail.com>
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 <kr...@kerogit.eu> 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
> >
>

Re: Looking for help with merging patches for AVR

Posted by Swatantra <ma...@gmail.com>.
Hi Kerogit,

I would be glad to help you shepherd this series into Apache NuttX via
GitHub PRs.

I have fetched your avrdx_ws2812_upstream branch from git.kerogit.eu and
reviewed the commit history. Breaking it into the 4 logical steps you
outlined makes complete sense and will make reviews smooth for maintainers.

We can start with Step 1 (the 13.0 -> 13.1 build fixes, USART cleanups, and
regression notes). Whenever you are ready, please share the PR description
and notes for Step 1, and I will create the PR branch, verify nxstyle
checks, ensure your author/DCO attribution is preserved.

Best regards,
Swatantra Yadav

On Wed, 14 Oct 2026 at 15:48, Felipe Moura Oliveira <mo...@gmail.com>
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 <kr...@kerogit.eu> 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
> >
>

Re: Looking for help with merging patches for AVR

Posted by Felipe Moura Oliveira <mo...@gmail.com>.
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 <kr...@kerogit.eu> 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
>