On Wed, Jul 02, 2014 at 09:01:49AM +0800, Huang Tao wrote: > 于 2014年07月02日 01:07, Mark Brown 写道: > >> +static inline void i2s_writel(struct rk_i2s_dev *i2s, u32 value, > >> > + unsigned int offset) > >> > +{ > >> > + writel_relaxed(value, i2s->regs + offset); > >> > +} > >> > + > >> > +static inline u32 i2s_readl(struct rk_i2s_dev *i2s, unsigned int offset) > >> > +{ > >> > + return readl_relaxed(i2s->regs + offset); > >> > +} > > Perhaps use regmap? The main advantage would be the debug > > infrastructure, though you could also use _update_bits() to reduce the > > amount of time spent locked. > Are you sure? This is a I2S driver, we can write the register directly, > do not through I2C or SPI bus. > Write a register is only a few instructions on ARM, but write through > regmap, it may take a long path. > I think it will just consume CPU power and make the whole thing more > complex. > Could you tell me what benefits we can get if use regmap? Or something I > just missing? The main thing is the diagnostic infrastructure, plus the cache if you find you need that for suspend and resume (which you didn't implement yet) - that's the main reason things use regmap for memory mapped registers. There is some overhead but it's not *that* big.
Attachment:
signature.asc
Description: Digital signature