On Mon, 20 Mar 2023 17:16:14 -0500 Andrew Halaney wrote: > The next approach that was checked was to have a function pointer > embedded inside a structure that does the appropriate conversion based > on the variant that's in use. However, some of the function definitions > are like the following: > > void emac3_set_rx_ring_len(void __iomem *ioaddr, u32 len, u32 chan) I checked a couple of callbacks and they seem to all be called with priv->iomem as an arg, so there is no strong reason to pass iomem instead of priv / hw. Or at least not to pass both.. I think that's a better approach than adding the wrappers :( Are you familiar with coccinelle / spatch? It's often better than just regexps for refactoring, maybe it can help?