On Fri, Aug 05, 2022 at 11:53:21PM +0300, Andy Shevchenko wrote: > Currently regmap MMIO is inconsistent with IO accessors. I.e. > the Big Endian counterparts are using ioreadXXbe() / iowriteXXbe() > which are not clean implementations of readXXbe(). Besides that > some users may use regmap MMIO for IO ports, and this can be done > by assigning ioreadXX()/iowriteXX() and their Big Endian counterparts > to the regmap context. Have you validated that nothing is relying on whatever the problem is with using the io versions? > That said, reimplement current Big Endian MMIO accessors by replacing > ioread()/iowrite() with respective read()/write() and swab() calls. > While at it, add IO port support with a corresponding flag added. This should be a separate patch. > + if (config->io_port) { > + ctx->reg_read = regmap_mmio_ioread8; > + ctx->reg_write = regmap_mmio_iowrite8; > + } else if (config->use_relaxed_mmio) { If these options are mutually exclusive we should validate that they are not simultaneously set.