Unverified Commit b0b8d3ae authored by Biju Das's avatar Biju Das Committed by Mark Brown
Browse files

spi: rpc-if: Add write support for memory-mapped area



Add write support for memory-mapped area as xSPI interface require
it.

Signed-off-by: default avatarBiju Das <biju.das.jz@bp.renesas.com>
Link: https://patch.msgid.link/20250424090000.136804-8-biju.das.jz@bp.renesas.com


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 798dc3f1
Loading
Loading
Loading
Loading
+15 −1
Original line number Diff line number Diff line
@@ -75,6 +75,19 @@ static bool rpcif_spi_mem_supports_op(struct spi_mem *mem,
	return true;
}

static ssize_t xspi_spi_mem_dirmap_write(struct spi_mem_dirmap_desc *desc,
					 u64 offs, size_t len, const void *buf)
{
	struct rpcif *rpc = spi_controller_get_devdata(desc->mem->spi->controller);

	if (offs + desc->info.offset + len > U32_MAX)
		return -EINVAL;

	rpcif_spi_mem_prepare(desc->mem->spi, &desc->info.op_tmpl, &offs, &len);

	return xspi_dirmap_write(rpc->dev, offs, len, buf);
}

static ssize_t rpcif_spi_mem_dirmap_read(struct spi_mem_dirmap_desc *desc,
					 u64 offs, size_t len, void *buf)
{
@@ -103,7 +116,7 @@ static int rpcif_spi_mem_dirmap_create(struct spi_mem_dirmap_desc *desc)
	if (!rpc->dirmap)
		return -EOPNOTSUPP;

	if (desc->info.op_tmpl.data.dir != SPI_MEM_DATA_IN)
	if (!rpc->xspi && desc->info.op_tmpl.data.dir != SPI_MEM_DATA_IN)
		return -EOPNOTSUPP;

	return 0;
@@ -125,6 +138,7 @@ static const struct spi_controller_mem_ops rpcif_spi_mem_ops = {
	.exec_op	= rpcif_spi_mem_exec_op,
	.dirmap_create	= rpcif_spi_mem_dirmap_create,
	.dirmap_read	= rpcif_spi_mem_dirmap_read,
	.dirmap_write	= xspi_spi_mem_dirmap_write,
};

static int rpcif_spi_probe(struct platform_device *pdev)