Skip to content

Commit

Permalink
spi: Increase imx51 ecspi burst length based on transfer length
Browse files Browse the repository at this point in the history
IMX51 supports 4096 bit burst lengths. Using the spi transfer length
instead of bits_per_word increases performance significantly.

Signed-off-by: Stefan Moring <stefan.moring@technolution.nl>
Link: https://lore.kernel.org/r/20230628125406.237949-1-stefan.moring@technolution.nl
Signed-off-by: Mark Brown <broonie@kernel.org>
  • Loading branch information
Stefan Moring authored and Mark Brown committed Jul 9, 2023
1 parent fee6816 commit 15a6af9
Showing 1 changed file with 8 additions and 3 deletions.
11 changes: 8 additions & 3 deletions drivers/spi/spi-imx.c
Original file line number Diff line number Diff line change
Expand Up @@ -659,9 +659,13 @@ static int mx51_ecspi_prepare_transfer(struct spi_imx_data *spi_imx,
if (spi_imx->slave_mode && is_imx53_ecspi(spi_imx))
ctrl |= (spi_imx->slave_burst * 8 - 1)
<< MX51_ECSPI_CTRL_BL_OFFSET;
else
ctrl |= (spi_imx->bits_per_word - 1)
<< MX51_ECSPI_CTRL_BL_OFFSET;
else {
if (spi_imx->count >= 512)
ctrl |= 0xFFF << MX51_ECSPI_CTRL_BL_OFFSET;
else
ctrl |= (spi_imx->count*8 - 1)
<< MX51_ECSPI_CTRL_BL_OFFSET;
}

/* set clock speed */
ctrl &= ~(0xf << MX51_ECSPI_CTRL_POSTDIV_OFFSET |
Expand Down Expand Up @@ -1258,6 +1262,7 @@ static int spi_imx_setupxfer(struct spi_device *spi,
spi_imx->spi_bus_clk = t->speed_hz;

spi_imx->bits_per_word = t->bits_per_word;
spi_imx->count = t->len;

/*
* Initialize the functions for transfer. To transfer non byte-aligned
Expand Down

0 comments on commit 15a6af9

Please sign in to comment.