mirror of
https://gitee.com/bianbu-linux/linux-6.6
synced 2025-07-10 00:33:22 -04:00
This change adds a parameter to the {devm_}iio_triggered_buffer_setup() functions to assign the extra sysfs buffer attributes that are typically assigned via iio_buffer_set_attrs(). The functions also get renamed to iio_triggered_buffer_setup_ext() & devm_iio_triggered_buffer_setup_ext(). For backwards compatibility the old {devm_}iio_triggered_buffer_setup() functions are now macros wrap the new (renamed) functions with NULL for the buffer attrs. The aim is to remove iio_buffer_set_attrs(), so in the iio_triggered_buffer_setup_ext() function the attributes are assigned directly to 'buffer->attrs'. When adding multiple IIO buffers per IIO device, it can be pretty cumbersome to first allocate a set of buffers, then to dig them out of IIO to assign extra attributes (with iio_buffer_set_attrs()). Naturally, the best way would be to provide them at allocation time, which is what this change does. At this moment, buffers allocated with {devm_}iio_triggered_buffer_setup() are the only ones in mainline IIO to call iio_buffer_set_attrs(). Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com> Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com> Link: https://lore.kernel.org/r/20200929125949.69934-4-alexandru.ardelean@analog.com Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
31 lines
1.1 KiB
C
31 lines
1.1 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef _LINUX_IIO_TRIGGERED_BUFFER_H_
|
|
#define _LINUX_IIO_TRIGGERED_BUFFER_H_
|
|
|
|
#include <linux/interrupt.h>
|
|
|
|
struct attribute;
|
|
struct iio_dev;
|
|
struct iio_buffer_setup_ops;
|
|
|
|
int iio_triggered_buffer_setup_ext(struct iio_dev *indio_dev,
|
|
irqreturn_t (*h)(int irq, void *p),
|
|
irqreturn_t (*thread)(int irq, void *p),
|
|
const struct iio_buffer_setup_ops *setup_ops,
|
|
const struct attribute **buffer_attrs);
|
|
void iio_triggered_buffer_cleanup(struct iio_dev *indio_dev);
|
|
|
|
#define iio_triggered_buffer_setup(indio_dev, h, thread, setup_ops) \
|
|
iio_triggered_buffer_setup_ext((indio_dev), (h), (thread), (setup_ops), NULL)
|
|
|
|
int devm_iio_triggered_buffer_setup_ext(struct device *dev,
|
|
struct iio_dev *indio_dev,
|
|
irqreturn_t (*h)(int irq, void *p),
|
|
irqreturn_t (*thread)(int irq, void *p),
|
|
const struct iio_buffer_setup_ops *ops,
|
|
const struct attribute **buffer_attrs);
|
|
|
|
#define devm_iio_triggered_buffer_setup(dev, indio_dev, h, thread, setup_ops) \
|
|
devm_iio_triggered_buffer_setup_ext((dev), (indio_dev), (h), (thread), (setup_ops), NULL)
|
|
|
|
#endif
|