Re: [RFC v7 0/1] leds: asus-aura-scsi: Add ASUS Aura RGB LED driver for ROG NVMe enclosures
From: Liang Haowen
Date: Fri Sep 25 2026 - 08:22:56 EST
Hi Marco,
I went through your SCSI version in PR #17 against what the hardware
told us while developing this series. The class layout fits the
device well: the ENE mode register is the hardware effect offload,
and direct streaming as table write + apply-without-save matches
what the controller does.
A few things our hardware testing can add:
- ene_write() maps the caller's buffer with blk_rq_map_kern(); your
call sites pass stack buffers (colors[12] in direct_write). That
is the VMAP_STACK DMA issue Lee caught in my v8: the payload needs
a DMA-safe buffer in the device struct.
- asus_aura_brightness_set_blocking() will never run on the current
LED core: brightness_set_blocking is superseded by the fast-path
brightness_set there, verified with a test module on 7.2. The
callback to use is brightness_set plus deferred work.
- The firmware effect numbers from register probing here are
1 Static, 3 Strobe, 4 the rainbow flow (all verified on device);
2 looks like Breathing but was not confirmed. Your mapping sends
Spectrum Cycle to 4 and Rainbow to 5: on this enclosure 4 is the
rainbow flow, so those two need on-device confirmation, and
mode 0 for OFF is plausible but unverified.
- If the class core serializes the ops with led_access, sysfs ops
cannot race each other, but trigger events reach the LED core
without that lock, so a trigger-driven brightness update can
still interleave with an ops sequence. The device ignores a
sequence that loses its leading MODE write; one work item owning
the sequence, like in this series, closes that too.
The 12-byte block write to both colour tables in one go is verified
working, so your direct_write shape is fine once the buffer is
DMA-safe.
Whatever survives your rebase, the verified SCSI core in this series
is yours to reuse; happy to rebase my side onto the class once it
settles.