Skip to content

Commit 13a9693

Browse files
Jon Linbroonie
authored andcommitted
spi: rockchip: Support 64-location deep FIFOs
The FIFO depth of SPI V2 is 64 instead of 32, add support for it. Signed-off-by: Jon Lin <jon.lin@rock-chips.com> Tested-by: Emil Renner Berthing <kernel@esmil.dk> Reviewed-by: Emil Renner Berthing <kernel@esmil.dk> Link: https://lore.kernel.org/r/20200723004356.6390-2-jon.lin@rock-chips.com Signed-off-by: Mark Brown <broonie@kernel.org>
1 parent 4d9ca63 commit 13a9693

1 file changed

Lines changed: 14 additions & 11 deletions

File tree

drivers/spi/spi-rockchip.c

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,9 @@
3939
#define ROCKCHIP_SPI_RISR 0x0034
4040
#define ROCKCHIP_SPI_ICR 0x0038
4141
#define ROCKCHIP_SPI_DMACR 0x003c
42-
#define ROCKCHIP_SPI_DMATDLR 0x0040
43-
#define ROCKCHIP_SPI_DMARDLR 0x0044
42+
#define ROCKCHIP_SPI_DMATDLR 0x0040
43+
#define ROCKCHIP_SPI_DMARDLR 0x0044
44+
#define ROCKCHIP_SPI_VERSION 0x0048
4445
#define ROCKCHIP_SPI_TXDR 0x0400
4546
#define ROCKCHIP_SPI_RXDR 0x0800
4647

@@ -156,6 +157,8 @@
156157
#define ROCKCHIP_SPI_MAX_TRANLEN 0xffff
157158

158159
#define ROCKCHIP_SPI_MAX_CS_NUM 2
160+
#define ROCKCHIP_SPI_VER2_TYPE1 0x05EC0002
161+
#define ROCKCHIP_SPI_VER2_TYPE2 0x00110002
159162

160163
struct rockchip_spi {
161164
struct device *dev;
@@ -206,17 +209,17 @@ static inline void wait_for_idle(struct rockchip_spi *rs)
206209

207210
static u32 get_fifo_len(struct rockchip_spi *rs)
208211
{
209-
u32 fifo;
212+
u32 ver;
210213

211-
for (fifo = 2; fifo < 32; fifo++) {
212-
writel_relaxed(fifo, rs->regs + ROCKCHIP_SPI_TXFTLR);
213-
if (fifo != readl_relaxed(rs->regs + ROCKCHIP_SPI_TXFTLR))
214-
break;
215-
}
216-
217-
writel_relaxed(0, rs->regs + ROCKCHIP_SPI_TXFTLR);
214+
ver = readl_relaxed(rs->regs + ROCKCHIP_SPI_VERSION);
218215

219-
return (fifo == 31) ? 0 : fifo;
216+
switch (ver) {
217+
case ROCKCHIP_SPI_VER2_TYPE1:
218+
case ROCKCHIP_SPI_VER2_TYPE2:
219+
return 64;
220+
default:
221+
return 32;
222+
}
220223
}
221224

222225
static void rockchip_spi_set_cs(struct spi_device *spi, bool enable)

0 commit comments

Comments
 (0)