[PATCH v2 3/6] memory: renesas-rpc-if: Consolidate XSPI_CDTBUF0 updates in write path
Prabhakar <[email protected]> Mon, 27 Jul 2026 11:34:46 +0100
| Newsgroups | org.kernel.vger.linux-renesas-soc,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
From: Lad Prabhakar <[email protected]> Program the XSPI_CDTBUF0 TRTYPE, DATASIZE and ADDSIZE fields with a single regmap_update_bits() call in the RPCIF_DATA_OUT transfer path. The existing code updates these fields through three separate read-modify-write operations even though all values are known before the transfer request is issued. Combine the updates into a single register access to reduce overhead and simplify the configuration sequence. Signed-off-by: Lad Prabhakar <[email protected]> --- drivers/memory/renesas-rpc-if.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/drivers/memory/renesas-rpc-if.c b/drivers/memory/renesas-rpc-if.c index 50294e5d2bf5..e406afc42616 100644 --- a/drivers/memory/renesas-rpc-if.c +++ b/drivers/memory/renesas-rpc-if.c @@ -660,17 +660,12 @@ static int xspi_manual_xfer_impl(struct rpcif_priv *xspi) u32 bytes_left = xspi->xferlen - pos; u32 nbytes, data[2], *p = data; - regmap_update_bits(xspi->regmap, XSPI_CDTBUF0, - XSPI_CDTBUF_TRTYPE, XSPI_CDTBUF_TRTYPE); - nbytes = bytes_left >= max ? max : bytes_left; regmap_update_bits(xspi->regmap, XSPI_CDTBUF0, - XSPI_CDTBUF_DATASIZE(0xf), - XSPI_CDTBUF_DATASIZE(nbytes)); - - regmap_update_bits(xspi->regmap, XSPI_CDTBUF0, + XSPI_CDTBUF_TRTYPE | XSPI_CDTBUF_DATASIZE(0xf) | XSPI_CDTBUF_ADDSIZE(0x7), + XSPI_CDTBUF_TRTYPE | XSPI_CDTBUF_DATASIZE(nbytes) | XSPI_CDTBUF_ADDSIZE(xspi->addr_nbytes)); memcpy(data, xspi->buffer + pos, nbytes); -- 2.54.0