> For types that are layout-compatible with an I/O capable type, we would
> want the ability to use them directly for I/O operations. E.g.
> 
>     bitfield! {
>         pub struct Foo(u32) {
>             ...
>         }
>     }
> 
>     #[repr(C)]
>     struct Bar {
>         foo: Foo,
>     }
> 
>     let mmio: Mmio<'_, Bar> = ...;
>     io_read!(mmio, .foo)
> 
> Currently this feature is available from `register!()` macro but not
> otherwise available with `io_read!`, `io_write!`. Support this by adding a
> `IoRepr` type to denote the underlying I/O type to use for a specific type.
> 
> This makes the `IoLoc::IoType` and `Register::Storage` redundant; thus
> remove them; also convert register methods to use the `read_val` and
> `write_val` instead.
> 
> Signed-off-by: Gary Guo <[email protected]>

Sashiko has reviewed this patch and found no issues. It looks great!

-- 
Sashiko AI review ยท 
https://sashiko.dev/#/patchset/[email protected]?part=2

Reply via email to