mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-09 05:31:17 -04:00
iio: imu: adis_buffer: Add buffer setup API with buffer attributes
Add new API called devm_adis_setup_buffer_and_trigger_with_attrs() which also takes buffer attributes as a parameter. Rewrite devm_adis_setup_buffer_and_trigger() implementation such that it calls devm_adis_setup_buffer_and_trigger_with_attrs() with buffer attributes parameter NULL Reviewed-by: Nuno Sa <nuno.sa@analog.com> Signed-off-by: Ramona Gradinariu <ramona.bolboaca13@gmail.com> Link: https://lore.kernel.org/r/20240527142618.275897-4-ramona.bolboaca13@gmail.com Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
This commit is contained in:
committed by
Jonathan Cameron
parent
64c65fac71
commit
b6e6aca6c2
@@ -175,31 +175,36 @@ static void adis_buffer_cleanup(void *arg)
|
||||
}
|
||||
|
||||
/**
|
||||
* devm_adis_setup_buffer_and_trigger() - Sets up buffer and trigger for
|
||||
* the managed adis device
|
||||
* devm_adis_setup_buffer_and_trigger_with_attrs() - Sets up buffer and trigger
|
||||
* for the managed adis device with buffer attributes.
|
||||
* @adis: The adis device
|
||||
* @indio_dev: The IIO device
|
||||
* @trigger_handler: Optional trigger handler, may be NULL.
|
||||
* @trigger_handler: Trigger handler: should handle the buffer readings.
|
||||
* @ops: Optional buffer setup functions, may be NULL.
|
||||
* @buffer_attrs: Extra buffer attributes.
|
||||
*
|
||||
* Returns 0 on success, a negative error code otherwise.
|
||||
*
|
||||
* This function sets up the buffer and trigger for a adis devices. If
|
||||
* 'trigger_handler' is NULL the default trigger handler will be used. The
|
||||
* default trigger handler will simply read the registers assigned to the
|
||||
* currently active channels.
|
||||
* This function sets up the buffer (with buffer setup functions and extra
|
||||
* buffer attributes) and trigger for a adis devices with buffer attributes.
|
||||
*/
|
||||
int
|
||||
devm_adis_setup_buffer_and_trigger(struct adis *adis, struct iio_dev *indio_dev,
|
||||
irq_handler_t trigger_handler)
|
||||
devm_adis_setup_buffer_and_trigger_with_attrs(struct adis *adis, struct iio_dev *indio_dev,
|
||||
irq_handler_t trigger_handler,
|
||||
const struct iio_buffer_setup_ops *ops,
|
||||
const struct iio_dev_attr **buffer_attrs)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if (!trigger_handler)
|
||||
trigger_handler = adis_trigger_handler;
|
||||
|
||||
ret = devm_iio_triggered_buffer_setup(&adis->spi->dev, indio_dev,
|
||||
&iio_pollfunc_store_time,
|
||||
trigger_handler, NULL);
|
||||
ret = devm_iio_triggered_buffer_setup_ext(&adis->spi->dev, indio_dev,
|
||||
&iio_pollfunc_store_time,
|
||||
trigger_handler,
|
||||
IIO_BUFFER_DIRECTION_IN,
|
||||
ops,
|
||||
buffer_attrs);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@@ -212,5 +217,4 @@ devm_adis_setup_buffer_and_trigger(struct adis *adis, struct iio_dev *indio_dev,
|
||||
return devm_add_action_or_reset(&adis->spi->dev, adis_buffer_cleanup,
|
||||
adis);
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(devm_adis_setup_buffer_and_trigger, IIO_ADISLIB);
|
||||
|
||||
EXPORT_SYMBOL_NS_GPL(devm_adis_setup_buffer_and_trigger_with_attrs, IIO_ADISLIB);
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
#define ADIS_REG_PAGE_ID 0x00
|
||||
|
||||
struct adis;
|
||||
struct iio_dev_attr;
|
||||
|
||||
/**
|
||||
* struct adis_timeouts - ADIS chip variant timeouts
|
||||
@@ -515,11 +516,19 @@ int adis_single_conversion(struct iio_dev *indio_dev,
|
||||
#define ADIS_ROT_CHAN(mod, addr, si, info_sep, info_all, bits) \
|
||||
ADIS_MOD_CHAN(IIO_ROT, mod, addr, si, info_sep, info_all, bits)
|
||||
|
||||
#define devm_adis_setup_buffer_and_trigger(adis, indio_dev, trigger_handler) \
|
||||
devm_adis_setup_buffer_and_trigger_with_attrs((adis), (indio_dev), \
|
||||
(trigger_handler), NULL, \
|
||||
NULL)
|
||||
|
||||
#ifdef CONFIG_IIO_ADIS_LIB_BUFFER
|
||||
|
||||
int
|
||||
devm_adis_setup_buffer_and_trigger(struct adis *adis, struct iio_dev *indio_dev,
|
||||
irq_handler_t trigger_handler);
|
||||
devm_adis_setup_buffer_and_trigger_with_attrs(struct adis *adis,
|
||||
struct iio_dev *indio_dev,
|
||||
irq_handler_t trigger_handler,
|
||||
const struct iio_buffer_setup_ops *ops,
|
||||
const struct iio_dev_attr **buffer_attrs);
|
||||
|
||||
int devm_adis_probe_trigger(struct adis *adis, struct iio_dev *indio_dev);
|
||||
|
||||
@@ -529,8 +538,11 @@ int adis_update_scan_mode(struct iio_dev *indio_dev,
|
||||
#else /* CONFIG_IIO_BUFFER */
|
||||
|
||||
static inline int
|
||||
devm_adis_setup_buffer_and_trigger(struct adis *adis, struct iio_dev *indio_dev,
|
||||
irq_handler_t trigger_handler)
|
||||
devm_adis_setup_buffer_and_trigger_with_attrs(struct adis *adis,
|
||||
struct iio_dev *indio_dev,
|
||||
irq_handler_t trigger_handler,
|
||||
const struct iio_buffer_setup_ops *ops,
|
||||
const struct iio_dev_attr **buffer_attrs)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user