Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

spi: rockchip: configure CTRLR1 according to size and data frame

CTRLR1 is number of data frames, when rx only.
When data frame is 8 bit, CTRLR1 is len-1.
When data frame is 16 bit, CTRLR1 is (len/2)-1.

Signed-off-by: Huibin Hong <huibin.hong@rock-chips.com>
Signed-off-by: Mark Brown <broonie@kernel.org>

authored by

Huibin Hong and committed by
Mark Brown
04b37d2d 6b860e69

+7 -1
+7 -1
drivers/spi/spi-rockchip.c
··· 568 568 569 569 writel_relaxed(cr0, rs->regs + ROCKCHIP_SPI_CTRLR0); 570 570 571 - writel_relaxed(rs->len - 1, rs->regs + ROCKCHIP_SPI_CTRLR1); 571 + if (rs->n_bytes == 1) 572 + writel_relaxed(rs->len - 1, rs->regs + ROCKCHIP_SPI_CTRLR1); 573 + else if (rs->n_bytes == 2) 574 + writel_relaxed((rs->len / 2) - 1, rs->regs + ROCKCHIP_SPI_CTRLR1); 575 + else 576 + writel_relaxed((rs->len * 2) - 1, rs->regs + ROCKCHIP_SPI_CTRLR1); 577 + 572 578 writel_relaxed(rs->fifo_len / 2 - 1, rs->regs + ROCKCHIP_SPI_TXFTLR); 573 579 writel_relaxed(rs->fifo_len / 2 - 1, rs->regs + ROCKCHIP_SPI_RXFTLR); 574 580