mbox series

[0/4] spi: axi-spi-engine: offload instruction optimization

Message ID 20250428-adi-main-v1-0-4b8a1b88a212@baylibre.com
Headers show
Series spi: axi-spi-engine: offload instruction optimization | expand

Message

David Lechner April 28, 2025, 8:58 p.m. UTC
In order to achieve a 4 MSPS rate on a 16-bit ADC with a 80 MHz SCLK
using the SPI offload feature of the AXI SPI Engine, we need to shave
off some time that is spent executing unnecessary instructions. There
are a few one-time setup instructions that can be moved so that they
execute only once when the SPI offload trigger is enabled rather than
repeating each time the offload is triggered. Additionally, a recent
change to the IP block allows dropping the SYNC instruction completely.
With these changes, we are left with only the 3 instructions that are
needed to to assert CS, transfer the data, and deassert CS. This makes
3 + 16 * 12.5 ns = 237.5 ns < 250 ns which is comfortably within the
available time period.

Signed-off-by: David Lechner <dlechner@baylibre.com>
---
David Lechner (4):
      spi: axi-spi-engine: wait for completion in setup
      spi: axi-spi-engine: don't repeat mode config for offload
      spi: axi-spi-engine: optimize bits_per_word for offload
      spi: axi-spi-engine: omit SYNC from offload instructions

 drivers/spi/spi-axi-spi-engine.c | 91 +++++++++++++++++++++++++++++++++++++---
 1 file changed, 85 insertions(+), 6 deletions(-)
---
base-commit: aba9c2fee9598d797034ffd289b0da770d9119e8
change-id: 20250331-adi-main-46863acfc540

Best regards,

Comments

Mark Brown April 30, 2025, 10:52 p.m. UTC | #1
On Mon, 28 Apr 2025 15:58:55 -0500, David Lechner wrote:
> In order to achieve a 4 MSPS rate on a 16-bit ADC with a 80 MHz SCLK
> using the SPI offload feature of the AXI SPI Engine, we need to shave
> off some time that is spent executing unnecessary instructions. There
> are a few one-time setup instructions that can be moved so that they
> execute only once when the SPI offload trigger is enabled rather than
> repeating each time the offload is triggered. Additionally, a recent
> change to the IP block allows dropping the SYNC instruction completely.
> With these changes, we are left with only the 3 instructions that are
> needed to to assert CS, transfer the data, and deassert CS. This makes
> 3 + 16 * 12.5 ns = 237.5 ns < 250 ns which is comfortably within the
> available time period.
> 
> [...]

Applied to

   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi.git for-next

Thanks!

[1/4] spi: axi-spi-engine: wait for completion in setup
      commit: 1d0ee0c9df31c9fd1e4f8d7e2464e36fbf6e3f75
[2/4] spi: axi-spi-engine: don't repeat mode config for offload
      commit: 8fc13b822c74a46587c0d8aae4ea0820b6bdb933
[3/4] spi: axi-spi-engine: optimize bits_per_word for offload
      commit: 087591c9e4fde86fe2971c34a2745c208103248e
[4/4] spi: axi-spi-engine: omit SYNC from offload instructions
      commit: e6702c44c2adb28b62f81de498e9b1e4562ce660

All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.

You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.

If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.

Please add any relevant lists and maintainers to the CCs when replying
to this mail.

Thanks,
Mark