mirror of
https://github.com/torvalds/linux.git
synced 2025-11-02 01:29:02 +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;
|
||||
}
|
||||
|
||||
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)
|
||||
|
|
|
|||
Loading…
Reference in a new issue