Re: Placement of ASUS Aura and platform/x86 ASUS files relocation

NB Group <[email protected]> Wed, 5 Aug 2026 11:55:38 +0800
Newsgroups org.kernel.vger.platform-driver-x86,org.kernel.vger.linux-kernel
Message-ID <CAKSmRq3cW0j_TwA5Gp4ESFK3MMi-TBAsoG5wDZwjHfK3Z9HEyw@mail.gmail.com>
> If the SCSI commands are used to issue i2c/smbus requests, then you should
> also place the i2c controller driver under /drivers/i2c/busses.


Hi Armin, Denis,

Armin, agreed on drivers/leds/ for the LED side. The enclosure isn't a platform
device and the interface is the multicolor LED sysfs, so that's the right home
for it. SCSI transport stays in drivers/scsi/.

On whether the SCSI commands wrap i2c/smbus: they don't, at least not on the
ROG STRIX Arion I reversed. The ENE controller speaks a flat register protocol
over the vendor CDB (0xec 'A' 'S' <reg_hi> <reg_lo> ... <arg_count>), with
registers for mode (0x8021), per-LED colours (0x8160), apply (0x80a0) and so on.
No i2c slave addressing shows up in the vendor CDBs, no sign of tunneling, so
there's nothing for an i2c-bus driver to model. A SCSI transport helper
in drivers/scsi/ feeding an Aura LED driver in drivers/leds/ is the shape
that matches the hardware.

I've got a working prototype that picks the enclosure up via a SCSI bus notifier
and exposes the multicolor LED; haven't posted it yet. I'll split it the way
above and send it for review.

One thing worth flagging on the transport, because it dictates how the helper
gets written. scsi_execute_cmd() sizes the CDB via COMMAND_SIZE(opcode), i.e.
scsi_command_size_tbl[(opcode >> 5) & 7], which is 10 for 0xec (group 7). The
ENE CDB is 16 bytes with arg_count in cdb[13], and the execute path does
memcpy(cmnd, cmd, cmd_len), so cdb[13] is never copied and the device just
ignores the write. I end up building the block request by hand and forcing
cmd_len=16. Anyone writing a driver that sends a vendor CDB whose real length
doesn't match COMMAND_SIZE(opcode) is going to hit the same thing.

Liang Haowen