On Sat, 2 Feb 2019 08:44:27 +0000 <Tudor.Ambarus@xxxxxxxxxxxxx> wrote: > On 02/02/2019 09:11 AM, Boris Brezillon wrote: > > On Sat, 2 Feb 2019 04:07:19 +0000 > > <Tudor.Ambarus@xxxxxxxxxxxxx> wrote: > > > >> From: Tudor Ambarus <tudor.ambarus@xxxxxxxxxxxxx> > >> > >> The wrappers hid that the accesses are relaxed. Drop them. > >> > >> Suggested-by: Boris Brezillon <bbrezillon@xxxxxxxxxx> > >> Signed-off-by: Tudor Ambarus <tudor.ambarus@xxxxxxxxxxxxx> > >> --- > >> v3: no change > >> v2: new patch > >> > >> drivers/spi/atmel-quadspi.c | 47 +++++++++++++++++++-------------------------- > >> 1 file changed, 20 insertions(+), 27 deletions(-) > >> > >> diff --git a/drivers/spi/atmel-quadspi.c b/drivers/spi/atmel-quadspi.c > >> index feeddcb25e1f..131374db0db4 100644 > >> --- a/drivers/spi/atmel-quadspi.c > >> +++ b/drivers/spi/atmel-quadspi.c > >> @@ -175,17 +175,6 @@ static const struct qspi_mode sama5d2_qspi_modes[] = { > >> { 4, 4, 4, QSPI_IFR_WIDTH_QUAD_CMD }, > >> }; > >> > >> -/* Register access functions */ > >> -static inline u32 qspi_readl(struct atmel_qspi *aq, u32 reg) > >> -{ > >> - return readl_relaxed(aq->regs + reg); > >> -} > >> - > >> -static inline void qspi_writel(struct atmel_qspi *aq, u32 reg, u32 value) > >> -{ > >> - writel_relaxed(value, aq->regs + reg); > >> -} > >> - > >> static inline bool is_compatible(const struct spi_mem_op *op, > >> const struct qspi_mode *mode) > >> { > >> @@ -229,6 +218,7 @@ static bool atmel_qspi_supports_op(struct spi_mem *mem, > >> static int atmel_qspi_exec_op(struct spi_mem *mem, const struct spi_mem_op *op) > >> { > >> struct atmel_qspi *aq = spi_controller_get_devdata(mem->spi->master); > >> + void __iomem *base = aq->regs; > > > > Can we name this variable regs instead of base or even get rid of it > > and dereference aq->regs in the xxx_relaxed() calls (doesn't look like > > the lines would be over 80 chars even when doing that). With this > > addressed, you can add: > > > > Reviewed-by: Boris Brezillon <bbrezillon@xxxxxxxxxx> > > I chose to introduce the "base" variable when I have at least 2 dereferences in > a function, as an optimization. In exec_op() for example, there are 6 > dereferences of aq->reqs. Why do you prefer keeping aq->regs? I tend to not add local variables unless they help improve readability or optimize things. In this case, I'd expect the compiler to be smart enough to detect that aq->reqs is used several times and store it in a register. When it comes to readability, I don't think it improve things, but that's probably a matter of taste.