spi: add spi_optimize_message() APIs
authorDavid Lechner <dlechner@baylibre.com>
Mon, 19 Feb 2024 22:33:18 +0000 (16:33 -0600)
committerMark Brown <broonie@kernel.org>
Mon, 26 Feb 2024 13:55:10 +0000 (13:55 +0000)
commit7b1d87af14d9ae902ed0c5dc5fabf4eea5abdf02
tree5319e83d67cf538148391253ec7e7828fec4ece9
parent0f3841a5e1152eca1a58cfbd9ceb6d311aa7e647
spi: add spi_optimize_message() APIs

This adds a new spi_optimize_message() function that can be used to
optimize SPI messages that are used more than once. Peripheral drivers
that use the same message multiple times can use this API to perform SPI
message validation and controller-specific optimizations once and then
reuse the message while avoiding the overhead of revalidating the
message on each spi_(a)sync() call.

Internally, the SPI core will also call this function for each message
if the peripheral driver did not explicitly call it. This is done to so
that controller drivers don't have to have multiple code paths for
optimized and non-optimized messages.

A hook is provided for controller drivers to perform controller-specific
optimizations.

Suggested-by: Martin Sperl <kernel@martin.sperl.org>
Link: https://lore.kernel.org/linux-spi/39DEC004-10A1-47EF-9D77-276188D2580C@martin.sperl.org/
Signed-off-by: David Lechner <dlechner@baylibre.com>
Link: https://msgid.link/r/20240219-mainline-spi-precook-message-v2-1-4a762c6701b9@baylibre.com
Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi.c
include/linux/spi/spi.h