]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
rust: io: introduce `write_reg` and `LocatedRegister`
authorAlexandre Courbot <acourbot@nvidia.com>
Sat, 14 Mar 2026 01:06:18 +0000 (10:06 +0900)
committerDanilo Krummrich <dakr@kernel.org>
Tue, 17 Mar 2026 19:04:11 +0000 (20:04 +0100)
commit9a52a8f5ed97d47c9641248874f4c6a78e136d97
tree79fb6405ab453eafcd4e129e56c7840aa402377d
parent20ba6a1dbcb957152f6d858015b3a3311dd6da49
rust: io: introduce `write_reg` and `LocatedRegister`

Some I/O types, like fixed address registers, carry their location
alongside their values. For these types, the regular `Io::write` method
can lead into repeating the location information twice: once to provide
the location itself, another time to build the value.

We are also considering supporting making all register values carry
their full location information for convenience and safety.

Add a new `Io::write_reg` method that takes a single argument
implementing `LocatedRegister`, a trait that decomposes implementors
into a `(location, value)` tuple. This allows write operations on fixed
offset registers to be done while specifying their name only once.

Suggested-by: Danilo Krummrich <dakr@kernel.org>
Link: https://lore.kernel.org/all/DH0XBLXZD81K.22SWIZ1ZAOW1@kernel.org/
Signed-off-by: Alexandre Courbot <acourbot@nvidia.com>
Link: https://patch.msgid.link/20260314-register-v9-8-86805b2f7e9d@nvidia.com
[ Replace FIFO with VERSION register in the examples. - Danilo ]
Signed-off-by: Danilo Krummrich <dakr@kernel.org>
rust/kernel/io.rs
rust/kernel/io/register.rs