On Tue, 15 Jan 2019 at 09:49, Jae Hyun Yoo <jae.hyun.yoo@xxxxxxxxxxxxxxx> wrote: > >> + /** > >> + * We check that the regmap works on this very first access, > >> + * but as this is an MMIO-backed regmap, subsequent regmap > >> + * access is not going to fail and we skip error checks from > >> + * this point. > > > > Why do you use a regmap for this driver? AFAICT it has exclusive > > ownership over the register range it uses, which is sometimes a reason > > to use a regmap over a mmio region. > > > > I'm not sure if you've ever disassembled drivers/base/regmap/regmap.o, > > but if you do you will find that a single mmio read turns into > > hundreds of instructions. > > > > No specific reason. regmap makes some overhead as you mentioned but it > also provides some advantages on access simplification, endianness > handling and register dump at run time. I would not insist using of > regmap if you prefer using of raw readl and writel. Do you want replace > regmap with readl and writel in this driver? I think that would be best. You raise some good points about the regmap API, and you're not alone in using it for these reasons. We should look in to providing a suitable API without the overhead, or making regmap more efficient for the mmio case.