]>
Commit | Line | Data |
---|---|---|
1143c684 SL |
1 | From a0e953123be456c103de492f5503f08011b3abb8 Mon Sep 17 00:00:00 2001 |
2 | From: Geert Uytterhoeven <geert+renesas@glider.be> | |
3 | Date: Tue, 12 Mar 2019 19:45:13 +0100 | |
4 | Subject: spi: rspi: Fix sequencer reset during initialization | |
5 | ||
6 | [ Upstream commit 26843bb128590edd7eba1ad7ce22e4b9f1066ce3 ] | |
7 | ||
8 | While the sequencer is reset after each SPI message since commit | |
9 | 880c6d114fd79a69 ("spi: rspi: Add support for Quad and Dual SPI | |
10 | Transfers on QSPI"), it was never reset for the first message, thus | |
11 | relying on reset state or bootloader settings. | |
12 | ||
13 | Fix this by initializing it explicitly during configuration. | |
14 | ||
15 | Fixes: 0b2182ddac4b8837 ("spi: add support for Renesas RSPI") | |
16 | Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> | |
17 | Signed-off-by: Mark Brown <broonie@kernel.org> | |
18 | Signed-off-by: Sasha Levin <sashal@kernel.org> | |
19 | --- | |
20 | drivers/spi/spi-rspi.c | 9 ++++++--- | |
21 | 1 file changed, 6 insertions(+), 3 deletions(-) | |
22 | ||
23 | diff --git a/drivers/spi/spi-rspi.c b/drivers/spi/spi-rspi.c | |
24 | index 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 | -- | |
58 | 2.20.1 | |
59 |