Commit 0a85b6f0 authored by Mithlesh Thukral's avatar Mithlesh Thukral Committed by Greg Kroah-Hartman
Browse files

Staging: Comedi: Lindent changes to comdi driver in staging tree



Lindent changes to comdi driver in staging tree.
This patch is followed by the checkpatch.pl error fixes.
Did not make them part of this patch as the patch size is already huge.

Signed-off-by: default avatarMithlesh Thukral <mithlesh@linsyssoft.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent df678568
Loading
Loading
Loading
Loading
+490 −512
Original line number Diff line number Diff line
@@ -202,8 +202,6 @@ extern "C" {
#define SDF_PWM_COUNTER SDF_MODE0	/* PWM can automatically switch off */
#define SDF_PWM_HBRIDGE SDF_MODE1	/* PWM is signed (H-bridge) */



/* subdevice types */

	enum comedi_subdevice_type {
@@ -383,7 +381,6 @@ struct comedi_krange {
		unsigned int flags;
	};


	struct comedi_subdinfo {
		unsigned int type;
		unsigned int n_chan;
@@ -497,15 +494,12 @@ enum i8254_mode {
		I8254_BINARY = 0
	};

static inline unsigned NI_USUAL_PFI_SELECT(unsigned pfi_channel)
{
	static inline unsigned NI_USUAL_PFI_SELECT(unsigned pfi_channel) {
		if (pfi_channel < 10)
			return 0x1 + pfi_channel;
		else
			return 0xb + pfi_channel;
}
static inline unsigned NI_USUAL_RTSI_SELECT(unsigned rtsi_channel)
{
	} static inline unsigned NI_USUAL_RTSI_SELECT(unsigned rtsi_channel) {
		if (rtsi_channel < 7)
			return 0xb + rtsi_channel;
		else
@@ -600,17 +594,14 @@ enum ni_gpct_clock_source_bits {
		NI_GPCT_PRESCALE_X8_CLOCK_SRC_BITS = 0x20000000,	/* divide source by 8 */
		NI_GPCT_INVERT_CLOCK_SRC_BIT = 0x80000000
	};
static inline unsigned NI_GPCT_SOURCE_PIN_CLOCK_SRC_BITS(unsigned n)
{
	static inline unsigned NI_GPCT_SOURCE_PIN_CLOCK_SRC_BITS(unsigned n) {
		/* NI 660x-specific */
		return 0x10 + n;
	}
static inline unsigned NI_GPCT_RTSI_CLOCK_SRC_BITS(unsigned n)
{
	static inline unsigned NI_GPCT_RTSI_CLOCK_SRC_BITS(unsigned n) {
		return 0x18 + n;
	}
static inline unsigned NI_GPCT_PFI_CLOCK_SRC_BITS(unsigned n)
{
	static inline unsigned NI_GPCT_PFI_CLOCK_SRC_BITS(unsigned n) {
		/* no pfi on NI 660x */
		return 0x20 + n;
	}
@@ -638,20 +629,16 @@ enum ni_gpct_gate_select {
		   we should add them here with an offset of 0x300 when known. */
		NI_GPCT_DISABLED_GATE_SELECT = 0x8000,
	};
static inline unsigned NI_GPCT_GATE_PIN_GATE_SELECT(unsigned n)
{
	static inline unsigned NI_GPCT_GATE_PIN_GATE_SELECT(unsigned n) {
		return 0x102 + n;
	}
static inline unsigned NI_GPCT_RTSI_GATE_SELECT(unsigned n)
{
	static inline unsigned NI_GPCT_RTSI_GATE_SELECT(unsigned n) {
		return NI_USUAL_RTSI_SELECT(n);
	}
static inline unsigned NI_GPCT_PFI_GATE_SELECT(unsigned n)
{
	static inline unsigned NI_GPCT_PFI_GATE_SELECT(unsigned n) {
		return NI_USUAL_PFI_SELECT(n);
	}
static inline unsigned NI_GPCT_UP_DOWN_PIN_GATE_SELECT(unsigned n)
{
	static inline unsigned NI_GPCT_UP_DOWN_PIN_GATE_SELECT(unsigned n) {
		return 0x202 + n;
	}

@@ -667,8 +654,7 @@ enum ni_gpct_other_select {
		/* Still unknown, probably only need NI_GPCT_PFI_OTHER_SELECT */
		NI_GPCT_DISABLED_OTHER_SELECT = 0x8000,
	};
static inline unsigned NI_GPCT_PFI_OTHER_SELECT(unsigned n)
{
	static inline unsigned NI_GPCT_PFI_OTHER_SELECT(unsigned n) {
		return NI_USUAL_PFI_SELECT(n);
	}

@@ -717,8 +703,7 @@ enum ni_mio_clock_source {
		NI_MIO_PLL_PXI10_CLOCK = 3,
		NI_MIO_PLL_RTSI0_CLOCK = 4
	};
static inline unsigned NI_MIO_PLL_RTSI_CLOCK(unsigned rtsi_channel)
{
	static inline unsigned NI_MIO_PLL_RTSI_CLOCK(unsigned rtsi_channel) {
		return NI_MIO_PLL_RTSI0_CLOCK + rtsi_channel;
	}

@@ -738,8 +723,7 @@ enum ni_rtsi_routing {
		NI_RTSI_OUTPUT_RTSI_OSC = 12	/* pre-m-series always have RTSI clock
						   on line 7 */
	};
static inline unsigned NI_RTSI_OUTPUT_RTSI_BRD(unsigned n)
{
	static inline unsigned NI_RTSI_OUTPUT_RTSI_BRD(unsigned n) {
		return NI_RTSI_OUTPUT_RTSI_BRD_0 + n;
	}

@@ -774,8 +758,7 @@ enum ni_pfi_routing {
		NI_PFI_OUTPUT_CDI_SAMPLE = 29,
		NI_PFI_OUTPUT_CDO_UPDATE = 30
	};
static inline unsigned NI_PFI_OUTPUT_RTSI(unsigned rtsi_channel)
{
	static inline unsigned NI_PFI_OUTPUT_RTSI(unsigned rtsi_channel) {
		return NI_PFI_OUTPUT_RTSI0 + rtsi_channel;
	}

@@ -793,12 +776,10 @@ enum ni_660x_pfi_routing {
/* NI External Trigger lines.  These values are not arbitrary, but are related
 * to the bits required to program the board (offset by 1 for historical
 * reasons). */
static inline unsigned NI_EXT_PFI(unsigned pfi_channel)
{
	static inline unsigned NI_EXT_PFI(unsigned pfi_channel) {
		return NI_USUAL_PFI_SELECT(pfi_channel) - 1;
	}
static inline unsigned NI_EXT_RTSI(unsigned rtsi_channel)
{
	static inline unsigned NI_EXT_RTSI(unsigned rtsi_channel) {
		return NI_USUAL_RTSI_SELECT(rtsi_channel) - 1;
	}

@@ -824,24 +805,21 @@ enum ni_m_series_cdio_scan_begin_src {
		NI_CDIO_SCAN_BEGIN_SRC_FREQ_OUT = 32,
		NI_CDIO_SCAN_BEGIN_SRC_DIO_CHANGE_DETECT_IRQ = 33
	};
static inline unsigned NI_CDIO_SCAN_BEGIN_SRC_PFI(unsigned pfi_channel)
{
	static inline unsigned NI_CDIO_SCAN_BEGIN_SRC_PFI(unsigned pfi_channel) {
		return NI_USUAL_PFI_SELECT(pfi_channel);
	}
static inline unsigned NI_CDIO_SCAN_BEGIN_SRC_RTSI(unsigned rtsi_channel)
{
	static inline unsigned NI_CDIO_SCAN_BEGIN_SRC_RTSI(unsigned
							   rtsi_channel) {
		return NI_USUAL_RTSI_SELECT(rtsi_channel);
	}

/* scan_begin_src for scan_begin_arg==TRIG_EXT with analog output command on NI
 * boards.  These scan begin sources can also be bitwise-or'd with CR_INVERT to
 * change polarity. */
static inline unsigned NI_AO_SCAN_BEGIN_SRC_PFI(unsigned pfi_channel)
{
	static inline unsigned NI_AO_SCAN_BEGIN_SRC_PFI(unsigned pfi_channel) {
		return NI_USUAL_PFI_SELECT(pfi_channel);
	}
static inline unsigned NI_AO_SCAN_BEGIN_SRC_RTSI(unsigned rtsi_channel)
{
	static inline unsigned NI_AO_SCAN_BEGIN_SRC_RTSI(unsigned rtsi_channel) {
		return NI_USUAL_RTSI_SELECT(rtsi_channel);
	}

+57 −58
Original line number Diff line number Diff line
@@ -136,8 +136,7 @@ static int compat_chaninfo(struct file *file, unsigned long arg)

	/* Copy chaninfo structure.  Ignore unused members. */
	if (!access_ok(VERIFY_READ, chaninfo32, sizeof(*chaninfo32))
			|| !access_ok(VERIFY_WRITE, chaninfo,
				sizeof(*chaninfo))) {
	    || !access_ok(VERIFY_WRITE, chaninfo, sizeof(*chaninfo))) {
		return -EFAULT;
	}
	err = 0;
@@ -171,8 +170,7 @@ static int compat_rangeinfo(struct file *file, unsigned long arg)

	/* Copy rangeinfo structure. */
	if (!access_ok(VERIFY_READ, rangeinfo32, sizeof(*rangeinfo32))
			|| !access_ok(VERIFY_WRITE, rangeinfo,
				sizeof(*rangeinfo))) {
	    || !access_ok(VERIFY_WRITE, rangeinfo, sizeof(*rangeinfo))) {
		return -EFAULT;
	}
	err = 0;
@@ -239,7 +237,8 @@ static int get_compat_cmd(struct comedi_cmd __user *cmd,
}

/* Copy native cmd structure to 32-bit cmd structure. */
static int put_compat_cmd(struct comedi32_cmd_struct __user *cmd32, struct comedi_cmd __user *cmd)
static int put_compat_cmd(struct comedi32_cmd_struct __user * cmd32,
			  struct comedi_cmd __user * cmd)
{
	int err;
	unsigned int temp;
@@ -477,8 +476,7 @@ static inline int raw_ioctl(struct file *file, unsigned int cmd,

/* compat_ioctl file operation. */
/* Returns -ENOIOCTLCMD for unrecognised ioctl codes. */
long comedi_compat_ioctl(struct file *file, unsigned int cmd,
		unsigned long arg)
long comedi_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
{
	return raw_ioctl(file, cmd, arg);
}
@@ -566,9 +564,10 @@ void comedi_unregister_ioctl32(void)

	for (n = 0; n < NUM_IOCTL32_MAPS; n++) {
		if (comedi_ioctl32_map[n].registered) {
			rc = unregister_ioctl32_conversion(
					comedi_ioctl32_map[n].cmd,
					comedi_ioctl32_map[n].handler);
			rc = unregister_ioctl32_conversion(comedi_ioctl32_map
							   [n].cmd,
							   comedi_ioctl32_map
							   [n].handler);
			if (rc) {
				printk(KERN_ERR
				       "comedi: failed to unregister 32-bit "
+151 −127
Original line number Diff line number Diff line
@@ -70,24 +70,31 @@ static DEFINE_SPINLOCK(comedi_file_info_table_lock);
static struct comedi_device_file_info
*comedi_file_info_table[COMEDI_NUM_MINORS];

static int do_devconfig_ioctl(struct comedi_device *dev, struct comedi_devconfig *arg);
static int do_devconfig_ioctl(struct comedi_device *dev,
			      struct comedi_devconfig *arg);
static int do_bufconfig_ioctl(struct comedi_device *dev, void *arg);
static int do_devinfo_ioctl(struct comedi_device *dev, struct comedi_devinfo *arg,
			    struct file *file);
static int do_subdinfo_ioctl(struct comedi_device *dev, struct comedi_subdinfo *arg,
			     void *file);
static int do_chaninfo_ioctl(struct comedi_device *dev, struct comedi_chaninfo *arg);
static int do_devinfo_ioctl(struct comedi_device *dev,
			    struct comedi_devinfo *arg, struct file *file);
static int do_subdinfo_ioctl(struct comedi_device *dev,
			     struct comedi_subdinfo *arg, void *file);
static int do_chaninfo_ioctl(struct comedi_device *dev,
			     struct comedi_chaninfo *arg);
static int do_bufinfo_ioctl(struct comedi_device *dev, void *arg);
static int do_cmd_ioctl(struct comedi_device *dev, void *arg, void *file);
static int do_lock_ioctl(struct comedi_device *dev, unsigned int arg, void *file);
static int do_unlock_ioctl(struct comedi_device *dev, unsigned int arg, void *file);
static int do_cancel_ioctl(struct comedi_device *dev, unsigned int arg, void *file);
static int do_lock_ioctl(struct comedi_device *dev, unsigned int arg,
			 void *file);
static int do_unlock_ioctl(struct comedi_device *dev, unsigned int arg,
			   void *file);
static int do_cancel_ioctl(struct comedi_device *dev, unsigned int arg,
			   void *file);
static int do_cmdtest_ioctl(struct comedi_device *dev, void *arg, void *file);
static int do_insnlist_ioctl(struct comedi_device *dev, void *arg, void *file);
static int do_insn_ioctl(struct comedi_device *dev, void *arg, void *file);
static int do_poll_ioctl(struct comedi_device *dev, unsigned int subd, void *file);
static int do_poll_ioctl(struct comedi_device *dev, unsigned int subd,
			 void *file);

extern void do_become_nonbusy(struct comedi_device *dev, struct comedi_subdevice *s);
extern void do_become_nonbusy(struct comedi_device *dev,
			      struct comedi_subdevice *s);
static int do_cancel(struct comedi_device *dev, struct comedi_subdevice *s);

static int comedi_fasync(int fd, struct file *file, int on);
@@ -202,7 +209,8 @@ static int comedi_ioctl(struct inode *inode, struct file *file,
	writes:
		none
*/
static int do_devconfig_ioctl(struct comedi_device *dev, struct comedi_devconfig *arg)
static int do_devconfig_ioctl(struct comedi_device *dev,
			      struct comedi_devconfig *arg)
{
	struct comedi_devconfig it;
	int ret;
@@ -342,8 +350,8 @@ static int do_bufconfig_ioctl(struct comedi_device *dev, void *arg)
		devinfo structure

*/
static int do_devinfo_ioctl(struct comedi_device *dev, struct comedi_devinfo *arg,
			    struct file *file)
static int do_devinfo_ioctl(struct comedi_device *dev,
			    struct comedi_devinfo *arg, struct file *file)
{
	struct comedi_devinfo devinfo;
	const unsigned minor = iminor(file->f_dentry->d_inode);
@@ -392,14 +400,16 @@ static int do_devinfo_ioctl(struct comedi_device *dev, struct comedi_devinfo *ar
		array of subdevice info structures at arg

*/
static int do_subdinfo_ioctl(struct comedi_device *dev, struct comedi_subdinfo *arg,
			     void *file)
static int do_subdinfo_ioctl(struct comedi_device *dev,
			     struct comedi_subdinfo *arg, void *file)
{
	int ret, i;
	struct comedi_subdinfo *tmp, *us;
	struct comedi_subdevice *s;

	tmp = kcalloc(dev->n_subdevices, sizeof(struct comedi_subdinfo), GFP_KERNEL);
	tmp =
	    kcalloc(dev->n_subdevices, sizeof(struct comedi_subdinfo),
		    GFP_KERNEL);
	if (!tmp)
		return -ENOMEM;

@@ -472,7 +482,8 @@ static int do_subdinfo_ioctl(struct comedi_device *dev, struct comedi_subdinfo *
		arrays at elements of chaninfo structure

*/
static int do_chaninfo_ioctl(struct comedi_device *dev, struct comedi_chaninfo *arg)
static int do_chaninfo_ioctl(struct comedi_device *dev,
			     struct comedi_chaninfo *arg)
{
	struct comedi_subdevice *s;
	struct comedi_chaninfo it;
@@ -589,8 +600,8 @@ static int do_bufinfo_ioctl(struct comedi_device *dev, void *arg)
	return 0;
}

static int parse_insn(struct comedi_device *dev, struct comedi_insn *insn, unsigned int *data,
		      void *file);
static int parse_insn(struct comedi_device *dev, struct comedi_insn *insn,
		      unsigned int *data, void *file);
/*
 * 	COMEDI_INSNLIST
 * 	synchronous instructions
@@ -626,7 +637,8 @@ static int do_insnlist_ioctl(struct comedi_device *dev, void *arg, void *file)
		goto error;
	}

	insns = kmalloc(sizeof(struct comedi_insn) * insnlist.n_insns, GFP_KERNEL);
	insns =
	    kmalloc(sizeof(struct comedi_insn) * insnlist.n_insns, GFP_KERNEL);
	if (!insns) {
		DPRINTK("kmalloc failed\n");
		ret = -ENOMEM;
@@ -678,7 +690,8 @@ static int do_insnlist_ioctl(struct comedi_device *dev, void *arg, void *file)
	return i;
}

static int check_insn_config_length(struct comedi_insn *insn, unsigned int *data)
static int check_insn_config_length(struct comedi_insn *insn,
				    unsigned int *data)
{
	if (insn->n < 1)
		return -EINVAL;
@@ -739,8 +752,8 @@ static int check_insn_config_length(struct comedi_insn *insn, unsigned int *data
	return -EINVAL;
}

static int parse_insn(struct comedi_device *dev, struct comedi_insn *insn, unsigned int *data,
		      void *file)
static int parse_insn(struct comedi_device *dev, struct comedi_insn *insn,
		      unsigned int *data, void *file)
{
	struct comedi_subdevice *s;
	int ret = 0;
@@ -920,7 +933,8 @@ static int do_insn_ioctl(struct comedi_device *dev, void *arg, void *file)
	if (insn.n > MAX_SAMPLES)
		insn.n = MAX_SAMPLES;
	if (insn.insn & INSN_MASK_WRITE) {
		if (copy_from_user(data, insn.data, insn.n * sizeof(unsigned int))) {
		if (copy_from_user
		    (data, insn.data, insn.n * sizeof(unsigned int))) {
			ret = -EFAULT;
			goto error;
		}
@@ -929,7 +943,8 @@ static int do_insn_ioctl(struct comedi_device *dev, void *arg, void *file)
	if (ret < 0)
		goto error;
	if (insn.insn & INSN_MASK_READ) {
		if (copy_to_user(insn.data, data, insn.n * sizeof(unsigned int))) {
		if (copy_to_user
		    (insn.data, data, insn.n * sizeof(unsigned int))) {
			ret = -EFAULT;
			goto error;
		}
@@ -1202,7 +1217,8 @@ static int do_cmdtest_ioctl(struct comedi_device *dev, void *arg, void *file)

*/

static int do_lock_ioctl(struct comedi_device *dev, unsigned int arg, void *file)
static int do_lock_ioctl(struct comedi_device *dev, unsigned int arg,
			 void *file)
{
	int ret = 0;
	unsigned long flags;
@@ -1246,7 +1262,8 @@ static int do_lock_ioctl(struct comedi_device *dev, unsigned int arg, void *file
	This function isn't protected by the semaphore, since
	we already own the lock.
*/
static int do_unlock_ioctl(struct comedi_device *dev, unsigned int arg, void *file)
static int do_unlock_ioctl(struct comedi_device *dev, unsigned int arg,
			   void *file)
{
	struct comedi_subdevice *s;

@@ -1286,7 +1303,8 @@ static int do_unlock_ioctl(struct comedi_device *dev, unsigned int arg, void *fi
		nothing

*/
static int do_cancel_ioctl(struct comedi_device *dev, unsigned int arg, void *file)
static int do_cancel_ioctl(struct comedi_device *dev, unsigned int arg,
			   void *file)
{
	struct comedi_subdevice *s;

@@ -1322,7 +1340,8 @@ static int do_cancel_ioctl(struct comedi_device *dev, unsigned int arg, void *fi
		nothing

*/
static int do_poll_ioctl(struct comedi_device *dev, unsigned int arg, void *file)
static int do_poll_ioctl(struct comedi_device *dev, unsigned int arg,
			 void *file)
{
	struct comedi_subdevice *s;

@@ -1428,10 +1447,10 @@ static int comedi_mmap(struct file *file, struct vm_area_struct *vma)
	n_pages = size >> PAGE_SHIFT;
	for (i = 0; i < n_pages; ++i) {
		if (remap_pfn_range(vma, start,
				    page_to_pfn(virt_to_page(async->
							     buf_page_list[i].
							     virt_addr)),
				    PAGE_SIZE, PAGE_SHARED)) {
				    page_to_pfn(virt_to_page
						(async->buf_page_list
						 [i].virt_addr)), PAGE_SIZE,
				    PAGE_SHARED)) {
			retval = -EAGAIN;
			goto done;
		}
@@ -1729,7 +1748,8 @@ static int comedi_open(struct inode *inode, struct file *file)
	const unsigned minor = iminor(inode);
	struct comedi_device_file_info *dev_file_info =
	    comedi_get_device_file_info(minor);
	struct comedi_device *dev = dev_file_info ? dev_file_info->device : NULL;
	struct comedi_device *dev =
	    dev_file_info ? dev_file_info->device : NULL;

	if (dev == NULL) {
		DPRINTK("invalid minor number\n");
@@ -1952,7 +1972,6 @@ static void __exit comedi_cleanup(void)
	for (i = 0; i < COMEDI_NUM_MINORS; ++i)
		BUG_ON(comedi_file_info_table[i]);


	class_destroy(comedi_class);
	cdev_del(&comedi_cdev);
	unregister_chrdev_region(MKDEV(COMEDI_MAJOR, 0), COMEDI_NUM_MINORS);
@@ -1981,8 +2000,9 @@ void comedi_event(struct comedi_device *dev, struct comedi_subdevice *s)
	if ((comedi_get_subdevice_runflags(s) & SRF_RUNNING) == 0)
		return;

	if (s->async->
	    events & (COMEDI_CB_EOA | COMEDI_CB_ERROR | COMEDI_CB_OVERFLOW)) {
	if (s->
	    async->events & (COMEDI_CB_EOA | COMEDI_CB_ERROR |
			     COMEDI_CB_OVERFLOW)) {
		runflags_mask |= SRF_RUNNING;
	}
	/* remember if an error event has occured, so an error
@@ -2000,12 +2020,10 @@ void comedi_event(struct comedi_device *dev, struct comedi_subdevice *s)
		if (comedi_get_subdevice_runflags(s) & SRF_USER) {
			wake_up_interruptible(&async->wait_head);
			if (s->subdev_flags & SDF_CMD_READ) {
				kill_fasync(&dev->async_queue, SIGIO,
					    POLL_IN);
				kill_fasync(&dev->async_queue, SIGIO, POLL_IN);
			}
			if (s->subdev_flags & SDF_CMD_WRITE) {
				kill_fasync(&dev->async_queue, SIGIO,
					    POLL_OUT);
				kill_fasync(&dev->async_queue, SIGIO, POLL_OUT);
			}
		} else {
			if (async->cb_func)
@@ -2103,7 +2121,8 @@ int comedi_alloc_board_minor(struct device *hardware_device)
		comedi_device_cleanup(info->device);
		kfree(info->device);
		kfree(info);
		printk(KERN_ERR "comedi: error: ran out of minor numbers for board device files.\n");
		printk(KERN_ERR
		       "comedi: error: ran out of minor numbers for board device files.\n");
		return -EBUSY;
	}
	info->device->minor = i;
@@ -2115,28 +2134,32 @@ int comedi_alloc_board_minor(struct device *hardware_device)
	dev_set_drvdata(csdev, info);
	retval = device_create_file(csdev, &dev_attr_max_read_buffer_kb);
	if (retval) {
		printk(KERN_ERR "comedi: failed to create sysfs attribute file \"%s\".\n",
		printk(KERN_ERR
		       "comedi: failed to create sysfs attribute file \"%s\".\n",
		       dev_attr_max_read_buffer_kb.attr.name);
		comedi_free_board_minor(i);
		return retval;
	}
	retval = device_create_file(csdev, &dev_attr_read_buffer_kb);
	if (retval) {
		printk(KERN_ERR "comedi: failed to create sysfs attribute file \"%s\".\n",
		printk(KERN_ERR
		       "comedi: failed to create sysfs attribute file \"%s\".\n",
		       dev_attr_read_buffer_kb.attr.name);
		comedi_free_board_minor(i);
		return retval;
	}
	retval = device_create_file(csdev, &dev_attr_max_write_buffer_kb);
	if (retval) {
		printk(KERN_ERR "comedi: failed to create sysfs attribute file \"%s\".\n",
		printk(KERN_ERR
		       "comedi: failed to create sysfs attribute file \"%s\".\n",
		       dev_attr_max_write_buffer_kb.attr.name);
		comedi_free_board_minor(i);
		return retval;
	}
	retval = device_create_file(csdev, &dev_attr_write_buffer_kb);
	if (retval) {
		printk(KERN_ERR "comedi: failed to create sysfs attribute file \"%s\".\n",
		printk(KERN_ERR
		       "comedi: failed to create sysfs attribute file \"%s\".\n",
		       dev_attr_write_buffer_kb.attr.name);
		comedi_free_board_minor(i);
		return retval;
@@ -2194,7 +2217,8 @@ int comedi_alloc_subdevice_minor(struct comedi_device *dev,
	spin_unlock_irqrestore(&comedi_file_info_table_lock, flags);
	if (i == COMEDI_NUM_MINORS) {
		kfree(info);
		printk(KERN_ERR "comedi: error: ran out of minor numbers for board device files.\n");
		printk(KERN_ERR
		       "comedi: error: ran out of minor numbers for board device files.\n");
		return -EBUSY;
	}
	s->minor = i;
@@ -2207,28 +2231,32 @@ int comedi_alloc_subdevice_minor(struct comedi_device *dev,
	dev_set_drvdata(csdev, info);
	retval = device_create_file(csdev, &dev_attr_max_read_buffer_kb);
	if (retval) {
		printk(KERN_ERR "comedi: failed to create sysfs attribute file \"%s\".\n",
		printk(KERN_ERR
		       "comedi: failed to create sysfs attribute file \"%s\".\n",
		       dev_attr_max_read_buffer_kb.attr.name);
		comedi_free_subdevice_minor(s);
		return retval;
	}
	retval = device_create_file(csdev, &dev_attr_read_buffer_kb);
	if (retval) {
		printk(KERN_ERR "comedi: failed to create sysfs attribute file \"%s\".\n",
		printk(KERN_ERR
		       "comedi: failed to create sysfs attribute file \"%s\".\n",
		       dev_attr_read_buffer_kb.attr.name);
		comedi_free_subdevice_minor(s);
		return retval;
	}
	retval = device_create_file(csdev, &dev_attr_max_write_buffer_kb);
	if (retval) {
		printk(KERN_ERR "comedi: failed to create sysfs attribute file \"%s\".\n",
		printk(KERN_ERR
		       "comedi: failed to create sysfs attribute file \"%s\".\n",
		       dev_attr_max_write_buffer_kb.attr.name);
		comedi_free_subdevice_minor(s);
		return retval;
	}
	retval = device_create_file(csdev, &dev_attr_write_buffer_kb);
	if (retval) {
		printk(KERN_ERR "comedi: failed to create sysfs attribute file \"%s\".\n",
		printk(KERN_ERR
		       "comedi: failed to create sysfs attribute file \"%s\".\n",
		       dev_attr_write_buffer_kb.attr.name);
		comedi_free_subdevice_minor(s);
		return retval;
@@ -2373,8 +2401,7 @@ static ssize_t store_max_read_buffer_kb(struct device *dev,
static struct device_attribute dev_attr_max_read_buffer_kb = {
	.attr = {
		 .name = "max_read_buffer_kb",
			.mode = S_IRUGO | S_IWUSR
		},
		 .mode = S_IRUGO | S_IWUSR},
	.show = &show_max_read_buffer_kb,
	.store = &store_max_read_buffer_kb
};
@@ -2439,8 +2466,7 @@ static ssize_t store_read_buffer_kb(struct device *dev,
static struct device_attribute dev_attr_read_buffer_kb = {
	.attr = {
		 .name = "read_buffer_kb",
			.mode = S_IRUGO | S_IWUSR | S_IWGRP
		},
		 .mode = S_IRUGO | S_IWUSR | S_IWGRP},
	.show = &show_read_buffer_kb,
	.store = &store_read_buffer_kb
};
@@ -2502,8 +2528,7 @@ static ssize_t store_max_write_buffer_kb(struct device *dev,
static struct device_attribute dev_attr_max_write_buffer_kb = {
	.attr = {
		 .name = "max_write_buffer_kb",
			.mode = S_IRUGO | S_IWUSR
		},
		 .mode = S_IRUGO | S_IWUSR},
	.show = &show_max_write_buffer_kb,
	.store = &store_max_write_buffer_kb
};
@@ -2568,8 +2593,7 @@ static ssize_t store_write_buffer_kb(struct device *dev,
static struct device_attribute dev_attr_write_buffer_kb = {
	.attr = {
		 .name = "write_buffer_kb",
			.mode = S_IRUGO | S_IWUSR | S_IWGRP
		},
		 .mode = S_IRUGO | S_IWUSR | S_IWGRP},
	.show = &show_write_buffer_kb,
	.store = &store_write_buffer_kb
};
+48 −37
Original line number Diff line number Diff line
@@ -156,28 +156,30 @@ struct comedi_subdevice {

	unsigned int *chanlist;	/* driver-owned chanlist (not used) */

	int (*insn_read) (struct comedi_device *, struct comedi_subdevice *, struct comedi_insn *,
		unsigned int *);
	int (*insn_write) (struct comedi_device *, struct comedi_subdevice *, struct comedi_insn *,
		unsigned int *);
	int (*insn_bits) (struct comedi_device *, struct comedi_subdevice *, struct comedi_insn *,
		unsigned int *);
	int (*insn_config) (struct comedi_device *, struct comedi_subdevice *, struct comedi_insn *,
		unsigned int *);
	int (*insn_read) (struct comedi_device *, struct comedi_subdevice *,
			  struct comedi_insn *, unsigned int *);
	int (*insn_write) (struct comedi_device *, struct comedi_subdevice *,
			   struct comedi_insn *, unsigned int *);
	int (*insn_bits) (struct comedi_device *, struct comedi_subdevice *,
			  struct comedi_insn *, unsigned int *);
	int (*insn_config) (struct comedi_device *, struct comedi_subdevice *,
			    struct comedi_insn *, unsigned int *);

	int (*do_cmd) (struct comedi_device *, struct comedi_subdevice *);
	int (*do_cmdtest) (struct comedi_device *, struct comedi_subdevice *, struct comedi_cmd *);
	int (*do_cmdtest) (struct comedi_device *, struct comedi_subdevice *,
			   struct comedi_cmd *);
	int (*poll) (struct comedi_device *, struct comedi_subdevice *);
	int (*cancel) (struct comedi_device *, struct comedi_subdevice *);
	/* int (*do_lock)(struct comedi_device *,struct comedi_subdevice *); */
	/* int (*do_unlock)(struct comedi_device *,struct comedi_subdevice *); */

	/* called when the buffer changes */
	int (*buf_change) (struct comedi_device *dev, struct comedi_subdevice *s,
		unsigned long new_size);
	int (*buf_change) (struct comedi_device * dev,
			   struct comedi_subdevice * s, unsigned long new_size);

	void (*munge) (struct comedi_device *dev, struct comedi_subdevice *s, void *data,
		unsigned int num_bytes, unsigned int start_chan_index);
	void (*munge) (struct comedi_device * dev, struct comedi_subdevice * s,
		       void *data, unsigned int num_bytes,
		       unsigned int start_chan_index);
	enum dma_data_direction async_dma_dir;

	unsigned int state;
@@ -316,8 +318,9 @@ static const unsigned COMEDI_SUBDEVICE_MINOR_OFFSET = 1;

struct comedi_device_file_info *comedi_get_device_file_info(unsigned minor);

static inline struct comedi_subdevice *comedi_get_read_subdevice(
				const struct comedi_device_file_info *info)
static inline struct comedi_subdevice *comedi_get_read_subdevice(const struct
								 comedi_device_file_info
								 *info)
{
	if (info->read_subdevice)
		return info->read_subdevice;
@@ -326,8 +329,9 @@ static inline struct comedi_subdevice *comedi_get_read_subdevice(
	return info->device->read_subdev;
}

static inline struct comedi_subdevice *comedi_get_write_subdevice(
				const struct comedi_device_file_info *info)
static inline struct comedi_subdevice *comedi_get_write_subdevice(const struct
								  comedi_device_file_info
								  *info)
{
	if (info->write_subdevice)
		return info->write_subdevice;
@@ -337,7 +341,8 @@ static inline struct comedi_subdevice *comedi_get_write_subdevice(
}

void comedi_device_detach(struct comedi_device *dev);
int comedi_device_attach(struct comedi_device *dev, struct comedi_devconfig *it);
int comedi_device_attach(struct comedi_device *dev,
			 struct comedi_devconfig *it);
int comedi_driver_register(struct comedi_driver *);
int comedi_driver_unregister(struct comedi_driver *);

@@ -346,8 +351,8 @@ void cleanup_polling(void);
void start_polling(struct comedi_device *);
void stop_polling(struct comedi_device *);

int comedi_buf_alloc(struct comedi_device *dev, struct comedi_subdevice *s, unsigned long
	new_size);
int comedi_buf_alloc(struct comedi_device *dev, struct comedi_subdevice *s,
		     unsigned long new_size);

#ifdef CONFIG_PROC_FS
void comedi_proc_init(void);
@@ -356,6 +361,7 @@ void comedi_proc_cleanup(void);
static inline void comedi_proc_init(void)
{
}

static inline void comedi_proc_cleanup(void)
{
}
@@ -421,7 +427,8 @@ static inline int alloc_subdevices(struct comedi_device *dev,

	dev->n_subdevices = num_subdevices;
	dev->subdevices =
		kcalloc(num_subdevices, sizeof(struct comedi_subdevice), GFP_KERNEL);
	    kcalloc(num_subdevices, sizeof(struct comedi_subdevice),
		    GFP_KERNEL);
	if (!dev->subdevices)
		return -ENOMEM;
	for (i = 0; i < num_subdevices; ++i) {
@@ -451,7 +458,8 @@ static inline unsigned int bytes_per_sample(const struct comedi_subdevice *subd)

/* must be used in attach to set dev->hw_dev if you wish to dma directly
into comedi's buffer */
static inline void comedi_set_hw_dev(struct comedi_device *dev, struct device *hw_dev)
static inline void comedi_set_hw_dev(struct comedi_device *dev,
				     struct device *hw_dev)
{
	if (dev->hw_dev)
		put_device(dev->hw_dev);
@@ -467,7 +475,8 @@ int comedi_buf_put(struct comedi_async *async, short x);
int comedi_buf_get(struct comedi_async *async, short *x);

unsigned int comedi_buf_write_n_available(struct comedi_async *async);
unsigned int comedi_buf_write_alloc(struct comedi_async *async, unsigned int nbytes);
unsigned int comedi_buf_write_alloc(struct comedi_async *async,
				    unsigned int nbytes);
unsigned int comedi_buf_write_alloc_strict(struct comedi_async *async,
					   unsigned int nbytes);
unsigned comedi_buf_write_free(struct comedi_async *async, unsigned int nbytes);
@@ -482,6 +491,7 @@ static inline unsigned comedi_buf_write_n_allocated(struct comedi_async *async)
{
	return async->buf_write_alloc_count - async->buf_write_count;
}

static inline unsigned comedi_buf_read_n_allocated(struct comedi_async *async)
{
	return async->buf_read_alloc_count - async->buf_read_count;
@@ -516,7 +526,8 @@ static inline void *comedi_aux_data(int options[], int n)

int comedi_alloc_board_minor(struct device *hardware_device);
void comedi_free_board_minor(unsigned minor);
int comedi_alloc_subdevice_minor(struct comedi_device *dev, struct comedi_subdevice *s);
int comedi_alloc_subdevice_minor(struct comedi_device *dev,
				 struct comedi_subdevice *s);
void comedi_free_subdevice_minor(struct comedi_subdevice *s);
int comedi_pci_auto_config(struct pci_dev *pcidev, const char *board_name);
void comedi_pci_auto_unconfig(struct pci_dev *pcidev);
Loading