> Currently the `Io` trait exposes a bunch of untyped IO accesses, but if the > `Io` region itself is typed, then it might be weird to have > > let io: Mmio<u32> = /* ... */; > io.read8(1); > > while not unsound, it is surely strange. Thus, restrict the untyped methods > and also the register macro to `Region` type only. > > Implement it by adding a generic type to `IoLoc` indicating allowed base > types. This also paves the way to add typed register blocks in the future; > for example, we could use this mechanism to block driver A's `register!()` > generated macro from being used on driver B's MMIO. The same mechanism > could be used for relative IO registers. These are future opportunities, > and for now restrict everything to require `IoLoc<Region<SIZE>, _>`. > > Suggested-by: Alexandre Courbot <[email protected]> > Link: > https://lore.kernel.org/rust-for-linux/[email protected]/ > Reviewed-by: Alexandre Courbot <[email protected]> > 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=3
