Skip to content

Commit b0b8d3a

Browse files
bijudasbroonie
authored andcommitted
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 <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Mark Brown <[email protected]>
1 parent 798dc3f commit b0b8d3a

File tree

1 file changed

+15
-1
lines changed

1 file changed

+15
-1
lines changed

drivers/spi/spi-rpc-if.c

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,19 @@ static bool rpcif_spi_mem_supports_op(struct spi_mem *mem,
7575
return true;
7676
}
7777

78+
static ssize_t xspi_spi_mem_dirmap_write(struct spi_mem_dirmap_desc *desc,
79+
u64 offs, size_t len, const void *buf)
80+
{
81+
struct rpcif *rpc = spi_controller_get_devdata(desc->mem->spi->controller);
82+
83+
if (offs + desc->info.offset + len > U32_MAX)
84+
return -EINVAL;
85+
86+
rpcif_spi_mem_prepare(desc->mem->spi, &desc->info.op_tmpl, &offs, &len);
87+
88+
return xspi_dirmap_write(rpc->dev, offs, len, buf);
89+
}
90+
7891
static ssize_t rpcif_spi_mem_dirmap_read(struct spi_mem_dirmap_desc *desc,
7992
u64 offs, size_t len, void *buf)
8093
{
@@ -103,7 +116,7 @@ static int rpcif_spi_mem_dirmap_create(struct spi_mem_dirmap_desc *desc)
103116
if (!rpc->dirmap)
104117
return -EOPNOTSUPP;
105118

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

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

130144
static int rpcif_spi_probe(struct platform_device *pdev)

0 commit comments

Comments
 (0)