| /* SPDX-License-Identifier: GPL-2.0-only */ | |
| /* | |
| * Copyright (C) 2024 Analog Devices Inc. | |
| * Copyright (C) 2024 BayLibre, SAS | |
| */ | |
| #ifndef __LINUX_SPI_OFFLOAD_PROVIDER_H | |
| #define __LINUX_SPI_OFFLOAD_PROVIDER_H | |
| #include <linux/module.h> | |
| #include <linux/spi/offload/types.h> | |
| #include <linux/types.h> | |
| MODULE_IMPORT_NS("SPI_OFFLOAD"); | |
| struct device; | |
| struct spi_offload_trigger; | |
| struct spi_offload *devm_spi_offload_alloc(struct device *dev, size_t priv_size); | |
| struct spi_offload_trigger_ops { | |
| bool (*match)(struct spi_offload_trigger *trigger, | |
| enum spi_offload_trigger_type type, u64 *args, u32 nargs); | |
| int (*request)(struct spi_offload_trigger *trigger, | |
| enum spi_offload_trigger_type type, u64 *args, u32 nargs); | |
| void (*release)(struct spi_offload_trigger *trigger); | |
| int (*validate)(struct spi_offload_trigger *trigger, | |
| struct spi_offload_trigger_config *config); | |
| int (*enable)(struct spi_offload_trigger *trigger, | |
| struct spi_offload_trigger_config *config); | |
| void (*disable)(struct spi_offload_trigger *trigger); | |
| }; | |
| struct spi_offload_trigger_info { | |
| /** @fwnode: Provider fwnode, used to match to consumer. */ | |
| struct fwnode_handle *fwnode; | |
| /** @ops: Provider-specific callbacks. */ | |
| const struct spi_offload_trigger_ops *ops; | |
| /** Provider-specific state to be used in callbacks. */ | |
| void *priv; | |
| }; | |
| int devm_spi_offload_trigger_register(struct device *dev, | |
| struct spi_offload_trigger_info *info); | |
| void *spi_offload_trigger_get_priv(struct spi_offload_trigger *trigger); | |
| #endif /* __LINUX_SPI_OFFLOAD_PROVIDER_H */ |