]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blame - queue-4.4/spi-rspi-fix-sequencer-reset-during-initialization.patch
drop drm-rockchip-shutdown-drm-subsystem-on-shutdown.patch from 4.4.y and 4.9.y
[thirdparty/kernel/stable-queue.git] / queue-4.4 / spi-rspi-fix-sequencer-reset-during-initialization.patch
CommitLineData
1143c684
SL
1From a0e953123be456c103de492f5503f08011b3abb8 Mon Sep 17 00:00:00 2001
2From: Geert Uytterhoeven <geert+renesas@glider.be>
3Date: Tue, 12 Mar 2019 19:45:13 +0100
4Subject: spi: rspi: Fix sequencer reset during initialization
5
6[ Upstream commit 26843bb128590edd7eba1ad7ce22e4b9f1066ce3 ]
7
8While the sequencer is reset after each SPI message since commit
9880c6d114fd79a69 ("spi: rspi: Add support for Quad and Dual SPI
10Transfers on QSPI"), it was never reset for the first message, thus
11relying on reset state or bootloader settings.
12
13Fix this by initializing it explicitly during configuration.
14
15Fixes: 0b2182ddac4b8837 ("spi: add support for Renesas RSPI")
16Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
17Signed-off-by: Mark Brown <broonie@kernel.org>
18Signed-off-by: Sasha Levin <sashal@kernel.org>
19---
20 drivers/spi/spi-rspi.c | 9 ++++++---
21 1 file changed, 6 insertions(+), 3 deletions(-)
22
23diff --git a/drivers/spi/spi-rspi.c b/drivers/spi/spi-rspi.c
24index 9882d93e7566d..0556259377f77 100644
25--- a/drivers/spi/spi-rspi.c
26+++ b/drivers/spi/spi-rspi.c
27@@ -279,7 +279,8 @@ static int rspi_set_config_register(struct rspi_data *rspi, int access_size)
28 /* Sets parity, interrupt mask */
29 rspi_write8(rspi, 0x00, RSPI_SPCR2);
30
31- /* Sets SPCMD */
32+ /* Resets sequencer */
33+ rspi_write8(rspi, 0, RSPI_SPSCR);
34 rspi->spcmd |= SPCMD_SPB_8_TO_16(access_size);
35 rspi_write16(rspi, rspi->spcmd, RSPI_SPCMD0);
36
37@@ -313,7 +314,8 @@ static int rspi_rz_set_config_register(struct rspi_data *rspi, int access_size)
38 rspi_write8(rspi, 0x00, RSPI_SSLND);
39 rspi_write8(rspi, 0x00, RSPI_SPND);
40
41- /* Sets SPCMD */
42+ /* Resets sequencer */
43+ rspi_write8(rspi, 0, RSPI_SPSCR);
44 rspi->spcmd |= SPCMD_SPB_8_TO_16(access_size);
45 rspi_write16(rspi, rspi->spcmd, RSPI_SPCMD0);
46
47@@ -364,7 +366,8 @@ static int qspi_set_config_register(struct rspi_data *rspi, int access_size)
48 /* Sets buffer to allow normal operation */
49 rspi_write8(rspi, 0x00, QSPI_SPBFCR);
50
51- /* Sets SPCMD */
52+ /* Resets sequencer */
53+ rspi_write8(rspi, 0, RSPI_SPSCR);
54 rspi_write16(rspi, rspi->spcmd, RSPI_SPCMD0);
55
56 /* Enables SPI function in master mode */
57--
582.20.1
59