Commit 9c446288 authored by Nuno Sa's avatar Nuno Sa Committed by Jonathan Cameron

iio: buffer-dmaengine: export buffer alloc and free functions

Export iio_dmaengine_buffer_free() and iio_dmaengine_buffer_alloc().
This is in preparation of introducing IIO backends support. This will
allow us to allocate a buffer and control it's lifetime from a device
different from the one holding the DMA firmware properties. Effectively,
in this case the struct device holding the firmware information about
the DMA channels is not the same as iio_dev->dev.parent (typical case).

While at it, namespace the buffer-dmaengine exports and update the
current user of these buffers.
Signed-off-by: default avatarNuno Sa <nuno.sa@analog.com>
Link: https://lore.kernel.org/r/20240210-iio-backend-v11-4-f5242a5fb42a@analog.comReviewed-by: default avatarAndy Shevchenko <andy.shevchenko@gmail.com>
Signed-off-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
parent 4b0b159a
...@@ -447,3 +447,4 @@ module_platform_driver(adi_axi_adc_driver); ...@@ -447,3 +447,4 @@ module_platform_driver(adi_axi_adc_driver);
MODULE_AUTHOR("Michael Hennerich <michael.hennerich@analog.com>"); MODULE_AUTHOR("Michael Hennerich <michael.hennerich@analog.com>");
MODULE_DESCRIPTION("Analog Devices Generic AXI ADC IP core driver"); MODULE_DESCRIPTION("Analog Devices Generic AXI ADC IP core driver");
MODULE_LICENSE("GPL v2"); MODULE_LICENSE("GPL v2");
MODULE_IMPORT_NS(IIO_DMAENGINE_BUFFER);
...@@ -159,7 +159,7 @@ static const struct iio_dev_attr *iio_dmaengine_buffer_attrs[] = { ...@@ -159,7 +159,7 @@ static const struct iio_dev_attr *iio_dmaengine_buffer_attrs[] = {
* Once done using the buffer iio_dmaengine_buffer_free() should be used to * Once done using the buffer iio_dmaengine_buffer_free() should be used to
* release it. * release it.
*/ */
static struct iio_buffer *iio_dmaengine_buffer_alloc(struct device *dev, struct iio_buffer *iio_dmaengine_buffer_alloc(struct device *dev,
const char *channel) const char *channel)
{ {
struct dmaengine_buffer *dmaengine_buffer; struct dmaengine_buffer *dmaengine_buffer;
...@@ -210,6 +210,7 @@ static struct iio_buffer *iio_dmaengine_buffer_alloc(struct device *dev, ...@@ -210,6 +210,7 @@ static struct iio_buffer *iio_dmaengine_buffer_alloc(struct device *dev,
kfree(dmaengine_buffer); kfree(dmaengine_buffer);
return ERR_PTR(ret); return ERR_PTR(ret);
} }
EXPORT_SYMBOL_NS_GPL(iio_dmaengine_buffer_alloc, IIO_DMAENGINE_BUFFER);
/** /**
* iio_dmaengine_buffer_free() - Free dmaengine buffer * iio_dmaengine_buffer_free() - Free dmaengine buffer
...@@ -217,7 +218,7 @@ static struct iio_buffer *iio_dmaengine_buffer_alloc(struct device *dev, ...@@ -217,7 +218,7 @@ static struct iio_buffer *iio_dmaengine_buffer_alloc(struct device *dev,
* *
* Frees a buffer previously allocated with iio_dmaengine_buffer_alloc(). * Frees a buffer previously allocated with iio_dmaengine_buffer_alloc().
*/ */
static void iio_dmaengine_buffer_free(struct iio_buffer *buffer) void iio_dmaengine_buffer_free(struct iio_buffer *buffer)
{ {
struct dmaengine_buffer *dmaengine_buffer = struct dmaengine_buffer *dmaengine_buffer =
iio_buffer_to_dmaengine_buffer(buffer); iio_buffer_to_dmaengine_buffer(buffer);
...@@ -227,6 +228,7 @@ static void iio_dmaengine_buffer_free(struct iio_buffer *buffer) ...@@ -227,6 +228,7 @@ static void iio_dmaengine_buffer_free(struct iio_buffer *buffer)
iio_buffer_put(buffer); iio_buffer_put(buffer);
} }
EXPORT_SYMBOL_NS_GPL(iio_dmaengine_buffer_free, IIO_DMAENGINE_BUFFER);
static void __devm_iio_dmaengine_buffer_free(void *buffer) static void __devm_iio_dmaengine_buffer_free(void *buffer)
{ {
...@@ -287,7 +289,7 @@ int devm_iio_dmaengine_buffer_setup(struct device *dev, ...@@ -287,7 +289,7 @@ int devm_iio_dmaengine_buffer_setup(struct device *dev,
return iio_device_attach_buffer(indio_dev, buffer); return iio_device_attach_buffer(indio_dev, buffer);
} }
EXPORT_SYMBOL_GPL(devm_iio_dmaengine_buffer_setup); EXPORT_SYMBOL_NS_GPL(devm_iio_dmaengine_buffer_setup, IIO_DMAENGINE_BUFFER);
MODULE_AUTHOR("Lars-Peter Clausen <lars@metafoo.de>"); MODULE_AUTHOR("Lars-Peter Clausen <lars@metafoo.de>");
MODULE_DESCRIPTION("DMA buffer for the IIO framework"); MODULE_DESCRIPTION("DMA buffer for the IIO framework");
......
...@@ -10,6 +10,9 @@ ...@@ -10,6 +10,9 @@
struct iio_dev; struct iio_dev;
struct device; struct device;
struct iio_buffer *iio_dmaengine_buffer_alloc(struct device *dev,
const char *channel);
void iio_dmaengine_buffer_free(struct iio_buffer *buffer);
int devm_iio_dmaengine_buffer_setup(struct device *dev, int devm_iio_dmaengine_buffer_setup(struct device *dev,
struct iio_dev *indio_dev, struct iio_dev *indio_dev,
const char *channel); const char *channel);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment