mirror of
https://github.com/torvalds/linux.git
synced 2025-11-04 10:40:15 +02:00
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: Biju Das <biju.das.jz@bp.renesas.com> Link: https://patch.msgid.link/20250424090000.136804-8-biju.das.jz@bp.renesas.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
798dc3f19c
commit
b0b8d3aead
1 changed files with 15 additions and 1 deletions
|
|
@ -75,6 +75,19 @@ static bool rpcif_spi_mem_supports_op(struct spi_mem *mem,
|
||||||
return true;
|
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,
|
static ssize_t rpcif_spi_mem_dirmap_read(struct spi_mem_dirmap_desc *desc,
|
||||||
u64 offs, size_t len, void *buf)
|
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)
|
if (!rpc->dirmap)
|
||||||
return -EOPNOTSUPP;
|
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 -EOPNOTSUPP;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
@ -125,6 +138,7 @@ static const struct spi_controller_mem_ops rpcif_spi_mem_ops = {
|
||||||
.exec_op = rpcif_spi_mem_exec_op,
|
.exec_op = rpcif_spi_mem_exec_op,
|
||||||
.dirmap_create = rpcif_spi_mem_dirmap_create,
|
.dirmap_create = rpcif_spi_mem_dirmap_create,
|
||||||
.dirmap_read = rpcif_spi_mem_dirmap_read,
|
.dirmap_read = rpcif_spi_mem_dirmap_read,
|
||||||
|
.dirmap_write = xspi_spi_mem_dirmap_write,
|
||||||
};
|
};
|
||||||
|
|
||||||
static int rpcif_spi_probe(struct platform_device *pdev)
|
static int rpcif_spi_probe(struct platform_device *pdev)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue