aboutsummaryrefslogtreecommitdiff
path: root/src/soc/rockchip/common/spi.c
diff options
context:
space:
mode:
authorJulius Werner <jwerner@chromium.org>2019-08-09 16:57:20 -0700
committerPatrick Georgi <pgeorgi@google.com>2019-08-22 10:36:31 +0000
commitc788ae328eb3708923623ff15a8aa27f686c84f8 (patch)
treef468c5b5b1418b010eed41d1689549d85845c983 /src/soc/rockchip/common/spi.c
parentdb7f6fb75282a305c2b0f5540d2f7be939f20dde (diff)
rockchip: Use new buffer_to/from_fifo32(_prefix) helpers
This patch changes the Rockchip SPI and I2C drivers to use the new buffer_from_fifo32()/buffer_to_fifo32_prefix() helpers when accessing their FIFOs (mostly just to demonstrate that/how the helpers work). Change-Id: Ifcf37c6d56f949f620c347df05439b05c3b8d77d Signed-off-by: Julius Werner <jwerner@chromium.org> Reviewed-on: https://review.coreboot.org/c/coreboot/+/34817 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Hung-Te Lin <hungte@chromium.org>
Diffstat (limited to 'src/soc/rockchip/common/spi.c')
-rw-r--r--src/soc/rockchip/common/spi.c20
1 files changed, 4 insertions, 16 deletions
diff --git a/src/soc/rockchip/common/spi.c b/src/soc/rockchip/common/spi.c
index 7bde4333ea..0307e24d35 100644
--- a/src/soc/rockchip/common/spi.c
+++ b/src/soc/rockchip/common/spi.c
@@ -221,23 +221,11 @@ static int do_xfer(struct rockchip_spi *regs, bool use_16bit, const void *dout,
* sychronizing with the SPI clock which is pretty slow.
*/
if (*bytes_in && !(sr & SR_RF_EMPT)) {
- int fifo = read32(&regs->rxflr) & RXFLR_LEVEL_MASK;
- int val;
-
- if (use_16bit)
- xferred = fifo * 2;
- else
- xferred = fifo;
+ int w = use_16bit ? 2 : 1;
+ xferred = (read32(&regs->rxflr) & RXFLR_LEVEL_MASK) * w;
+ buffer_from_fifo32(in_buf, xferred, &regs->rxdr, 0, w);
*bytes_in -= xferred;
- while (fifo-- > 0) {
- val = read32(&regs->rxdr);
- if (use_16bit) {
- *in_buf++ = val & 0xff;
- *in_buf++ = (val >> 8) & 0xff;
- } else {
- *in_buf++ = val & 0xff;
- }
- }
+ in_buf += xferred;
}
min_xfer -= xferred;