diff options
author | Amit Kumar Mahapatra <amit.kumar-mahapatra@amd.com> | 2024-06-17 17:38:37 +0200 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2024-06-19 14:54:17 +0200 |
commit | 78b05172b42d14a4c6fc6b75b31590b8977900dc (patch) | |
tree | 05859d726f887508b1baa523061f36b3cd0aac02 /drivers/spi/spi-cadence.c | |
parent | spi: cs42l43: Refactor accessing the SDCA extension properties (diff) | |
download | linux-78b05172b42d14a4c6fc6b75b31590b8977900dc.tar.xz linux-78b05172b42d14a4c6fc6b75b31590b8977900dc.zip |
spi: spi-cadence: Enable spi refclk in slave mode
When spi-cadence is configured as a slave, it requires the SPI refclk to
detect the synchronization start condition while communicating with the
master. However, the spi-cadence driver never enables the SPI refclk in
slave mode, causing the refclk to remain disabled if the
"clk_ignore_unused" kernel parameter is not passed through bootargs.
As a result, the slave cannot detect data sent by the master, leading to
communication failure. Update driver to enable the SPI refclk in both
master and slave configurations.
Fixes: b1b90514eaa3 ("spi: spi-cadence: Add support for Slave mode")
Signed-off-by: Amit Kumar Mahapatra <amit.kumar-mahapatra@amd.com>
Link: https://msgid.link/r/20240617153837.29861-1-amit.kumar-mahapatra@amd.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to '')
-rw-r--r-- | drivers/spi/spi-cadence.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/drivers/spi/spi-cadence.c b/drivers/spi/spi-cadence.c index 4eacf3f6e031..e07e081de5ea 100644 --- a/drivers/spi/spi-cadence.c +++ b/drivers/spi/spi-cadence.c @@ -601,14 +601,14 @@ static int cdns_spi_probe(struct platform_device *pdev) reset_control_assert(xspi->rstc); reset_control_deassert(xspi->rstc); - if (!spi_controller_is_target(ctlr)) { - xspi->ref_clk = devm_clk_get_enabled(&pdev->dev, "ref_clk"); - if (IS_ERR(xspi->ref_clk)) { - dev_err(&pdev->dev, "ref_clk clock not found.\n"); - ret = PTR_ERR(xspi->ref_clk); - goto remove_ctlr; - } + xspi->ref_clk = devm_clk_get_enabled(&pdev->dev, "ref_clk"); + if (IS_ERR(xspi->ref_clk)) { + dev_err(&pdev->dev, "ref_clk clock not found.\n"); + ret = PTR_ERR(xspi->ref_clk); + goto remove_ctlr; + } + if (!spi_controller_is_target(ctlr)) { pm_runtime_use_autosuspend(&pdev->dev); pm_runtime_set_autosuspend_delay(&pdev->dev, SPI_AUTOSUSPEND_TIMEOUT); pm_runtime_get_noresume(&pdev->dev); |