mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git
synced 2026-05-01 15:15:19 -04:00
spi: add basic support for SPI offloading
Add the basic infrastructure to support SPI offload providers and consumers. SPI offloading is a feature that allows the SPI controller to perform transfers without any CPU intervention. This is useful, e.g. for high-speed data acquisition. SPI controllers with offload support need to implement the get_offload and put_offload callbacks and can use the devm_spi_offload_alloc() to allocate offload instances. SPI peripheral drivers will call devm_spi_offload_get() to get a reference to the matching offload instance. This offload instance can then be attached to a SPI message to request offloading that message. It is expected that SPI controllers with offload support will check for the offload instance in the SPI message in the ctlr->optimize_message() callback and handle it accordingly. CONFIG_SPI_OFFLOAD is intended to be a select-only option. Both consumer and provider drivers should `select SPI_OFFLOAD` in their Kconfig to ensure that the SPI core is built with offload support. Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> Reviewed-by: Nuno Sa <nuno.sa@analog.com> Signed-off-by: David Lechner <dlechner@baylibre.com> Link: https://patch.msgid.link/20250207-dlech-mainline-spi-engine-offload-2-v8-1-e48a489be48c@baylibre.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
committed by
Mark Brown
parent
2014c95afe
commit
8e02d18869
22
include/linux/spi/offload/consumer.h
Normal file
22
include/linux/spi/offload/consumer.h
Normal file
@@ -0,0 +1,22 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
/*
|
||||
* Copyright (C) 2024 Analog Devices Inc.
|
||||
* Copyright (C) 2024 BayLibre, SAS
|
||||
*/
|
||||
|
||||
#ifndef __LINUX_SPI_OFFLOAD_CONSUMER_H
|
||||
#define __LINUX_SPI_OFFLOAD_CONSUMER_H
|
||||
|
||||
#include <linux/module.h>
|
||||
#include <linux/spi/offload/types.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
MODULE_IMPORT_NS("SPI_OFFLOAD");
|
||||
|
||||
struct device;
|
||||
struct spi_device;
|
||||
|
||||
struct spi_offload *devm_spi_offload_get(struct device *dev, struct spi_device *spi,
|
||||
const struct spi_offload_config *config);
|
||||
|
||||
#endif /* __LINUX_SPI_OFFLOAD_CONSUMER_H */
|
||||
Reference in New Issue
Block a user