diff options
Diffstat (limited to 'drivers/staging/meilhaus/me1600_ao.c')
-rw-r--r-- | drivers/staging/meilhaus/me1600_ao.c | 70 |
1 files changed, 27 insertions, 43 deletions
diff --git a/drivers/staging/meilhaus/me1600_ao.c b/drivers/staging/meilhaus/me1600_ao.c index d127c6b00307..12e3c70e982a 100644 --- a/drivers/staging/meilhaus/me1600_ao.c +++ b/drivers/staging/meilhaus/me1600_ao.c @@ -36,7 +36,7 @@ #include <linux/slab.h> #include <linux/spinlock.h> -#include <asm/io.h> +#include <linux/io.h> #include <linux/types.h> #include <linux/sched.h> @@ -55,36 +55,32 @@ static void me1600_ao_destructor(struct me_subdevice *subdevice); -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20) -static void me1600_ao_work_control_task(void *subdevice); -#else static void me1600_ao_work_control_task(struct work_struct *work); -#endif -static int me1600_ao_io_reset_subdevice(me_subdevice_t * subdevice, +static int me1600_ao_io_reset_subdevice(me_subdevice_t *subdevice, struct file *filep, int flags); -static int me1600_ao_io_single_config(me_subdevice_t * subdevice, +static int me1600_ao_io_single_config(me_subdevice_t *subdevice, struct file *filep, int channel, int single_config, int ref, int trig_chan, int trig_type, int trig_edge, int flags); -static int me1600_ao_io_single_read(me_subdevice_t * subdevice, +static int me1600_ao_io_single_read(me_subdevice_t *subdevice, struct file *filep, int channel, int *value, int time_out, int flags); -static int me1600_ao_io_single_write(me_subdevice_t * subdevice, +static int me1600_ao_io_single_write(me_subdevice_t *subdevice, struct file *filep, int channel, int value, int time_out, int flags); -static int me1600_ao_query_number_channels(me_subdevice_t * subdevice, +static int me1600_ao_query_number_channels(me_subdevice_t *subdevice, int *number); -static int me1600_ao_query_subdevice_type(me_subdevice_t * subdevice, int *type, +static int me1600_ao_query_subdevice_type(me_subdevice_t *subdevice, int *type, int *subtype); -static int me1600_ao_query_subdevice_caps(me_subdevice_t * subdevice, +static int me1600_ao_query_subdevice_caps(me_subdevice_t *subdevice, int *caps); -static int me1600_ao_query_range_by_min_max(me_subdevice_t * subdevice, +static int me1600_ao_query_range_by_min_max(me_subdevice_t *subdevice, int unit, int *min, int *max, int *maxdata, int *range); -static int me1600_ao_query_number_ranges(me_subdevice_t * subdevice, int unit, +static int me1600_ao_query_number_ranges(me_subdevice_t *subdevice, int unit, int *count); -static int me1600_ao_query_range_info(me_subdevice_t * subdevice, int range, +static int me1600_ao_query_range_info(me_subdevice_t *subdevice, int range, int *unit, int *min, int *max, int *maxdata); @@ -94,10 +90,9 @@ static int me1600_ao_query_range_info(me_subdevice_t * subdevice, int range, me1600_ao_subdevice_t *me1600_ao_constructor(uint32_t reg_base, unsigned int ao_idx, int curr, - spinlock_t * config_regs_lock, - spinlock_t * ao_shadows_lock, - me1600_ao_shadow_t * - ao_regs_shadows, + spinlock_t *config_regs_lock, + spinlock_t *ao_shadows_lock, + me1600_ao_shadow_t *ao_regs_shadows, struct workqueue_struct *me1600_wq) { me1600_ao_subdevice_t *subdevice; @@ -200,13 +195,8 @@ me1600_ao_subdevice_t *me1600_ao_constructor(uint32_t reg_base, subdevice->me1600_workqueue = me1600_wq; /* workqueue API changed in kernel 2.6.20 */ -#if ( LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20) ) - INIT_WORK(&subdevice->ao_control_task, me1600_ao_work_control_task, - (void *)subdevice); -#else INIT_DELAYED_WORK(&subdevice->ao_control_task, me1600_ao_work_control_task); -#endif return subdevice; } @@ -231,7 +221,7 @@ static void me1600_ao_destructor(struct me_subdevice *subdevice) } } -static int me1600_ao_io_reset_subdevice(me_subdevice_t * subdevice, +static int me1600_ao_io_reset_subdevice(me_subdevice_t *subdevice, struct file *filep, int flags) { me1600_ao_subdevice_t *instance; @@ -313,7 +303,7 @@ static int me1600_ao_io_reset_subdevice(me_subdevice_t * subdevice, return ME_ERRNO_SUCCESS; } -static int me1600_ao_io_single_config(me_subdevice_t * subdevice, +static int me1600_ao_io_single_config(me_subdevice_t *subdevice, struct file *filep, int channel, int single_config, @@ -545,7 +535,7 @@ static int me1600_ao_io_single_config(me_subdevice_t * subdevice, return ME_ERRNO_SUCCESS; } -static int me1600_ao_io_single_read(me_subdevice_t * subdevice, +static int me1600_ao_io_single_read(me_subdevice_t *subdevice, struct file *filep, int channel, int *value, int time_out, int flags) @@ -612,7 +602,7 @@ static int me1600_ao_io_single_read(me_subdevice_t * subdevice, return err; } -static int me1600_ao_io_single_write(me_subdevice_t * subdevice, +static int me1600_ao_io_single_write(me_subdevice_t *subdevice, struct file *filep, int channel, int value, int time_out, int flags) @@ -756,7 +746,9 @@ static int me1600_ao_io_single_write(me_subdevice_t * subdevice, queue_delayed_work(instance->me1600_workqueue, &instance->ao_control_task, 1); - if ((!flags & ME_IO_SINGLE_TYPE_WRITE_NONBLOCKING) && ((instance->ao_regs_shadows)->trigger & instance->ao_idx)) { //Blocking mode. Wait for software trigger. + if ((!(flags & ME_IO_SINGLE_TYPE_WRITE_NONBLOCKING)) && + ((instance->ao_regs_shadows)->trigger & instance->ao_idx)) { + /* Blocking mode. Wait for software trigger. */ if (time_out) { delay = (time_out * HZ) / 1000; if (delay == 0) @@ -793,7 +785,7 @@ static int me1600_ao_io_single_write(me_subdevice_t * subdevice, return err; } -static int me1600_ao_query_number_channels(me_subdevice_t * subdevice, +static int me1600_ao_query_number_channels(me_subdevice_t *subdevice, int *number) { me1600_ao_subdevice_t *instance; @@ -805,7 +797,7 @@ static int me1600_ao_query_number_channels(me_subdevice_t * subdevice, return ME_ERRNO_SUCCESS; } -static int me1600_ao_query_subdevice_type(me_subdevice_t * subdevice, int *type, +static int me1600_ao_query_subdevice_type(me_subdevice_t *subdevice, int *type, int *subtype) { me1600_ao_subdevice_t *instance; @@ -818,14 +810,14 @@ static int me1600_ao_query_subdevice_type(me_subdevice_t * subdevice, int *type, return ME_ERRNO_SUCCESS; } -static int me1600_ao_query_subdevice_caps(me_subdevice_t * subdevice, int *caps) +static int me1600_ao_query_subdevice_caps(me_subdevice_t *subdevice, int *caps) { PDEBUG("executed.\n"); *caps = ME_CAPS_AO_TRIG_SYNCHRONOUS; return ME_ERRNO_SUCCESS; } -static int me1600_ao_query_range_by_min_max(me_subdevice_t * subdevice, +static int me1600_ao_query_range_by_min_max(me_subdevice_t *subdevice, int unit, int *min, int *max, int *maxdata, int *range) @@ -903,7 +895,7 @@ static int me1600_ao_query_range_by_min_max(me_subdevice_t * subdevice, return ME_ERRNO_SUCCESS; } -static int me1600_ao_query_number_ranges(me_subdevice_t * subdevice, +static int me1600_ao_query_number_ranges(me_subdevice_t *subdevice, int unit, int *count) { me1600_ao_subdevice_t *instance; @@ -928,7 +920,7 @@ static int me1600_ao_query_number_ranges(me_subdevice_t * subdevice, return ME_ERRNO_SUCCESS; } -static int me1600_ao_query_range_info(me_subdevice_t * subdevice, +static int me1600_ao_query_range_info(me_subdevice_t *subdevice, int range, int *unit, int *min, int *max, int *maxdata) @@ -960,22 +952,14 @@ static int me1600_ao_query_range_info(me_subdevice_t * subdevice, return ME_ERRNO_SUCCESS; } -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20) -static void me1600_ao_work_control_task(void *subdevice) -#else static void me1600_ao_work_control_task(struct work_struct *work) -#endif { me1600_ao_subdevice_t *instance; int reschedule = 1; int signaling = 0; -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20) - instance = (me1600_ao_subdevice_t *) subdevice; -#else instance = container_of((void *)work, me1600_ao_subdevice_t, ao_control_task); -#endif PINFO("<%s: %ld> executed. idx=%d\n", __func__, jiffies, instance->ao_idx); |