staging:iio:trigger push functions that don't need to be generaly available down into the core.
Signed-off-by: Jonathan Cameron <jic23@cam.ac.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
cb6c89a094
commit
208b813c04
@@ -215,6 +215,26 @@ void iio_trigger_notify_done(struct iio_trigger *trig)
|
|||||||
EXPORT_SYMBOL(iio_trigger_notify_done);
|
EXPORT_SYMBOL(iio_trigger_notify_done);
|
||||||
|
|
||||||
/* Trigger Consumer related functions */
|
/* Trigger Consumer related functions */
|
||||||
|
static int iio_trigger_get_irq(struct iio_trigger *trig)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
mutex_lock(&trig->pool_lock);
|
||||||
|
ret = bitmap_find_free_region(trig->pool,
|
||||||
|
CONFIG_IIO_CONSUMERS_PER_TRIGGER,
|
||||||
|
ilog2(1));
|
||||||
|
mutex_unlock(&trig->pool_lock);
|
||||||
|
if (ret >= 0)
|
||||||
|
ret += trig->subirq_base;
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void iio_trigger_put_irq(struct iio_trigger *trig, int irq)
|
||||||
|
{
|
||||||
|
mutex_lock(&trig->pool_lock);
|
||||||
|
clear_bit(irq - trig->subirq_base, trig->pool);
|
||||||
|
mutex_unlock(&trig->pool_lock);
|
||||||
|
}
|
||||||
|
|
||||||
/* Complexity in here. With certain triggers (datardy) an acknowledgement
|
/* Complexity in here. With certain triggers (datardy) an acknowledgement
|
||||||
* may be needed if the pollfuncs do not include the data read for the
|
* may be needed if the pollfuncs do not include the data read for the
|
||||||
@@ -223,8 +243,8 @@ EXPORT_SYMBOL(iio_trigger_notify_done);
|
|||||||
* the relevant function is in there may be the best option.
|
* the relevant function is in there may be the best option.
|
||||||
*/
|
*/
|
||||||
/* Worth protecting against double additions?*/
|
/* Worth protecting against double additions?*/
|
||||||
int iio_trigger_attach_poll_func(struct iio_trigger *trig,
|
static int iio_trigger_attach_poll_func(struct iio_trigger *trig,
|
||||||
struct iio_poll_func *pf)
|
struct iio_poll_func *pf)
|
||||||
{
|
{
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
bool notinuse
|
bool notinuse
|
||||||
@@ -241,10 +261,9 @@ int iio_trigger_attach_poll_func(struct iio_trigger *trig,
|
|||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(iio_trigger_attach_poll_func);
|
|
||||||
|
|
||||||
int iio_trigger_dettach_poll_func(struct iio_trigger *trig,
|
static int iio_trigger_dettach_poll_func(struct iio_trigger *trig,
|
||||||
struct iio_poll_func *pf)
|
struct iio_poll_func *pf)
|
||||||
{
|
{
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
bool no_other_users
|
bool no_other_users
|
||||||
@@ -263,7 +282,6 @@ int iio_trigger_dettach_poll_func(struct iio_trigger *trig,
|
|||||||
error_ret:
|
error_ret:
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(iio_trigger_dettach_poll_func);
|
|
||||||
|
|
||||||
irqreturn_t iio_pollfunc_store_time(int irq, void *p)
|
irqreturn_t iio_pollfunc_store_time(int irq, void *p)
|
||||||
{
|
{
|
||||||
|
@@ -103,23 +103,6 @@ int iio_trigger_register(struct iio_trigger *trig_info);
|
|||||||
**/
|
**/
|
||||||
void iio_trigger_unregister(struct iio_trigger *trig_info);
|
void iio_trigger_unregister(struct iio_trigger *trig_info);
|
||||||
|
|
||||||
/**
|
|
||||||
* iio_trigger_attach_poll_func() - add a function pair to be run on trigger
|
|
||||||
* @trig: trigger to which the function pair are being added
|
|
||||||
* @pf: poll function pair
|
|
||||||
**/
|
|
||||||
int iio_trigger_attach_poll_func(struct iio_trigger *trig,
|
|
||||||
struct iio_poll_func *pf);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* iio_trigger_dettach_poll_func() - remove function pair from those to be
|
|
||||||
* run on trigger
|
|
||||||
* @trig: trigger from which the function is being removed
|
|
||||||
* @pf: poll function pair
|
|
||||||
**/
|
|
||||||
int iio_trigger_dettach_poll_func(struct iio_trigger *trig,
|
|
||||||
struct iio_poll_func *pf);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* iio_trigger_poll() - called on a trigger occurring
|
* iio_trigger_poll() - called on a trigger occurring
|
||||||
* @trig: trigger which occurred
|
* @trig: trigger which occurred
|
||||||
@@ -129,30 +112,8 @@ int iio_trigger_dettach_poll_func(struct iio_trigger *trig,
|
|||||||
void iio_trigger_poll(struct iio_trigger *trig, s64 time);
|
void iio_trigger_poll(struct iio_trigger *trig, s64 time);
|
||||||
void iio_trigger_poll_chained(struct iio_trigger *trig, s64 time);
|
void iio_trigger_poll_chained(struct iio_trigger *trig, s64 time);
|
||||||
|
|
||||||
|
|
||||||
irqreturn_t iio_trigger_generic_data_rdy_poll(int irq, void *private);
|
irqreturn_t iio_trigger_generic_data_rdy_poll(int irq, void *private);
|
||||||
|
|
||||||
static inline int iio_trigger_get_irq(struct iio_trigger *trig)
|
|
||||||
{
|
|
||||||
int ret;
|
|
||||||
mutex_lock(&trig->pool_lock);
|
|
||||||
ret = bitmap_find_free_region(trig->pool,
|
|
||||||
CONFIG_IIO_CONSUMERS_PER_TRIGGER,
|
|
||||||
ilog2(1));
|
|
||||||
mutex_unlock(&trig->pool_lock);
|
|
||||||
if (ret >= 0)
|
|
||||||
ret += trig->subirq_base;
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
};
|
|
||||||
|
|
||||||
static inline void iio_trigger_put_irq(struct iio_trigger *trig, int irq)
|
|
||||||
{
|
|
||||||
mutex_lock(&trig->pool_lock);
|
|
||||||
clear_bit(irq - trig->subirq_base, trig->pool);
|
|
||||||
mutex_unlock(&trig->pool_lock);
|
|
||||||
};
|
|
||||||
|
|
||||||
struct iio_trigger *iio_allocate_trigger(const char *fmt, ...)
|
struct iio_trigger *iio_allocate_trigger(const char *fmt, ...)
|
||||||
__attribute__((format(printf, 1, 2)));
|
__attribute__((format(printf, 1, 2)));
|
||||||
void iio_free_trigger(struct iio_trigger *trig);
|
void iio_free_trigger(struct iio_trigger *trig);
|
||||||
|
Reference in New Issue
Block a user