spi: rockchip: add SPI slave support

1.Register SPI slave by spi_alloc_slave
2.Enable SPI slave mode by
    1) add "spi-slave" property to SPI node
    2) enable CONFIG_SPI_SLAVE

Change-Id: I8c44010627b03713468ec2b5ba1a0d95747a1cc6
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
This commit is contained in:
Jon Lin
2020-01-07 16:38:21 +08:00
committed by Tao Huang
parent 942738ec26
commit 87ec170ff7

View File

@@ -549,6 +549,8 @@ static void rockchip_spi_config(struct rockchip_spi *rs)
cr0 |= (1 << CR0_FBM_OFFSET);/* First Bit Mode */
cr0 |= (rs->tmode << CR0_XFM_OFFSET);
cr0 |= (rs->type << CR0_FRF_OFFSET);
if (spi_controller_is_slave(rs->master))
cr0 |= (CR0_OPM_SLAVE << CR0_OPM_OFFSET);
if (rs->use_dma) {
if (rs->tx)
@@ -710,7 +712,12 @@ static int rockchip_spi_probe(struct platform_device *pdev)
struct resource *mem;
u32 rsd_nsecs;
master = spi_alloc_master(&pdev->dev, sizeof(struct rockchip_spi));
if (of_property_read_bool(pdev->dev.of_node, "spi-slave"))
master = spi_alloc_slave(&pdev->dev,
sizeof(struct rockchip_spi));
else
master = spi_alloc_master(&pdev->dev,
sizeof(struct rockchip_spi));
if (!master)
return -ENOMEM;