Re: [PATCH v4 06/16] rust: io: register: allow explicit base type specification
From: Alexandre Courbot
Date: Thu Sep 03 2026 - 08:25:35 EST
On Wed Sep 2, 2026 at 1:50 AM JST, Gary Guo wrote:
> Currently registers work for all untyped I/O regions, which is not ideal.
> It allows registers defined for device A to work for another device B and
> there is no safeguarding at all.
>
> All users of the `register!` macro know what type it will be operating on,
> and that type is consistent across the driver. Therefore, add a `base`
> parameter to `register!`.
>
> Currently this parameter is unused in the generated code; it will be used
> when all users of `register!` is converted to gain the parameter.
>
> Signed-off-by: Gary Guo <gary@xxxxxxxxxxx>
Reviewed-by: Alexandre Courbot <acourbot@xxxxxxxxxx>
With one nittynit below.
> diff --git a/rust/macros/io/register.rs b/rust/macros/io/register.rs
> index 9b92c8099edd..851335792a46 100644
> --- a/rust/macros/io/register.rs
> +++ b/rust/macros/io/register.rs
> @@ -29,6 +29,7 @@
> };
>
> mod kw {
> + syn::custom_keyword!(base);
> syn::custom_keyword!(stride);
> }
>
> @@ -152,22 +153,42 @@ fn parse(input: syn::parse::ParseStream<'_>) -> Result<Self> {
> }
>
> pub(crate) struct RegDef {
> + #[allow(unused)]
Now that the field is used, this can go away (also generally I believe
we prefer to use `expect` to catch such cases).