From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boris Brezillon Subject: Re: [PATCH v3 03/13] spi: atmel-quadspi: drop wrappers for iomem accesses Date: Sat, 2 Feb 2019 14:23:37 +0100 Message-ID: <20190202142337.3c51947e@bbrezillon> References: <20190202040653.1217-1-tudor.ambarus@microchip.com> <20190202040653.1217-4-tudor.ambarus@microchip.com> <20190202081111.0bbc4443@bbrezillon> <53c9f4b2-7022-e13d-65a4-2e1bed4d76b1@microchip.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Cc: mark.rutland@arm.com, devicetree@vger.kernel.org, alexandre.belloni@bootlin.com, broonie@kernel.org, linux-kernel@vger.kernel.org, robh+dt@kernel.org, Ludovic.Desroches@microchip.com, Cyrille.Pitchen@microchip.com, linux-mtd@lists.infradead.org, bugalski.piotr@gmail.com, linux-spi@vger.kernel.org, linux-arm-kernel@lists.infradead.org To: Return-path: In-Reply-To: <53c9f4b2-7022-e13d-65a4-2e1bed4d76b1@microchip.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.infradead.org List-Id: linux-spi.vger.kernel.org On Sat, 2 Feb 2019 08:44:27 +0000 wrote: > On 02/02/2019 09:11 AM, Boris Brezillon wrote: > > On Sat, 2 Feb 2019 04:07:19 +0000 > > wrote: > > > >> From: Tudor Ambarus > >> > >> The wrappers hid that the accesses are relaxed. Drop them. > >> > >> Suggested-by: Boris Brezillon > >> Signed-off-by: Tudor Ambarus > >> --- > >> 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 > > 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.